计算正定对称矩阵的逆矩阵及其行列式的最快算法是什么?


10

给定正定对称矩阵,用于计算逆矩阵及其行列式的最快算法是什么?对于我感兴趣的问题,矩阵尺寸为30或更小。

  1. 确实需要高精度和高速度。(执行数百万个矩阵)
  2. 行列式是必需的。在每次计算中,仅需要逆矩阵的一个元素。谢谢!

您是否必须反转数百万个这样的矩阵?否则,速度应该不是问题。
Wolfgang Bangerth,2015年

为了清楚起见,我编辑了您的标题和问题。如果我有任何错误,请告诉我。
Geoff Oxberry,2015年

@Wolfgang Bangerth是的,应该考虑速度。
订单

1
您知道需要逆矩阵的哪个元素吗?还是可以随机输入?
2016年

2
@Orders您的评论和编辑似乎是矛盾的:您需要逆元素中的一个还是全部
Federico Poloni

Answers:


12

对于我感兴趣的问题,矩阵尺寸为30或更小。

正如WolfgangBangerth所指出的那样,除非您拥有大量这样的矩阵(百万,十亿),否则矩阵求逆的性能通常不是问题。

给定正定对称矩阵,用于计算逆矩阵及其行列式的最快算法是什么?

如果速度是一个问题,则应回答以下问题:

  • 您真的需要整个逆吗?(许多应用程序不需要形成显式逆。)
  • 您真的需要行列式吗?(行列式并不常见,但在计算科学中当然并非闻所未闻。)
  • 您是否需要高精度?(低精度算法往往会更快。)
  • 概率近似就足够了吗?(概率算法往往更快。)

将小正定矩阵求逆并计算其行列式的问题的标准响应是Cholesky分解。如果A=LLT, 然后 det(A)=i=1nlii2det(A1)=i=1nlii2

假设 An 通过 n,可以在附近计算出Cholesky分解 n3/3触发器,大约是LU分解成本的一半。然而,这样的算法将不被认为是“快速”的。一个随机LU分解可能是一种更快的算法,值得考虑,如果(1)您确实必须分解大量矩阵,(2)分解实际上是应用程序中的限制步骤,并且(3)使用随机算法所引起的任何错误是可以接受的。您的矩阵可能太小而无法使用稀疏算法,因此更快算法的唯一其他机会将需要其他矩阵结构(例如,带状)或利用问题结构(例如,您可以巧妙地重组算法,以使您不必不再需要计算矩阵逆或其行列式)。有效的行列式算法大约是在恒定因子范围内求解线性系统的成本,因此用于线性系统的相同参数也适用于计算行列式。


请注意:如果 B=A1,以计算单个元素 bij 一个应该只计算 j第列 B。计算出Cholesky因式分解后,就可以通过对全零且一行中只有一个的rhs向量进行正向和反向替换来完成此操作j。由于计算可以尽快中断bij 经过计算,最好的情况是 bnn=lnn2 最坏的情况 b11其中必须计算完整的后向和前向替换。
Stefano M

@StefanoM更好的是,您可以在计算开始之前对矩阵进行置换,以便始终处于最佳状态。
Federico Poloni
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.