对角化
上一节课我们知道了怎么求解特征值和特征向量。
假设 \(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}
\]