高斯消去法 (Gaussian Elimination)
本系列文章內容參考自經典教材 Elementary Linear Algebra (Pearson New International Edition)。本文對應章節:Ch1-4 Gaussian Elimination。
高斯消去法 (Gaussian Elimination)
什麼是高斯消去法?
高斯消去法 (Gaussian Elimination) 是一種系統性的演算法,用於將任意矩陣轉換成簡化列梯形式 (Reduced Row Echelon Form, RREF)。
在上一篇中,我們學到了 REF 和 RREF 的定義,但沒有詳細說明「如何」將矩陣轉換成這些形式。高斯消去法就是這個「如何」的答案——它提供了一套明確的步驟,讓我們可以機械化地完成這個轉換。
演算法概覽
高斯消去法分為兩個階段:
| 階段 | 名稱 | 目標 | 步驟 |
|---|
| Forward Pass | 前向消去 | 將矩陣化為 REF | Step 1-4 |
| Backward Pass | 後向消去 | 將 REF 化為 RREF | Step 5-6 |

Forward Pass:前向消去 (Step 1-4)
Step 1:找出 Pivot Column 與 Pivot Position
從矩陣的最左邊開始,找出第一個非全零的 column,這個 column 稱為 Pivot Column(主元行)。
在這個 pivot column 中,第一列的位置稱為 Pivot Position(主元位置)。
[A∣b]=0000162−10−41−6−53521165−17
在這個例子中,第一個 column 全為 0,所以第二個 column 是 pivot column,而位置 (1,2) 是 pivot position。
Step 2:Row Interchange(列交換)
如果 pivot position 的元素是 0,則在 pivot column 中選擇一個非零元素所在的列,與第一列交換,使得 pivot position 變成非零。
0000162−10−41−6−53521165−17R1↔R2000106−1201−4−63−551216−157
Step 3:消去 Pivot 下方的元素
將 pivot position 所在列的適當倍數,加到下方的每一列,使得 pivot position 下方的所有元素都變成 0。
000106−1201−4−63−551216−157R3−6R1000100−1261−4−123−5−131210−1513
Step 4:遞迴處理子矩陣
忽略包含 pivot position 的那一列,對剩餘的子矩陣重複 Step 1-4。
000100−1261−4−123−5−131210−1513
對子矩陣繼續執行 Step 1-4,直到處理完所有列,最終得到 REF:
000100−1201−403−52124−15−2(REF)
Backward Pass:後向消去 (Step 5-6)
Step 5:正規化並消去 Pivot 上方的元素
從最後一個 pivot(最下方的非零列)開始:
- 若 leading entry 不是 1,則將該列縮放使其變成 1
- 將該列的適當倍數加到上方的每一列,使得 pivot position 上方的所有元素都變成 0
000100−1201−403-52124−15−221R3000100−1201−403-51122−15−1
R1−3R3,R2+5R3000100−1201−40001−512220−1
Step 6:繼續處理上一個 Pivot
對上一個 pivot 重複 Step 5,直到處理完第一列為止。
21R2000100-1101−20001−56220−1R1+R2000100010−1−2000116220−1
最終得到 RREF。
Pivot 相關術語
在高斯消去法中,有幾個重要的術語需要釐清:
| 術語 | 定義 |
|---|
| Pivot Position | RREF 中 leading entry(領導元素)所在的位置 |
| Pivot | 位於 pivot position 的元素(在 RREF 中必為 1) |
| Pivot Column | 包含 pivot position 的 column |
1000200001000010−1010−5−320
在上面的 RREF 中:
- Pivot positions:(1,1)、(2,3)、(3,4)
- Pivots:三個 1(藍色標記)
- Pivot columns:第 1、3、4 個 column
如果 RREF 中某個 column 全為 0(不含 b 的部分),這代表什麼?
我的理解:這個 column 對應的變數是 free variable。因為這個 column 沒有 pivot,所以對應的變數不受任何方程式「直接約束」,可以取任意值。
但要注意:全零 column 和「沒有 pivot 的 column」是同一件事。只要一個 column 沒有 pivot,它對應的變數就是 free variable,不管這個 column 是否全為零。
秩 (Rank) 與零度 (Nullity)
Rank 的定義
對於一個 m×n 矩陣 A,其秩 (Rank) 定義為 A 的 RREF 中非零列 (nonzero rows) 的數量,記作 rank(A)。
等價地,rank 也等於 pivot columns 的數量。
Nullity 的定義
對於一個 m×n 矩陣 A,其零度 (Nullity) 定義為:
nullity(A)=n−rank(A)也就是 non-pivot columns 的數量。
考慮增廣矩陣 [A∣b] 及其 RREF [R∣c]:
[A∣b]=1−12−32−24−6−11−32222013032639RREF1000200001000010−1010−5−320
- 非零列 (nonzero rows) 數量:3 列
- Pivot columns:第 1、3、4 個 column
- rank(A)=3
- nullity(A)=5−3=2(因為 A 有 5 個 columns)
計算 nullity 時,n 到底要不要包含 b?
答案:不包含!
- nullity(A) 計算的是係數矩陣 A 的 nullity,所以 n 是 A 的 column 數
- nullity([A∣b]) 計算的是增廣矩陣的 nullity,所以 n 是 A 的 column 數加 1
通常我們關心的是 nullity(A),因為它代表 free variables 的數量。
以上面的例子來說:
- rank([A∣b])=rank([R∣c])=3
- rank(A)=rank(R)=3
- nullity([A∣b])=6−3=3
- nullity(A)=5−3=2 ← 這才是 free variables 的數量
Rank 與 Nullity 的意義
Rank 的意義
| 角度 | Rank 的意義 |
|---|
| 代數意義 | RREF 中非零列的數量 = pivot 的數量 |
| 方程組意義 | 「有效」方程式的數量(非冗餘的約束條件) |
| 變數意義 | Basic variables 的數量 |
範例:考慮以下矩陣及其 RREF:
A=123246123RREF100200100
- rank(A)=1(只有 1 個非零列)
- 代表只有 1 個「有效」方程式,其他兩列都是第一列的倍數(冗餘的)
- 只有 1 個 basic variable(x1)
Rank 代表矩陣 column vectors 所張成空間的維度。
直觀來說:
- rank(A)=1:所有 column vectors 都在同一條直線上
- rank(A)=2:所有 column vectors 都在同一個平面上
- rank(A)=3:column vectors 張成整個三維空間
Rank 告訴我們「這些向量實際上佔據了多少維度」。

