跳到正文
线性代数

迭代解法:大系统不必显式求逆

14 分钟

面对数百万未知量的稀疏系统,存储完整矩阵或求逆都不现实。迭代法从初始猜测出发,反复用矩阵—向量乘逼近解;很多算法甚至只需要一个“输入向量后返回 Av”的算子。

为什么不求逆

Ax=b 应使用分解或迭代,不必计算 A⁻¹。显式逆通常成本更高、存储更大且误差更多;需要多个右端项时也可复用分解。

Jacobi与Gauss–Seidel

它们把对角部分与其余部分拆开更新,容易理解,但是否收敛取决于矩阵结构。对角占优常是有利条件,不可见到迭代就默认会收敛。

共轭梯度

对对称正定矩阵,共轭梯度在一系列共轭方向上减少二次型误差,能在远少于维数的步数得到好近似。矩阵不满足前提时不能直接套用。

预条件

构造容易求解的 M,使预条件系统条件更好。预条件器不改变目标解,却能显著减少迭代次数;建立它也有成本,需要权衡。

停止条件

残差小、相对残差小、连续变化小各有局限。还应设置最大迭代数并监测停滞;问题病态时需结合条件评价真实误差。

实现时保存残差历史,异常上升可尽早暴露前提不满足、预条件器错误或浮点问题。

练习:对离散一维泊松方程比较直接法、Jacobi和共轭梯度的误差与迭代次数。

小纸条

求解 Ax=b 时为什么通常不应显式计算 A 的逆矩阵?