矩阵求解¶
矩阵求解方法概述¶
matlab文档 中较好地概括了矩阵迭代方法:
| 描述 | 注释 |
|---|---|
pcg (预条件共轭梯度法) |
- 系数矩阵必须是对称正定矩阵。 - 由于只需要存储有限数量的向量,因此是最有效的对称正定方程组求解器。 |
lsqr (最小二乘法) |
- 唯一适用于矩形方程组的求解器。 - 在解上等效于应用于标准方程 (A^T*A)x = A^T*b 的共轭梯度法 (PCG)。 |
minres (最小残差法) |
- 系数矩阵必须是对称矩阵,但无需是正定矩阵。 - 每次迭代都会最小化 2-范数的残差,从而保证算法能够逐步取得进展。 - 不会出现崩溃(算法无法逼近解而停止执行)。 |
symmlq (对称 LQ) |
- 系数矩阵必须是对称矩阵,但无需是正定矩阵。 - 求解投影方程组,并使残差与所有先前的残差正交。 - 不会出现崩溃(算法无法逼近解而停止执行)。 |
bicg (双共轭梯度法) |
- 系数矩阵必须是方阵。 - bicg 的计算成本低,但收敛不规则且不可靠。 - bicg 具有重要的历史地位,因为很多迭代算法都是基于它改进而来。 |
bicgstab (双共轭梯度稳定法) |
- 系数矩阵必须是方阵。 - 交替使用 BiCG 步骤与 GMRES(1) 步骤,以提高稳定性。 |
bicgstabl (双共轭梯度稳定法 (l)) |
- 系数矩阵必须是方阵。 - 交替使用 BiCG 步骤与 GMRES(2) 步骤,以提高稳定性。 |
cgs (共轭梯度二乘法) |
- 系数矩阵必须是方阵。 - 需要与 bicg 相同的每次迭代操作数,但要避免通过操作平方残差来使用转置。 |
gmres (广义最小残差法) |
- 系数矩阵必须是方阵。 - 最可靠的算法之一,因为每次迭代都能最小化残差范数。 - 工作量和所需内存随着迭代次数线性增加。 - 选择适当的 restart 值至关重要,以避免不必要的工作和存储。 |
qmr (拟最小残差法) |
- 系数矩阵必须是方阵。 - 每次迭代的开销略高于 bicg,但提供了更好的稳定性。 |
tfqmr (无转置拟最小残差法) |
- 系数矩阵必须是方阵。 - 当内存有限时,是解决对称不定方程组的最佳求解器。 |
以下是 MATLAB 中的迭代求解器的流程图,大致概括了每种求解器适用的情况。一般而言,您可以对几乎所有的二次方非对称问题使用 gmres。在一些情况下,双共轭梯度算法(bicg、bicgstab、cgs 等)的效率高于 gmres,但它们的收敛行为难以预测,因此 gmres 往往是更好的初始选择。

一些基本概念¶
对称, 正定¶
正定性是对方阵(特别是对称矩阵)的一种描述,它推广了“正数”这一概念。对于一个数:一个标量 a 是“正定”的,意思就是 \(a>0\). 对于一个矩阵:一个对称矩阵 A 被称为正定 (Positive Definite),如果对于任何非零向量 X,二次型 \(X^T A X\) 的结果都大于零。在很多物理问题中,二次型 \(\frac{1}{2} X^T A X\) 代表了系统的能量。如果矩阵 A 是正定的,意味着系统唯一的最低能量状态是 X = 0(零位移、零扰动),函数 f(X) = X^T A X 的图像是一个高维的抛物面(一个“碗”),碗底在原点,并且碗口朝上。正定性保证了这个“碗”只有一个全局最小值, 任何非零的扰动都会导致系统能量增加。这保证了系统有一个稳定的唯一解。
\[
X^T A X > 0, \quad \forall X \neq 0
\]
- 判断对称性: 对于 \(a(\psi,v)\) (其中 \(\psi\) 是 trial function, \(v\) 是 test function), 交换 \(\psi\) 和 \(v\), 判断是否有 \(a(\psi,v) = a(v,\psi)\)
- 判断正定性: \(a(u,u) >0\)
物理问题中矩阵的对称性通常源于物理作用的互易性 (扩散类问题, 信息向四面八方传递。非对称: 信息沿特定方向传递, 对流, 非保守力 (做功依赖路径) ),而其正定性则源于系统能量的非负性, 对称矩阵一般也是正定的。