计算矩阵的(对数)行列式和逆矩阵的计算方法

计算科学 线性代数 矩阵分解
2021-12-20 23:46:04

假设我有一个方阵ARn×n和一个向量bRn. 在我的应用程序中,我需要完成两件事。

  1. 我需要找到线性系统的解决方案Ax=b.
  2. 我需要计算的对数行列式A.

天真地,我可以通过计算特征分解来实现这一点A=QΛQ1并使用它来获得逆A1=QΛ1Q1和对数行列式为i=1nlogΛii. 在这种方法中,我需要一个O(n3)计算特征分解和另一个的操作O(n3)操作以获得逆Q. 这是最好的方法吗?是否有一个程序只涉及一个O(n3)手术?

矩阵A确实有一定的特殊结构。它的形式A=Idn+ϵB在哪里BRn×n, 所以A离身份不远了。

2个回答

LU分解只会给你你想要的23n3+O(n2)翻牌圈。线性系统通过求解两个三角系统来求解。行列式是 L 和 U 行列式的乘积,而后者又是对角元素的乘积。

我还应该补充一点,我们真的不能说两个人的表现O(n3)操作版本一O(n3); 他们都只是O(n3). 例如,SVD 大约需要20n3+O(n2)翻牌。因此,两个 LU 分解(甚至十个)会便宜得多。

如果你的矩阵A接近恒等式我想你可以尝试以下近似

log(det(I+ϵB))=logdet(I+ϵ0B)+(ϵϵ0)tr(B(I+ϵ0B)1)(ϵϵ0)2tr(B(I+ϵ0B)1B(I+ϵ0B)1)+O(ϵ3)

如果扩张在附近ϵ=0, 你得到

log(det(I+ϵB))ϵtr(B),

一开始。