c# - Linq 和交叉产品

标签 c# linq cross-product

我正在尝试使用 Linq 执行微积 fork 积计算并尝试找出以下代码的模式:

static void Main(string[] args)
    {
        double[] a = { 1, -1, -1 };
        double[] b = {.5,1,.5};

        var cross = from x in a
                    from y in b
                    select new {x,y};
        List<double> LeftSide = new List<double>();

        foreach (var c in cross) {             
            Console.WriteLine("x = " + c.x + " y = " + c.y);
            double res = c.x * c.y;
            Console.WriteLine("");
            LeftSide.Add(res);
        }

        double i = LeftSide[5] - LeftSide[7];
        double j = LeftSide[2] - LeftSide[6];
        double k = LeftSide[1] - LeftSide[3];
        Console.WriteLine("("+ i + "i) - (" + j + "j) +(" + k + "k)"  );
        Console.ReadLine();
    }

交叉连接 a 和 b 后,我需要执行以下计算:

  double i = LeftSide[5] - LeftSide[7];
  double j = LeftSide[2] - LeftSide[6];
  double k = LeftSide[1] - LeftSide[3];

这行得通,我得到了想要的输出,我知道它可以更有效地编写。我正在寻找任何建议,为我指明正确的方向。

注意:这不是家庭作业问题,而是与微积分 III 叉积有关。我是CS专业的

最佳答案

你让这种方式、方式、方式变得太复杂了。向量 (a0, a1, a2)(b0, b1, b2) 的叉积是 (a1 * b2 - a2 * b1, a2 * b0 - a0 * b2, a0 * b1 - a1 * b0)。所以只需计算一下:

double[] a = { 1.0, -1.0, -1.0 };         
double[] b = { 0.5,  1.0,  0.5 };
double[] cross = 
{ 
    a[1] * b[2] - a[2] * b[1], 
    a[2] * b[0] - a[0] * b[2], 
    a[0] * b[1] - a[1] * b[0]
};

您在一条语句中就完成了。无需涉及 LINQ。

关于c# - Linq 和交叉产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141576/

相关文章:

c# - 为什么这个关于反射的 MSDN 示例失败了?

c# - 参数类型不匹配 Transforming anonymous Expression<Func<T,U>> to non anonymous Expression<Func<T,U>>

r - R中计算大矩阵逆的最快方法

arrays - 生成与特定方向正交的两个正交向量

c# - 如何从本地调用另一个函数应用程序?

c# - Request.Content.ReadAsMultipartAsync() 和 OutOfMemory 异常

c# - 如何在 Entity Framework 中更新数据库中的记录?

c# - 当大多数项目访问的数据库具有我无法更改的糟糕模式时,我如何对我的项目进行单元测试?

c# - 有没有一种方法可以调整此功能使其不使用 LINQ? (将字节数组转换为字符串)

python - 当提供一个空列表时,itertools.product() 应该产生什么?