据我所知,有 4 种方法可以求解线性方程组(如果有更多,请纠正我):
- 如果系统矩阵是满秩方阵,可以使用克莱默法则;
- 计算系统矩阵的逆或伪逆;
- 使用矩阵分解方法(高斯或Gauss-Jordan消除被认为是LU分解);
- 使用迭代方法,例如共轭梯度法。
事实上,您几乎从不想通过使用克莱默规则或计算逆或伪逆来求解方程,特别是对于高维矩阵,所以第一个问题是何时分别使用分解方法和迭代方法。我想这取决于系统矩阵的大小和属性。
第二个问题是,据您所知,从数值稳定性和效率的角度来看,哪种分解方法或迭代方法最适合某个系统矩阵。
例如,共轭梯度法用于求解矩阵对称且正定的方程,尽管它也可以通过转换应用于任何线性方程到. 同样对于正定矩阵,可以使用 Cholesky 分解法求解。但是不知道什么时候选择CG方法,什么时候选择Cholesky分解。我的感觉是我们最好对大型矩阵使用 CG 方法。
对于矩形矩阵,我们可以使用 QR 分解或 SVD,但我也不知道如何选择其中之一。
对于其他矩阵,我现在不知道如何选择合适的求解器,例如 Hermitian/对称矩阵、稀疏矩阵、带状矩阵等。