线性方程组与消元 #
这讲讲什么:把「解线性方程组」变成一套不用动脑的机械流程——写增广矩阵、做行变换、化成阶梯形、回代;再用秩一句话判定解有几个。
前置:矩阵的写法与矩阵乘向量;08 讲的零空间与值域(只用到结论);会算 2×2、3×3 行列式更顺,不会也能读。
一句话:消元法把「解方程」换成了「整理矩阵」,而解的情况由两个秩决定——秩相等才有解,秩等于未知数个数才唯一。
一、为什么需要它 #
理论课讲线性方程组,通常一句话带过:解集是一个仿射子空间,维数是 n−r。然后立刻转去讲基、维数、线性映射。
问题是:真给你一个 3×3 的方程组,你手上得有动作。
工程与化学里天天遇到的正是这件事:
- 配平一个化学方程式,本质是解一个齐次方程组;
- 电路里每个节点写一条基尔霍夫电流方程,得到一个线性方程组;
- 用若干组实验数据拟合一条曲线,还是线性方程组(超定时就变成最小二乘)。
这些场合没人关心「解集是不是子空间」,只关心三件事:
- 有解吗?(配平配不出来,通常是方程式写错了)
- 解唯一吗?(不唯一意味着可以有多种配平系数,取最简整数比即可)
- 怎么把解写出来?(而且要能手算,不能只写在纸上)
这一讲只回答这三问。回答的工具只有一个:高斯消元法,外加一个用来「预判」的判据——秩。
你可以直接埋头消元,消完自然知道有没有解。但工程上更常见的是参数化的一族方程组:某个浓度、某个电阻是可调的,你要问的是「调到什么值时无解」。这时逐个代进去算太慢,用秩可以先把参数的范围划出来。
二、定义与最小例子 #
2.1 从方程到矩阵 #
一个 n 元线性方程,形如
a1x1+a2x2+⋯+anxn=b
其中 a1,…,an,b 是已知数,x1,…,xn 是未知数。「线性」的意思是:每个未知数只出现一次、只乘一个常数、彼此不相乘。
把 m 个这样的方程摆在一起,就是线性方程组:
⎩⎨⎧a1,1x1+a1,2x2+⋯+a1,nxn=b1a2,1x1+a2,2x2+⋯+a2,nxn=b2⋯am,1x1+am,2x2+⋯+am,nxn=bm
一句话把它压成矩阵形式:
AX=B
其中 A=(ai,j) 是 m×n 的系数矩阵,X 是 n×1 的未知列,B 是 m×1 的右端项。
A 是 m×n:行数 = 方程个数,列数 = 未知数个数。
方程个数和未知数个数没有任何理由相等,相等只是最常见的一种特例。
如果 B=0,方程组叫齐次的;否则叫非齐次的。这个区分在第三节会变成一条很硬的结论。
2.2 增广矩阵:把未知数名字省掉 #
真正动手算时,写 x1,x2,… 纯属浪费。因为整个消元过程中,未知数的名字从不变化,起作用的只有系数和右端项。
于是把 B 贴在 A 右边,得到 m×(n+1) 的增广矩阵:
[A∣B]=a1,1a2,1⋮am,1a1,2a2,2⋮am,2⋯⋯⋯a1,na2,n⋮am,nb1b2⋮bm
竖线只是提醒你「右边这一列不是未知数的系数」。增广矩阵与方程组一一对应:给一个增广矩阵,能原样还原出方程组。
2.3 最小例子:鸡兔同笼 #
假设若干只鸡与兔关在一起。每只鸡 1 个头 2 条腿,每只兔 1 个头 4 条腿。数出一共 35 个头、94 条腿,问各有几只。
设鸡 x1 只、兔 x2 只:
{x1+x2=352x1+4x2=94
增广矩阵是
(12143594)
试一下 (23,12):23+12=35 ✓,2⋅23+4⋅12=46+48=94 ✓。所以 x1=23, x2=12 是一个解。
再试 (12,23):12+23=35 ✓,但 2⋅12+4⋅23=24+92=116=94 ✗。
解必须同时满足每一条方程。这是最基础也最容易在考试里丢掉的一分:代回去时只验了第一行。
养成交卷前逐行代回的习惯,比检查十遍计算过程都有效。
2.4 三种行变换 #
解方程时你本能会做的事只有三种,它们作用在增广矩阵上叫初等行变换:
| 记号 |
操作 |
为什么合法 |
| Ri↔Rj |
交换两行 |
方程的顺序无关紧要 |
| Ri←cRi (c=0) |
某行乘非零常数 |
等式两边同乘非零数,解集不变 |
| Ri←Ri+cRj (i=j) |
某行加上另一行的 c 倍 |
若两式都成立,则「式 i 加式 j 的 c 倍」也成立;且这步可逆(再减回去) |
关键在最后那句可逆:每一步都有一步能把它撤销,所以新方程组与原方程组同解。不是「差不多」,是解集完全一样。
对列做同样的操作会改变未知数的含义,解集就变了。
例:把 x1 那一列换成「x1 列 + x2 列」,等价于偷偷把未知数换成了 x1+x2。
本讲所有操作一律是行变换。
2.5 阶梯形与主元 #
消元的目标形态是行阶梯形(REF),三条要求:
- 全零行排在最后;
- 每个非零行的第一个非零元,位置严格在上一行第一个非零元的右边;
- 该非零元所在列,在它下方全是 0。
这个「每行第一个非零元」叫主元(pivot)。例如
200110−112856
主元在 (1,1),(2,2),(3,3),呈阶梯状。
再加两条要求——主元全化为 1,且主元所在列的其余元素全为 0——就得到简化行阶梯形(RREF)。RREF 里解已经直接读出来了,连回代都省了,代价是多做几步计算。
三、几个必须自己算一遍的结论 #
3.1 手算例一:唯一解(完整四步) #
解
⎩⎨⎧x1+2x2+x3=82x1+5x2+3x3=21x1+3x2+4x3=19(3.1)
第一步:写增广矩阵。
12125313482119
第二步:用第 1 行消掉下面两行的 x1。
R2←R2−2R1:(2,5,3∣21)−2(1,2,1∣8)=(0,1,1∣5)。
R3←R3−R1:(1,3,4∣19)−(1,2,1∣8)=(0,1,3∣11)。
1002111138511
第三步:用第 2 行消掉第 3 行的 x2。
R3←R3−R2:(0,1,3∣11)−(0,1,1∣5)=(0,0,2∣6)。
100210112856
已是阶梯形,主元 1,1,2 分别在列 1,2,3。三个主元,正好每个未知数一个。
第四步:回代(从最后一行往上)。
第三行 2x3=6,得 x3=3。
第二行 x2+x3=5,得 x2=5−3=2。
第一行 x1+2x2+x3=8,得 x1=8−2⋅2−3=1。
所以解是 (x1,x2,x3)=(1,2,3)。
验算(必须做):1+4+3=8 ✓,2+10+9=21 ✓,1+6+12=19 ✓。
回代要求阶梯形里每行主元所在列只有它自己非零到下方,并且你从最底下往上走。只要你真的从最底行开始,就不会漏。
心算能力强的话,把主元上方也顺手消成 0(即化为 RREF)反而更不容易错——代价是多写几行。
3.2 手算例二:无穷多解(同一个系数矩阵,换个右端项) #
⎩⎨⎧x1+x2+x3=32x1+3x2+4x3=83x1+5x2+7x3=13(3.2)
增广矩阵,照 3.1 的流程走:
1231351473813R2−2R1R3−3R1100112124324R3−2R2100110120320
第三行整体归零——这一行没有给出任何新信息(它等价于 0=0,是恒等式,可以划掉)。
剩下的方程:
{x1+x2+x3=3x2+2x3=2
两个方程、三个未知数。方程组「欠定」了:有一个未知数可以随便取。
取 x3=t(t 为任意实数):
x2=2−2t,x1=3−x2−x3=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)
取 t=0 得 (1,2,0),代回原式:1+2+0=3 ✓,2+6+0=8 ✓,3+10+0=13 ✓。
只写「有无穷多解」等于没答。标准答案是把通解写出来:一个特解 (1,2,0),加上齐次解 t(1,−2,1)。
这个写法不是巧合,第三节 3.6 节会证明它总是对的。
3.3 手算例三:无解(还是同一个 A) #
把 3.2 的右端项稍微改一下:
⎩⎨⎧x1+x2+x3=32x1+3x2+4x3=83x1+5x2+7x3=14(3.4)
同样的消元:
1231351473814→100112124325→100110120321
第三行是 0x1+0x2+0x3=1,即 0=1。矛盾,无解。
注意这三个例子的差别有多小:A 一模一样,右端项只差一个数(13 变 14),解的命运就完全不同。这说明——有没有解,取决于右端项 B 与 A 的「匹配程度」,而匹配程度正好可以用秩量化。
3.4 判据:用秩一句话说完 #
先说秩在方程组里的含义:秩 r=rank(A) 就是这个方程组里「真正独立的方程条数」。把 m 条方程消完,剩下 r 条非零的,其余全是 0=0。
再记 G=[A∣B] 是增广矩阵。A 的所有列都在 G 里,所以 rank(A)≤rank(G),而且 rank(G) 最多比 rank(A) 大 1(右端项那一列最多贡献一个主元)。
于是判据只有三种情形:
| 秩的关系 |
解的情况 |
理由 |
| rank(A)<rank(G) |
无解 |
阶梯形里出现 0=非零 的行 |
| rank(A)=rank(G)=n |
唯一解 |
每个未知数都拿到一个主元,可逐个回代 |
| rank(A)=rank(G)=r<n |
无穷多解,自由参数 n−r 个 |
有 n−r 个未知数没有主元,可任意赋值 |
这就是本讲的主定理。用矩阵语言重述一遍,更便于记忆:
AX=B 有解⟺rank(A)=rank([A∣B])
而「有解且唯一」再补一个条件:rank(A)=n(列满秩)。
因为 G 只比 A 多一列。多一列最多把秩抬高 1,所以不可能出现 rank(G)−rank(A)≥2。
一旦不相等,一定是「多了那个 1」,对应阶梯形里单独冒出来的一行 0=非零。
三例对照:3.2 里两秩都等于 2(有解、无穷多);3.4 里 A 的秩 2、G 的秩 3(无解)。
把三个例子放进一张表,规律立刻清楚:
| 例子 |
n |
rank(A) |
rank(G) |
结论 |
| 3.1 |
3 |
3 |
3 |
唯一解 |
| 3.2 |
3 |
2 |
2 |
无穷多解(1 个自由参数) |
| 3.3 |
3 |
2 |
3 |
无解 |
自由参数个数 n−r 永远是非负整数。若有人算出「−1 个自由参数」,那是把 r 算超了——
r 不可能大于 n(主元最多 n 个,一列只能一个),也不可能大于 m(一行最多一个)。
3.5 Cramer 法则:唯一解情形的显式公式 #
当 m=n 且 detA=0 时,解可以直接写成分式,不用消元。
设 A 是 n 级方阵,detA=0。记 Ai 为「把 A 的第 i 列换成 B」得到的方阵,则
xi=detAdetAi,i=1,2,…,n
2 级的情形写开就是中学的「十字相减」:
{a11x1+a12x2=b1a21x1+a22x2=b2⟹x1=a11a21a12a22b1b2a12a22,x2=a11a21a12a22a11a21b1b2
为什么分母一定是 detA? 从消元看最清楚:对 2 级情形做一次 R2←a11R2−a21R1(先假定 a11=0),得
{a11x1+a12x2=b1(a11a22−a12a21)x2=a11b2−a21b1
第二行括号里正是 detA,右端正是 detA2。所以 x2=detA2/detA。x1 同理。
这个「用行列式解方程」的思路,本质是把解写成系数与右端项的代数式,好处是理论分析极方便(能一眼看出解如何随参数变化),坏处是计算量爆炸。
用 2.3 的鸡兔同笼试一遍:
detA=1214=1⋅4−1⋅2=2=0
x1=2359414=235⋅4−1⋅94=2140−94=23,x2=2123594=294−70=12
和消元结果一致。
再用 3.1 的方程组算一个分量,体会一下代价:
detA=121253134=2,x1=2182119253134=21(8⋅11−2⋅27+1⋅(−32))=22=1
只求一个分量,就要算 detA 和 detA1 两个 3 级行列式,展开成六个 2×2;要求全部三个分量,得算四个 3 级行列式,即十二个 2×2。
① 只能用于 m=n(方阵);
② 必须 detA=0;
③ detA=0 时它什么也没说——既不能判无解,也不能判无穷多,只能换工具(用秩)。
这三条里第 ③ 条错得最多,见第五节。
3.6 齐次与非齐次:一个结构性结论 #
这是本讲最有「理论味」的一条,也是把消元与 08 讲接起来的地方。
(a) 齐次组永远有解。 A⋅0=0,所以零向量一定是解,叫零解。齐次组的问题不是「有没有解」,而是「有没有非零解」。
(b) 齐次组的解集是子空间。 若 AX1=0、AX2=0,则
A(X1+X2)=AX1+AX2=0,A(λX1)=λAX1=0
对加法、数乘都封闭,且含零向量。这个子空间就是 08 讲说的零空间 nullA,维数是 n−rankA(线性映射基本定理)。
举个具体例子:
{x1+2x2+3x3=04x1+5x2+6x3=0
R2←R2−4R1 得 (0,−3,−6∣0),即 x2=−2x3。取 x3=t,则 x1=−2x2−3x3=4t−3t=t。解集是
{(t,−2t,t)}=span{(1,−2,1)}
一维,基是 (1,−2,1)。秩是 2,n=3,维数 3−2=1 ✓。
(c) 非齐次组的解集 = 一个特解 + 齐次组的解集。 设 X0 是 AX=B 的某个解(特解),则
AX=B⟺A(X−X0)=B−B=0⟺X−X0∈nullA⟺X=X0+Z, Z∈nullA
证明只有一行代换,但它把 3.2 的答案解释得干干净净:那里 X0=(1,2,0),齐次解是 t(1,−2,1),通解正是两者相加。
(d) 由此得到「唯一性」的另一个说法: 非齐次组有解时,解唯一 ⟺nullA={0}⟺rankA=n。这与 3.4 的判据完全一致——同一件事的两种讲法。
(e) 一个常用推论: 若 m<n(方程比未知数少),齐次组 AX=0 必有非零解。理由是 rankA≤m<n,所以零空间维数 n−rankA≥n−m>0,里面不止零向量。
它让你不算就能下结论。例如「5 个未知数、3 条齐次方程」,直接说:有非零解,且至少 2 维的解空间。
反过来,「方程个数多于未知数」的非齐次组,当右端项取某些值时一定无解——因为值域填不满整个 Rm。
四、几何直观 / 记忆钩子 #
4.1 两条直线、三个平面 #
2 元方程在平面上是一条直线,解方程组就是求公共点。三种可能全在秩里:
| 图形 |
秩语言 |
解 |
| 两直线交于一点 |
rankA=rankG=2=n |
唯一 |
| 两直线平行(不重合) |
rankA=1<2=rankG |
无解 |
| 两直线重合 |
rankA=rankG=1<n=2 |
无穷多(1 个自由参数) |
3 元方程是空间中的平面,3 个平面求公共点:交于一点(r=3)、交于一条直线(r=2,无穷多,一个参数)、交于一个平面(r=1)、或者根本无公共点(两秩不等)。
行变换不改变解集,等于在保持交点不动的前提下,把这几张平面「转动」到方便观察的位置。
化成阶梯形,就是转到「一层压一层」的姿态,于是有几个交点一眼可见。
4.2 三个数就够:m,n,r #
拿到任何方程组,先数三个数,别急着算:
- m = 方程条数(增广矩阵的行数);
- n = 未知数个数(系数矩阵的列数);
- r=rankA = 真正独立的方程条数。
然后:
- 自由度 =n−r。这是唯一需要记的公式。
- m 从不出现在判据里。m 只影响「能提出多少条独立方程」,也就是 r≤m。
两秩不等 → 无解;两秩相等 → 有解;秩满 n → 唯一;秩不满 → n−r 个自由参数。
十六个字,考前默一遍,比记十道例题管用。
4.3 两个比喻 #
比喻一:主元是「每个方程带来的新信息」。 一个方程如果没有主元(整行归零),说明它能被前面的方程凑出来,是「重复的话」。r 就是有效信息的条数。
比喻二:行变换是「整理书架」。 你只是把书从这一格搬到那一格、把重复的书并到一处,书的总数没变。所以解集不变。而对列做操作,相当于把两册的内容撕下来重新装订——那就不是原来那一册了。
五、常见误区 #
这是最普遍的错误。正确判据用的是秩,不是 m。
反例一(m=n=3 却无解):3.3 那个方程组,三个方程三个未知数,照样无解。
反例二(m>n 却仍有唯一解):
⎩⎨⎧x+y=3x−y=12x+2y=6
三条方程、两个未知数,看起来「约束过头」。但第三行就是第一行的 2 倍,它没带来新信息,rankA=rankG=2=n,解唯一,是 (2,1)。
多的方程可能是被凑出来的,秩才是真话。
误区 2:detA=0 就说「无解」 detA=0 只说明 Cramer 法则失效,什么都没判定。两种结局都有:
无解:{x+y=12x+2y=3(消元得 0=1)。
无穷多:{x+y=12x+2y=2(第二行是第一个的两倍,r=1<n=2)。
要分辨,只能回到秩。
误区 3:解方程时除以「可能是 0 的表达式」 {kx+y=1x+ky=1
有人上来就写 x=y=k+11,把 k=0、k=±1 全丢了。正确做法是先算 detA=k2−1,再分情形:
k=±1 时唯一解 x=y=k+11;k=1 时两行都化成 x+y=1,无穷多解;k=−1 时第一式 −x+y=1、第二式 x−y=1,相加得 0=2,无解。
凡是要除,先问「这个量会不会是 0」。
整行归零只说明 rankA<min(m,n),还要看 n。
若 r=n 而某行归零,那是「方程太多、有冗余」,解仍然唯一。例如
⎩⎨⎧x+y=3x−y=12x+2y=6
消元后 r=2=n,第三行归零,解唯一 (2,1)。
只有 r<n 才谈得上自由参数。
当 r<n 时,单个解只是特解,必须写出通解 X0+t1Z1+⋯。
只写 (1,2,0) 在 3.2 那道题里是不完整的;标准答案是 (1,2,0)+t(1,−2,1)。
反过来的陷阱也存在:把齐次解里那个 t 忘掉,或把 t 的取值范围漏了(在本课程里 t∈R)。
行变换保解集,列变换不保。有人为了「把矩阵化简得更漂亮」顺手对列做加减,结果算出一组根本不满足原方程的数。
判断标准很简单:你动的是行,还是列? 动列就停手。
六、拓展(可跳过) #
6.1 消元法的代价:为什么工程里不用 Cramer #
n 级方阵用 Cramer 法则,要算 n+1 个 n 级行列式,而 n 级行列式按定义展开是 n! 项。n=10 时约 3.6×107 项,n=20 时是天文数字。
高斯消元的乘除次数约为 32n3:n=20 时约 5300 次。
| n |
Cramer(量级 (n+1)n!) |
高斯消元(量级 32n3) |
| 3 |
约 24 |
约 18 |
| 10 |
约 4×107 |
约 700 |
| 20 |
约 5×1019 |
约 5300 |
差距不是「快一点」,是能不能算。所以 Cramer 法则在今天的定位是理论工具:用来写公式、做证明、分析解对参数的依赖,而不是用来出数。
因为定理证明里反复出现「detA=0 时解唯一且可写成 detAdetAi」这种句式。
它把「解」变成一个显式的代数式,于是能对参数求导、能看单调性、能做误差分析。这些消元法给不了。
6.2 LU 分解:消元的「存档」版本 #
如果要用同一个 A 解很多个不同的 B(工程里极常见:同一张网的电阻矩阵,不同时刻的电流源),就没必要每次都从零消元。
消元的每一步都可以记成一个初等矩阵 Ei,于是
Ek⋯E2E1A=U(上三角)
令 L=(Ek⋯E1)−1,得 A=LU。此后解 AX=B 只需两步:先解 LY=B(前代),再解 UX=Y(回代),每次都是 O(n2)。矩阵只需分解一次。
6.3 数值稳定:主元不能随便选 #
理论上「用第 1 行消掉下面」就行;浮点计算里不行。若主元很小(比如 10−18),除以它会把误差放大 1018 倍。
标准对策是部分选主元:在第 k 步,不固定用第 k 行,而是在第 k 列下方挑绝对值最大的那一行,换上来当主元。这也解释了为什么 3.1 里我们允许 Ri↔Rj——它不只是理论上的方便,也是数值算法的必需品。
6.4 化学里的样子:配平就是解齐次组 #
配平 Fe+O2→Fe2O3。设系数 a,b,c,按元素守恒:
Fe:a=2c,O:2b=3c
即
{a−2c=02b−3c=0
这是齐次组,m=2,n=3,必有非零解。消元后 r=2,自由度 3−2=1:解是 (a,b,c)=(2c, 23c, c)。取 c=2 使全为整数,得 (4,3,2):
4Fe+3O2→2Fe2O3
齐次组有 1 维解空间时,任意非零解都是同一个方向的倍数,所以可以先随便取一组,再整体放大成整数、约掉公因子。
非齐次组不能这么干——缩放会破坏右端项。这是齐次组在实际问题里特别好用的原因。
6.5 一句话指向后面 #
若 rankA<rank(G)(无解),工程上不会就此罢休,而是退一步求「最接近的解」——这就是最小二乘,它把矛盾方程组换成一个总是有解的正规方程。那属于内积与正交投影的部分,本讲不展开。
七、自测(先做,再看答案) #
1. 不解方程,只判类型(唯一 / 无穷多 / 无解):
(a) {2x−y=14x−2y=3
(b) {2x−y=14x−2y=2
(c) {2x−y=1x+3y=2
2. 用高斯消元完整求解(写出每步行变换与回代):
⎩⎨⎧x+y+z=62x−y+z=3x+2y−z=2
3. 用 Cramer 法则解 {2x+y=5x+3y=10,并说明为什么这里可以用。
4. 求齐次组
⎩⎨⎧x1+2x2−x3=03x1+6x2−3x3=0x2+x3=0
的解空间维数与一组基。
5. 设 A 是 3×5 矩阵,AX=B 有解且 rankA=3。解有几个自由参数?如果把 B 换成 0,解集是什么?它是不是子空间?
答案(点开)
1. (a) 第二行是第一行的 2 倍但右端不对:2⋅1=2=3,所以 rankA=1<rankG=2,无解。
(b) 第二行就是第一行的 2 倍,两秩都等于 1<2,无穷多解(一个参数:x=t, y=2t−1)。
(c) detA=2⋅3−(−1)⋅1=7=0,唯一解。
三题的系数矩阵两两相同(前两题)只差右端,正说明「解的类型由两秩决定」。
2. 增广矩阵
1211−1211−1632
R2←R2−2R1:(0,−3,−1∣−9);R3←R3−R1:(0,1,−2∣−4)。
得
1001−311−1−26−9−4
为免除以 −3,先换行 R2↔R3:
10011−31−2−16−4−9
R3←R3+3R2:(0,0,−7∣−21),即 −7z=−21,z=3。
回代:y−2z=−4⇒y=2;x+y+z=6⇒x=1。
解 (1,2,3)。验算:1+2+3=6 ✓,2−2+3=3 ✓,1+4−3=2 ✓。
3. detA=2113=6−1=5=0,且 m=n=2,两条前提都满足,所以可用。
x=551013=515−10=1,y=521510=520−5=3
验算:2+3=5 ✓,1+9=10 ✓。
4. 第二行是第一行的 3 倍,消去后剩两行:
{x1+2x2−x3=0x2+x3=0
秩 r=2,n=3,所以解空间维数 =3−2=1。
由 x2=−x3,代入第一式:x1=2x3+x3=3x3。取 x3=1,得基 {(3,−1,1)}。
即解集 ={t(3,−1,1):t∈R}。
5. 自由参数 =n−r=5−3=2。
若 B=0,解集就是零空间 nullA,维数 5−3=2(一个过原点的 2 维平面)。
它是子空间——齐次组的解集总含零向量、对加法与数乘封闭。
注意对比:B=0 时解集是「平面 + 一个偏移量」,不含零向量,不是子空间(是仿射子空间)。
八、复习卡 #
| 项 |
内容 |
| 增广矩阵 |
[A∣B],尺寸 m×(n+1);与方程组一一对应 |
| 三种行变换 |
换行;非零倍乘;倍加(Ri←Ri+cRj)。都可逆,故解集不变 |
| 不许动列 |
列变换改变未知数含义,解集会变 |
| 行阶梯形 REF |
零行在下;主元逐行右移;主元下方全 0 |
| 简化阶梯形 RREF |
REF 再加:主元为 1,主元所在列其余为 0(可直接读解) |
| 主元 |
每行第一个非零元;个数 = 秩 |
| 秩的含义 |
真正独立的方程条数 |
| 无解 |
rankA<rank[A∣B](阶梯形出现 0=非零) |
| 唯一解 |
rankA=rank[A∣B]=n |
| 无穷多解 |
rankA=rank[A∣B]=r<n,自由参数 n−r 个 |
| 判据口诀 |
两秩不等 → 无解;相等 → 有解;秩满 n → 唯一 |
| 自由度 |
恒为 n−r;m 不进判据(只保证 r≤m) |
| Cramer |
m=n 且 detA=0 时 xi=detAi/detA,Ai 是用 B 换第 i 列 |
| Cramer 局限 |
必须方阵、必须行列式非零;detA=0 时它什么都不判定 |
| 计算量 |
Cramer 量级 (n+1)n!;消元量级 32n3 |
| 齐次组 |
必有零解;解集 =nullA,是子空间,维数 n−r |
| 非齐次组 |
解集 =X0+nullA(特解 + 齐次解),不是子空间 |
| 唯一性等价 |
有解时唯一 ⟺nullA={0}⟺rankA=n |
| m<n 的齐次组 |
必有非零解(dimnull≥n−m>0) |
九、出处与延伸(可选,不影响阅读) #
- 线性方程组的定义、解、零解/非零解:《行列式入门》1.20「线性方程组」(p70 起)把 n 元一次方程、方程组的解、零解与非零解逐个定义,并给出鸡兔同笼的例子。
- Cramer 法则的两种写法:同书 1.21「由 n 个 n 元一次方程作成的方程组 (1)」(p75 起)先给 X=(detA)−1adj(A)B,再由伴随矩阵的展开式推出 xi=detAi/detA(p77 附近)。同一节的末尾(p79)明确说 Cramer 公式只是「理论的公式」,实际计算应用代入消元、加减消元——本讲的第 6.1 节就是这个意思。
- detA=0 时为什么复杂:同书 1.22(p80 起)用具体的 2 级例子说明 detA=0 时「有解但多解」与「无解」都可能出现,正是第五节误区 2 的反例来源。
- 解的唯一性与齐次组的关系:同书 1.25(p91 起)证明:AX=0 只有零解 ⟹ AX=B 的解唯一;AX=0 有非零解 ⟹ 有解时不唯一。这就是本讲 3.6(d) 的原始出处。
- 秩判据、行阶梯形、增广矩阵:同书附录 C.42「REF 阵、线性方程组、秩」(印刷页码 418 起,正文中的定理在 429–432 页)。该节给出与本讲 3.4 完全一致的三分法判据,并配有 5×5 的完整算例;书中把「主元」叫 pivot,把「简化阶梯形」叫 SREF。
- 抽象视角(把方程组看成 T:Fn→Fm,B∈rangeT):《线性代数应该这样学》第三讲 B 节「零空间和值域」(p54–55)。其中「未知数个数多于方程个数的齐次组必有非零解」「方程个数多于未知数个数时某些右端无解」两条结论,正是本讲 3.6(e) 的抽象版;该书也指出这两条可用高斯消元法证明。
- 历史:高斯消元法在《九章算术》「方程」章已有系统运用,比高斯 1809 年的发表早一千六百余年(见上书 p43 的注释)。
- 术语别名:行阶梯形 = REF = 阶梯形矩阵;简化行阶梯形 = RREF = 行最简形 / SREF;主元 = pivot = 首元;增广矩阵 = augmented matrix;自由未知量 = free variable;系数矩阵 = coefficient matrix。不同教材对「阶梯形」是否要求主元为 1 有分歧,用前先确认。
- 想深挖:任何一本数值线性代数教材的「LU 分解与主元选取」一章;最小二乘见 24 讲(正交补与最小化)。