3

根据标题,仅使用行列式定义和使用 LU 分解方法来计算 n 维叉积的最佳方法是这样做,还是你们可以建议一个更好的方法?

谢谢

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

编辑:使用莱布尼茨公式似乎也可能有所帮助——尽管我不知道这与 LU Decomp 相比如何。眼下。

4

1 回答 1

3

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

具有定义的长度

您可以使用恒等式v  ∙ w  =det( a , b , w )表征 3 维叉积v  = a  ×<i>b 。换句话说,取输入向量的叉积然后计算与任何其他向量w的点积与将输入向量和其他向量插入矩阵并计算其行列式相同。

这个定义可以推广到任意维度由于可以使用沿最后一列的拉普拉斯展开计算行列式的方式,该叉积的结果坐标将是您可以从输入形成的所有 ( n  -1)×( n  -1) 子行列式的值具有交替符号的向量。所以是的,莱布尼茨在理论上可能有用,尽管它几乎不适合现实世界的计算。在实践中,您很快就必须想办法在计算这些n行列式时避免重复计算。但是等待这个答案的最后一部分......</p>

只是方向

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

结合这些

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

于 2013-05-11T14:09:51.070 回答