给定一个正定对称矩阵,计算逆矩阵及其行列式的最快算法是什么?对于我感兴趣的问题,矩阵维度为 30 或更少。
- 高精度和高速度确实是必要的。(执行数百万个矩阵)
- 行列式是必要的。在每次计算中,只需要逆矩阵的一个元素。谢谢!
给定一个正定对称矩阵,计算逆矩阵及其行列式的最快算法是什么?对于我感兴趣的问题,矩阵维度为 30 或更少。
对于我感兴趣的问题,矩阵维度为 30 或更少。
正如 WolfgangBangerth 所指出的,除非您拥有大量此类矩阵(数百万、数十亿),否则矩阵求逆的性能通常不是问题。
给定一个正定对称矩阵,计算逆矩阵及其行列式的最快算法是什么?
如果速度是一个问题,您应该回答以下问题:
对一个小的正定矩阵求逆并计算其行列式的问题的标准响应是 Cholesky 分解。如果, 然后,和。
假设是 ×,Cholesky 分解可以在次左右计算,这大约是 LU 分解成本的一半。然而,这样的算法不会被认为是“快速的”。随机LU 分解如果 (1) 您确实必须分解大量矩阵,(2) 分解确实是您的应用程序中的限制步骤,并且 (3) 使用随机算法产生的任何错误,这可能是一个值得考虑的更快算法可以接受。您的矩阵可能太小以至于稀疏算法不值得,因此更快算法的唯一其他机会将需要额外的矩阵结构(例如,带状),或利用问题结构(例如,也许您可以巧妙地重组您的算法,以便您没有不再需要计算矩阵逆或其行列式)。有效的行列式算法大致是在一个常数因子内求解线性系统的成本,因此用于线性系统的相同论点也适用于计算行列式。
简而言之,参考有关线性代数子例程的Julia 文档,他们注意到 Bunch-Kaufman 分解方法更适合于对称矩阵。(来自 NASA 的旧资源)毋庸置疑,正定矩阵是对称矩阵的子集,所以虽然 Bunch-Kaufman 分解是一种改进,但不一定是他们能做的最好的。
2015年matlab 用户提交的题为“Fast and Accurate Symmetric Positive Definite Matrix Inverse Using Cholesky Decomposition”清楚地表明了 Cholesky 分解,并且RFast 包同意这一观点,但另一个堆栈交换对话表明最好的方法实际上是依赖于应用程序的 - 所以如果您有时间对各种方法进行基准测试,这将为您提供更明确的答案。