對角化
上一節課我們知道了怎么求解特征值和特征向量。
假設 \(A\) 有 \(n\) 個線性無關特征向量,按列組成矩陣 \(S\) ,稱其為特征向量矩陣。
我們算一下 \(A\) 乘以 \(S\) 會發生什么。
\[\begin{align} AS&=A. \left( \begin{array}{cccc} x_1 & x_2 & ... & x_n \\ \end{array} \right)\\ &= \left( \begin{array}{cccc} \lambda _1 x_1 & \lambda _2 x_2 & ... & \lambda _n x_n \\ \end{array} \right)\\ &= \left( \begin{array}{cccc} x_1 & x_2 & ... & x_n \\ \end{array} \right) \left( \begin{array}{cccc} \lambda _1 & 0 & 0 & 0 \\ 0 & \lambda _2 & 0 & 0 \\ ... & ... & ... & ... \\ 0 & 0 & 0 & \lambda _n \\ \end{array} \right)\\ &= S\Lambda \end{align} \]
注:\(x\) 表示列向量。
\(\Lambda\) 表示特征值矩陣,她是對角矩陣。
我們得到公式
\[AS=S\Lambda \]
左乘 \(S^{-1}\)
\[S^{-1}AS=S^{-1}S\Lambda \]
因為
\[S^{-1}S=I \]
所以
\[S^{-1}AS=\Lambda \]
這就是對角化方法。
還可以寫成另一種形式,就是右乘 \(S^{-1}\) 的時候,可得
\[A=S\Lambda S^{-1} \]
這是新的矩陣分解方法,以前我們已經有消元法中的 \(LU\) 矩陣和格拉姆-施密特正交化中的 \(QR\) 矩陣。
前提條件是 \(A\) 有 \(n\) 個線性無關特征向量,這其實也說明,\(S\) 必須可逆。
意義
對角化的意義是在求解矩陣冪的時候。
例子1
已知 \(Ax=\lambda x\) , 求解 \(A^2\) 的特征值和特征向量
兩邊同時乘以 \(A\) ,得
\[A^2x=\lambda A x =\lambda^2x \]
所以,\(A^2\) 的特征向量還是 \(x\) ,但是特征值變為原來特征值的平方,即 \(\lambda^2\)。
我們從對角化方法計算,
\[A^2=S\Lambda S^{-1}.S\Lambda S^{-1}=S\Lambda^2 S^{-1} \]
對角化后,特征向量矩陣不變,表示矩陣平方后特征向量不變,但是特征值矩陣變為平方,表示矩陣平方后,特征值變為原來特征值的平方。
和上個式子的結論一樣,只是變成矩陣形式。
對角化計算的美妙之處在於,我們可以輕易得到矩陣 \(k\) 次方的時候,特征值和特征向量的情況,即
\[A^K=S \Lambda^k S^{-1} \]
特征值變為原來的 \(k\) 次方。特征向量不變。
但是如果用剛開始那種方法,就不這么簡單。
反過來理解,特征向量和特征值提供了理解、計算矩陣冪的好方法。
定理
當所有 \(|\lambda| <0\) 時,有
\[A^{k}\rightarrow 0 \quad as \quad k\rightarrow ∞ \]
此時我們稱矩陣是穩定的。
因為 \(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=\left( \begin{array}{cc} 2 & 1 \\ 0 & 2 \\ \end{array} \right) \]
我們想要對其對角化。
先算特征向量和特征值。
根據特征值方程
\[det(A-\lambda I)=\left| \begin{array}{cc} 2-\lambda & 1 \\ 0 & 2-\lambda \\ \end{array} \right|=(2-\lambda)(2-\lambda) \]
解得
\[\lambda_1=2,\lambda_2=2 \]
代入 \((A-\lambda I)\) ,有
\[A-\lambda I= \left( \begin{array}{cc} 0& 1 \\ 0 & 0 \\ \end{array} \right) \]
計算該矩陣的零空間的基向量,可得
\[x= \left( \begin{array}{c} 1 \\ 0 \\ \end{array} \right) \]
只有一個特征向量。所以這個 \(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\) )相加:
\[u_0=c_1x_1+c_2x_2+...+c_nx_n \]
其中,\(c\) 表示標量,是常數。
將 \(u_0\) 左乘 \(A\)
\[\begin{align} Au_0&=c_1Ax_1+c_2Ax_2+...+c_nAx_n\\ &=c_1\lambda_1x_1+c_2\lambda_2x_2+...+c_n\lambda_nx_n \end{align} \]
可得
\[\begin{align} u_{100}= A^{100}u_0 &=c_1\lambda_1^{100}x_1+c_2\lambda_2^{100}x_2+...+c_n\lambda_n^{100}x_n \end{align} \]
矩陣形式:
\[u_{100}=A^{100}u_0=\Lambda^{100}SC \]
\(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}\) 等於多少?以及她的增長速度有多快?
前面我們講過,矩陣增長穩定,最終趨向等於零,她的變化可以由特征值體現和決定。這里也是一樣。數列的增長由特征值決定。
斐波那契數列遞歸式:
\[F_{k+2}=F_{k+1}+F_{k} \]
我們希望寫成 \(u_k=A^ku_0\) 的形式。但目前只有一個方程,而且是二階差分方程,就像含有二階導數的微分方程,希望能化簡為只含有一階導數的微分方程,也就是一階差分。怎么做?
技巧是如何定義向量 \(u_k\).用一個 \(2*2\) 方程組代替原來的二階差分方程。
令
\[u_k=\left( \begin{array}{c} F_{k+1} \\ F_k \\ \end{array} \right) \]
追加一個方程
\[F_{k+1}=F_{k+1} \]
此時聯立兩個方程 \(F_{k+2}=F_{k+1}+F_{k}、F_{k+1}=F_{k+1}\)。可以寫出 \(u_{k+1}\) 表達式。
可得
\[u_{k+1}= \left( \begin{array}{c} F_{k+2} \\ F_{k+1} \\ \end{array} \right)= \left( \begin{array}{cc} 1 & 1 \\ 1 & 0 \\ \end{array} \right) \left( \begin{array}{c} F_{k+1} \\ F_k \\ \end{array} \right)=\left( \begin{array}{cc} 1 & 1 \\ 1 & 0 \\ \end{array} \right)u_k=Au_k \]
這里就將二階差分方程變為一階。
同一階差分一樣,有 \(u_k=A^ku_0\) .
得到 \(A\) ,就可以計算特征值和特征向量,通過特征值方程可得
\[det(A-\lambda I)= \left| \begin{array}{cc} 1-\lambda & 1 \\ 1 & -\lambda \\ \end{array} \right|=\lambda^2-\lambda-1 \]
解得
\[\lambda_1=\frac{1}{2} \left(1+\sqrt{5}\right)≈1.618,\lambda_2=\frac{1}{2} \left(1-\sqrt{5}\right)≈-0.618 \]
\(\lambda\) 不同,\(A\) 可以對角化。
\[\begin{align} u_{100}= A^{100}u_0 &=c_1\lambda_1^{100}x_1+c_2\lambda_2^{100}x_2 \end{align} \]
數列的增長由特征值決定。而 \(\lambda\) 較大的一個起到決定性作用,因為根據對角化后的式子,\(\lambda_1^{n}\) 越來越大,而 \(\lambda_2^{n}\) 越來越小,趨向於0,因此我們可以將 \(F_{100}\) 寫為
\[F_{100}≈c_1\lambda_1^{100}=c_1(\frac{1}{2} \left(1+\sqrt{5}\right))^{100} \]
所以數列在第一百項的增長速率由 \(\lambda_1^{100}\) 決定。
求解特征向量,將兩個 $\lambda $ 分別代入\((A-\lambda I)x=0\) ,可得
\[x_1=\left( \begin{array}{c} \lambda _1 \\ 1 \\ \end{array} \right), x_2=\left( \begin{array}{c} \lambda _2 \\ 1 \\ \end{array} \right) \]
而初始向量
\[u_0=\left( \begin{array}{c} F_1 \\ F_0 \\ \end{array} \right) =\left( \begin{array}{c} 1 \\ 0 \\ \end{array} \right) \]
展開成特征向量的組合
\[u_0=c_1x_1+c_2x_2=\left( \begin{array}{c} 1 \\ 0 \\ \end{array} \right) \]
知道 \(x_1、x_2\),可解得
\[c_1=\frac{1}{\sqrt{5}} ,c_2=-\frac{1}{\sqrt{5}} \]
代入
\[F_{100}≈c_1\lambda_1^{100}=c_1(\frac{1}{2} \left(1+\sqrt{5}\right))^{100}≈3.54225\times 10^{20} \]