矩阵反演或乔列斯基



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

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

通常,您总是希望使用求解器;实际求解器的运行速度应该与乘以逆运算一样快。 与分解相比,计算逆矩阵不仅效率低下,而且使用逆矩阵还存在分解/求解器方法避免的精度问题。

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

如果你的矩阵不是对称的,你不能使用Cholesky或LDL分解 - 使用LU分解方法。

对于大型矩阵,是的,逆矩阵效率非常低。 但是,特殊属性(例如矩阵是较低的三角形)使逆函数的计算变得更加简单。

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

对于更稳定的方法,请考虑使用 QR 分解,其中 Q 具有 Q^T*Q = I 的特殊性质,因此 Rx = Q^Tb 其中 R 是上三角形(只有一个反向求解,而不是使用 LU 进行正向和反向求解)。

其他特殊性质,例如矩阵对称(Cholesky)或带状(高斯),使某些求解器比其他求解器更好。

一如既往地注意计算中的浮点误差。

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

最新更新