迭代解法:大系统不必显式求逆
约 14 分钟
面对数百万未知量的稀疏系统,存储完整矩阵或求逆都不现实。迭代法从初始猜测出发,反复用矩阵—向量乘逼近解;很多算法甚至只需要一个“输入向量后返回 Av”的算子。
为什么不求逆
解 Ax=b 应使用分解或迭代,不必计算 A⁻¹。显式逆通常成本更高、存储更大且误差更多;需要多个右端项时也可复用分解。
Jacobi与Gauss–Seidel
它们把对角部分与其余部分拆开更新,容易理解,但是否收敛取决于矩阵结构。对角占优常是有利条件,不可见到迭代就默认会收敛。
共轭梯度
对对称正定矩阵,共轭梯度在一系列共轭方向上减少二次型误差,能在远少于维数的步数得到好近似。矩阵不满足前提时不能直接套用。
预条件
构造容易求解的 M,使预条件系统条件更好。预条件器不改变目标解,却能显著减少迭代次数;建立它也有成本,需要权衡。
停止条件
残差小、相对残差小、连续变化小各有局限。还应设置最大迭代数并监测停滞;问题病态时需结合条件评价真实误差。
实现时保存残差历史,异常上升可尽早暴露前提不满足、预条件器错误或浮点问题。
练习:对离散一维泊松方程比较直接法、Jacobi和共轭梯度的误差与迭代次数。
小纸条
求解 Ax=b 时为什么通常不应显式计算 A 的逆矩阵?