本讲的主要内容
- 对角化矩阵的概念以及方法
- 计算矩阵的幂的对角化方法
- 几个例子
对角化矩阵、计算矩阵的幂
对于一个有 nnn 个不同特征向量(其实就是说所有的特征值均不同)的矩阵 AAA,讲它的 nnn 个特征向量组成一个矩阵 SSS ,如果我们计算 ASASAS 可以有如下过程:
AS=A(x1,x2,x3...xn)=(λ1x1,λ2x2,....λnxn)=(x1,x2,x3...xn)(λ1...0.........0...λn)=SΛ
AS = A(x_{1}, x_{2}, x_{3}...x_{n}) = (\lambda_{1}x_{1},\lambda_{2}x_{2},....\lambda_{n}x_{n})=(x_{1}, x_{2},x_{3}...x_{n})\begin{pmatrix}
\lambda_{1} &... & 0\\
... & ... & ...\\
0 &... & \lambda_{n}
\end{pmatrix}=S\Lambda
AS=A(x1,x2,x3...xn)=(λ1x1,λ2x2,....λnxn)=(x1,x2,x3...xn)⎝⎛λ1...0.........0...λn⎠⎞=SΛ
一定注意上面的式子成立的条件是矩阵有 nnn 个不同的特征向量,如果我们将上面的结论继续做变化:
A=SΛS−1
A = S\Lambda S^{-1}
A=SΛS−1
那么现在就可以拿到这个形式很好看的等式了。使用这个等式我们可以简化很多矩阵的幂的计算,例如计算 A2A^{2}A2:
A2=(SΛS−1)2=SΛS−1SΛS−1=SΛ2S−1
A^{2} = (S\Lambda S^{-1})^{2} =S\Lambda S^{-1}S\Lambda S^{-1} = S\Lambda^{2}S^{-1}
A2=(SΛS−1)2=SΛS−1SΛS−1=SΛ2S−1
利用对角化计算差分方程
对于矩阵 AAA ,如果有列向量 uiu_{i}ui 总有 ui+1=Auiu_{i+1} = Au_{i}ui+1=Aui,现在已知 A,u0A, u_{0}A,u0,如何求解 uku_{k}uk?
首先展开这个递推式:
uk=Auk−1=...=Aku0
u_{k} = Au_{k-1}=... = A^{k}u_{0}
uk=Auk−1=...=Aku0
然后把矩阵对角化(当然,这个问题的前提是矩阵可以对角化),有:uk=SΛkS−1u0u_{k} = S\Lambda^{k}S^{-1}u_{0}uk=SΛkS−1u0,这时候,前提条件中的 nnn 个线性无关的特征向量就有用了, 对于 u0u_{0}u0 这个nnn维向量,可以用这 nnn 个特征向量来表示,可以有:
u0=c1x1+c2x2+...+cnxn=(x1,x2,...,xn)(c1c2...cn)=SC
u_{0} = c_{1}x_{1} + c_{2}x_{2} +...+c_{n}x_{n} = (x_{1}, x_{2}, ...,x_{n})\begin{pmatrix}
c_{1}\\
c_{2}\\
... \\
c_{n}
\end{pmatrix}= SC
u0=c1x1+c2x2+...+cnxn=(x1,x2,...,xn)⎝⎜⎜⎛c1c2...cn⎠⎟⎟⎞=SC
其中 SSS 跟前面对角化中的矩阵是一样的,都是特征向量组成的矩阵,把这个式子代入前面的 Aku0A^{k}u_{0}Aku0,就可以得到最终的结论:
uk=Aku0=SΛkC
u_{k} = A^{k}u_{0} = S\Lambda^{k}C
uk=Aku0=SΛkC
计算这个表示线性组合的向量 CCC 还是比较简单的,所以计算的过程简单了一些。
计算Fibonacci 数列
这一个例子是上面的一个应用,首先我们知道斐波那契数列是:
0,1,1,2,3,5......
0,1,1,2,3,5......
0,1,1,2,3,5......
也就是:
F(n)=F(n−1)+F(n−2),(n>=3)
F(n) = F(n-1) + F(n-2) ,(n>=3)
F(n)=F(n−1)+F(n−2),(n>=3)
为了使用对角化的知识计算,令 uk=(Fk+1Fk)u_{k} = \begin{pmatrix}
F_{k+1}\\
F_{k}
\end{pmatrix}uk=(Fk+1Fk),构造差分方程组:
{F(k+2)=F(k+1)+F(k)F(k+1)=F(k+1)
\left\{\begin{matrix}
F(k+2) = F(k+1) + F(k)\\
F(k+1) = F(k+1)
\end{matrix}\right.
{F(k+2)=F(k+1)+F(k)F(k+1)=F(k+1)
这时候,我们可以得到:
uk+1=Auk,A=(1110)
u_{k+1} = Au_{k},A=\begin{pmatrix}
1 &1 \\
1&0
\end{pmatrix}
uk+1=Auk,A=(1110)
这样,我们就构造了上面一样的递推形式,接下来按照对角化矩阵 AAA 然后就可以计算 SΛkCS\Lambda^{k}CSΛkC就可以快速计算了。
用线性代数解决斐波那契数列,感觉真的是…Amazing!,学数学的人真厉害啊。
以上~