n维叉乘的有效计算



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

感谢

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

编辑:似乎使用莱布尼茨公式也可能有所帮助-尽管我不知道它与LU分解相比如何。目前为止。

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

长度已定义的

可以描述三维积v <我> = <我> ×b <我> 使用身份v <我> ∙w <我> =检波器(<我> , <我> , <我> w )。换句话说,取输入向量的外积然后计算与任意其他向量w的点积相当于将输入向量和其他向量代入矩阵并计算其行列式。

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

就是方向

然而,大多数应用程序可以满足较弱的需求。它们不关心结果向量的长度,而只关心它的方向。在这种情况下,你要求的是(n - 1)×n矩阵的核,你可以通过将输入向量作为行来形成。该内核的任何元素都将与输入向量正交,并且由于计算内核是一项常见的任务,您可以在许多现有的实现(例如Lapack)上构建。细节可能取决于您使用的语言。 <标题>结合这些h1> 甚至可以结合上面的两种方法:计算核的一个元素,对于该向量的非零项,也计算相应的(n−1)×(n−1)行列式,这将得到使用第一种方法的单个坐标。然后,您可以简单地缩放矢量,使所选坐标达到计算值,并且所有其他坐标将匹配该坐标。

相关内容

  • 没有找到相关文章

最新更新