把消元过程记下来
高斯消元法通过把某一行的倍数从下面各行中减去,直到矩阵变成上三角矩阵 U,来解 Ax=b。所用的倍数值得保留:把它们放在对角线为 1 的下三角矩阵 L 的对角线下方,就得到 A=LU。这个分解记录了整个消元过程,所以工作只做一次就能反复使用。
A=LU,Ly=b,Ux=y(1) 求解时先用前代法(自上而下)解 Ly=b,再用回代法(自下而上)解 Ux=y。每步约需 n2 次运算,而分解本身约需 32n3 次。若有很多个右端项(同一矩阵上的多个情景),只需分解一次,每个情景只花 n2。
手算 LU取
A=(2415)。倍数为
4/2=2:第 2 行减去第 1 行的 2 倍,得
U=(2013),
L=(1201)。验证:
LU=(2412+3)=A。解
Ax=(3,9):由
Ly=b 得
y1=3,
y2=9−2⋅3=3;再由
Ux=y 得
x2=1,
2x1+1=3,所以
x=(1,1)。
- L:下三角矩阵,对角线为 1,其下是消元倍数。
- U:上三角矩阵,消元的结果;对角线上是主元。
- 选主元:交换行使主元较大,得到 PA=LU,其中 P 是置换矩阵。
零或极小的主元需要换行对 (0111),第一个主元是 0,简单消元会除以零,但这个矩阵其实完全可逆。交换两行即可解决。主元若是极小而非零,不会崩溃,但会产生巨大的倍数并毁掉精度,所以实际的库总会选主元。 实验:评分内容
- 矩阵 L15 分
- 矩阵 U15 分
- 由 U 求行列式15 分
- 用 L 和 U 求解15 分
- 为什么要选主元15 分
- LU 求解的步骤10 分
- 为什么只分解一次15 分