syntax.garden

A1-线性方程组与消元

A1-线性方程组与消元

线性方程组与消元

这讲讲什么:把「解线性方程组」变成一套不用动脑的机械流程——写增广矩阵、做行变换、化成阶梯形、回代;再用秩一句话判定解有几个。
前置:矩阵的写法与矩阵乘向量;08 讲的零空间与值域(只用到结论);会算 2×22\times2、3×33\times3 行列式更顺,不会也能读。
一句话:消元法把「解方程」换成了「整理矩阵」,而解的情况由两个秩决定——秩相等才有解,秩等于未知数个数才唯一。


一、为什么需要它

理论课讲线性方程组,通常一句话带过:解集是一个仿射子空间,维数是 n−rn-r。然后立刻转去讲基、维数、线性映射。

问题是:真给你一个 3×33\times3 的方程组,你手上得有动作。

工程与化学里天天遇到的正是这件事:

  • 配平一个化学方程式,本质是解一个齐次方程组;
  • 电路里每个节点写一条基尔霍夫电流方程,得到一个线性方程组;
  • 用若干组实验数据拟合一条曲线,还是线性方程组(超定时就变成最小二乘)。

这些场合没人关心「解集是不是子空间」,只关心三件事:

  1. 有解吗?(配平配不出来,通常是方程式写错了)
  2. 解唯一吗?(不唯一意味着可以有多种配平系数,取最简整数比即可)
  3. 怎么把解写出来?(而且要能手算,不能只写在纸上)

这一讲只回答这三问。回答的工具只有一个:高斯消元法,外加一个用来「预判」的判据——秩。

为什么先学判据再学算法

你可以直接埋头消元,消完自然知道有没有解。但工程上更常见的是参数化的一族方程组:某个浓度、某个电阻是可调的,你要问的是「调到什么值时无解」。这时逐个代进去算太慢,用秩可以先把参数的范围划出来。


二、定义与最小例子

2.1 从方程到矩阵

一个 nn 元线性方程,形如

a1x1+a2x2+⋯+anxn=ba_1x_1+a_2x_2+\cdots+a_nx_n=b

其中 a1,…,an,ba_1,\dots,a_n,b 是已知数,x1,…,xnx_1,\dots,x_n 是未知数。「线性」的意思是:每个未知数只出现一次、只乘一个常数、彼此不相乘。

把 mm 个这样的方程摆在一起,就是线性方程组:

