Skip to content

矩阵求解

矩阵求解方法概述

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。在一些情况下,双共轭梯度算法(bicgbicgstabcgs 等)的效率高于 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\)

物理问题中矩阵的对称性通常源于物理作用的互易性 (扩散类问题, 信息向四面八方传递。非对称: 信息沿特定方向传递, 对流, 非保守力 (做功依赖路径) ),而其正定性则源于系统能量的非负性, 对称矩阵一般也是正定的。