矩陣對角化 (Diagonalization of Matrices)
本系列文章內容參考自經典教材 Elementary Linear Algebra (Pearson New International Edition)。本文對應章節:Ch5-3 Diagonalization of Matrices。
對角化的定義
基本定義
設 A 為一個 n×n 的方陣。若存在一個可逆矩陣 P 與一個對角矩陣 D,使得:
A=PDP−1
則稱矩陣 A 是可對角化的 (Diagonalizable)。
等價地,這個關係也可以寫成:
P−1AP=D
這表示 A 與 D 是相似矩陣 (Similar Matrices)。
你可能注意到 A=PDP−1 這個公式與我們在 Ch4-5 線性算子的矩陣表示法 學過的 [T]B=B−1AB 長得非常相似。事實上,它們是同一回事!
回顧那個公式的意義:[T]B 是線性算子 T 在基底 B 下的矩陣表示,而 A 是標準矩陣。
對角化正是這個概念的特例:當我們選擇的基底 B 恰好由特徵向量組成時,T 在該基底下的矩陣表示 [T]B 就會是對角矩陣 D!
- 公式 D=P−1AP 就是 [T]B=B−1AB
- 基底矩陣 B=P(Column 是特徵向量)
- 新基底下的矩陣 [T]B=D(對角線是特徵值)
簡言之:對角化 = 找到特徵向量基底,使得線性算子的矩陣表示變成對角矩陣。
對角化的結構
當 A 可對角化時,矩陣 P 與 D 有著特殊的結構:
- D 是對角矩陣:其對角線元素是 A 的特徵值 λ1,λ2,…,λn
D=λ10⋮00λ2⋮0⋯⋯⋱⋯00⋮λn
- P 的 Column 是對應的特徵向量:第 i 個 Column 是 λi 的特徵向量 xi
P=∣x1∣∣x2∣⋯∣xn∣

D 的對角線上的特徵值順序與 P 中特徵向量的排列順序必須一致。也就是說,如果 D 的第 i 個對角元素是 λi,那麼 P 的第 i 個 Column 必須是 λi 對應的特徵向量。
為什麼 A = PDP⁻¹ 成立?
推導過程
讓我們從 AP=PD 出發(這等價於 A=PDP−1,前提是 P 可逆)。
設 P=[x1∣x2∣⋯∣xn],其中 xi 是 λi 的特徵向量。則:
AP=A[x1∣x2∣⋯∣xn]=[Ax1∣Ax2∣⋯∣Axn]
由於 Axi=λixi(特徵值定義),所以:
AP=[λ1x1∣λ2x2∣⋯∣λnxn]
另一方面:
PD=[x1∣x2∣⋯∣xn]λ1λ2⋱λn=[λ1x1∣λ2x2∣⋯∣λnxn]
因此 AP=PD。若 P 可逆(即這些特徵向量線性獨立),則可將兩邊右乘 P−1 得到 A=PDP−1。
P 可逆的條件
P 可逆的充要條件是:它的 n 個 Column 向量(即 n 個特徵向量)線性獨立。
對角化的關鍵就在這裡:我們需要找到 n 個線性獨立的特徵向量!
對角化的幾何意義
對角化的核心問題是:我們能否找到一組由特徵向量組成的基底?
為什麼需要 n 個線性獨立的特徵向量?
要建立矩陣 P,我們需要 n 個特徵向量排成 n 個 Column。但更關鍵的是,P 必須是可逆的,這樣才能計算 P−1,從而得到 A=PDP−1。
而 P 可逆的條件是什麼?正是它的 n 個 Column 向量線性獨立!
用幾何語言來說:這 n 個特徵向量必須能「撐開」整個 Rn 空間,形成一組基底。

上圖對比了兩種情況:
- 左圖(可對角化):存在兩個線性獨立的特徵向量 x1,x2,它們的 Span 是整個 R2 平面,因此可以形成基底,P 可逆
- 右圖(不可對角化):只有一個特徵向量方向,無論如何縮放都只能得到一條線,無法「撐開」R2,因此無法形成 P
對角矩陣的幾何意義:D 就是 [T]_B
還記得在 Ch4-5 我們學過:同一個線性算子 T 在不同基底下會有不同的矩陣表示。如果標準矩陣是 A,那麼在基底 B 下的矩陣表示是:
[T]B=PB−1APB
現在的關鍵洞察是:如果我們選擇的基底 B 恰好由特徵向量組成,那麼 [T]B 就變成了對角矩陣 D!
D=[T]B=P−1AP
換句話說:對角矩陣 D 就是線性算子在特徵向量基底下的矩陣表示。

