Appearance
02 三角求解、Gaussian 消元与 LU 分解
1. 三角系统是直接法的基本内核
对非奇异下三角矩阵
运算量约为
上三角系统用回代,逻辑完全对称。
前代有两种常见实现方式:逐行做内积,或解出
2. Gaussian 消元就是逐步构造 LU
消元矩阵
于是
稠密
3. 为什么要选主元
若当前主元为零,消元无法继续;若主元很小,乘子会很大,中间元素可能被显著放大。
部分选主元在当前列选择绝对值最大的候选,并交换行,得到
完全选主元同时搜索剩余子矩阵并交换行列,代价更高。实践中部分选主元通常兼顾成本与可靠性,是通用稠密求解器的默认方案。
若每一步都在当前列选最大元,则乘子满足
若矩阵严格对角占优,或对称正定并采用 Cholesky,则无需普通的行选主元也有稳定性保证。选主元策略应与矩阵结构匹配。
4. 增长因子与后向稳定性
定义消元过程的增长因子
部分选主元 LU 的后向误差受
5. 迭代改进
已有近似解
再用已有 LU 因子解
迭代改进用较低成本纠正解。如果残差用更高精度计算,甚至可以从低精度分解获得更高精度解;能否成功仍取决于条件数和因子分解质量。
6. 结构与实现
- 多个右端项:分解一次,重复前代/回代。
- 带状矩阵:若消元不产生额外填充,可把复杂度从
降到与带宽相关。 - 不要显式计算
再乘 ;直接解方程更快且更稳。 - 高性能实现应尽量用矩阵-矩阵更新,把计算交给 Level-3 BLAS。
7. 分块 LU 与 Schur 补
将矩阵分块为
在
再更新 Schur 补
最后递归分解
8. BLAS 层次与算术强度
| 层次 | 典型操作 | 运算量 | 数据复用 |
|---|---|---|---|
| Level 1 | 向量加法、内积 | 低 | |
| Level 2 | 矩阵-向量乘法 | 中 | |
| Level 3 | 矩阵-矩阵乘法 | 高 |
现代处理器常受内存带宽限制。分块 LU 并没有改变
9. 后向误差与增长因子的联系
计算因子通常满足
所以稳定性的关键不是单看
10. 迭代改进何时有效
设低精度分解的单位舍入误差为
校正方程仍能提供有效方向;若残差用更高精度计算,混合精度迭代改进有机会达到工作精度。实作时应监控缩放后的分量后向误差,而不是只看校正量变小。
11. 自检
- [ ] 能写出前代/回代并估算复杂度。
- [ ] 能从消元矩阵推出
。 - [ ] 能解释小主元、增长因子与稳定性的关系。
- [ ] 知道迭代改进复用的是哪一组因子。
- [ ] 能从分块消元写出 Schur 补更新。
- [ ] 能解释为什么 Level-3 BLAS 更接近机器峰值。
下一章:Cholesky 分解与结构利用。