對角化
上一節課我們知道了怎么求解特征值和特征向量。
假設 \(A\) 有 \(n\) 個線性無關特征向量,按列組成矩陣 \(S\) ,稱其為特征向量矩陣。
我們算一下 \(A\) 乘以 \(S\) 會發生什么。
注:\(x\) 表示列向量。
\(\Lambda\) 表示特征值矩陣,她是對角矩陣。
我們得到公式
左乘 \(S^{-1}\)
因為
所以
這就是對角化方法。
還可以寫成另一種形式,就是右乘 \(S^{-1}\) 的時候,可得
這是新的矩陣分解方法,以前我們已經有消元法中的 \(LU\) 矩陣和格拉姆-施密特正交化中的 \(QR\) 矩陣。
前提條件是 \(A\) 有 \(n\) 個線性無關特征向量,這其實也說明,\(S\) 必須可逆。
意義
對角化的意義是在求解矩陣冪的時候。
例子1
已知 \(Ax=\lambda x\) , 求解 \(A^2\) 的特征值和特征向量
兩邊同時乘以 \(A\) ,得
所以,\(A^2\) 的特征向量還是 \(x\) ,但是特征值變為原來特征值的平方,即 \(\lambda^2\)。
我們從對角化方法計算,
對角化后,特征向量矩陣不變,表示矩陣平方后特征向量不變,但是特征值矩陣變為平方,表示矩陣平方后,特征值變為原來特征值的平方。
和上個式子的結論一樣,只是變成矩陣形式。
對角化計算的美妙之處在於,我們可以輕易得到矩陣 \(k\) 次方的時候,特征值和特征向量的情況,即
特征值變為原來的 \(k\) 次方。特征向量不變。
但是如果用剛開始那種方法,就不這么簡單。
反過來理解,特征向量和特征值提供了理解、計算矩陣冪的好方法。
定理
當所有 \(|\lambda| <0\) 時,有
此時我們稱矩陣是穩定的。
因為 \(A^K=S \Lambda^k S^{-1}\) ,\(S\) 不變,\(A^K\) 隨着冪次越高越小,只有 \(\Lambda^k\) 也 隨着冪次越高越小。
我們想要了解矩陣冪的情況,從特征值上就能得到信息。
這就是對角化的意義。
可對角化的情況
哪些矩陣可以對角化?\(A\) 必須存在 \(n\) 個線性無關特征向量。
而 \(A\) 必然存在 \(n\) 個線性無關特征向量的一個很好的條件是,所有的 \(\lambda\) 都不同,也就是說沒有重復的特征值。
但是如果有重復的 \(\lambda\) ,就需要深入研究,可能但不一定存在 \(n\) 個線性無關特征向量。她不是一個肯定的結論。
例子1
一個 \(10*10\) 的單位陣,計算其特征值,結果都是 \(1\) .但是 \(n\) 階單位陣的特征向量可以是任意 \(n\) 維向量。因為她們都滿足 \(Ax=\lambda x\)。我們可以完整的取到10個線性無關的特征向量。
例子2
假設有
我們想要對其對角化。
先算特征向量和特征值。
根據特征值方程
解得
代入 \((A-\lambda I)\) ,有
計算該矩陣的零空間的基向量,可得
只有一個特征向量。所以這個 \(2*2\) 矩陣的特征向量不完整,無法對角化。
計算特征值重復次數時,我們用代數重度(algebraic multiplicity)表示。例子2的代數重度就是2,即特征值重復了兩次,她體現在多項式根的時候用了兩次。
差分方程組求解
一階差分方程組的求解
已知向量 \(u_0\),下一項等於矩陣 \(A\) 乘以前一項,即 \(u_{k+1}=Au_k\)。求解 \(u_k\) ,這是一階差分方程組,由向量和矩陣組成。
我們可以得到,
\(u_1=Au_0\),
\(u_2=Au_1=A^2u_0\),
...
\(u_k=A^ku_0\).
這是一階差分方程組的解。
問題是,如何根據初始值 \(u_0\) 來求解 \(u_k\) 的具體的數值。
把 \(u_0\) 看稱若干個線性無關特征向量(可以理解為基向量,她們的線性組合可以生成 \(u_0\) )相加:
其中,\(c\) 表示標量,是常數。
將 \(u_0\) 左乘 \(A\)
可得
矩陣形式:
\(C\) 是由\(c_1、c_2...c_n\) 構成的矩陣。
總結:
計算 \(u_{100}\) ,步驟如下
- 將初始向量展開成特征向量的組合
- 然后矩陣 \(A^{100}\) 乘以各個特征向量
- 矩陣 \(A\) 可以化簡為特征值 \(\lambda\) , \(A^{100}\) 化簡為對應的 \(\lambda^{100}\) .
斐波那契數列(二階差分方程組的求解)
已知斐波那契數列:0、1、1、2、3、5、8...,我們想要知道,第100項 \(F_{100}\) 等於多少?以及她的增長速度有多快?
前面我們講過,矩陣增長穩定,最終趨向等於零,她的變化可以由特征值體現和決定。這里也是一樣。數列的增長由特征值決定。
斐波那契數列遞歸式:
我們希望寫成 \(u_k=A^ku_0\) 的形式。但目前只有一個方程,而且是二階差分方程,就像含有二階導數的微分方程,希望能化簡為只含有一階導數的微分方程,也就是一階差分。怎么做?
技巧是如何定義向量 \(u_k\).用一個 \(2*2\) 方程組代替原來的二階差分方程。
令
追加一個方程
此時聯立兩個方程 \(F_{k+2}=F_{k+1}+F_{k}、F_{k+1}=F_{k+1}\)。可以寫出 \(u_{k+1}\) 表達式。
可得
這里就將二階差分方程變為一階。
同一階差分一樣,有 \(u_k=A^ku_0\) .
得到 \(A\) ,就可以計算特征值和特征向量,通過特征值方程可得
解得
\(\lambda\) 不同,\(A\) 可以對角化。
數列的增長由特征值決定。而 \(\lambda\) 較大的一個起到決定性作用,因為根據對角化后的式子,\(\lambda_1^{n}\) 越來越大,而 \(\lambda_2^{n}\) 越來越小,趨向於0,因此我們可以將 \(F_{100}\) 寫為
所以數列在第一百項的增長速率由 \(\lambda_1^{100}\) 決定。
求解特征向量,將兩個 $\lambda $ 分別代入\((A-\lambda I)x=0\) ,可得
而初始向量
展開成特征向量的組合
知道 \(x_1、x_2\),可解得
代入