一、矩阵对角化及其条件
1.1 矩阵对角化
对角化是对方阵的一种运算,使得其运算结果为一个对角方阵。下面会讲具体的例子:
什么是对角矩阵:从左上角到右下角的直线(叫做对角线)以外的元素都是零。这种方阵称为对角矩阵,简称对角阵,记作: Λ = d i a g ( λ 1 , λ 2 , ⋯ , λ n ) \Lambda=diag(\lambda_1,\lambda_2,\cdots,\lambda_n) Λ=diag(λ1,λ2,⋯,λn)
将方阵
A
A
A的特征向量放入一个新的矩阵
S
S
S,那么有:
A
S
=
A
[
c
1
c
2
⋯
c
n
]
=
[
λ
1
c
1
⋯
λ
n
c
n
]
=
[
c
1
c
2
⋯
c
n
]
[
λ
1
0
⋯
0
0
λ
2
⋯
0
⋯
⋯
⋯
⋯
⋯
⋯
⋯
λ
n
]
=
S
Λ
(1)
\begin{aligned} AS&=A\begin{bmatrix}c_1&c_2&\cdots&c_n\end{bmatrix}\\&=\begin{bmatrix}\lambda_1c_1&\cdots&\lambda_nc_n\end{bmatrix}\\ &=\begin{bmatrix}c_1&c_2&\cdots& c_n\end{bmatrix}\begin{bmatrix}\lambda_1&0&\cdots&0\\0&\lambda_2&\cdots&0\\ \cdots&\cdots&\cdots&\cdots\\ \cdots&\cdots&\cdots&\lambda_n\end{bmatrix}=S\Lambda \end{aligned}\tag{1}
AS=A[c1c2⋯cn]=[λ1c1⋯λncn]=[c1c2⋯cn]
λ10⋯⋯0λ2⋯⋯⋯⋯⋯⋯00⋯λn
=SΛ(1)
也就是有:
A
S
=
S
Λ
(2)
AS=S\Lambda\tag{2}
AS=SΛ(2)
假设特征向量是线性无关的有:
S
−
1
A
S
=
Λ
(3)
S^{-1}AS=\Lambda\tag{3}
S−1AS=Λ(3)
下面是等价表达,也就是我们这节课矩阵对角化的重要公式:
A
=
S
Λ
S
−
1
(4)
A=S\Lambda S^{-1}\tag{4}
A=SΛS−1(4)
通过左右乘以特征向量构成的矩阵变成对角化的过程我们称为矩阵对角化。根据推导的前提,一个矩阵如果能够被对角化,存在矩阵维度大小的独立的特征向量。
如果每个矩阵都需要求出其特征向量是否相互独立,实在太麻烦了,这里有一个小结论: A A A 矩阵的特征值不同,是其可对角化的充分不必要条件。
矩阵对应的特征值不同这那么这个矩阵一定可以对角化,但是反过来,可对角化这个矩阵并不意味着特征值不同。
例子1:单位矩阵 I = [ 1 0 0 0 1 0 0 0 1 ] I=\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\end{bmatrix} I= 100010001 ,其特征值有三个,都是1,但是所有的向量都是其特征向量,任取3个即可。
例子2:对于一个三角矩阵 A = [ 2 1 0 2 ] A=\begin{bmatrix}2&1\\0&2\end{bmatrix} A=[2012]的特征值为2和2,再求其特征向量 A − 2 I = [ 0 1 0 0 ] A-2I=\begin{bmatrix}0&1\\0&0\end{bmatrix} A−2I=[0010],这个矩阵的零空间是零向量,特征向量为 x 1 = [ 1 0 ] x_1=\begin{bmatrix}1\\0\end{bmatrix} x1=[10],因为不能找到2个线性无关的向量,不可以进行对角化。
1.2 矩阵对角化对幂运算的简化
这样的对角化为什么是重要的?答:可以化简矩阵的幕,减少运算量。考虑两个相同矩阵
A
A
A相乘的结果:
由(4)可得:
A
2
=
S
Λ
S
−
1
S
Λ
S
−
1
=
S
Λ
(
S
S
−
1
)
Λ
S
−
1
=
S
Λ
2
S
−
1
(5)
A^2=S\Lambda S^{-1}S\Lambda S^{-1}=S\Lambda(SS^{-1})\Lambda S^{-1}=S\Lambda^2S^{-1}\tag{5}
A2=SΛS−1SΛS−1=SΛ(SS−1)ΛS−1=SΛ2S−1(5)
上面的式子告诉我们我们可以将矩阵的幂转化到特征矩阵与特征向量构成的矩阵。更一般的,
A
k
=
S
Λ
k
S
−
1
(6)
A^k=S\Lambda^kS^{-1}\tag{6}
Ak=SΛkS−1(6)
最后,对比一下中学时期学的指数函数与本节学的矩阵作为幂的指数函数:
对比项 | 指数无穷大时归零条件 |
---|---|
A k A^k Ak | ∀ ∣ λ i ∣ < 1 \forall \quad \vert\lambda_i\vert<1 ∀∣λi∣<1 |
a k a^k ak | ∣ a ∣ < 1 \vert a\vert<1 ∣a∣<1 |
一个矩阵的无穷次幂趋于零矩阵的条件是所有特征值的绝对值都小于1。一个数无穷次幂趋于零的条件是这个数绝对值小于1。
二、应用:差分方程(Difference equation) u k = A k u 0 u_k=A^ku_0 uk=Aku0
如果 x i x_i xi是 A A A的一个特征向量,那么 k x i kx_i kxi( k ≠ 0 k\neq 0 k=0)也是其特征向量。
这里讨论一个较为简单的一阶差分方程,其一般形式是:
u
k
+
1
=
A
u
k
(7)
u_{k+1}=Au_k\tag{7}
uk+1=Auk(7)
如果你感到抽象,你可以将一个物体的状态在某个时刻的整体状态为一个列向量
u
k
=
[
1
2
3
]
u_k=\begin{bmatrix}1\\2\\3\end{bmatrix}
uk=
123
,每一个元素都代表具体的状态,下一刻的状态
u
k
+
1
u_{k+1}
uk+1由一个矩阵
A
A
A更新。
下面来写一下(7)的通项公式:
u
1
=
A
u
0
u
2
=
A
2
u
0
⋯
u
k
=
A
k
u
0
(10)
u_1=Au_0\\ u_2=A^2u_0\\ \cdots\\ u_k=A^ku_0\tag{10}
u1=Au0u2=A2u0⋯uk=Aku0(10)
虽然知道了通项公式,但是计算多次 A A A并不是一个聪明之举,利用这节课前面提到对角化方法进行计算上的简化。下面是进行简化的过程:
在进行简化之前首先要确保矩阵
A
A
A是可对角化的。设向量
u
0
u_0
u0是矩阵
A
A
A特征向量
x
i
x_i
xi的线性组合:
u
0
=
c
1
x
1
+
c
2
x
2
+
⋯
+
c
n
x
n
(11)
u_0=c_1x_1+c_2x_2+\dots+c_nx_n\tag{11}
u0=c1x1+c2x2+⋯+cnxn(11)
为什么我们以可以使用 A A A的特征向量的线性组合来表示 u 0 u_0 u0?这是因为特征向量是线性无关的,它可以表示特征向量个数的任何向量,当然就包括 u 0 u_0 u0。
接着我们将式子左右两边同时乘以矩阵
A
A
A,有:
A
u
0
=
A
(
c
1
x
1
+
c
2
x
2
+
⋯
+
c
n
x
n
)
=
c
1
x
1
+
A
c
2
x
2
+
⋯
+
A
c
n
x
n
=
c
1
λ
1
x
1
+
c
2
λ
2
x
2
+
⋯
+
c
n
λ
n
x
n
(12)
\begin{aligned} Au_0&=A(c_1x_1+c_2x_2+\dots+c_nx_n)\\ &=c_1x_1+Ac_2x_2+\cdots+Ac_nx_n\\ &=c_1\lambda_1x_1+c_2\lambda_2x_2+\cdots+c_n\lambda_nx_n\\ \end{aligned}\tag{12}
Au0=A(c1x1+c2x2+⋯+cnxn)=c1x1+Ac2x2+⋯+Acnxn=c1λ1x1+c2λ2x2+⋯+cnλnxn(12)
容易推出:
A
k
u
0
=
c
1
λ
1
k
x
1
+
c
2
λ
2
k
x
2
+
⋯
+
c
n
λ
n
k
x
n
(13)
A^ku_0=c_1\lambda_1^kx_1+c_2\lambda_2^kx_2+\cdots+c_n\lambda_n^kx_n\tag{13}
Aku0=c1λ1kx1+c2λ2kx2+⋯+cnλnkxn(13)
以上的公式告诉我们
A
A
A的
k
k
k次幂乘以初值
u
0
u_0
u0等于一个数
c
i
c_i
ci乘以其特征值
λ
i
\lambda_i
λi的
k
k
k次方。我们再使用矩阵与语言描述一下上面的推导过程:
u
0
=
[
x
1
⋯
x
n
]
[
c
1
⋮
c
n
]
(14)
u_0=\begin{bmatrix} &&\\ x_1&\cdots&x_n\\ && \end{bmatrix}\begin{bmatrix}c_1\\\vdots\\c_n\end{bmatrix}\tag{14}
u0=
x1⋯xn
c1⋮cn
(14)
也就是
u
0
=
S
c
(15)
u_0=Sc\tag{15}
u0=Sc(15)
其中矩阵
S
S
S是特征向量矩阵,因为它是可逆的,所以:
c
=
S
−
1
u
0
(16)
c=S^{-1}u_0\tag{16}
c=S−1u0(16)
下面考虑通项
A
k
u
0
A^{k}u_0
Aku0:
u
k
=
A
k
u
0
=
S
Λ
k
S
−
1
u
0
=
S
Λ
k
(
S
−
1
c
)
=
S
Λ
k
c
=
[
x
1
⋯
x
n
]
[
(
λ
1
)
k
⋱
(
λ
n
)
k
]
[
c
1
⋮
c
n
]
(17)
\begin{aligned} u_k=A^ku_0&=S\Lambda^kS^{-1}u_0=S\Lambda^k(S^{-1}c)=S\Lambda^kc\\ &=\begin{bmatrix} &&\\ x_1&\cdots&x_n\\ && \end{bmatrix}\begin{bmatrix}(\lambda_1)^k&&\\&\ddots\\&&(\lambda_n)^k\end{bmatrix}\begin{bmatrix}c_1\\\vdots\\c_n\end{bmatrix} \end{aligned}\tag{17}
uk=Aku0=SΛkS−1u0=SΛk(S−1c)=SΛkc=
x1⋯xn
(λ1)k⋱(λn)k
c1⋮cn
(17)
斐波那契数列(Fibonacci)例子:
0
,
1
,
1
,
2
,
3
,
5
,
8
,
13
⋯
F
100
0,1,1,2,3,5,8,13\cdots F_{100}
0,1,1,2,3,5,8,13⋯F100
如何将第100个斐波那契数求出以及其增长速度如何?
答:增长速度、收敛性、稳定性是由特征值决定的,下面给出其递推公式:
F
k
+
2
=
F
k
+
1
+
F
k
F_{k+2}=F_{k+1}+F_k
Fk+2=Fk+1+Fk
这个方程不仅和上一个值
F
k
F_k
Fk有关,而且还与上上个的值
F
k
F_k
Fk有关,是一个二阶差分方程。还能添加一个条件:
F
k
+
2
=
F
k
+
1
+
F
k
F
k
+
1
=
F
k
+
1
F_{k+2}=F_{k+1}+F_k\\ F_{k+1}=F_{k+1}
Fk+2=Fk+1+FkFk+1=Fk+1
写成矩阵形式:
[
F
k
+
2
F
k
+
1
]
=
[
1
1
1
0
]
[
F
k
+
1
F
k
]
\begin{bmatrix}F_{k+2}\\F_{k+1}\end{bmatrix}=\begin{bmatrix}1&1\\1&0\end{bmatrix}\begin{bmatrix}F_{k+1}\\F_k\end{bmatrix}
[Fk+2Fk+1]=[1110][Fk+1Fk]
这里利用一个小技巧将二阶方程“降”为一阶方程:
u
k
=
[
F
k
+
1
F
k
]
u
k
+
1
=
[
u
k
+
2
u
k
+
1
]
u_k=\begin{bmatrix}F_{k+1}\\F_k\end{bmatrix}\\ u_{k+1}=\begin{bmatrix}u_{k+2}\\u_{k+1}\end{bmatrix}
uk=[Fk+1Fk]uk+1=[uk+2uk+1]
代入(14)有:
u
k
+
1
=
[
1
1
1
0
]
u
k
u_{k+1}=\begin{bmatrix}1&1\\1&0\end{bmatrix}u_k
uk+1=[1110]uk
由:
∣
A
−
λ
I
∣
=
−
λ
2
−
λ
+
1
=
0
\vert A-\lambda I\vert=-\lambda^2-\lambda+1=0
∣A−λI∣=−λ2−λ+1=0可以求得特征值分别是:
λ
1
=
1
+
5
2
≈
1.618
λ
2
=
1
−
5
2
≈
0.618
\lambda_1=\frac{1+\sqrt{5}}{2}\approx1.618\\ \lambda_2=\frac{1-\sqrt{5}}{2}\approx0.618
λ1=21+5≈1.618λ2=21−5≈0.618
对应的特征向量为:
[
1
−
λ
1
1
−
λ
]
x
=
0
\begin{bmatrix}1-\lambda&1\\1&-\lambda\end{bmatrix}x=0
[1−λ11−λ]x=0
x
=
[
λ
1
]
x=\begin{bmatrix}\lambda\\1\end{bmatrix}
x=[λ1]是矩阵的特征向量,这是因为:
A
x
=
[
−
λ
2
−
λ
+
1
0
]
=
[
0
0
]
Ax=\begin{bmatrix}-\lambda^2-\lambda+1\\0\end{bmatrix}=\begin{bmatrix}0\\0\end{bmatrix}
Ax=[−λ2−λ+10]=[00]
这是因为
−
λ
2
−
λ
+
1
=
0
-\lambda^2-\lambda+1=0
−λ2−λ+1=0恰好等于特征根方程。
x 1 = [ 1.618 1 ] x 2 = [ 0.618 1 ] x_1=\begin{bmatrix}1.618\\1\end{bmatrix}\quad x_2=\begin{bmatrix}0.618\\1\end{bmatrix} x1=[1.6181]x2=[0.6181]
为了利用之前的结论,我们需要将初值
u
0
u_0
u0用
A
A
A矩阵的特征向量的线性组合表示,假设这个线性组合是
c
0
c_0
c0和
c
1
c_1
c1
u
0
=
c
1
x
1
+
c
0
x
2
u_0=c_1x_1+c_0x_2
u0=c1x1+c0x2
结果是什么并不重要。让我们回顾整个解题逻辑:
- 将二阶差分方程转换成一阶差分方程,目的是应用一阶差分方程幂特点
- 确定求得的特征值和特征向量可以用来表示 u 0 u_0 u0
- 若第二步存在,那么有 u k = A 100 u 0 = c 1 λ 1 100 x 1 + c 2 λ 2 100 x 2 + ⋯ + c n λ n 100 x n u_k=A^{100}u_0=c_1\lambda_1^{100}x_1+c_2\lambda_2^{100}x_2+\cdots+c_n\lambda_n^{100}x_n uk=A100u0=c1λ1100x1+c2λ2100x2+⋯+cnλn100xn
因为这里只是二阶矩阵,所以:
u
k
=
c
1
λ
1
100
x
1
+
c
2
λ
2
100
x
2
u_k=c_1\lambda_1^{100}x_1+c_2\lambda_2^{100}x_2
uk=c1λ1100x1+c2λ2100x2
对于这个例子:
u
100
=
c
1
(
0.618
)
100
x
1
+
c
2
(
1.618
)
100
x
2
u_{100}=c_1(0.618)^{100}x_1+c_2(1.618)^{100}x_2
u100=c1(0.618)100x1+c2(1.618)100x2
简单分析,随着阶数的增大,特征值小于1的(0.618)影响将会越来越小,所以取决定性因素的特征值是比较大的那个(1.618)。
【1】20220930 重新整理了课堂上不明白的地方。