一个线性方程组包含两类资料:变量前面的系数,以及右边的常数。当我们
解方程组时,变量符号、加号和等号的排列模式其实没有改变;真正会改变
的是那些数字。
这正是增广矩阵有用的原因。它把会被行变换改写的资料集中起来,让你不
必每做一步都重写所有变量符号。
为什么增广矩阵是恰当的包装
考虑一个有 m 条方程、n 个未知数的线性方程组:
a11x1+a12x2+⋯+a1nxna21x1+a22x2+⋯+a2nxnam1x1+am2x2+⋯+amnxn=b1,=b2, ⋮=bm.
同一个方程组可以写成三种平行形式:
- 方程列表;
- 矩阵方程 Ax=b;
- 增广矩阵 [A∣b]。
定义
系数矩阵、常数向量与增广矩阵
对于系统 Ax=b:
- A 称为系数矩阵;
- b 称为常数向量;
- [A∣b] 称为增广矩阵,即把常数列接在系数矩阵右边所得的矩阵。
中间那条直线只是记号上的提示,用来提醒你最后一列来自等号右边。它不
代表有另一种独立的矩阵运算。
还有一种很重要的列向量读法。若 A 的各列由左至右分别是
a1,a2,…,an,那么
Ax=b⟺x1a1+x2a2+⋯+xnan=b.
这个观点在之后学习张成与列空间时会再出现。不过即使在现阶段,它也说
明了同一个线性系统可以从“按行阅读”和“按列阅读”两方面理解。
例题
把同一个系统写成三种形式
考虑
x1+2x2+2x3x1+3x2+3x32x1+6x2+5x3=4,=5,=6.它的系数矩阵和常数向量分别是
A=112236235,b=456.所以这个系统可以写成 Ax=b,其中
x=x1x2x3,而它的增广矩阵是
112236235456.
三种基本行变换
基本行变换共有三种:
- 交换两行;
- 用一个非零纯量乘一行;
- 用一行的倍数加到另一行。
第二种操作里的“非零”非常重要。若你用 0 乘一行,就会把整条方程
抹掉,而不是把它等价地改写,所以这一步不再可逆。
定义
基本行变换
对增广矩阵可做的行变换只有以下三种:
- Ri↔Rj,其中 i=j
- Ri←αRi,其中 α=0
- Rj←αRi+Rj,其中 i=j、α∈R
这三种操作称为基本行变换。
为什么这些操作会保留解集
真正要紧的,不是行变换让矩阵“变得好看”;真正要紧的是它保留了解集。
定理
行等价的增广矩阵代表等价方程组
若一个增广矩阵可由另一个增广矩阵经有限次基本行变换得到,则两者所代
表的线性方程组是等价的,也就是说,它们有完全相同的解集。
证明
逐种解释为什么基本行变换是安全的
每一种行变换,其实都只是方程操作的矩阵版本。
- 交换两行,只是改变方程出现的次序。某个数组在交换前同时满足所有方
程,交换后也同样同时满足它们。
- 把一行乘上一个非零纯量,等于把同一条方程左右两边同时乘上同一个非
零数。这会得到一条等价方程,而且可用乘上 1/α 逆转。
- 把 Rj 换成 αRi+Rj,就是把第 j 条方程改写成
“α× 第 i 条方程加第 j 条方程”。原系统的任何解都会满足
新方程,而这一步也可通过把 −α 倍第 i 行加回第 j 行来逆
转。
因此,每一种基本行变换都保留解集,任何有限次组合也一样保留解集。
可逆性保证改写前后的方程组具有相同的解集。检查一种操作是否合法时,
应当能明确写出恢复原方程的逆操作。
等价需要两个方向的证明
新方程是旧方程的推论,这只说明原来的解不会丢失,却还没有排除新系统多出一些解。要证明解集相同,必须证明每个新解也满足原方程。逆操作正是补上这个方向的工具。特别是某条方程消失时,不能只看剩余方程比较简单,就断言系统仍然等价。
证明透视
保留来源行,才能逆转行替换
把第 i 条方程写成 Li(x)=bi,第 j 条写成 Lj(x)=bj,其中两个线性表达式使用相同的变量次序。取不同行 i=j 和任意实数 c。保留第 i 行,只把第 j 行改成
Lj(x)+cLi(x)=bj+cbi.原系统的任意解满足两条旧等式,因此也满足它们相加所得的新等式。反过来,若一个数组满足新系统,它仍然满足未被改变的 Li(x)=bi。从新方程减去这条等式的 c 倍,便恢复 Lj(x)=bj。其他方程完全没有改变,所以两个系统的解集相同。
不同的行这一条件保证来源方程仍然存在。这里允许 c=0,因为被替换行自身的系数仍是一;但单独缩放一行时,缩放因子必须非零,否则无法相除恢复旧方程。这两种操作的限制不能混为一谈。
交换两行的逆操作是再交换一次;乘以非零数的逆操作是乘以其倒数;行替换的逆操作则使用相反的倍数。若执行了一串操作,复原时必须先撤销最后一步,再依次向前。按原来顺序执行所谓逆操作,一般不会回到正确的中间状态。
定理
行等价是一种等价关系
固定矩阵大小后,行等价具有自反性、对称性和传递性。不做任何操作便说明矩阵与自身行等价;把操作链逆转可交换起点和终点;把两条有限操作链接起来则得到传递性。因此,只要变量列的含义保持不变,同一行等价类中的增广矩阵代表相同的解集。
固定大小也说明行操作不会增加变量,或直接从矩阵中删除方程。出现全零行时,仍保留这一行来记录某条方程已经成为多余条件。写方程组时可以省略恒等式,但那是书写上的简化,不是第四种初等行操作。
把每一个行变换读成方程操作
做行变换时,不要只想“我在表格里改数字”。更准确的想法是:“我正在
用其中一条方程去改写另一条方程。”
例题
先读懂消元,再背步骤
从
112236235456开始,做
R2←R2−R1,R3←R3−2R1.就会得到
10021221141−2.这不是魔法,它只是表示:
- 第二条方程被换成“第二条方程减第一条方程”;
- 第三条方程被换成“第三条方程减 2 倍第一条方程”。
因此,同一个系统只是被改写成更容易看出下方零项结构的形式。问题本身
没有变,变的只是呈现方式。
完整求解与复原检查
例题
求解之后,回到原方程检查
考虑
2x+3y=3,x−y=4.固定变量次序为 (x,y),先消去第一行的 x 项,再缩放该行:
[213−134]R1←R1−2R2[015−1−54]R1←R1/5[011−1−14].第一行已经给出 y=−1。把它加到第二行,再交换两行,得到
[011−1−14]R2←R2+R1[0110−13]R1↔R2[10013−1].因此 (x,y)=(3,−1)。代回原方程,得到 2(3)+3(−1)=3 及 3−(−1)=4,所以答案确实满足两条原方程。行操作的可逆性进一步说明没有遗漏其他解:任意原解都必须满足最后的两条方程,从而就是这个数组。
还可以直接复原矩阵:先交换回去,再从第二行减去第一行,把第一行乘以五,最后把第二行的两倍加到第一行。这样会恢复初始矩阵的每个元素,包括常数列。完整的复原链具体展示了等价的含义,而不只是算出了一个看似合理的答案。
代入检查和等价证明承担不同任务。前者确认一个候选数组确实是解,后者保证整个解集没有改变。仅验证一个数组满足原方程,并不能证明解的唯一性;同样,化简结果中的数字很小,也不能保证没有把常数列算错。
例题
相同系数矩阵,不同常数列
比较以下两个系统:
x+y=2,2x+2y=4与x+y=2,2x+2y=5.它们的系数矩阵完全相同。分别执行 R2←R2−2R1:
[121224]⟶[101020],[121225]⟶[101021].第一个系统只剩 x+y=2,所有解为 (2−t,t),其中 t 可取任意实数。全零行表示第二条方程原本就是第一条的两倍。第二个系统却包含矛盾 0=1,所以无解。即使系数部分的运算完全相同,最后一列仍然决定了本质不同的结论。
看行变换的不变量
下面的短图解把主要不变量放在眼前:合法行变换可以改变显示出来的矩
阵,但必须保留解集。请特别留意常数列;它和前面的系数同属一批行。
为什么行变换是安全的看清为什么 [A|b] 是安全的工作形式:基本行变换是在改写方程,同时保留解集。
包装方程组
系数区块和常数列被放入同一个增广矩阵,让数据保持对齐。
正确阅读直线
直线只是记号提示,不是一道墙。行变换作用在整行上,包括常数列。
只用可逆操作
交换两行、用非零数乘一行、把一行倍数加到另一行,这三种操作都可以逆转。
改写方程,不改变变量
例如 R2 <- R2 - R1 的行替换,是把一条方程改写成等价的方程组合。
常数列也要一起变
如果系数改了但常数列不动,矩阵就不再代表同一个方程组。
追踪不变量
眼前矩阵会改变,但每个合法基本行变换都会保留解集。
使用增广矩阵的理由,是基本行变换都是可逆的方程改写。常数列属于同一批行,因此必须跟系数区块一起改变。
下一节会仔细处理高斯消元。这里最重要的观念比较基础:增广矩阵只是同
一个系统的压缩记录,而行变换之所以合法,是因为它保留解集。
实际解题时的基本策略
用矩阵求解方程组,可以分成三步:
- 先把方程组写成增广矩阵;
- 用行变换把它化成较简单的矩阵;
- 把较简单的矩阵重新读成较简单的方程组,或直接从够简单的形式读出
解答。
这个策略说起来很短,但只有当你一路清楚知道每一步保留了什么、想建立
哪种结构时,它才会真正可靠。
用下面的互动图去对照:每一个行变换符号,究竟对应系统的哪种受控改写。
边读边试
把一个方程组翻成矩阵
互动探索器会突显每条方程如何变成矩阵的一行和一个常数项。
看似相近的捷径为何失效
若把 x+y=2 乘以零而变成 0=0,新方程会接受所有数组,包括原来不满足方程的 (0,0),所以等价已经失效。这不表示每个全零行都是错误:合法行替换也可以把原本多余的方程化为零行。真正要问的是整个系统的信息是否仍然保留。
两条连续指令也必须交代使用的是哪个版本的行。例如同时把两行都改成旧第一行与旧第二行之和,会得到两个相同条件,可能丢失信息。若逐步执行 R1←R1+R2,然后 R2←R1+R2,第二步使用已经更新的第一行,则两步都是合法行替换。来源行刚刚改变时,最好写出中间矩阵,避免把同时运算和顺序运算混淆。
更一般地,把目标行改为 aRj+cRi 时,先要求来源行与目标行不同,即 i=j;在此条件下,只要 a=0,便可分解成先缩放目标行、再加上来源行的倍数。若 a=0,旧目标方程就消失了。这个分解说明三类初等操作已经足够,但并非所有行的线性组合都自动保留解集。
实际运算时,每个箭头旁都应标明操作,变量列保持固定顺序,常数列参与同样的算术。若主元是 p=0,要消去下方的 q,便从目标行减去主元行的 q/p 倍。这个倍数必须作用于整行,不能只把所选位置改成零;只有整行运算才对应合法的方程操作。
常见错误与细节
常见错误
[A∣b] 中的直线不是可以忽略的墙
最后一列和前面的系数列属于同一个系统。若你只对系数做行变换而不改常
数列,你就不再是在改写同一个方程组。
常见错误
用 0 乘一行不是合法步骤
合法的缩放操作要求乘数非零。用 0 乘一行会抹掉方程,既不可逆,也不
保证保留解集。
常见错误
行变换改的是方程,不是变量的意思
行变换是把方程彼此线性组合,不是“把 x2 换成别的东西”,也不是改
变未知数本身的意义。
快速检查
思考检查
为什么 Ri←0Ri 不是合法的行变换?
解答 · 答案
因为用 0 乘一行会把整条方程抹掉,这一步无法逆转。既然资料被破坏,
它便不再保证保留原本的解集。
思考检查
若只是交换两条方程,系统的解集会改变吗?
不要只看外观,要想“同时满足全部方程”这件事本身有没有变。
解答 · 答案
不会。交换两行只改变方程的排列次序,并不改变哪些数组同时满足所有方
程,所以解集保持不变。
练习
思考检查
把系统 x1−2x2−x3+x4=1、x2+x3−x4=2、x3+2x4=3 写成增广矩阵。
即使某条方程没有出现某个变量,也要在该变量的栏位留出系数位置。
解答 · 引导解答
三条方程的系数分别是
(1,−2,−1,1),(0,1,1,−1),(0,0,1,2),而常数列是 (1,2,3)t。因此增广矩阵是
100−210−1111−12123.
思考检查
对同一个系统,用哪一个单一步骤可以消去第一条方程中的 x2 项?新的一条方程会是什么?
第一条方程中的 x2 系数是 −2,而第二条方程中的 x2 系数是 1。
解答 · 引导解答
可用
R1←2R2+R1.因为
2(x2+x3−x4=2)+(x1−2x2−x3+x4=1)会得到
x1+x3−x4=5.所以行变换后,第一条方程变成 x1+x3−x4=5。
预备链接
这一页建立在
1.1 方程与解集
和
2.1 矩阵基础,
并为
2.3 高斯消元与 RREF
作准备。