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 作準備。

練習

先自行作答,再檢查答案。你可以修改後重試。

載入中…

本單元重點詞彙