上圖展示:在特徵向量基底 B={x1,x2} 下,變換 T 對每個基底向量的作用是沿著該方向縮放,即 T(x1)=λ1x1,T(x2)=λ2x2。這就是對角矩陣 D=diag(λ1,λ2) 的行為。
為什麼特徵向量基底讓矩陣變成對角?
這有一個非常自然的解釋:
在特徵向量基底 B={x1,x2,…,xn} 下:
- 基底向量 x1 的 B 座標是 [x1]B=10⋮0(第一個座標軸)
- 變換後 T(x1)=Ax1=λ1x1
- 所以 [T(x1)]B=λ10⋮0(只在第一個座標軸上縮放 λ1 倍!)
對每個基底向量 xi 都是如此:變換後只是在第 i 個座標軸上縮放 λi 倍,完全不影響其他座標。
這就是對角矩陣的特性:每個座標軸獨立縮放,互不干擾。
我理解對角化的關鍵在於:特徵向量是線性變換「不會扭曲」的方向。
如果我們有足夠多這種「不會扭曲的方向」(n 個線性獨立的特徵向量),就能用它們作為新的座標系統。在這個座標系統下,變換只是沿著每個座標軸伸縮,行為變得最簡單,而這個簡化後的表示就是對角矩陣 D。
反過來,如果特徵向量不夠多,就表示有些方向必然會被「扭曲」,無法用純粹的縮放來描述,這時矩陣就無法對角化。
對角化的應用:計算矩陣的次方
對角化最強大的應用之一是快速計算矩陣的高次方。
核心公式
若 A=PDP−1,則:
Ak=PDkP−1
證明:
Ak=(PDP−1)(PDP−1)⋯(PDP−1)=PD(P−1P)D(P−1P)⋯DP−1=PDkP−1
對角矩陣的次方極易計算
對角矩陣的 k 次方只需將每個對角元素各自取 k 次方:
Dk=λ1k0⋮00λ2k⋮0⋯⋯⋱⋯00⋮λnk

範例:計算 A¹⁰⁰
設 A=[7−421],求 A100。
Step 1:找特徵值
det(A−λI)=(7−λ)(1−λ)+8=λ2−8λ+15=(λ−3)(λ−5)=0
特徵值:λ1=3, λ2=5
Step 2:找特徵向量
對於 λ1=3:
(A−3I)x=[4−42−2]x=0⇒x1=[1−2]
對於 λ2=5:
(A−5I)x=[2−42−4]x=0⇒x2=[1−1]
Step 3:建立 P 與 D
將特徵向量依序排列成 P 的 Column,對應的特徵值依相同順序排列在 D 的對角線上:
- 第 1 個 Column 是 λ1=3 的特徵向量 x1=[1−2]
- 第 2 個 Column 是 λ2=5 的特徵向量 x2=[1−1]
P=[x1x2]=[1−21−1],D=[λ100λ2]=[3005]
Step 4:計算 P⁻¹
P−1=(−1)(−1)−(1)(−2)1[−12−11]=[−12−11]
Step 5:計算 A¹⁰⁰
A100=PD100P−1=[1−21−1][3100005100][−12−11]
=[2⋅5100−31002⋅3100−2⋅51005100−31002⋅3100−5100]
如果直接計算 A100(連乘 100 次),需要約 O(n3×100) 次運算。
使用對角化後,主要成本在於:
- 計算 P−1:O(n3)
- 計算 D100:只需 O(n)(每個對角元素獨立計算)
- 兩次矩陣乘法:O(n3)
當 k 很大時,對角化帶來的效率提升是巨大的!
可對角化的條件
不是所有矩陣都能對角化。以下是判斷矩陣是否可對角化的三個層次:
充分條件:n 個相異特徵值
定理:若 n×n 矩陣 A 擁有 n 個互不相同的特徵值,則 A 必定可以對角化。
原因:對應於不同特徵值的特徵向量必定線性獨立(這是一個重要定理)。因此,n 個相異特徵值必產生 n 個線性獨立的特徵向量。
這只是充分條件,不是必要條件!即使有重複的特徵值,矩陣仍可能是可對角化的(只要幾何重根數等於代數重根數)。
充要條件:n 個線性獨立的特徵向量
定理:矩陣 A 可對角化 ⇔ A 擁有 n 個線性獨立的特徵向量。
這 n 個線性獨立的特徵向量構成 Rn 的一組基底。
我的理解是:對角化的本質是找到一組由特徵向量組成的基底。如果我們無法找到足夠的線性獨立特徵向量來「撐開」Rn 空間,矩陣就無法對角化。
因此我們需要檢查「特徵向量的總數是否等於 n」,確保它們能形成一組完整的基底。
最嚴謹的判斷:代數重根數 = 幾何重根數
定理:矩陣 A 可對角化 ⇔ 對於每一個特徵值 λi,其代數重根數等於幾何重根數:
am(λi)=gm(λi)對所有特徵值成立
回顧定義:
- 代數重根數 am(λ):λ 作為特徵多項式根的重數
- 幾何重根數 gm(λ):特徵空間 Eλ=Null(A−λI) 的維度
由於恆有 1≤gm(λ)≤am(λ),可對角化的條件等價於:
∑i=1kgm(λi)=n
即所有特徵空間的維度總和等於 n。
對角化的步驟流程

