Math 矩阵求逆还是Cholesky?

Math 矩阵求逆还是Cholesky?,math,matrix,matrix-inverse,Math,Matrix,Matrix Inverse,我正在开发一种算法来求解Ax=b,其中A和b是已知的 有两种方法可以做到这一点:x=A-1b或使用Cholesky。我知道矩阵总是平方和正定的,尽管det(A)可能为零。在那些罕见的情况下,我可以忽略它。但从计算和效率的角度来看,创建逆矩阵是否效率太低?一般来说,您总是希望使用解算器;实际解算器的运行速度应与逆运算的速度相同。与分解相比,计算逆矩阵不仅效率低下,而且使用逆矩阵还存在分解/求解方法可以避免的精度问题 如果你有一个对称矩阵,a是一个合理的选择。密切相关的具有相当的精度,同时也避免了平

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


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

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

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


如果你的矩阵不是对称的,你不能使用Cholesky或LDL分解——改用这种方法。

对于大型矩阵,是的,逆矩阵效率非常低。然而,特殊的性质,例如矩阵是下三角的,使得逆矩阵的计算更加简单

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

对于更稳定的方法,考虑使用qr分解,其中q具有q^ t*q= i的特殊性质,因此r=q^ tb,其中R是上三角形(仅一个反解,而不是与LU的前向和后解)。p> 其他特殊属性,如对称矩阵(Cholesky)或带状矩阵(Gauss),使某些解算器优于其他解算器

一如既往,请注意计算中的错误


我想补充一点,迭代解算器也是求解系统的常用方法。聚集梯度法是最常用的方法,适用于稀疏矩阵。Jacobi和Gauss-Seidel适用于对角占优且稀疏的矩阵

如果A也是对称的,这个问题可能对Cholesky更有效——如果是对称的,那么肯定要用Cholesky。但是为什么要用Cholesky呢?A总是对称的。我不是在想数学,而是在想计算机的效率,它能把一个做得比另一个好。全矩阵求逆更容易产生舍入误差。一个更好的解决方案,特别是如果你有多个RHS向量,是LU分解。这只是一个修正,但是有很多方法可以解决Ax=b,而不仅仅是上面提到的两种方法。请参阅下面我的答案。QR评论+1。我倾向于先考虑LU,因为它更常用于求解有限元方程。一个反解算的不错。