一、为啥要搞“矩阵三角分解”?—— 高斯消去法的“矩阵视角”🧐
关键字:LU 分解、单位下三角矩阵、上三角矩阵
🔍
高斯消去法的本质是“用行变换把矩阵 A 变成上三角矩阵”——而 矩阵三角分解(LU 分解)就是把这个过程用“矩阵乘法”表示:把 A 拆成“单位下三角矩阵 L”和“上三角矩阵 U”的乘积,即 A = LU。
💡 新手类比:
就像把“12”拆成“3×4”,把复杂的矩阵 A 拆成两个简单的三角矩阵(L 和 U),解方程组时可以“分两步走”~
二、LU 分解是咋来的?—— 高斯消去法的“矩阵翻译”📝
关键字:初等下三角矩阵、矩阵乘法、消元过程
🧮 消元过程的矩阵表示:
高斯消去法的每一步“消元”,都对应一个 初等下三角矩阵 Lₖ(对角线是 1,第 k 列下方是乘数 -mᵢₖ)。比如第 1 步消元对应 L₁,第 2 步对应 L₂… 最终:
Lₙ₋₁...L₂L₁ A = U(U 是上三角矩阵)
两边左乘 L₁⁻¹L₂⁻¹…Lₙ₋₁⁻¹,得到:
A = (L₁⁻¹L₂⁻¹...Lₙ₋₁⁻¹) U = LU
这里的 L 就是“单位下三角矩阵”(对角线是 1,下三角是消元的乘数)~
🌰 课本例 2 的 LU 分解:
原矩阵 A = [[1,1,1],[0,4,-1],[2,-2,1]],消元后得到 U = [[1,1,1],[0,4,-1],[0,0,-2]]。
消元用的乘数是 m₃₁=2(第 1 步消元)、m₃₂=-1(第 2 步消元),所以 L 是:
L = [[1, 0, 0],
[0, 1, 0],
[2,-1, 1]]
验证一下:L×U = A(自己算乘法,会发现结果和原矩阵一样!)
三、LU 分解的“使用说明书”:解方程组更高效 🚀
关键字:分两步解、Ly=b、Ux=y
📌 用 LU 分解解 Ax= b 的步骤:
因为 A =LU,所以方程组变成LUx = b,分两步解:
1. 先解Ly = b(L 是单位下三角矩阵,用“前向替换”从 y₁算到 yₙ);
2. 再解Ux = y(U 是上三角矩阵,用“回代”从 xₙ算到 x₁)。
💻 对应例 2 的求解:
原方程组 Ax= b 中,b=[6,5,1]。
1. 解 Ly=b:
y₁ = 6
y₂ = 5
2y₁ - y₂ + y₃ = 1 → 2×6 -5 + y₃=1 → y₃=-6
2. 解 Ux=y:
-2x₃ = -6 → x₃=3
4x₂ -x₃=5 → 4x₂-3=5 → x₂=2
x₁+x₂+x₃=6 → x₁+2+3=6 → x₁=1
和之前的结果一样!
四、LU 分解的“前提条件”:顺序主子式不为 0 ❗
关键字:顺序主子式、唯一分解
⚠️ 课本定理:
矩阵 A 能唯一分解为“单位下三角 L”和“上三角 U”的充要条件是:A 的 所有顺序主子式 Dₖ≠0(Dₖ是前 k 行 k 列的行列式)。
💡 新手理解:
顺序主子式不为 0,才能保证高斯消元时“主元素不为 0”,进而保证 L 和 U 能拆出来~
五、列主元消去法:解决“主元素太小”的坑 🕳️
关键字:列主元、数值稳定性
❌ 问题:
如果主元素 aₖₖ⁽ᵏ⁾太小(比如 0.001),算乘数时会“放大误差”(比如 mᵢₖ=1000,一点小误差会被放大 1000 倍)。
✅ 解决办法:
列主元消去法——每步消元前,先在“当前列的下方”找绝对值最大的元素,和当前行交换,把它作为主元素。这样主元素不会太小,计算更稳定~
🌰 简单例子:
比如矩阵第 1 列是[0.001, 2],先交换两行,把 2 作为主元素,避免乘数太大(0.001 做分母会得到 2000,交换后分母是 2,乘数是 0.0005)。
总结:LU 分解是高斯消去法的“矩阵版”,高效又灵活 🎯
✅
矩阵三角分解(LU 分解)把高斯消去法“转化为矩阵运算”,不仅能更清晰地理解消元过程,还能让解方程组的步骤更模块化(分 Ly= b 和 Ux= y 两步)。尤其是解“多个同系数矩阵、不同常数项”的方程组时,只需要分解一次 A,就能快速解多个 b,比重复用高斯消去法高效很多~
要不要我帮你整理一份LU 分解解方程组的步骤模板,方便你直接套用?