完整對角化流程
給定 n×n 矩陣 A:
Step 1:計算特徵多項式 det(A−λI)=0,求出所有特徵值 λ1,λ2,…,λk(及其代數重根數)
Step 2:對每個特徵值 λi,解 (A−λiI)x=0 求出特徵空間 Eλi 的一組基底
Step 3:檢查是否可對角化:
- 若每個 gm(λi)=am(λi),則可對角化
- 若某個 gm(λi)<am(λi),則不可對角化
Step 4:若可對角化:
- 將所有特徵空間的基底向量合併,形成 P=[x1∣x2∣⋯∣xn]
- 建立對角矩陣 D,對角線元素為對應的特徵值
則 A=PDP−1。
不可對角化的矩陣:虧缺矩陣
若矩陣 A 存在某個特徵值 λ,使得:
gm(λ)<am(λ)
則稱 A 為虧缺矩陣 (Defective Matrix)。虧缺矩陣無法對角化。
經典範例
考慮矩陣:
A=[2012]

分析:
-
特徵多項式:(2−λ)2=0,故 λ=2 是唯一特徵值,am(2)=2
-
計算幾何重根數:
A−2I=[0010]
rank(A−2I)=1,故 gm(2)=2−1=1
-
由於 gm(2)=1=2=am(2),此矩陣不可對角化。
虧缺矩陣的幾何意義是:變換 A 對空間做了某種「剪切 (Shear)」效果,不僅僅是縮放。
以上面的例子來說,矩陣 A=[2012] 會把向量沿著 x 軸方向「斜切」。只有一個方向(x 軸)是真正被保持的特徵方向,另一個維度的「純粹縮放」行為不存在。
所以我們找不到兩個線性獨立的特徵向量,無法用對角矩陣來表達這種「帶有剪切」的變換。
重要定理:不同特徵值的特徵向量線性獨立
定理陳述
設 λ1,λ2,…,λk 是矩陣 A 的 k 個相異特徵值,x1,x2,…,xk 分別是對應的特徵向量。則 x1,x2,…,xk 線性獨立。
證明(數學歸納法)
Base case:k=1 時,由於特徵向量 x1=0,單一向量必線性獨立。
Inductive step:假設對於 k−1 個相異特徵值成立,考慮 k 個的情況。
假設存在係數使得:
c1x1+c2x2+⋯+ckxk=0...(1)
對等式兩邊左乘 A:
c1λ1x1+c2λ2x2+⋯+ckλkxk=0...(2)
將 (1) 乘以 λk 後從 (2) 中減去:
c1(λ1−λk)x1+c2(λ2−λk)x2+⋯+ck−1(λk−1−λk)xk−1=0
由歸納假設,x1,…,xk−1 線性獨立,且因 λi=λk(i<k),故:
c1(λ1−λk)=c2(λ2−λk)=⋯=ck−1(λk−1−λk)=0
因此 c1=c2=⋯=ck−1=0。
代回 (1):ckxk=0。由於 xk=0,故 ck=0。
因此所有係數皆為零,x1,x2,…,xk 線性獨立。□
此定理直接導出:若 n×n 矩陣有 n 個相異特徵值,則它必定可對角化。
範例:完整對角化流程
範例:對角化 3×3 矩陣
對角化矩陣 A=100010012。
Step 1:求特徵值
由於 A 是上三角矩陣,特徵值就是對角線元素:
λ1=1(二重根),λ2=2(單根)
所以 am(1)=2, am(2)=1。
Step 2:求特徵向量
求特徵向量的核心問題是:對於每個特徵值 λ,解齊次線性方程組 (A−λI)x=0。
對於 λ=1:
子步驟 2.1:計算 A−λI
A−I=1−10001−10012−1=000000011
子步驟 2.2:化簡為 RREF
000000011R3−R2000000010交換000000100
子步驟 2.3:將 RREF 轉換回方程式
RREF 的每一列代表一個方程式。把矩陣 000000100 對應的增廣矩陣還原成方程組:
- 第一列 [0,0,1∣0]:0⋅x1+0⋅x2+1⋅x3=0 → x3=0
- 第二列和第三列都是 [0,0,0∣0]:這是恆成立的 0=0,不提供任何資訊
結論:唯一的約束是 x3=0,而 x1 和 x2 完全沒有被約束。
子步驟 2.4:識別自由變數與寫出通解
在 RREF 中:
- Pivot column(主元行):有 leading 1 的那些 column。這裡只有第 3 行有 leading 1
- 自由變數:不在 pivot column 的變數可以「自由選擇」任意值。這裡 x1,x2 是自由變數
既然 x1,x2 可以自由取值,而 x3=0 是固定的,通解就是:
x=x1x20其中 x1,x2∈R 任意
子步驟 2.5:分離自由變數,找出基底向量
從子步驟 2.4 我們已經知道有 2 個自由變數(x1,x2),所以解空間的維度 = 2。
但對角化不只需要知道「維度是多少」,還需要實際寫出基底向量來組成矩陣 P。通解 x1x20 描述的是「無限多個向量的集合」,我們必須從中挑出具體的基底向量。
標準做法是:把通解改寫成「固定向量的線性組合」,讓每個自由變數各自乘上一個固定向量:
x=x1x20=x100+0x20=x1100+x2010
這樣就能讀出:特徵空間 E1 的基底是 100 和 010,正是我們要放進矩陣 P 的向量。
E1 的基底:v1=100, v2=010
gm(1)=2=am(1) ✓
這是一個常見的誤解:很多人以為解特徵向量會得到「一個向量」,但實際上解齊次方程組 (A−λI)x=0 得到的是一個子空間(特徵空間 Eλ)。
在這個例子中,λ=1 的特徵空間 E1 是一個二維平面(由 v1,v2 張成),而不是單一向量。這個平面上的任何非零向量都是 λ=1 的特徵向量!
特徵空間的維度(幾何重根數)告訴我們:
- 維度 = 1:特徵向量都在同一條線上
- 維度 = 2:特徵向量張成一個平面
- 維度 = k:特徵向量張成 k 維子空間
對於 λ=2:
子步驟 2.1:計算 A−2I
A−2I=1−20001−20012−2=−1000−10010
子步驟 2.2:化簡為 RREF
−1000−10010−R1,−R21000100−10
子步驟 2.3:將 RREF 轉換回方程式
- 第一列 [1,0,0∣0]:x1=0
- 第二列 [0,1,−1∣0]:x2−x3=0 → x2=x3
- 第三列 [0,0,0∣0]:0=0(恆成立)
子步驟 2.4:識別自由變數與寫出通解
- Pivot columns:第 1 行和第 2 行(有 leading 1)
- 自由變數:x3(第 3 行不是 pivot column)
既然 x3 是自由的,設 x3=t(任意實數),則:
- x2=x3=t
- x1=0
通解:
x=0tt其中 t∈R 任意
子步驟 2.5:分離自由變數,找出基底向量
x=0tt=t011
這告訴我們:解空間是由 011 張成的一條線。
E2 的基底:v3=011
gm(2)=1=am(2) ✓
Step 3:建立 P 與 D
由於每個特徵值的 gm=am,矩陣可對角化。
將所有特徵向量排成 P 的 columns,對應的特徵值排成 D 的對角線:
P=∣v1∣∣v2∣∣v3∣=100010011,D=100010002
(v1,v2 對應 λ=1,v3 對應 λ=2)
則 A=PDP−1。