本讲的主要内容
对于一个有 n n n 个不同特征向量(其实就是说所有的特征值均不同)的矩阵 A A A,讲它的 n n n 个特征向量组成一个矩阵 S S S ,如果我们计算 A S AS AS 可以有如下过程:
A S = A ( x 1 , x 2 , x 3 . . . x n ) = ( λ 1 x 1 , λ 2 x 2 , . . . . λ n x n ) = ( x 1 , x 2 , x 3 . . . x n ) ( λ 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Λ
一定注意上面的式子成立的条件是矩阵有 n n n 个不同的特征向量,如果我们将上面的结论继续做变化:
A = S Λ S − 1 A = S\Lambda S^{-1} A=SΛS−1
那么现在就可以拿到这个形式很好看的等式了。使用这个等式我们可以简化很多矩阵的幂的计算,例如计算 A 2 A^{2} A2:
A 2 = ( S Λ S − 1 ) 2 = S Λ S − 1 S Λ S − 1 = S Λ 2 S − 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
对于矩阵 A A A ,如果有列向量 u i u_{i} ui 总有 u i + 1 = A u i u_{i+1} = Au_{i} ui+1=Aui,现在已知 A , u 0 A, u_{0} A,u0,如何求解 u k u_{k} uk?
首先展开这个递推式:
u k = A u k − 1 = . . . = A k u 0 u_{k} = Au_{k-1}=... = A^{k}u_{0} uk=Auk−1=...=Aku0
然后把矩阵对角化(当然,这个问题的前提是矩阵可以对角化),有: u k = S Λ k S − 1 u 0 u_{k} = S\Lambda^{k}S^{-1}u_{0} uk=SΛkS−1u0,这时候,前提条件中的 n n n 个线性无关的特征向量就有用了, 对于 u 0 u_{0} u0 这个 n n n维向量,可以用这 n n n 个特征向量来表示,可以有:
u 0 = c 1 x 1 + c 2 x 2 + . . . + c n x n = ( x 1 , x 2 , . . . , x n ) ( c 1 c 2 . . . c n ) = S C 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
其中 S S S 跟前面对角化中的矩阵是一样的,都是特征向量组成的矩阵,把这个式子代入前面的 A k u 0 A^{k}u_{0} Aku0,就可以得到最终的结论:
u k = A k u 0 = S Λ k C u_{k} = A^{k}u_{0} = S\Lambda^{k}C uk=Aku0=SΛkC
计算这个表示线性组合的向量 C C C 还是比较简单的,所以计算的过程简单了一些。
这一个例子是上面的一个应用,首先我们知道斐波那契数列是:
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)
为了使用对角化的知识计算,令 u k = ( F k + 1 F k ) 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)
这时候,我们可以得到:
u k + 1 = A u k , A = ( 1 1 1 0 ) u_{k+1} = Au_{k},A=\begin{pmatrix} 1 &1 \\ 1&0 \end{pmatrix} uk+1=Auk,A=(1110)
这样,我们就构造了上面一样的递推形式,接下来按照对角化矩阵 A A A 然后就可以计算 S Λ k C S\Lambda^{k}C SΛkC就可以快速计算了。
用线性代数解决斐波那契数列,感觉真的是…Amazing!,学数学的人真厉害啊。
以上~