use*_*942 3 math matrix matrix-inverse
我正在开发一种算法,它解决了Ax = b,其中A和b是已知的.
有两种方法可以做到这一点 x = A -1 b或使用Cholesky.我知道矩阵将始终是正方形和正定,尽管det(A)可能为零.在极少数情况下,我可以忽略它.但是从计算的角度和效率来看,创建一个反矩阵效率太低了吗?
通常,您总是希望使用求解器; 实际的求解器应该以与逆相乘的速度运行.与进行分解相比,计算逆矩阵不仅效率低,使用逆矩阵具有分解/求解器方法避免的精度问题.
如果你有一个对称矩阵,Cholesky分解是一个合理的选择.密切相关的LDL分解具有可比较的精度,同时也避免了对平方根的需要.
如果矩阵不对称,则不能使用Cholesky或LDL分解 - 请改用LU分解方法.
对于大型矩阵,是的,反向效率非常低.然而,特殊属性,例如矩阵是下三角形,使得逆变得更容易计算.
在数值分析中,Ax = b的最典型解是A的LU分解(LUx = b),然后求解y的Ly = b和x的Ux = y.
对于更稳定的方法,考虑使用QR分解,其中Q具有Q ^ T*Q = I的特殊属性,因此Rx = Q ^ Tb其中R是上三角形(只有一个后向求解而不是前向和后向求解)与LU).
其他特殊属性,如矩阵对称(Cholesky)或带状(高斯)使得某些求解器比另一个好.
始终注意计算中的浮点错误.
我可以补充一点,迭代求解器也是解决系统的常用方法.Conguate梯度法是最常用的,适用于稀疏矩阵.雅可比和高斯 - 赛德尔对于对角占主导地位且稀疏的矩阵是有益的.
| 归档时间: |
|
| 查看次数: |
5910 次 |
| 最近记录: |