实对称 3x3 矩阵的主特征向量算法

计算科学 线性代数 算法 本征系统 特征值 密集矩阵
2021-11-26 00:06:16

我有一个 3x3 协方差矩阵(所以,实数、对称、密集、3x3),我希望它是主要特征向量,并且速度是一个问题。是否有针对此特定问题的快速算法?我见过用于计算实对称矩阵的所有特征向量的算法,但是这些例程似乎针对大型矩阵进行了优化,而且我也不关心非主特征向量。我还看到了计算实矩阵的主特征向量的幂方法,但同样,在我看来,这种方法对于小矩阵来说效率低下。也许我夸大了我知道我的矩阵很小可以得到的收益?

3个回答

Google 搜索会返回许多与此问题相关的链接,因为它是机械学中的常见问题。Wikipedia 上介绍了对称和实 3x3 矩阵的简单算法:

http://en.wikipedia.org/wiki/Eigenvalue_algorithm#3.C3.973_matrices

来自几何工具 (www.geometrictools.com)

http://www.geometrictools.com/Documentation/EigenSymmetric3x3.pdf 我希望这会有所帮助

这篇论文专门针对 3x3 矩阵,它非常技术性:

http://pages.cs.wisc.edu/~sifakis/project_pages/svd.html

它有代码,但一点也不简单。我会坚持使用幂方法,并编写一个专门的循环展开矩阵向量乘法例程,并调用它固定的次数。如果您可以限制最大特征值,您可能只需每n次迭代进行一次重新归一化,而不是每次迭代,这应该可以节省大量时间。

或者,您可以尝试 Jacobi 特征值算法,该算法非常简单,并且您只有 3 个非对角线元素要湮灭,因此不需要多次迭代即可收敛。问题是这不会为您提供特征向量,因此您必须为此执行单独的后处理步骤,例如使用秩揭示 QR 分解,这有点复杂。