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