我正在尝试使用 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/