矩阵求逆或Cholesky?

时间:2013-10-31 09:12:11

标签: math

我正在开发一种解决 Ax = b 的算法,其中 A b 已知。

有两种方法可以做到这一点 x = A -1 b 或使用Cholesky。我知道矩阵将始终是正方形和正定的,尽管det( A )可能为零。在极少数情况下,我可以忽略它。但是从计算的角度和效率来看,创建一个效率太低的逆矩阵呢?

2 个答案:

答案 0 :(得分:7)

一般来说,你总是想要使用求解器;实际的求解器应该以与逆相乘的速度运行。与进行分解相比,计算逆矩阵不仅效率低,使用逆矩阵具有分解/求解器方法避免的精度问题。

如果你有一个对称矩阵,Cholesky decomposition是一个合理的选择。密切相关的LDL decomposition具有可比较的精确度,同时也避免了对平方根的需要。

如果矩阵不对称,则不能使用Cholesky或LDL分解 - 请改用LU decomposition方法。

答案 1 :(得分:6)

对于大型矩阵,是的,逆效率非常低。然而,特殊属性,例如矩阵是下三角形,使得逆变得更容易计算。

在数值分析中,Ax = b的最典型解是A的LU分解(LUx = b),然后求解y的Ly = b和x的Ux = y。

对于更稳定的方法,考虑使用QR分解,其中Q具有Q ^ T * Q = I的特殊属性,因此Rx = Q ^ Tb其中R是上三角形(只有一个后向求解而不是前向然后用LU解决。

其他特殊属性,例如对称矩阵(Cholesky)或带状(高斯)使某些求解器优于另一个。

始终了解计算中的floating point错误。

我可以补充一点,迭代求解器也是解决系统的常用方法。 Conguate梯度法是最常用的,适用于稀疏矩阵。雅可比和高斯 - 赛德尔对于对角占主导地位且稀疏的矩阵是有益的。