有效计算N维交叉积?

时间:2013-05-10 00:36:03

标签: math optimization vector cross-product

根据标题,是使用行列式定义并使用LU分解方法计算n维交叉积的最佳方法,或者你们可以建议一个更好的方法吗?

由于

编辑:为清楚起见,我的意思是http://en.wikipedia.org/wiki/Cross_product,而不是笛卡尔积

编辑:似乎使用Leibniz公式可能有所帮助 - 虽然我不知道如何与LU Decomp相比。在这一刻。

1 个答案:

答案 0 :(得分:2)

从您的评论中,您似乎正在寻找一个以 n -1个向量作为输入的操作,并计算单个向量作为其结果,该向量将与所有输入向量正交并且也许也有明确的长度。

定义长度

您可以使用身份 v ∙来表征三维交叉产品 v = a × b 瓦特的= DET( b'/ I>,瓦特的)。换句话说,取输入向量的叉积然后用任何其他向量 w 计算dot product与插入输入向量相同其他向量进入矩阵并计算其determinant

此定义可以是generalized to arbitrary dimensions。由于可以使用最后一列的Laplace expansion计算行列式的方式,因此该叉积的结果坐标将是所有( n -1)×(的值。 n -1)子决定因素,您可以从输入向量形成,具有交替的符号。所以是的,Leibniz在理论上可能是有用的,尽管它几乎不适合现实世界的计算。在实践中,您很快就必须找出避免重复计算的方法computing these n determinants。但是等待这个答案的最后一部分......

只是方向

然而,大多数应用程序可以满足较弱的要求。它们不关心结果向量的长度,而只关心其方向。在这种情况下,你要求的是你可以通过将输入向量作为行形成的( n -1)× n 矩阵的kernel 。该内核的任何元素都将与输入向量正交,并且由于计算内核是一项常见任务,因此您可以构建大量existing implementations,例如Lapack。详细信息可能取决于您使用的语言。

合并这些

你甚至可以结合上面的两种方法:计算内核的一个元素,并且对于该向量的非零条目,也计算相应的( n -1)×( n -1)行列式,它将使用第一种方法为您提供单个坐标。然后,您可以简单地缩放矢量,使选定的坐标达到计算值,所有其他坐标将匹配该坐标。