Evanalysis
2.2预计阅读时间: 19 分钟

2.2 增广矩阵与行变换

把方程组写成 `Ax = b` 和 `[A|b]`,并严格理解为什么基本行变换会保留解集。

课程目录

一个线性方程组包含两类资料:变量前面的系数,以及右边的常数。当我们 解方程组时,变量符号、加号和等号的排列模式其实没有改变;真正会改变 的是那些数字。

这正是增广矩阵有用的原因。它把会被行变换改写的资料集中起来,让你不 必每做一步都重写所有变量符号。

为什么增广矩阵是恰当的包装

考虑一个有 mm 条方程、nn 个未知数的线性方程组:

a11x1+a12x2+⋯+a1nxn=b1,a21x1+a22x2+⋯+a2nxn=b2, ⋮am1x1+am2x2+⋯+amnxn=bm.\begin{aligned} a_{11}x_1 + a_{12}x_2 + \cdots + a_{1n}x_n &= b_1, \\ a_{21}x_1 + a_{22}x_2 + \cdots + a_{2n}x_n &= b_2, \\ &\ \vdots \\ a_{m1}x_1 + a_{m2}x_2 + \cdots + a_{mn}x_n &= b_m. \end{aligned}

同一个方程组可以写成三种平行形式:

  • 方程列表;
  • 矩阵方程 Ax=bAx = b;
  • 增广矩阵 [A∣b][A\mid b]。

定义

系数矩阵、常数向量与增广矩阵

对于系统 Ax=bAx = b:

  • AA 称为系数矩阵;
  • bb 称为常数向量;
  • [A∣b][A\mid b] 称为增广矩阵,即把常数列接在系数矩阵右边所得的矩阵。

中间那条直线只是记号上的提示,用来提醒你最后一列来自等号右边。它不 代表有另一种独立的矩阵运算。

还有一种很重要的列向量读法。若 AA 的各列由左至右分别是 a1,a2,…,ana_1, a_2, \ldots, a_n,那么

Ax=b⟺x1a1+x2a2+⋯+xnan=b.Ax = b \quad\Longleftrightarrow\quad x_1 a_1 + x_2 a_2 + \cdots + x_n a_n = b.

这个观点在之后学习张成与列空间时会再出现。不过即使在现阶段,它也说 明了同一个线性系统可以从“按行阅读”和“按列阅读”两方面理解。

例题

把同一个系统写成三种形式

考虑

x1+2x2+2x3=4,x1+3x2+3x3=5,2x1+6x2+5x3=6.\begin{aligned} x_1 + 2x_2 + 2x_3 &= 4, \\ x_1 + 3x_2 + 3x_3 &= 5, \\ 2x_1 + 6x_2 + 5x_3 &= 6. \end{aligned}

它的系数矩阵和常数向量分别是

A=[122133265],b=[456].A = \begin{bmatrix} 1 & 2 & 2 \\ 1 & 3 & 3 \\ 2 & 6 & 5 \end{bmatrix}, \qquad b = \begin{bmatrix} 4 \\ 5 \\ 6 \end{bmatrix}.

所以这个系统可以写成 Ax=bAx = b,其中

x=[x1x2x3],x = \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix},

而它的增广矩阵是

[122413352656].\left[ \begin{array}{ccc|c} 1 & 2 & 2 & 4 \\ 1 & 3 & 3 & 5 \\ 2 & 6 & 5 & 6 \end{array} \right].

三种基本行变换

基本行变换共有三种:

  1. 交换两行;
  2. 用一个非零纯量乘一行;
  3. 用一行的倍数加到另一行。

第二种操作里的“非零”非常重要。若你用 00 乘一行,就会把整条方程 抹掉,而不是把它等价地改写,所以这一步不再可逆。

定义

基本行变换

对增广矩阵可做的行变换只有以下三种:

  1. Ri↔RjR_i \leftrightarrow R_j,其中 i≠ji\ne j
  2. Ri←αRiR_i \leftarrow \alpha R_i,其中 α≠0\alpha \ne 0
  3. Rj←αRi+RjR_j \leftarrow \alpha R_i+R_j,其中 i≠ji\ne j、α∈R\alpha\in\mathbb R

这三种操作称为基本行变换。

为什么这些操作会保留解集

真正要紧的,不是行变换让矩阵“变得好看”;真正要紧的是它保留了解集。

定理

行等价的增广矩阵代表等价方程组

若一个增广矩阵可由另一个增广矩阵经有限次基本行变换得到,则两者所代 表的线性方程组是等价的,也就是说,它们有完全相同的解集。

证明

逐种解释为什么基本行变换是安全的

