Stage 2 — 线性方程组、消元法与逆矩阵 (Solving Linear Systems, Elimination & Inverses)
这个 Stage 你将学到什么
Stage 1 给了你语言(向量、矩阵、);Stage 2 教你怎么动手解 ,并补齐三件核心工具:
- 矩阵乘法 (matrix multiplication)——Stage 1 只讲了矩阵 × 向量,这里讲矩阵 × 矩阵,以及它的四种视角;
- 高斯消元法 (Gaussian elimination)——把方程组系统地化简,看清解是唯一、无解、还是无穷多;
- 逆矩阵 (inverse matrix)——用 Gauss–Jordan 求逆,并搞懂”何时可逆”;
- LU 分解 (LU decomposition)——把消元过程”打包”成 ,这是 Strang 极重视的工具。
对应 21-241 官方 topic:solving linear systems by row reduction, inverse matrices。
对应 Strang《Introduction to Linear Algebra》:Ch 2(Solving Linear Equations)整章。
怎么用这份笔记
这一阶段是计算密集的,以你 USACO 的底子会比较顺。但 Stage 1 的批改暴露了你的两个问题:(1) 爱跳”解释/说明”子问;(2) 复数手算偏脆。Stage 2 没有复数,但有大量”为什么”——我把每个”为什么消元有效、为什么 装的是乘数”都写清楚了,请逐字读这些解释,别只看算法步骤。
- ★ = 必须吃透的核心;➕ = 拓展;
> [!example]= 逐步手算演示;> [!question]自测题答案可折叠。- 本笔记的一条主线:消元、LU、求逆,本质上是同一件事——我用同一个矩阵 把它们串起来,你会看到三者其实共用同一套乘数。
0. 全局地图:Stage 2 在解一个什么问题
线性代数最核心的方程是 。它有三种等价读法(Stage 1 已埋下):
Stage 2 要回答三个递进的问题:
- 怎么解? → 高斯消元法(第 2 节)。
- 解能不能”打包预处理”? → LU 分解(第 4 节),一次分解、反复解不同的 。
- 有没有”除法”? → 逆矩阵 (第 5 节),让 成为可能。
但所有这些都要先有矩阵乘法这块积木,所以我们从它开始。
1. 矩阵乘法 (Matrix Multiplication) ★
1.1 定义:为什么是”行乘列”
Stage 1 里 的第 个分量 = 第 行与 的点积。矩阵乘法只是把这件事对 的每一列各做一次。
设 是 , 是 ,则乘积 是 ,其元素为:
维度匹配铁律
有定义 的列数 = 的行数。记法:。中间两个 必须相等,外面两个 决定结果形状。这是初学者最常犯的维度错误来源。
1.2 ★ 完整算一遍(这就是”怎么算”)
例: 乘
结果是 。逐个元素算(行 点列 ):
所以
操作口诀:左手沿 的行走,右手沿 的列走,对应相乘再求和,落在交叉位置。
1.3 ★★ 四种看矩阵乘法的视角(Strang 招牌)
同一个 ,有四种解读。全部理解,后面会反复用到(尤其列视角)。
视角 1 — 元素视角:每个 是一个点积(上面就是)。
视角 2 — 列视角(最有用): 的第 列 乘以 的第 列。也就是说, 的每一列都是 各列的线性组合,权重来自 对应那一列。
视角 3 — 行视角: 的第 行 ( 的第 行)乘以整个 。每一行是 各行的线性组合。
视角 4 — 外积视角 ➕:把 的列和 的行配对相乘再求和:
每一项 是一个”列 × 行”= 一个秩 1 矩阵(rank-1 matrix)。这个视角到 SVD(Stage 7)会大放异彩。
为什么要记四个视角
不同问题用不同视角最省力:算具体数字用视角 1;理解 的列空间用视角 2;消元(把矩阵写成 ) 用视角 3;理解低秩结构 / SVD 用视角 4。Strang 的功力就在于他从不把矩阵乘法只当”填表格”,而是四个角度自由切换。
1.4 ★ 关键性质(有些反直觉)
| 性质 | 成立吗 | 说明 |
|---|---|---|
| 结合律 | ✅ | 可以任意加括号 |
| 左右分配律 | ✅ | |
| 与单位矩阵 | ✅ | 是乘法的”1” |
| 交换律 | ❌ | 一般不成立! |
矩阵乘法不可交换——这是最重要的"反直觉"
看反例:
。几何直觉:矩阵代表”动作”(旋转、剪切……),而”先转后剪”和”先剪后转”结果不同——动作的顺序有意义。这件事会影响后面所有公式里因子的顺序。
1.5 转置与乘积:顺序要反转(含证明)
证明
比较两边的 元素。左边:。
右边:。
两者逐项相等。记忆:“穿袜子再穿鞋,脱的时候先脱鞋”——转置(或求逆)会把乘积顺序倒过来。
2. 高斯消元法 (Gaussian Elimination) ★ 核心
这是解 的主算法。核心思想:用”不改变解集”的行变换,把方程组化成阶梯形,再回代。
2.1 三种初等行变换 (Elementary Row Operations)
下面三种操作不改变方程组的解(因为它们都可逆):
- 倍加 (replacement):某行 另一行的倍数 → 。(消元的主力)
- 数乘 (scaling):某行乘以非零常数 → ()。
- 交换 (interchange):交换两行 → 。(主元为 0 时用)
我们把 和 并排写成增广矩阵 (augmented matrix) ,对它做行变换。
2.2 ★ 完整走一遍 消元(贯穿全笔记的主例)
主例:解
增广矩阵:
第一列消元(用第 1 行的主元 把它下方变 ):
- (乘数 ):
- (乘数 ):
第二列消元(用第 2 行的主元 把它下方变 ):
- (乘数 ):
回代 (back substitution)——从最后一行往上解:
验证: ✓; ✓; ✓。
记住那三个乘数 ——它们马上会在 LU 分解里”复活”成矩阵 。
2.3 主元、行阶梯形 (REF) 与简化行阶梯形 (RREF)
- 主元 (pivot):每行化简后最左边的第一个非零元。上面的主元是 。
- 行阶梯形 (Row Echelon Form, REF):主元呈阶梯下降,主元下方全为 (上面那个上三角就是)。
- 简化行阶梯形 (Reduced Row Echelon Form, RREF):在 REF 基础上,再把每个主元化为 、且主元上方也清成 。RREF 是唯一的(REF 不唯一)。
为什么要 RREF
REF + 回代就能解方程;但 RREF 让解”一眼可读”(主元变量直接等于右端),而且求逆矩阵正是靠把 化到 RREF(第 5 节)。
2.4 ★ 解的三种情况:唯一 / 无解 / 无穷多
消元到最后,看阶梯形的形状,就能判定解的个数。
情况 A:唯一解——每一列都有主元(像主例),回代得到唯一 。
情况 B:无解 (inconsistent)——出现矛盾行 且 ,即 ""。
无解的样子
第二行说 ,矛盾。几何:两条平行线,永不相交,无解。
情况 C:无穷多解——出现全零行 ,且有自由变量 (free variable):那些没有主元的列对应的变量可以随便取。
无穷多解(含一个自由变量)
增广矩阵消元:,:
第 3 列没有主元 是自由变量。化成 RREF():
通解(令 ):
验证 :,代入三式得 ✓。几何:三个平面交于一条直线,直线上每个点都是解。
一句话判据
消元后:有矛盾行 → 无解;无矛盾行且每列都有主元 → 唯一解;无矛盾行但有自由列 → 无穷多解。自由变量的个数 = 没有主元的列数。
3. 消元 = 矩阵乘法 (Elimination as Matrix Multiplication) ★
这一节把消元”代数化”——每一步行变换,其实是左乘一个矩阵。这是通向 LU 分解的桥梁。
3.1 初等矩阵 (Elementary Matrix)
把单位矩阵 做一次行变换,得到的就是初等矩阵 。神奇之处:用 左乘 ,等于对 做同样那次行变换(回忆视角 3:左乘影响行)。
主例里第一步的初等矩阵
"" 对应
验证 的第 2 行:——正是消元后的第 2 行 ✓。
3.2 整个消元 = 连续左乘
主例的三步消元(乘数 )合起来:
其中
这正是 LU 的来源
把 们移到右边:。下一节会看到,这个 的元素恰好就是那三个乘数——消元的”账本”被完整地记在了 里。
3.3 置换矩阵 (Permutation Matrix)
如果某个主元位置是 ,消元卡住,就交换两行。“交换”也是左乘一个矩阵——把 对应两行交换得到的置换矩阵。
主元为 0 → 换行
左乘 交换了两行,主元就位了。置换矩阵的性质:(它的逆就是转置,因为换回去就是再换一次)。
4. LU 分解 (LU Decomposition) ➕(Strang 重点)
4.1 想法:把 拆成”下三角 × 上三角”
- = 消元得到的上三角(upper triangular);
- = 下三角(lower triangular),对角线全为 ,下三角部分装的就是消元乘数。
4.2 ★ 为什么 装的是乘数(关键洞察)
回到 。神奇的事实: 的逆极其简单—— 在 放了 来消元,那它的逆就是在 放 (把消元”撤销”)。而且这些逆相乘时,乘数直接归位、互不干扰。结果:
就是消元乘数的”账本”: = 当初""里那个乘数。不用再算,抄下来即可。
验证主例
用列视角逐行验证 :
拼起来正好是 ✓。
4.3 ★ 用 LU 解方程:为什么值得分解
要解 ,即 。分两步(都很快,因为三角矩阵直接代):
- 前代 (forward substitution) 解 ,求中间量 ;
- 回代 (back substitution) 解 ,求 。
用 LU 解主例
。第一步 :
即 。第二步 :
✓,和直接消元结果一致。
LU 的真正价值:一次分解,反复使用
如果要对同一个 、很多不同的 解方程(工程中极常见:同一结构、不同载荷),分解 只需做一次();之后每个新 只要两步三角代入()。这比每次都重新消元划算得多——这也是为什么数值库内部普遍用 LU。
4.4 需要换行时:
若消元中途必须换行,分解形式变成 ( 是置换矩阵,记录所有换行)。思想不变:先用 把行排好,再正常 LU。
5. 逆矩阵 (Inverse Matrix) ★
5.1 定义:矩阵的”倒数”
方阵 的逆 满足
有了它, 的解可以”一步写出”:。(注意:实际计算时几乎不会真去求 再乘,消元/LU 更快更稳; 主要是理论工具。)
5.2 何时可逆(可逆 ⟺ 一串等价条件)
对 方阵 ,下面这些互相等价(任一成立则全部成立):
- 可逆;
- 消元能得到 个非零主元(没有零主元);
- 只有零解 ;
- 对每个 有唯一解;
- (行列式,Stage 5 细讲);
- 的列线性无关(Stage 3 细讲)。
这就是"可逆矩阵定理"(Invertible Matrix Theorem)的雏形
这串等价条件是线代的”中央车站”,几乎所有概念都在这里交汇。现在记住前三条;到 Stage 3、5 会把后几条补全并证明它们等价。
5.3 的逆公式(必背)
口诀:主对角线对调、副对角线变号,再除以行列式 。
求逆
,。
验证: ✓。
5.4 ★ Gauss–Jordan 求逆:
方法:把 和单位矩阵 并排成 ,对它做行变换,直到左边变成 ;此时右边自动变成 。
为什么这招有效(一句话原理)
行变换 = 左乘一串初等矩阵,记它们的总积为 。当左边 时,说明 ;而右边同时被 作用,。所以右边长出来的就是逆。
5.5 ★ 完整求一个 的逆(用主例的 )
求 ,其中
起始 :
向下消元(用与主例相同的乘数 ):
左边已是上三角且主元全为 。现在向上消元(清主元上方),得到 RREF:
左边变成 ,右边就是逆:
验证 ,逐个算第一行:
;; ✓(其余行同理,全部得 )。
注意到了吗:同一套乘数
求逆的”向下消元”用的乘数 ,和主例消元、和 LU 里 的元素完全相同。这就是本笔记的主线:消元、LU、求逆三件事,共用同一套消元账本。理解了一个,就理解了三个。
5.6 ★ 乘积的逆:顺序反转(含证明)
证明
只需验证它乘 得 。用结合律:
同理 。所以 确是 的逆。
又是”先脱鞋”原则:逆把乘积顺序倒过来。直觉: 是”先 后 “两个动作,要撤销就得”先撤 再撤 “。
5.7 转置的逆
(转置和求逆可以交换次序。)
6. 拓展 (Extensions) ➕
6.1 可逆矩阵定理全景(预览)
把 5.2 的等价条件再扩一点,对 的 ,以下全部等价:
可逆 个非零主元 RREF 是 只有零解 列线性无关 列张成 不是特征值。后几条会在 Stage 3/5/6 逐一补证——把它当作贯穿全课的”主索引”。
6.2 ➕ 消元的计算复杂度(呼应你的算法背景)
对 矩阵,高斯消元约需 次乘加,即 。所以:
- 求逆 、解一次方程 ;但有了 LU,额外每个 只需 。
- 这解释了”为什么解 不该先求 再乘”——求逆本身就是 且数值更不稳,直接 LU 又快又稳。这是数值线代里”能不求逆就不求逆”的工程原则。
6.3 ➕ 可选:用 NumPy 验证 LU 与逆
import numpy as np
import scipy.linalg as sla
A = np.array([[1,2,1],[2,5,3],[3,4,2]], dtype=float)
# LU 分解(scipy 带部分主元置换 P)
P, L, U = sla.lu(A)
print("L=\n", L); print("U=\n", U)
print("PA == LU ?", np.allclose(P @ A, L @ U)) # 注意 scipy 给的是 A = P@L@U
# 逆与解方程对比
b = np.array([2,4,5], dtype=float)
print("A^{-1} =\n", np.linalg.inv(A))
print("solve :", np.linalg.solve(A, b)) # 推荐:不显式求逆
print("via inv:", np.linalg.inv(A) @ b) # 能得同样结果,但更慢更不稳库安装(使用国内镜像)
需要
numpy和scipy。用清华镜像安装(命令行执行):pip install numpy scipy -i https://pypi.tuna.tsinghua.edu.cn/simple
7. 例题精讲 (Worked Examples)
例 1 — 矩阵乘法(注意维度)
(),()。 是 :
(反过来 是 ,形状都不同——又一次提醒:乘法不可交换。)
例 2 — 判定解的类型并求解
消元::
第 3 列无主元 → 自由,无穷多解。回代:;。通解 。验证 : ✓。
例 3 — 用 LU 解(乘数账本)
。消元 (乘数 )得 ,故 。解 :
前代 :。回代 :;。解 。验证:, ✓。
例 4 — 证明:逆是唯一的
命题:若 有逆,则逆唯一。
证明:设 都是 的逆,即 且 。则
所以 ,逆唯一。技巧:这类”唯一性”证明的套路是”从两个候选出发,用结合律把它们夹成相等”——和 Stage 1 自测题里”取特殊值”是同类的标准招式。
8. 衔接 21-241:考试怎么考 + 自测
8.1 这部分在 21-241 的考点
- 计算题(务必快准):消元解方程、求 / 的逆、矩阵乘法、LU 分解。这些是 HW 主力,考试里属于”必须拿满”的部分。
- 概念/证明题(拉分):可能要你证明 、、逆的唯一性,或论证”某矩阵何时可逆 / 为何 只有零解”。
- 判类型题:给一个含参数的系统,问”参数取何值时无解 / 唯一 / 无穷多解”——这要你把消元做到底,盯住主元和矛盾行。
针对你的两个老问题(来自 Stage 1 批改)
(1) 别再跳”解释”子问。 这里很多题会问”为什么可逆 / 为什么无穷多解”——把理由写全(指出主元、自由变量、或那串等价条件),不要只丢一个矩阵或一个数。
(2) 顺序别写反。 转置和求逆都会反转乘积顺序(,不是 )。这是本阶段最常见的丢分点,务必盯紧。
8.2 自测题(先做,再展开答案)
自测 1(矩阵乘法)
,。算 与 ,它们相等吗?
答案 1
;。不相等( 左乘是换行,右乘是换列)。
自测 2(消元解方程)
解 。
答案 2
:;再 :。回代:。。验证 ✓。
自测 3(求逆 + 解方程)
(a) 求 的逆。(b) 用它解 。
答案 3
(a) ,。
(b) 。验证 ✓。
自测 4(含参数,判类型)
对哪些实数 ,系统 分别有唯一解 / 无穷多解 / 无解?
答案 4
消元 :。
- :主元 ,唯一解()。
- :第二行变 , 自由,无穷多解()。
- 无解不会发生(右端那 始终相容)。
这道题就是 21-241 爱考的”含参判类型”——把理由(主元是否为零)写清楚。
自测 5(证明,顺序反转)
设 均可逆。证明 。
答案 5
验证它乘 得 :
反复用结合律”内层先抵消”。注意顺序——这正是 8.1 提醒的易错点。
9. 一页速记 + 进入 Stage 3 的检查清单
Stage 2 速记卡
- 矩阵乘法 ;维度 ;四视角(元素/列/行/外积);不可交换 。
- 三种行变换(倍加/数乘/交换)不改变解;对增广矩阵 操作。
- 高斯消元 → 上三角(REF)→ 回代;RREF 唯一,主元化 且上下清零。
- 解三类:矛盾行 → 无解;每列有主元 → 唯一;有自由列 → 无穷多(自由变量数 = 无主元列数)。
- 消元 = 左乘初等矩阵 ;换行 = 左乘置换 ()。
- LU 分解 : 是上三角, 装消元乘数;解方程 = 前代 + 回代 ;一次分解、反复用。
- 逆矩阵 ; 公式”对调变号除以 “;Gauss–Jordan 。
- 顺序反转:,。
- 可逆 ⟺ 个非零主元 ⟺ 只有零解 ⟺ ⟺ 列线性无关(后两条 Stage 3/5 补)。
进入 Stage 3 前,确认你能:
- 不查笔记算一个 矩阵乘法,并能从列视角解释结果;
- 对一个 系统独立完成消元 + 回代,并判断它是唯一/无解/无穷多;
- 把一个 做 LU 分解,并指出 里每个数来自哪一步消元;
- 用 Gauss–Jordan 求一个 的逆并验证 ;
- 默写并证明 ,且解释为什么顺序要反转;
- 说清” 可逆”的至少三个等价条件。
全部打勾 → 你已经为 Stage 3(向量空间与四个基本子空间) 准备好了。
一句话收尾
Stage 2 看似在教三套独立技术(乘法、消元、求逆),其实它们由同一套消元乘数串成一条线:消元产生 ,乘数装进 ,Gauss–Jordan 把同样的过程推到底得到 。而所有这些的尽头是同一个问题: 何时可解、解是什么。 这个问题的彻底答案——用”四个子空间”来回答——就是 Stage 3 的主题。