一個線性方程組包含兩類資料:變數前面的係數,以及右邊的常數。當我們
解方程組時,變數符號、加號和等號的排列模式其實沒有改變;真正會改變
的是那些數字。
這正是增廣矩陣有用的原因。它把會被行變換改寫的資料集中起來,令你不
用每做一步都重寫所有變數符號。
為甚麼增廣矩陣是恰當的包裝
考慮一個有 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
作準備。