每一种行变换,其实都只是方程操作的矩阵版本。

  • 交换两行,只是改变方程出现的次序。某个数组在交换前同时满足所有方 程,交换后也同样同时满足它们。
  • 把一行乘上一个非零纯量,等于把同一条方程左右两边同时乘上同一个非 零数。这会得到一条等价方程,而且可用乘上 1/α1 / \alpha 逆转。
  • 把 RjR_j 换成 αRi+Rj\alpha R_i + R_j,就是把第 jj 条方程改写成 “α×\alpha \times 第 ii 条方程加第 jj 条方程”。原系统的任何解都会满足 新方程,而这一步也可通过把 −α-\alpha 倍第 ii 行加回第 jj 行来逆 转。

因此,每一种基本行变换都保留解集,任何有限次组合也一样保留解集。

可逆性保证改写前后的方程组具有相同的解集。检查一种操作是否合法时, 应当能明确写出恢复原方程的逆操作。

等价需要两个方向的证明

新方程是旧方程的推论,这只说明原来的解不会丢失,却还没有排除新系统多出一些解。要证明解集相同,必须证明每个新解也满足原方程。逆操作正是补上这个方向的工具。特别是某条方程消失时,不能只看剩余方程比较简单,就断言系统仍然等价。

证明透视

保留来源行,才能逆转行替换

把第 ii 条方程写成 Li(x)=biL_i(x)=b_i,第 jj 条写成 Lj(x)=bjL_j(x)=b_j,其中两个线性表达式使用相同的变量次序。取不同行 i≠ji\ne j 和任意实数 cc。保留第 ii 行,只把第 jj 行改成

Lj(x)+cLi(x)=bj+cbi.L_j(x)+cL_i(x)=b_j+cb_i.

原系统的任意解满足两条旧等式,因此也满足它们相加所得的新等式。反过来,若一个数组满足新系统,它仍然满足未被改变的 Li(x)=biL_i(x)=b_i。从新方程减去这条等式的 cc 倍,便恢复 Lj(x)=bjL_j(x)=b_j。其他方程完全没有改变,所以两个系统的解集相同。

不同的行这一条件保证来源方程仍然存在。这里允许 c=0c=0,因为被替换行自身的系数仍是一;但单独缩放一行时,缩放因子必须非零,否则无法相除恢复旧方程。这两种操作的限制不能混为一谈。

交换两行的逆操作是再交换一次;乘以非零数的逆操作是乘以其倒数;行替换的逆操作则使用相反的倍数。若执行了一串操作,复原时必须先撤销最后一步,再依次向前。按原来顺序执行所谓逆操作,一般不会回到正确的中间状态。

定理

行等价是一种等价关系

固定矩阵大小后,行等价具有自反性、对称性和传递性。不做任何操作便说明矩阵与自身行等价;把操作链逆转可交换起点和终点;把两条有限操作链接起来则得到传递性。因此,只要变量列的含义保持不变,同一行等价类中的增广矩阵代表相同的解集。

固定大小也说明行操作不会增加变量,或直接从矩阵中删除方程。出现全零行时,仍保留这一行来记录某条方程已经成为多余条件。写方程组时可以省略恒等式,但那是书写上的简化,不是第四种初等行操作。

把每一个行变换读成方程操作

做行变换时,不要只想“我在表格里改数字”。更准确的想法是:“我正在 用其中一条方程去改写另一条方程。”

例题

先读懂消元,再背步骤

从

[122413352656]\left[ \begin{array}{ccc|c} 1 & 2 & 2 & 4 \\ 1 & 3 & 3 & 5 \\ 2 & 6 & 5 & 6 \end{array} \right]

开始,做

R2←R2−R1,R3←R3−2R1.R_2 \leftarrow R_2 - R_1, \qquad R_3 \leftarrow R_3 - 2R_1.

就会得到

[12240111021−2].\left[ \begin{array}{ccc|c} 1 & 2 & 2 & 4 \\ 0 & 1 & 1 & 1 \\ 0 & 2 & 1 & -2 \end{array} \right].

这不是魔法,它只是表示:

  • 第二条方程被换成“第二条方程减第一条方程”;
  • 第三条方程被换成“第三条方程减 22 倍第一条方程”。

因此,同一个系统只是被改写成更容易看出下方零项结构的形式。问题本身 没有变,变的只是呈现方式。

完整求解与复原检查

例题

求解之后,回到原方程检查

考虑

2x+3y=3,x−y=4.2x+3y=3,\qquad x-y=4.

固定变量次序为 (x,y)(x,y),先消去第一行的 xx 项,再缩放该行:

[2331−14]→R1←R1−2R2[05−51−14]→R1←R1/5[01−11−14].\left[\begin{array}{cc|c}2&3&3\\1&-1&4\end{array}\right] \xrightarrow{R_1\leftarrow R_1-2R_2} \left[\begin{array}{cc|c}0&5&-5\\1&-1&4\end{array}\right] \xrightarrow{R_1\leftarrow R_1/5} \left[\begin{array}{cc|c}0&1&-1\\1&-1&4\end{array}\right].