{a1,1x1+a1,2x2+⋯+a1,nxn=b1a2,1x1+a2,2x2+⋯+a2,nxn=b2⋯am,1x1+am,2x2+⋯+am,nxn=bm\begin{cases}a_{1,1}x_1+a_{1,2}x_2+\cdots+a_{1,n}x_n=b_1\\ a_{2,1}x_1+a_{2,2}x_2+\cdots+a_{2,n}x_n=b_2\\ \qquad\cdots\\ a_{m,1}x_1+a_{m,2}x_2+\cdots+a_{m,n}x_n=b_m\end{cases}

一句话把它压成矩阵形式:

AX=BAX=B

其中 A=(ai,j)A=(a_{i,j}) 是 m×nm\times n 的系数矩阵,XX 是 n×1n\times 1 的未知列,BB 是 m×1m\times 1 的右端项。

两个尺寸别搞混

AA 是 m×nm\times n:行数 = 方程个数,列数 = 未知数个数。
方程个数和未知数个数没有任何理由相等,相等只是最常见的一种特例。

如果 B=0B=0,方程组叫齐次的;否则叫非齐次的。这个区分在第三节会变成一条很硬的结论。

2.2 增广矩阵:把未知数名字省掉

真正动手算时,写 x1,x2,…x_1,x_2,\dots 纯属浪费。因为整个消元过程中,未知数的名字从不变化,起作用的只有系数和右端项。

于是把 BB 贴在 AA 右边,得到 m×(n+1)m\times(n+1) 的增广矩阵:

[ A∣B ]=(a1,1a1,2⋯a1,nb1a2,1a2,2⋯a2,nb2⋮⋮⋮⋮am,1am,2⋯am,nbm)[\,A\mid B\,]=\left(\begin{array}{cccc|c}a_{1,1}&a_{1,2}&\cdots&a_{1,n}&b_1\\ a_{2,1}&a_{2,2}&\cdots&a_{2,n}&b_2\\ \vdots&\vdots&&\vdots&\vdots\\ a_{m,1}&a_{m,2}&\cdots&a_{m,n}&b_m\end{array}\right)

竖线只是提醒你「右边这一列不是未知数的系数」。增广矩阵与方程组一一对应:给一个增广矩阵,能原样还原出方程组。

2.3 最小例子:鸡兔同笼

假设若干只鸡与兔关在一起。每只鸡 1 个头 2 条腿,每只兔 1 个头 4 条腿。数出一共 35 个头、94 条腿,问各有几只。

设鸡 x1x_1 只、兔 x2x_2 只:

{x1+x2=352x1+4x2=94\begin{cases}x_1+x_2=35\\ 2x_1+4x_2=94\end{cases}

增广矩阵是

(11352494)\left(\begin{array}{cc|c}1&1&35\\ 2&4&94\end{array}\right)

试一下 (23,12)(23,12):23+12=3523+12=35 ✓,2⋅23+4⋅12=46+48=942\cdot23+4\cdot12=46+48=94 ✓。所以 x1=23, x2=12x_1=23,\ x_2=12 是一个解。

再试 (12,23)(12,23):12+23=3512+23=35 ✓,但 2⋅12+4⋅23=24+92=116≠942\cdot12+4\cdot23=24+92=116\neq94 ✗。

「每组数都满足第一个方程」不算解

解必须同时满足每一条方程。这是最基础也最容易在考试里丢掉的一分:代回去时只验了第一行。
养成交卷前逐行代回的习惯,比检查十遍计算过程都有效。

2.4 三种行变换

解方程时你本能会做的事只有三种,它们作用在增广矩阵上叫初等行变换:

记号 操作 为什么合法
Ri↔RjR_i\leftrightarrow R_j 交换两行 方程的顺序无关紧要
Ri←cRi (c≠0)R_i\leftarrow cR_i\ (c\neq0) 某行乘非零常数 等式两边同乘非零数,解集不变
Ri←Ri+cRj (i≠j)R_i\leftarrow R_i+cR_j\ (i\neq j) 某行加上另一行的 cc 倍 若两式都成立,则「式 ii 加式 jj 的 cc 倍」也成立;且这步可逆(再减回去)

关键在最后那句可逆:每一步都有一步能把它撤销,所以新方程组与原方程组同解。不是「差不多」,是解集完全一样。

只许动行,不许动列

对列做同样的操作会改变未知数的含义,解集就变了。
例:把 x1x_1 那一列换成「x1x_1 列 ++ x2x_2 列」,等价于偷偷把未知数换成了 x1+x2x_1+x_2。
本讲所有操作一律是行变换。

2.5 阶梯形与主元

消元的目标形态是行阶梯形(REF),三条要求:

  1. 全零行排在最后;
  2. 每个非零行的第一个非零元,位置严格在上一行第一个非零元的右边;
  3. 该非零元所在列,在它下方全是 00。

这个「每行第一个非零元」叫主元(pivot)。例如

(21−1801150026)\left(\begin{array}{cccc}2&1&-1&8\\ 0&1&1&5\\ 0&0&2&6\end{array}\right)

主元在 (1,1),(2,2),(3,3)(1,1),(2,2),(3,3),呈阶梯状。

再加两条要求——主元全化为 11,且主元所在列的其余元素全为 00——就得到简化行阶梯形(RREF)。RREF 里解已经直接读出来了,连回代都省了,代价是多做几步计算。


三、几个必须自己算一遍的结论

3.1 手算例一:唯一解(完整四步)

解

{x1+2x2+x3=82x1+5x2+3x3=21x1+3x2+4x3=19(3.1)\begin{cases}x_1+2x_2+x_3=8\\ 2x_1+5x_2+3x_3=21\\ x_1+3x_2+4x_3=19\end{cases}\tag{3.1}

第一步:写增广矩阵。

(12182532113419)\left(\begin{array}{ccc|c}1&2&1&8\\ 2&5&3&21\\ 1&3&4&19\end{array}\right)

第二步:用第 1 行消掉下面两行的 x1x_1。

R2←R2−2R1R_2\leftarrow R_2-2R_1:(2,5,3∣21)−2(1,2,1∣8)=(0,1,1∣5)(2,5,3\mid21)-2(1,2,1\mid8)=(0,1,1\mid5)。

R3←R3−R1R_3\leftarrow R_3-R_1:(1,3,4∣19)−(1,2,1∣8)=(0,1,3∣11)(1,3,4\mid19)-(1,2,1\mid8)=(0,1,3\mid11)。

(1218011501311)\left(\begin{array}{ccc|c}1&2&1&8\\ 0&1&1&5\\ 0&1&3&11\end{array}\right)

第三步:用第 2 行消掉第 3 行的 x2x_2。

R3←R3−R2R_3\leftarrow R_3-R_2:(0,1,3∣11)−(0,1,1∣5)=(0,0,2∣6)(0,1,3\mid11)-(0,1,1\mid5)=(0,0,2\mid6)。

(121801150026)\left(\begin{array}{ccc|c}1&2&1&8\\ 0&1&1&5\\ 0&0&2&6\end{array}\right)

已是阶梯形,主元 1,1,21,1,2 分别在列 1,2,31,2,3。三个主元,正好每个未知数一个。

第四步:回代(从最后一行往上)。

第三行 2x3=62x_3=6,得 x3=3x_3=3。

第二行 x2+x3=5x_2+x_3=5,得 x2=5−3=2x_2=5-3=2。

第一行 x1+2x2+x3=8x_1+2x_2+x_3=8,得 x1=8−2⋅2−3=1x_1=8-2\cdot2-3=1。

所以解是 (x1,x2,x3)=(1,2,3)(x_1,x_2,x_3)=(1,2,3)。

验算(必须做):1+4+3=81+4+3=8 ✓,2+10+9=212+10+9=21 ✓,1+6+12=191+6+12=19 ✓。

回代比「化成 RREF」快,但要小心一个前提

回代要求阶梯形里每行主元所在列只有它自己非零到下方,并且你从最底下往上走。只要你真的从最底行开始,就不会漏。
心算能力强的话,把主元上方也顺手消成 00(即化为 RREF)反而更不容易错——代价是多写几行。

3.2 手算例二:无穷多解(同一个系数矩阵,换个右端项)

{x1+x2+x3=32x1+3x2+4x3=83x1+5x2+7x3=13(3.2)\begin{cases}x_1+x_2+x_3=3\\ 2x_1+3x_2+4x_3=8\\ 3x_1+5x_2+7x_3=13\end{cases}\tag{3.2}

增广矩阵,照 3.1 的流程走:

(1113234835713)→R3−3R1R2−2R1(111301220244)→R3−2R2(111301220000)\left(\begin{array}{ccc|c}1&1&1&3\\ 2&3&4&8\\ 3&5&7&13\end{array}\right)\xrightarrow[R_3-3R_1]{R_2-2R_1}\left(\begin{array}{ccc|c}1&1&1&3\\ 0&1&2&2\\ 0&2&4&4\end{array}\right)\xrightarrow{R_3-2R_2}\left(\begin{array}{ccc|c}1&1&1&3\\ 0&1&2&2\\ 0&0&0&0\end{array}\right)

第三行整体归零——这一行没有给出任何新信息(它等价于 0=00=0,是恒等式,可以划掉)。

剩下的方程:

{x1+x2+x3=3x2+2x3=2\begin{cases}x_1+x_2+x_3=3\\ x_2+2x_3=2\end{cases}

两个方程、三个未知数。方程组「欠定」了:有一个未知数可以随便取。

取 x3=tx_3=t(tt 为任意实数):

x2=2−2t,x1=3−x2−x3=3−(2−2t)−t=1+tx_2=2-2t,\qquad x_1=3-x_2-x_3=3-(2-2t)-t=1+t

所以全部解是

(x1,x2,x3)=(1+t, 2−2t, t)=(1,2,0)+t (1,−2,1),t∈R(3.3)(x_1,x_2,x_3)=(1+t,\ 2-2t,\ t)=(1,2,0)+t\,(1,-2,1),\qquad t\in\mathbb{R}\tag{3.3}

取 t=0t=0 得 (1,2,0)(1,2,0),代回原式:1+2+0=31+2+0=3 ✓,2+6+0=82+6+0=8 ✓,3+10+0=133+10+0=13 ✓。

无穷多解要写成「特解 + 参数」

只写「有无穷多解」等于没答。标准答案是把通解写出来:一个特解 (1,2,0)(1,2,0),加上齐次解 t(1,−2,1)t(1,-2,1)。
这个写法不是巧合,第三节 3.6 节会证明它总是对的。

3.3 手算例三:无解(还是同一个 AA)

把 3.2 的右端项稍微改一下:

{x1+x2+x3=32x1+3x2+4x3=83x1+5x2+7x3=14(3.4)\begin{cases}x_1+x_2+x_3=3\\ 2x_1+3x_2+4x_3=8\\ 3x_1+5x_2+7x_3=14\end{cases}\tag{3.4}

同样的消元:

(1113234835714)→(111301220245)→(111301220001)\left(\begin{array}{ccc|c}1&1&1&3\\ 2&3&4&8\\ 3&5&7&14\end{array}\right)\to\left(\begin{array}{ccc|c}1&1&1&3\\ 0&1&2&2\\ 0&2&4&5\end{array}\right)\to\left(\begin{array}{ccc|c}1&1&1&3\\ 0&1&2&2\\ 0&0&0&1\end{array}\right)

第三行是 0x1+0x2+0x3=10x_1+0x_2+0x_3=1,即 0=10=1。矛盾,无解。

注意这三个例子的差别有多小:AA 一模一样,右端项只差一个数(1313 变 1414),解的命运就完全不同。这说明——有没有解,取决于右端项 BB 与 AA 的「匹配程度」,而匹配程度正好可以用秩量化。

3.4 判据:用秩一句话说完

先说秩在方程组里的含义:秩 r=rank⁡(A)r=\operatorname{rank}(A) 就是这个方程组里「真正独立的方程条数」。把 mm 条方程消完,剩下 rr 条非零的,其余全是 0=00=0。

再记 G=[ A∣B ]G=[\,A\mid B\,] 是增广矩阵。AA 的所有列都在 GG 里,所以 rank⁡(A)≤rank⁡(G)\operatorname{rank}(A)\le\operatorname{rank}(G),而且 rank⁡(G)\operatorname{rank}(G) 最多比 rank⁡(A)\operatorname{rank}(A) 大 11(右端项那一列最多贡献一个主元)。

于是判据只有三种情形:

秩的关系 解的情况 理由
rank⁡(A)<rank⁡(G)\operatorname{rank}(A)<\operatorname{rank}(G) 无解 阶梯形里出现 0=非零0=\text{非零} 的行
rank⁡(A)=rank⁡(G)=n\operatorname{rank}(A)=\operatorname{rank}(G)=n 唯一解 每个未知数都拿到一个主元,可逐个回代
rank⁡(A)=rank⁡(G)=r<n\operatorname{rank}(A)=\operatorname{rank}(G)=r<n 无穷多解,自由参数 n−rn-r 个 有 n−rn-r 个未知数没有主元,可任意赋值

这就是本讲的主定理。用矩阵语言重述一遍,更便于记忆:

AX=B 有解  ⟺  rank⁡(A)=rank⁡([ A∣B ])AX=B\ \text{有解}\iff \operatorname{rank}(A)=\operatorname{rank}([\,A\mid B\,])

而「有解且唯一」再补一个条件:rank⁡(A)=n\operatorname{rank}(A)=n(列满秩)。

为什么无解的情形一定是「差 11」

因为 GG 只比 AA 多一列。多一列最多把秩抬高 11,所以不可能出现 rank⁡(G)−rank⁡(A)≥2\operatorname{rank}(G)-\operatorname{rank}(A)\ge2。
一旦不相等,一定是「多了那个 11」,对应阶梯形里单独冒出来的一行 0=非零0=\text{非零}。
三例对照:3.2 里两秩都等于 22(有解、无穷多);3.4 里 AA 的秩 22、GG 的秩 33(无解)。

把三个例子放进一张表,规律立刻清楚:

例子 nn rank⁡(A)\operatorname{rank}(A) rank⁡(G)\operatorname{rank}(G) 结论
3.1 33 33 33 唯一解
3.2 33 22 22 无穷多解(11 个自由参数)
3.3 33 22 33 无解
顺带一个直觉检验

自由参数个数 n−rn-r 永远是非负整数。若有人算出「−1-1 个自由参数」,那是把 rr 算超了——
rr 不可能大于 nn(主元最多 nn 个,一列只能一个),也不可能大于 mm(一行最多一个)。

3.5 Cramer 法则:唯一解情形的显式公式

当 m=nm=n 且 det⁡A≠0\det A\neq0 时,解可以直接写成分式,不用消元。

设 AA 是 nn 级方阵,det⁡A≠0\det A\neq0。记 AiA_i 为「把 AA 的第 ii 列换成 BB」得到的方阵,则

xi=det⁡Aidet⁡A,i=1,2,…,nx_i=\frac{\det A_i}{\det A},\qquad i=1,2,\dots,n

2 级的情形写开就是中学的「十字相减」:

{a11x1+a12x2=b1a21x1+a22x2=b2⟹x1=∣b1a12b2a22∣∣a11a12a21a22∣,x2=∣a11b1a21b2∣∣a11a12a21a22∣\begin{cases}a_{11}x_1+a_{12}x_2=b_1\\ a_{21}x_1+a_{22}x_2=b_2\end{cases}\quad\Longrightarrow\quad x_1=\frac{\begin{vmatrix}b_1&a_{12}\\ b_2&a_{22}\end{vmatrix}}{\begin{vmatrix}a_{11}&a_{12}\\ a_{21}&a_{22}\end{vmatrix}},\qquad x_2=\frac{\begin{vmatrix}a_{11}&b_1\\ a_{21}&b_2\end{vmatrix}}{\begin{vmatrix}a_{11}&a_{12}\\ a_{21}&a_{22}\end{vmatrix}}

为什么分母一定是 det⁡A\det A? 从消元看最清楚:对 2 级情形做一次 R2←a11R2−a21R1R_2\leftarrow a_{11}R_2-a_{21}R_1(先假定 a11≠0a_{11}\neq0),得

{a11x1+a12x2=b1(a11a22−a12a21)x2=a11b2−a21b1\begin{cases}a_{11}x_1+a_{12}x_2=b_1\\ \big(a_{11}a_{22}-a_{12}a_{21}\big)x_2=a_{11}b_2-a_{21}b_1\end{cases}

第二行括号里正是 det⁡A\det A,右端正是 det⁡A2\det A_2。所以 x2=det⁡A2/det⁡Ax_2=\det A_2/\det A。x1x_1 同理。

这个「用行列式解方程」的思路,本质是把解写成系数与右端项的代数式,好处是理论分析极方便(能一眼看出解如何随参数变化),坏处是计算量爆炸。

用 2.3 的鸡兔同笼试一遍:

det⁡A=∣1124∣=1⋅4−1⋅2=2≠0\det A=\begin{vmatrix}1&1\\ 2&4\end{vmatrix}=1\cdot4-1\cdot2=2\neq0

x1=∣351944∣2=35⋅4−1⋅942=140−942=23,x2=∣135294∣2=94−702=12x_1=\frac{\begin{vmatrix}35&1\\ 94&4\end{vmatrix}}{2}=\frac{35\cdot4-1\cdot94}{2}=\frac{140-94}{2}=23,\qquad x_2=\frac{\begin{vmatrix}1&35\\ 2&94\end{vmatrix}}{2}=\frac{94-70}{2}=12

和消元结果一致。

再用 3.1 的方程组算一个分量,体会一下代价:

det⁡A=∣121253134∣=2,x1=12∣82121531934∣=12(8⋅11−2⋅27+1⋅(−32))=22=1\det A=\begin{vmatrix}1&2&1\\ 2&5&3\\ 1&3&4\end{vmatrix}=2,\qquad x_1=\frac{1}{2}\begin{vmatrix}8&2&1\\ 21&5&3\\ 19&3&4\end{vmatrix}=\frac{1}{2}\big(8\cdot11-2\cdot27+1\cdot(-32)\big)=\frac{2}{2}=1

只求一个分量,就要算 det⁡A\det A 和 det⁡A1\det A_1 两个 33 级行列式,展开成六个 2×22\times2;要求全部三个分量,得算四个 33 级行列式,即十二个 2×22\times2。

Cramer 法则的三条边界,务必记牢

① 只能用于 m=nm=n(方阵);
② 必须 det⁡A≠0\det A\neq0;
③ det⁡A=0\det A=0 时它什么也没说——既不能判无解,也不能判无穷多,只能换工具(用秩)。
这三条里第 ③ 条错得最多,见第五节。

3.6 齐次与非齐次:一个结构性结论

这是本讲最有「理论味」的一条,也是把消元与 08 讲接起来的地方。

(a) 齐次组永远有解。 A⋅0=0A\cdot 0=0,所以零向量一定是解,叫零解。齐次组的问题不是「有没有解」,而是「有没有非零解」。

(b) 齐次组的解集是子空间。 若 AX1=0AX_1=0、AX2=0AX_2=0,则

A(X1+X2)=AX1+AX2=0,A(λX1)=λAX1=0A(X_1+X_2)=AX_1+AX_2=0,\qquad A(\lambda X_1)=\lambda AX_1=0

对加法、数乘都封闭,且含零向量。这个子空间就是 08 讲说的零空间 null⁡A\operatorname{null}A,维数是 n−rank⁡An-\operatorname{rank}A(线性映射基本定理)。

举个具体例子:

{x1+2x2+3x3=04x1+5x2+6x3=0\begin{cases}x_1+2x_2+3x_3=0\\ 4x_1+5x_2+6x_3=0\end{cases}

R2←R2−4R1R_2\leftarrow R_2-4R_1 得 (0,−3,−6∣0)(0,-3,-6\mid0),即 x2=−2x3x_2=-2x_3。取 x3=tx_3=t,则 x1=−2x2−3x3=4t−3t=tx_1=-2x_2-3x_3=4t-3t=t。解集是

{(t,−2t,t)}=span⁡{(1,−2,1)}\{(t,-2t,t)\}=\operatorname{span}\{(1,-2,1)\}

一维,基是 (1,−2,1)(1,-2,1)。秩是 22,n=3n=3,维数 3−2=13-2=1 ✓。

(c) 非齐次组的解集 = 一个特解 + 齐次组的解集。 设 X0X_0 是 AX=BAX=B 的某个解(特解),则

AX=B  ⟺  A(X−X0)=B−B=0  ⟺  X−X0∈null⁡A  ⟺  X=X0+Z, Z∈null⁡AAX=B\iff A(X-X_0)=B-B=0\iff X-X_0\in\operatorname{null}A\iff X=X_0+Z,\ Z\in\operatorname{null}A

证明只有一行代换,但它把 3.2 的答案解释得干干净净:那里 X0=(1,2,0)X_0=(1,2,0),齐次解是 t(1,−2,1)t(1,-2,1),通解正是两者相加。

(d) 由此得到「唯一性」的另一个说法: 非齐次组有解时,解唯一   ⟺  null⁡A={0}  ⟺  rank⁡A=n\iff \operatorname{null}A=\{0\}\iff \operatorname{rank}A=n。这与 3.4 的判据完全一致——同一件事的两种讲法。

(e) 一个常用推论: 若 m<nm<n(方程比未知数少),齐次组 AX=0AX=0 必有非零解。理由是 rank⁡A≤m<n\operatorname{rank}A\le m<n,所以零空间维数 n−rank⁡A≥n−m>0n-\operatorname{rank}A\ge n-m>0,里面不止零向量。

这条推论为什么值钱

它让你不算就能下结论。例如「5 个未知数、3 条齐次方程」,直接说:有非零解,且至少 22 维的解空间。
反过来,「方程个数多于未知数」的非齐次组,当右端项取某些值时一定无解——因为值域填不满整个 Rm\mathbb{R}^m。


四、几何直观 / 记忆钩子

4.1 两条直线、三个平面

22 元方程在平面上是一条直线,解方程组就是求公共点。三种可能全在秩里:

图形 秩语言 解
两直线交于一点 rank⁡A=rank⁡G=2=n\operatorname{rank}A=\operatorname{rank}G=2=n 唯一
两直线平行(不重合) rank⁡A=1<2=rank⁡G\operatorname{rank}A=1<2=\operatorname{rank}G 无解
两直线重合 rank⁡A=rank⁡G=1<n=2\operatorname{rank}A=\operatorname{rank}G=1<n=2 无穷多(11 个自由参数)

33 元方程是空间中的平面,33 个平面求公共点:交于一点(r=3r=3)、交于一条直线(r=2r=2,无穷多,一个参数)、交于一个平面(r=1r=1)、或者根本无公共点(两秩不等)。

消元在几何上干了什么

行变换不改变解集,等于在保持交点不动的前提下,把这几张平面「转动」到方便观察的位置。
化成阶梯形,就是转到「一层压一层」的姿态,于是有几个交点一眼可见。

4.2 三个数就够:m,n,rm,n,r

拿到任何方程组,先数三个数,别急着算:

  • mm = 方程条数(增广矩阵的行数);
  • nn = 未知数个数(系数矩阵的列数);
  • r=rank⁡Ar=\operatorname{rank}A = 真正独立的方程条数。

然后:

  • 自由度 =n−r=n-r。这是唯一需要记的公式。
  • mm 从不出现在判据里。mm 只影响「能提出多少条独立方程」,也就是 r≤mr\le m。
一句话口诀

两秩不等 → 无解;两秩相等 → 有解;秩满 nn → 唯一;秩不满 → n−rn-r 个自由参数。
十六个字,考前默一遍,比记十道例题管用。

4.3 两个比喻

比喻一:主元是「每个方程带来的新信息」。 一个方程如果没有主元(整行归零),说明它能被前面的方程凑出来,是「重复的话」。rr 就是有效信息的条数。

比喻二:行变换是「整理书架」。 你只是把书从这一格搬到那一格、把重复的书并到一处,书的总数没变。所以解集不变。而对列做操作,相当于把两册的内容撕下来重新装订——那就不是原来那一册了。


五、常见误区

误区 1:拿「方程个数」和「未知数个数」比大小

这是最普遍的错误。正确判据用的是秩,不是 mm。
反例一(m=n=3m=n=3 却无解):3.3 那个方程组,三个方程三个未知数,照样无解。
反例二(m>nm>n 却仍有唯一解):

{x+y=3x−y=12x+2y=6\begin{cases}x+y=3\\ x-y=1\\ 2x+2y=6\end{cases}

三条方程、两个未知数,看起来「约束过头」。但第三行就是第一行的 22 倍,它没带来新信息,rank⁡A=rank⁡G=2=n\operatorname{rank}A=\operatorname{rank}G=2=n,解唯一,是 (2,1)(2,1)。
多的方程可能是被凑出来的,秩才是真话。

误区 2:det⁡A=0\det A=0 就说「无解」

det⁡A=0\det A=0 只说明 Cramer 法则失效,什么都没判定。两种结局都有:
无解:{x+y=12x+2y=3\begin{cases}x+y=1\\ 2x+2y=3\end{cases}(消元得 0=10=1)。
无穷多:{x+y=12x+2y=2\begin{cases}x+y=1\\ 2x+2y=2\end{cases}(第二行是第一个的两倍,r=1<n=2r=1<n=2)。
要分辨,只能回到秩。

误区 3:解方程时除以「可能是 00 的表达式」

带参数的方程组里这条会直接丢解。典型例子:

{kx+y=1x+ky=1\begin{cases}kx+y=1\\ x+ky=1\end{cases}

有人上来就写 x=y=1k+1x=y=\dfrac{1}{k+1},把 k=0k=0、k=±1k=\pm1 全丢了。正确做法是先算 det⁡A=k2−1\det A=k^2-1,再分情形:
k≠±1k\neq\pm1 时唯一解 x=y=1k+1x=y=\frac{1}{k+1};k=1k=1 时两行都化成 x+y=1x+y=1,无穷多解;k=−1k=-1 时第一式 −x+y=1-x+y=1、第二式 x−y=1x-y=1,相加得 0=20=2,无解。
凡是要除,先问「这个量会不会是 00」。

误区 4:把「出现整行 00」当成「无穷多解」

整行归零只说明 rank⁡A<min⁡(m,n)\operatorname{rank}A<\min(m,n),还要看 nn。
若 r=nr=n 而某行归零,那是「方程太多、有冗余」,解仍然唯一。例如

{x+y=3x−y=12x+2y=6\begin{cases}x+y=3\\ x-y=1\\ 2x+2y=6\end{cases}

消元后 r=2=nr=2=n,第三行归零,解唯一 (2,1)(2,1)。
只有 r<nr<n 才谈得上自由参数。

误区 5:求出「一个解」就宣布解完

当 r<nr<n 时,单个解只是特解,必须写出通解 X0+t1Z1+⋯X_0+t_1Z_1+\cdots。
只写 (1,2,0)(1,2,0) 在 3.2 那道题里是不完整的;标准答案是 (1,2,0)+t(1,−2,1)(1,2,0)+t(1,-2,1)。
反过来的陷阱也存在:把齐次解里那个 tt 忘掉,或把 tt 的取值范围漏了(在本课程里 t∈Rt\in\mathbb{R})。

误区 6:对列做消元

行变换保解集,列变换不保。有人为了「把矩阵化简得更漂亮」顺手对列做加减,结果算出一组根本不满足原方程的数。
判断标准很简单:你动的是行,还是列? 动列就停手。


六、拓展(可跳过)

6.1 消元法的代价:为什么工程里不用 Cramer

nn 级方阵用 Cramer 法则,要算 n+1n+1 个 nn 级行列式,而 nn 级行列式按定义展开是 n!n! 项。n=10n=10 时约 3.6×1073.6\times10^{7} 项,n=20n=20 时是天文数字。

高斯消元的乘除次数约为 23n3\dfrac{2}{3}n^3:n=20n=20 时约 53005300 次。

nn Cramer(量级 (n+1) n!(n+1)\,n!) 高斯消元(量级 23n3\frac23n^3)
33 约 2424 约 1818
1010 约 4×1074\times10^{7} 约 700700
2020 约 5×10195\times10^{19} 约 53005300

差距不是「快一点」,是能不能算。所以 Cramer 法则在今天的定位是理论工具:用来写公式、做证明、分析解对参数的依赖,而不是用来出数。

那为什么还要学它

因为定理证明里反复出现「det⁡A≠0\det A\neq0 时解唯一且可写成 det⁡Aidet⁡A\frac{\det A_i}{\det A}」这种句式。
它把「解」变成一个显式的代数式,于是能对参数求导、能看单调性、能做误差分析。这些消元法给不了。

6.2 LU 分解:消元的「存档」版本

如果要用同一个 AA 解很多个不同的 BB(工程里极常见:同一张网的电阻矩阵,不同时刻的电流源),就没必要每次都从零消元。

消元的每一步都可以记成一个初等矩阵 EiE_i,于是

Ek⋯E2E1A=U(上三角)E_k\cdots E_2E_1A=U\quad(\text{上三角})

令 L=(Ek⋯E1)−1L=(E_k\cdots E_1)^{-1},得 A=LUA=LU。此后解 AX=BAX=B 只需两步:先解 LY=BLY=B(前代),再解 UX=YUX=Y(回代),每次都是 O(n2)O(n^2)。矩阵只需分解一次。

6.3 数值稳定:主元不能随便选

理论上「用第 1 行消掉下面」就行;浮点计算里不行。若主元很小(比如 10−1810^{-18}),除以它会把误差放大 101810^{18} 倍。

标准对策是部分选主元:在第 kk 步,不固定用第 kk 行,而是在第 kk 列下方挑绝对值最大的那一行,换上来当主元。这也解释了为什么 3.1 里我们允许 Ri↔RjR_i\leftrightarrow R_j——它不只是理论上的方便,也是数值算法的必需品。

6.4 化学里的样子:配平就是解齐次组

配平 Fe+O2→Fe2O3\mathrm{Fe}+\mathrm{O_2}\to\mathrm{Fe_2O_3}。设系数 a,b,ca,b,c,按元素守恒:

Fe:a=2c,O:2b=3c\text{Fe}:a=2c,\qquad \text{O}:2b=3c

即

{a−2c=02b−3c=0\begin{cases}a-2c=0\\ 2b-3c=0\end{cases}

这是齐次组,m=2,n=3m=2,n=3,必有非零解。消元后 r=2r=2,自由度 3−2=13-2=1:解是 (a,b,c)=(2c, 3c2, c)(a,b,c)=\left(2c,\ \frac{3c}{2},\ c\right)。取 c=2c=2 使全为整数,得 (4,3,2)(4,3,2):

4 Fe+3 O2→2 Fe2O34\,\mathrm{Fe}+3\,\mathrm{O_2}\to 2\,\mathrm{Fe_2O_3}

「取最简整数比」是齐次组的特权

齐次组有 11 维解空间时,任意非零解都是同一个方向的倍数,所以可以先随便取一组,再整体放大成整数、约掉公因子。
非齐次组不能这么干——缩放会破坏右端项。这是齐次组在实际问题里特别好用的原因。

6.5 一句话指向后面

若 rank⁡A<rank⁡(G)\operatorname{rank}A<\operatorname{rank}(G)(无解),工程上不会就此罢休,而是退一步求「最接近的解」——这就是最小二乘,它把矛盾方程组换成一个总是有解的正规方程。那属于内积与正交投影的部分,本讲不展开。


七、自测(先做,再看答案)

1. 不解方程,只判类型(唯一 / 无穷多 / 无解):
(a) {2x−y=14x−2y=3\begin{cases}2x-y=1\\ 4x-2y=3\end{cases}
(b) {2x−y=14x−2y=2\begin{cases}2x-y=1\\ 4x-2y=2\end{cases}
(c) {2x−y=1x+3y=2\begin{cases}2x-y=1\\ x+3y=2\end{cases}

2. 用高斯消元完整求解(写出每步行变换与回代):

{x+y+z=62x−y+z=3x+2y−z=2\begin{cases}x+y+z=6\\ 2x-y+z=3\\ x+2y-z=2\end{cases}

3. 用 Cramer 法则解 {2x+y=5x+3y=10\begin{cases}2x+y=5\\ x+3y=10\end{cases},并说明为什么这里可以用。

4. 求齐次组

{x1+2x2−x3=03x1+6x2−3x3=0x2+x3=0\begin{cases}x_1+2x_2-x_3=0\\ 3x_1+6x_2-3x_3=0\\ x_2+x_3=0\end{cases}

的解空间维数与一组基。

5. 设 AA 是 3×53\times5 矩阵,AX=BAX=B 有解且 rank⁡A=3\operatorname{rank}A=3。解有几个自由参数?如果把 BB 换成 00,解集是什么?它是不是子空间?

答案(点开)

1. (a) 第二行是第一行的 22 倍但右端不对:2⋅1=2≠32\cdot1=2\neq3,所以 rank⁡A=1<rank⁡G=2\operatorname{rank}A=1<\operatorname{rank}G=2,无解。
(b) 第二行就是第一行的 22 倍,两秩都等于 1<21<2,无穷多解(一个参数:x=t, y=2t−1x=t,\ y=2t-1)。
(c) det⁡A=2⋅3−(−1)⋅1=7≠0\det A=2\cdot3-(-1)\cdot1=7\neq0,唯一解。
三题的系数矩阵两两相同(前两题)只差右端,正说明「解的类型由两秩决定」。

2. 增广矩阵

(11162−11312−12)\left(\begin{array}{ccc|c}1&1&1&6\\ 2&-1&1&3\\ 1&2&-1&2\end{array}\right)

R2←R2−2R1R_2\leftarrow R_2-2R_1:(0,−3,−1∣−9)(0,-3,-1\mid-9);R3←R3−R1R_3\leftarrow R_3-R_1:(0,1,−2∣−4)(0,1,-2\mid-4)。
得

(11160−3−1−901−2−4)\left(\begin{array}{ccc|c}1&1&1&6\\ 0&-3&-1&-9\\ 0&1&-2&-4\end{array}\right)

为免除以 −3-3,先换行 R2↔R3R_2\leftrightarrow R_3:

(111601−2−40−3−1−9)\left(\begin{array}{ccc|c}1&1&1&6\\ 0&1&-2&-4\\ 0&-3&-1&-9\end{array}\right)

R3←R3+3R2R_3\leftarrow R_3+3R_2:(0,0,−7∣−21)(0,0,-7\mid-21),即 −7z=−21-7z=-21,z=3z=3。
回代:y−2z=−4⇒y=2y-2z=-4\Rightarrow y=2;x+y+z=6⇒x=1x+y+z=6\Rightarrow x=1。
解 (1,2,3)(1,2,3)。验算:1+2+3=61+2+3=6 ✓,2−2+3=32-2+3=3 ✓,1+4−3=21+4-3=2 ✓。

3. det⁡A=∣2113∣=6−1=5≠0\det A=\begin{vmatrix}2&1\\ 1&3\end{vmatrix}=6-1=5\neq0,且 m=n=2m=n=2,两条前提都满足,所以可用。

x=∣51103∣5=15−105=1,y=∣25110∣5=20−55=3x=\frac{\begin{vmatrix}5&1\\ 10&3\end{vmatrix}}{5}=\frac{15-10}{5}=1,\qquad y=\frac{\begin{vmatrix}2&5\\ 1&10\end{vmatrix}}{5}=\frac{20-5}{5}=3

验算:2+3=52+3=5 ✓,1+9=101+9=10 ✓。

4. 第二行是第一行的 33 倍,消去后剩两行:

{x1+2x2−x3=0x2+x3=0\begin{cases}x_1+2x_2-x_3=0\\ x_2+x_3=0\end{cases}

秩 r=2r=2,n=3n=3,所以解空间维数 =3−2=1=3-2=1。
由 x2=−x3x_2=-x_3,代入第一式:x1=2x3+x3=3x3x_1=2x_3+x_3=3x_3。取 x3=1x_3=1,得基 {(3,−1,1)}\{(3,-1,1)\}。
即解集 ={t(3,−1,1):t∈R}=\{t(3,-1,1):t\in\mathbb{R}\}。

5. 自由参数 =n−r=5−3=2=n-r=5-3=2。
若 B=0B=0,解集就是零空间 null⁡A\operatorname{null}A,维数 5−3=25-3=2(一个过原点的 22 维平面)。
它是子空间——齐次组的解集总含零向量、对加法与数乘封闭。
注意对比:B≠0B\neq0 时解集是「平面 + 一个偏移量」,不含零向量,不是子空间(是仿射子空间)。


八、复习卡

项 内容
增广矩阵 [ A∣B ][\,A\mid B\,],尺寸 m×(n+1)m\times(n+1);与方程组一一对应
三种行变换 换行;非零倍乘;倍加(Ri←Ri+cRjR_i\leftarrow R_i+cR_j)。都可逆,故解集不变
不许动列 列变换改变未知数含义,解集会变
行阶梯形 REF 零行在下;主元逐行右移;主元下方全 00
简化阶梯形 RREF REF 再加:主元为 11,主元所在列其余为 00(可直接读解)
主元 每行第一个非零元;个数 == 秩
秩的含义 真正独立的方程条数
无解 rank⁡A<rank⁡[ A∣B ]\operatorname{rank}A<\operatorname{rank}[\,A\mid B\,](阶梯形出现 0=非零0=\text{非零})
唯一解 rank⁡A=rank⁡[ A∣B ]=n\operatorname{rank}A=\operatorname{rank}[\,A\mid B\,]=n
无穷多解 rank⁡A=rank⁡[ A∣B ]=r<n\operatorname{rank}A=\operatorname{rank}[\,A\mid B\,]=r<n,自由参数 n−rn-r 个
判据口诀 两秩不等 → 无解;相等 → 有解;秩满 nn → 唯一
自由度 恒为 n−rn-r;mm 不进判据(只保证 r≤mr\le m)
Cramer m=nm=n 且 det⁡A≠0\det A\neq0 时 xi=det⁡Ai/det⁡Ax_i=\det A_i/\det A,AiA_i 是用 BB 换第 ii 列
Cramer 局限 必须方阵、必须行列式非零;det⁡A=0\det A=0 时它什么都不判定
计算量 Cramer 量级 (n+1) n!(n+1)\,n!;消元量级 23n3\frac23n^3
齐次组 必有零解;解集 =null⁡A=\operatorname{null}A,是子空间,维数 n−rn-r
非齐次组 解集 =X0+null⁡A=X_0+\operatorname{null}A(特解 + 齐次解),不是子空间
唯一性等价 有解时唯一   ⟺  null⁡A={0}  ⟺  rank⁡A=n\iff \operatorname{null}A=\{0\}\iff \operatorname{rank}A=n
m<nm<n 的齐次组 必有非零解(dim⁡null⁡≥n−m>0\dim\operatorname{null}\ge n-m>0)

九、出处与延伸(可选,不影响阅读)

  • 线性方程组的定义、解、零解/非零解:《行列式入门》1.20「线性方程组」(p70 起)把 nn 元一次方程、方程组的解、零解与非零解逐个定义,并给出鸡兔同笼的例子。
  • Cramer 法则的两种写法:同书 1.21「由 nn 个 nn 元一次方程作成的方程组 (1)」(p75 起)先给 X=(det⁡A)−1adj⁡(A)BX=(\det A)^{-1}\operatorname{adj}(A)B,再由伴随矩阵的展开式推出 xi=det⁡Ai/det⁡Ax_i=\det A_i/\det A(p77 附近)。同一节的末尾(p79)明确说 Cramer 公式只是「理论的公式」,实际计算应用代入消元、加减消元——本讲的第 6.1 节就是这个意思。
  • det⁡A=0\det A=0 时为什么复杂:同书 1.22(p80 起)用具体的 22 级例子说明 det⁡A=0\det A=0 时「有解但多解」与「无解」都可能出现,正是第五节误区 2 的反例来源。
  • 解的唯一性与齐次组的关系:同书 1.25(p91 起)证明:AX=0AX=0 只有零解 ⟹ AX=BAX=B 的解唯一;AX=0AX=0 有非零解 ⟹ 有解时不唯一。这就是本讲 3.6(d) 的原始出处。
  • 秩判据、行阶梯形、增广矩阵:同书附录 C.42「REF 阵、线性方程组、秩」(印刷页码 418 起,正文中的定理在 429–432 页)。该节给出与本讲 3.4 完全一致的三分法判据,并配有 5×55\times5 的完整算例;书中把「主元」叫 pivot,把「简化阶梯形」叫 SREF。
  • 抽象视角(把方程组看成 T:Fn→FmT:\mathbb{F}^n\to\mathbb{F}^m,B∈range⁡TB\in\operatorname{range}T):《线性代数应该这样学》第三讲 B 节「零空间和值域」(p54–55)。其中「未知数个数多于方程个数的齐次组必有非零解」「方程个数多于未知数个数时某些右端无解」两条结论,正是本讲 3.6(e) 的抽象版;该书也指出这两条可用高斯消元法证明。
  • 历史:高斯消元法在《九章算术》「方程」章已有系统运用,比高斯 1809 年的发表早一千六百余年(见上书 p43 的注释)。
  • 术语别名:行阶梯形 = REF = 阶梯形矩阵;简化行阶梯形 = RREF = 行最简形 / SREF;主元 = pivot = 首元;增广矩阵 = augmented matrix;自由未知量 = free variable;系数矩阵 = coefficient matrix。不同教材对「阶梯形」是否要求主元为 11 有分歧,用前先确认。
  • 想深挖:任何一本数值线性代数教材的「LU 分解与主元选取」一章;最小二乘见 24 讲(正交补与最小化)。