上圖展示了不同 rank 對應的幾何意義:rank = 1 代表向量張成一條直線,rank = 2 代表張成一個平面,rank = 3 代表張成整個三維空間。
Nullity 的意義
| 角度 | Nullity 的意義 |
|---|
| 代數意義 | Non-pivot columns 的數量 |
| 變數意義 | Free variables 的數量 |
| 解的意義 | 解空間的「自由度」 |
範例:沿用上面的矩陣 A:
A=123246123RREF100200100
- nullity(A)=3−1=2(3 個變數,1 個 pivot)
- 代表有 2 個 free variables(x2 和 x3)
- 解空間有 2 個自由度,可以用 2 個參數來表示所有解
Nullity 代表零空間 (Null Space) 的維度,也就是齊次方程 Ax=0 的解空間維度。
直觀來說:
- nullity(A)=0:Ax=0 只有唯一解 x=0(稱為 trivial solution)
- nullity(A)=1:解空間是一條通過原點的直線
- nullity(A)=2:解空間是一個通過原點的平面
Nullity 告訴我們「解有多少自由度可以變化」。
ℹ️ 提示:Nullity 與零空間的概念在後續章節會有更深入的探討,這裡先帶到一些結論。

上圖展示了不同 nullity 對應的解空間:nullity = 0 代表只有唯一解 x=0,nullity = 1 代表解空間是一條通過原點的直線,nullity = 2 代表解空間是一個通過原點的平面。
Rank-Nullity Theorem
對於任意 m×n 矩陣 A:
rank(A)+nullity(A)=n
這個定理告訴我們:basic variables 的數量 + free variables 的數量 = 總變數數量。
這是顯然的,因為每個變數不是 basic 就是 free。
Rank 與解的判斷
Theorem 1.5:Consistency 的判斷
Theorem 1.5: Test for Consistency
設 A∈Mm×n,b∈Rm。以下條件等價:
- 矩陣方程 Ax=b 是 consistent(有解)
- b 是 A 的 column vectors 的線性組合
- 增廣矩陣 [A∣b] 的 RREF 中,沒有形如 [00⋯0∣d](d=0)的列
- rank(A)=rank([A∣b])
條件 4 的直觀解釋:
- 如果 rank(A)<rank([A∣b]),代表 b 那一行「貢獻」了一個新的 pivot
- 這只會發生在出現 [00⋯0∣d] 的情況,也就是矛盾方程式 0=d
- 所以 rank(A)=rank([A∣b]) 等價於「沒有矛盾」等價於「有解」
範例:
100010010101
- rank(A)=2(前兩列有 pivot)
- rank([A∣b])=3(第三列的 b 部分也是 pivot)
- 因為 rank(A)=rank([A∣b]),所以 Inconsistent
解的完整分類
結合 rank、nullity 與 consistency,我們可以完整分類線性方程組的解:
| 條件 | 解的情況 |
|---|
| rank(A)=rank([A∣b]) | 無解 (Inconsistent) |
| rank(A)=rank([A∣b]) 且 nullity(A)=0 | 唯一解 |
| rank(A)=rank([A∣b]) 且 nullity(A)>0 | 無限多解 |
判斷解的存在性與唯一性,我用兩個問題:
- 有沒有解? → 看 rank(A) 是否等於 rank([A∣b])
- 解是否唯一? → 看 nullity(A) 是否為 0
如果 nullity = 0,代表沒有 free variables,所有變數都被唯一決定,所以是唯一解。
如果 nullity > 0,代表有 free variables 可以任意取值,所以是無限多解。
方陣的特殊情況
對於 n×n 方陣 A:
rank(A)=n⇔A 可逆 (Invertible)
這是因為:
- rank(A)=n 意味著 RREF 有 n 個 pivots
- 對於 n×n 矩陣,這意味著 RREF 是單位矩陣 In
- 而 RREF 是 In 等價於 A 可逆
集合論基礎
為了理解後續關於向量空間的討論,我們需要先回顧一些集合論的基本概念。
集合與元素
- 集合 (Set):一群物件的聚集,例如 S1={a,b,c,d}
- 元素 (Element):集合中的個別物件
- 屬於 (∈):a∈S1 表示「a 是 S1 的元素」
- 不屬於 (∈/):e∈/S1 表示「e 不是 S1 的元素」
- 空集合 (∅):不包含任何元素的集合
子集 (Subset)
集合 S2 是集合 S1 的子集 (Subset),記作 S2⊆S1,若且唯若:
∀x∈S2,x∈S1也就是說,S2 的每一個元素都是 S1 的元素。
範例:設 S1={a,b,c,d},S2={a,b}
- S2⊆S1? ✓ Yes(a,b 都在 S1 中)
- S1⊆S2? ✗ No(c,d 不在 S2 中)
集合相等
兩個集合 A 與 B 相等,記作 A=B,若且唯若:
A⊆B且B⊆A
實數向量空間的定義
實數集合
R 是所有實數的集合,包含所有有理數和無理數。
n 維實數向量空間的嚴格定義
Definition:
RnRn 是所有具有 n 個分量的實數向量的集合:
Rn=⎩⎨⎧x1x2⋮xn:x1,x2,…,xn∈R⎭⎬⎫
具體例子:
R2={[xy]:x,y∈R},R3=⎩⎨⎧xyz:x,y,z∈R⎭⎬⎫
二維空間不是三維空間的子集
為什麼
R2⊂R3?
這是一個常見的誤解。很多人直覺上會認為:「R2 不就是 R3 中的一個平面嗎?」
但從集合論的角度來看,這是錯的!
關鍵問題:[11]∈R3 嗎?
答案是 No!
因為 [11] 是一個 2 維向量,而 R3 的元素必須是 3 維向量。
這兩個東西的「型態」根本不同,就像問「蘋果是橘子嗎?」一樣。

上圖展示了 R2 和 R3 的元素型態差異:R2 的元素是 2 維向量,R3 的元素是 3 維向量,它們是完全不同類型的物件。
那三維空間中的平面呢?
R3 中確實有一個「看起來像 R2」的平面,那就是 z=0 平面:
P=⎩⎨⎧xy0:x,y∈R⎭⎬⎫
這個集合 P 是 R3 的子 集,因為它的每個元素都是 3 維向量。
但 P=R2!它們的元素型態不同:
- P 的元素:120(3 維向量)
- R2 的元素:[12](2 維向量)
我們說 P 與 R2 是同構 (Isomorphic) 的,意思是它們有相同的「結構」,但它們不是同一個集合。
元素 vs 子集
另一個常見的混淆是:
- [11] 是 R2 的元素嗎? → Yes
- {[11]} 是 R2 的子集嗎? → Yes
- [11] 是 R2 的子集嗎? → No(向量不是集合)
記住:
- 「∈」連接的是「元素」與「集合」
- 「⊆」連接的是「集合」與「集合」