第一行已经给出 y=−1y=-1。把它加到第二行,再交换两行,得到

[01−11−14]→R2←R2+R1[01−1103]→R1↔R2[10301−1].\left[\begin{array}{cc|c}0&1&-1\\1&-1&4\end{array}\right] \xrightarrow{R_2\leftarrow R_2+R_1} \left[\begin{array}{cc|c}0&1&-1\\1&0&3\end{array}\right] \xrightarrow{R_1\leftrightarrow R_2} \left[\begin{array}{cc|c}1&0&3\\0&1&-1\end{array}\right].

因此 (x,y)=(3,−1)(x,y)=(3,-1)。代回原方程,得到 2(3)+3(−1)=32(3)+3(-1)=3 及 3−(−1)=43-(-1)=4,所以答案确实满足两条原方程。行操作的可逆性进一步说明没有遗漏其他解:任意原解都必须满足最后的两条方程,从而就是这个数组。

还可以直接复原矩阵:先交换回去,再从第二行减去第一行,把第一行乘以五,最后把第二行的两倍加到第一行。这样会恢复初始矩阵的每个元素,包括常数列。完整的复原链具体展示了等价的含义,而不只是算出了一个看似合理的答案。

代入检查和等价证明承担不同任务。前者确认一个候选数组确实是解,后者保证整个解集没有改变。仅验证一个数组满足原方程,并不能证明解的唯一性;同样,化简结果中的数字很小,也不能保证没有把常数列算错。

例题

相同系数矩阵,不同常数列

比较以下两个系统:

x+y=2,2x+2y=4与x+y=2,2x+2y=5.x+y=2,\quad 2x+2y=4 \qquad\text{与}\qquad x+y=2,\quad 2x+2y=5.

它们的系数矩阵完全相同。分别执行 R2←R2−2R1R_2\leftarrow R_2-2R_1:

[112224]⟶[112000],[112225]⟶[112001].\left[\begin{array}{cc|c}1&1&2\\2&2&4\end{array}\right] \longrightarrow \left[\begin{array}{cc|c}1&1&2\\0&0&0\end{array}\right], \qquad \left[\begin{array}{cc|c}1&1&2\\2&2&5\end{array}\right] \longrightarrow \left[\begin{array}{cc|c}1&1&2\\0&0&1\end{array}\right].

第一个系统只剩 x+y=2x+y=2,所有解为 (2−t,t)(2-t,t),其中 tt 可取任意实数。全零行表示第二条方程原本就是第一条的两倍。第二个系统却包含矛盾 0=10=1,所以无解。即使系数部分的运算完全相同,最后一列仍然决定了本质不同的结论。

看行变换的不变量

下面的短图解把主要不变量放在眼前:合法行变换可以改变显示出来的矩 阵,但必须保留解集。请特别留意常数列;它和前面的系数同属一批行。

为什么行变换是安全的

看清为什么 [A|b] 是安全的工作形式:基本行变换是在改写方程,同时保留解集。

  1. 包装方程组

    系数区块和常数列被放入同一个增广矩阵,让数据保持对齐。

  2. 正确阅读直线

    直线只是记号提示,不是一道墙。行变换作用在整行上,包括常数列。

  3. 只用可逆操作

    交换两行、用非零数乘一行、把一行倍数加到另一行,这三种操作都可以逆转。

  4. 改写方程,不改变变量

    例如 R2 <- R2 - R1 的行替换,是把一条方程改写成等价的方程组合。

  5. 常数列也要一起变

    如果系数改了但常数列不动,矩阵就不再代表同一个方程组。

  6. 追踪不变量

    眼前矩阵会改变,但每个合法基本行变换都会保留解集。

使用增广矩阵的理由,是基本行变换都是可逆的方程改写。常数列属于同一批行,因此必须跟系数区块一起改变。

下一节会仔细处理高斯消元。这里最重要的观念比较基础:增广矩阵只是同 一个系统的压缩记录,而行变换之所以合法,是因为它保留解集。

实际解题时的基本策略

用矩阵求解方程组,可以分成三步:

  1. 先把方程组写成增广矩阵;
  2. 用行变换把它化成较简单的矩阵;
  3. 把较简单的矩阵重新读成较简单的方程组,或直接从够简单的形式读出 解答。

这个策略说起来很短,但只有当你一路清楚知道每一步保留了什么、想建立 哪种结构时,它才会真正可靠。

用下面的互动图去对照:每一个行变换符号,究竟对应系统的哪种受控改写。

边读边试

把一个方程组翻成矩阵

互动探索器会突显每条方程如何变成矩阵的一行和一个常数项。

