LU 分解,逐步讲解
把矩阵分解成下三角与上三角两部分,为什么这比重复消元更快,以及 Cholesky 分解如何把它特殊化。
LU 分解把一个方阵写成下三角矩阵与上三角矩阵的乘积:A = L·U。这两个因子直接来自高斯消元——U 就是行阶梯形,而 L 记录了你为此使用的那些乘数。
| 4 | 3 |
| 6 | 3 |
| 1 | 0 |
| 3/2 | 1 |
| 4 | 3 |
| 0 | −3/2 |
有什么用
因为分解结果可以重复使用。从头解 Ax = b 大约需要 n³/3 次运算;一旦有了 L 和 U,每个新的右端项只要 n²:先用前代法解 Ly = b,再用回代法解 Ux = y。当右端项有几十个时,这个优势非常可观。
行列式也顺带白得——它等于 U 对角线的乘积,每做一次行交换再乘 −1。
主元选取
并非每个矩阵都能直接写成 A = L·U:主元位置上出现零就会失败。补救办法是引入置换矩阵,得到 P·A = L·U。实践中无论如何都会选主元,因为挑选可用的最大主元能把舍入误差控制住。
Cholesky:对称的情形
如果 A 对称正定,它可以分解为 A = L·Lᵀ——只需要一个三角因子。Cholesky 大约比 LU 快一倍,数值上也非常稳定,因此在最优化、最小二乘和统计中占主导地位(协方差矩阵按构造就是对称正定的)。
如果算法某一步需要对负数开平方根,说明该矩阵并非正定——于是 Cholesky 也顺带成了检验这一性质的方法。