本讲的主要内容
- 对角化矩阵的概念以及方法
- 计算矩阵的幂的对角化方法
- 几个例子
对角化矩阵、计算矩阵的幂
对于一个有
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 还是比较简单的,所以计算的过程简单了一些。
计算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}
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!,学数学的人真厉害啊。
以上~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/116732.html