方程组

  1. x + 2y = 5
  2. 3x - y = 4

结果

125
3-14

看似相近的捷径为何失效

若把 x+y=2x+y=2 乘以零而变成 0=00=0,新方程会接受所有数组,包括原来不满足方程的 (0,0)(0,0),所以等价已经失效。这不表示每个全零行都是错误:合法行替换也可以把原本多余的方程化为零行。真正要问的是整个系统的信息是否仍然保留。

两条连续指令也必须交代使用的是哪个版本的行。例如同时把两行都改成旧第一行与旧第二行之和,会得到两个相同条件,可能丢失信息。若逐步执行 R1←R1+R2R_1\leftarrow R_1+R_2,然后 R2←R1+R2R_2\leftarrow R_1+R_2,第二步使用已经更新的第一行,则两步都是合法行替换。来源行刚刚改变时,最好写出中间矩阵,避免把同时运算和顺序运算混淆。

更一般地,把目标行改为 aRj+cRiaR_j+cR_i 时,先要求来源行与目标行不同,即 i≠ji\ne j;在此条件下,只要 a≠0a\ne0,便可分解成先缩放目标行、再加上来源行的倍数。若 a=0a=0,旧目标方程就消失了。这个分解说明三类初等操作已经足够,但并非所有行的线性组合都自动保留解集。

实际运算时,每个箭头旁都应标明操作,变量列保持固定顺序,常数列参与同样的算术。若主元是 p≠0p\ne0,要消去下方的 qq,便从目标行减去主元行的 q/pq/p 倍。这个倍数必须作用于整行,不能只把所选位置改成零;只有整行运算才对应合法的方程操作。

常见错误与细节

常见错误

[A∣b][A\mid b] 中的直线不是可以忽略的墙

最后一列和前面的系数列属于同一个系统。若你只对系数做行变换而不改常 数列,你就不再是在改写同一个方程组。

常见错误

用 00 乘一行不是合法步骤

合法的缩放操作要求乘数非零。用 00 乘一行会抹掉方程,既不可逆,也不 保证保留解集。

常见错误

行变换改的是方程,不是变量的意思

行变换是把方程彼此线性组合,不是“把 x2x_2 换成别的东西”,也不是改 变未知数本身的意义。

快速检查

思考检查

为什么 Ri←0RiR_i \leftarrow 0R_i 不是合法的行变换?

请从可逆性与资料流失两方面回答。

解答 · 答案

因为用 00 乘一行会把整条方程抹掉,这一步无法逆转。既然资料被破坏, 它便不再保证保留原本的解集。

思考检查

若只是交换两条方程,系统的解集会改变吗?

不要只看外观,要想“同时满足全部方程”这件事本身有没有变。

解答 · 答案

不会。交换两行只改变方程的排列次序,并不改变哪些数组同时满足所有方 程,所以解集保持不变。

练习

思考检查

把系统 x1−2x2−x3+x4=1x_1 - 2x_2 - x_3 + x_4 = 1、x2+x3−x4=2x_2 + x_3 - x_4 = 2、x3+2x4=3x_3 + 2x_4 = 3 写成增广矩阵。

即使某条方程没有出现某个变量,也要在该变量的栏位留出系数位置。

解答 · 引导解答

三条方程的系数分别是

(1,−2,−1,1),(0,1,1,−1),(0,0,1,2),(1, -2, -1, 1),\qquad (0, 1, 1, -1),\qquad (0, 0, 1, 2),

而常数列是 (1,2,3)t(1, 2, 3)^t。因此增广矩阵是

[1−2−111011−1200123].\left[ \begin{array}{cccc|c} 1 & -2 & -1 & 1 & 1 \\ 0 & 1 & 1 & -1 & 2 \\ 0 & 0 & 1 & 2 & 3 \end{array} \right].

思考检查

对同一个系统,用哪一个单一步骤可以消去第一条方程中的 x2x_2 项?新的一条方程会是什么?

第一条方程中的 x2x_2 系数是 −2-2,而第二条方程中的 x2x_2 系数是 11。

解答 · 引导解答

可用

R1←2R2+R1.R_1 \leftarrow 2R_2 + R_1.

因为

2(x2+x3−x4=2)+(x1−2x2−x3+x4=1)2(x_2 + x_3 - x_4 = 2) + (x_1 - 2x_2 - x_3 + x_4 = 1)

会得到

x1+x3−x4=5.x_1 + x_3 - x_4 = 5.

所以行变换后,第一条方程变成 x1+x3−x4=5x_1 + x_3 - x_4 = 5。

预备链接

这一页建立在 1.1 方程与解集 和 2.1 矩阵基础, 并为 2.3 高斯消元与 RREF 作准备。

练习

先自行作答,再检查答案。你可以修改后重试。

加载中…

本单元重点词汇