特征值与特征向量
1. 特征值
1.1 什么是特征值
有些矩阵对向量的线性变换是只改变其大小,而不改变向量的方向,这种向量叫做矩阵的特征向量,而改变的大小叫做特征值。也就是
A
∗
v
1
=
λ
∗
v
1
A*v_1 = λ*v_1
A∗v1=λ∗v1
v1叫做特征向量,λ叫做特征值
1.2 特征值的求解方法
A ∗ V = λ ∗ V A*V = λ*V A∗V=λ∗V
( A − λ ∗ I ) ∗ v = 0 (A-λ*I)*v = 0 (A−λ∗I)∗v=0
即 求 d e t ( A − λ ∗ I ) = 0 即求 det(A-λ*I)=0 即求det(A−λ∗I)=0
1.3 特征方程
( A − λ ∗ I ) ∗ v = 0 (A-λ*I)*v = 0 (A−λ∗I)∗v=0
1.4 特征向量的求解方法
特征向量就是求特征方程的零空间
1.5 特征值、特征向量与矩阵之间的关系
假设A的特征值是λ,A的特征向量是v,则A+nI的特征向量是λ+n,特征向量不变
1.6 对称性与特征值之间的关系
如果矩阵是对称的,那么特征值都是实根,如果矩阵是旋转矩阵样式的完全不对称的,特征值全部是虚根。对称性越高,实根比例越高。
2.特征值的应用
2.1 对角化分解
2.1.1 含义
对角分解是基于特征值和特征向量的矩阵分解
我们知道,特征值具有这样的性质
A
∗
v
1
=
λ
1
∗
v
1
A*v_1 = λ_1*v1
A∗v1=λ1∗v1
v1是矩阵A的特征向量,λ1是矩阵A的特征值。如果有矩阵S是矩阵A的特征向量的合集
A
∗
S
=
A
∗
{
v
1
.
.
.
v
n
}
=
{
λ
1
∗
v
1
.
.
.
λ
n
∗
v
n
}
=
S
∗
λ
A*S = A*\left\{\begin{matrix}v1& ...&vn \end{matrix}\right\} =\left\{\begin{matrix}λ1*v1& ...&λn*vn \end{matrix}\right\}=S*λ
A∗S=A∗{v1...vn}={λ1∗v1...λn∗vn}=S∗λ
其 中 λ = ∗ { λ 1 . . . 0 . . . λ r . . . 0 . . . λ n } 其中λ = *\left\{\begin{matrix}λ1& ...&0\\...&λr&...\\0&...&λn \end{matrix}\right\} 其中λ=∗⎩⎨⎧λ1...0...λr...0...λn⎭⎬⎫
可得
A
=
S
−
1
∗
λ
∗
S
A = S^{-1}*λ*S
A=S−1∗λ∗S
2.1.2 分解条件
可以看出来,只有A有n个线性无关的特征向量的时候,才能对角化,如果有n个不同的特征值,必定有n个线性无关的特征向量,但是没有n个不同的特征值,不一定不能进行对角化分解
2.1.3 分解方法
分解方法就是,只要能够求得特征值和特征向量即可构造矩阵S和λ
先求特征值
A
∗
v
=
λ
∗
v
A*v=λ*v
A∗v=λ∗v
( A − λ ∗ I ) ∗ v = 0 (A-λ*I)*v=0 (A−λ∗I)∗v=0
求
d
e
t
∣
A
−
λ
∗
I
∣
=
0
即
可
解
得
特
征
值
求det|A-λ*I|=0即可解得特征值
求det∣A−λ∗I∣=0即可解得特征值
再求特征向量
求
得
的
特
征
值
代
入
(
A
−
λ
∗
I
)
∗
v
=
0
求得的特征值代入(A-λ*I)*v=0
求得的特征值代入(A−λ∗I)∗v=0
求解其零空间即可获得特征向量。如果λ是重根,就看看重根能否在零空间内得到足够的特征向量,否则不能对角化
有了特征值和特征向量即可实现对角化
2.2 A的幂次运算
特征值和对角化的一个非常重要的应用是求矩阵A的幂次
A
=
S
∗
λ
∗
S
−
1
A = S*λ*S^{-1}
A=S∗λ∗S−1
A 2 = S ∗ λ ∗ S − 1 ∗ S ∗ λ ∗ S − 1 = S ∗ λ 2 ∗ S − 1 A^2 = S*λ*S^{-1}* S*λ*S^{-1}=S*λ^2*S^{-1} A2=S∗λ∗S−1∗S∗λ∗S−1=S∗λ2∗S−1
λ
2
=
{
σ
1
2
.
.
.
0
.
.
.
σ
r
2
.
.
.
0
.
.
.
σ
n
2
}
λ^2 = \left\{\begin{matrix}σ_1^2&...&0\\...&σ_r^2&...\\0&...&σ_n^2\end{matrix}\right\}
λ2=⎩⎨⎧σ12...0...σr2...0...σn2⎭⎬⎫
通过这种方式,利用特征值,可以非常方便的求A的高阶幂次
A
n
=
(
S
∗
λ
∗
S
−
1
)
n
=
S
∗
λ
n
∗
S
−
1
A^n = (S*λ*S^{-1})^n=S*λ^n*S^{-1}
An=(S∗λ∗S−1)n=S∗λn∗S−1
2.3 差分方程
2.3.1 一阶差分方程
一般来说差分方程对应着幂矩阵的应用(Ak),微分方程对应着指数矩阵的应用(eAk)。
一阶差分方程写作
X
k
+
1
=
A
∗
X
k
=
A
X
k
=
A
k
∗
X
0
X_{k+1}= A*X_k = AX_k=A^k*X_0
Xk+1=A∗Xk=AXk=Ak∗X0
求解差分方程与A的幂次就有关系了,具体求解方法见2.3.3
2.3.2 高阶差分方程
高阶差分方程是指带有多阶未知数的方程,一般需要增加一个恒等式,配成一阶差分方程
比如:求解斐波那契数列
X
k
+
1
=
X
k
+
X
k
−
1
X_{k+1} = X_k + X_{k-1}
Xk+1=Xk+Xk−1
引入恒等式
X
k
=
X
k
X_k = X_k
Xk=Xk
变量代换
Y
k
+
1
=
{
X
k
+
1
X
k
}
Y_{k+1} = \left\{\begin{matrix}X_{k+1}\\X_k\end{matrix}\right\}
Yk+1={Xk+1Xk}
Y
k
=
{
X
k
X
k
−
1
}
Y_{k} = \left\{\begin{matrix}X_{k}\\X_{k-1}\end{matrix}\right\}
Yk={XkXk−1}
则
Y
k
+
1
=
A
∗
Y
k
=
{
1
1
1
0
}
∗
Y
k
Y_{k+1} = A*Y{k}= \left\{\begin{matrix}1&1\\1&0\end{matrix}\right\}*Yk
Yk+1=A∗Yk={1110}∗Yk
2.3.3 差分方程的用处
特征值在差分方程中,可以用于描述一个系统的迭代的终态,或者描述稳定性问题。
比如
X
k
+
1
=
A
X
k
=
A
k
∗
X
0
X_{k+1}=AX_k=A^k*X_0
Xk+1=AXk=Ak∗X0
这个方程可以用于描述人口迁移、生物演化、运行系统等。
如果A可以进行对角化,那么必定有n个特征向量,将X0分解为特征向量的线性组合
X
0
=
c
1
∗
v
1
+
c
2
∗
v
2
+
.
.
.
+
c
n
∗
v
n
X0 = c1*v1+c2*v2+...+cn*vn
X0=c1∗v1+c2∗v2+...+cn∗vn
由于A可以对角化
A
∗
{
v
1
,
v
2
,
v
3
.
.
.
,
v
n
}
=
{
v
1
,
v
2
,
.
.
.
v
n
}
∗
λ
A*\{v_1,v_2,v_3...,v_n\}=\{v_1,v_2,...v_n\}*λ
A∗{v1,v2,v3...,vn}={v1,v2,...vn}∗λ
A的幂次乘以特征向量得到
A
2
∗
v
1
=
A
∗
A
∗
v
1
=
A
∗
λ
1
∗
v
1
=
λ
1
∗
A
∗
v
1
=
λ
1
2
∗
v
1
A^2*v_1 = A*A*v_1 = A*λ_1*v_1 = λ_1*A*v_1 = λ_1^2*v_1
A2∗v1=A∗A∗v1=A∗λ1∗v1=λ1∗A∗v1=λ12∗v1
所以,迭代方程可以表示为
X
k
=
c
1
∗
λ
1
k
∗
v
1
+
.
.
.
+
c
n
∗
λ
n
k
∗
v
n
X_k = c_1*λ_1^k*v_1+...+c_n*λ_n^k*v_n
Xk=c1∗λ1k∗v1+...+cn∗λnk∗vn
会有这些情况
- 如果有一个特征值为1,其他特征值全部小于1,最终系统会达到稳定状态,也就是特征值1的那个特征向量
- 如果全部特征值都小于1,系统最终会退化,向量结果会全部趋近0。原点被称为吸引子
- 如果特征值全部都大于1,系统最终会发散,向量结果全部趋于无穷大。向量会远离原点。这个时候原点称为排斥子
- 如果部分特征值大于1,部分特征值小于1,向量的某些方向会趋近于原点,某些方向会远离原点,结果依然发散。原点被称为鞍点
- 如果特征值部分含有虚数,必定具有旋转分量。如果v1和v2的共轭特征值的模大于1,会在v1和v2平面上远离原点旋转。如果共轭特征值的模小于1,会在v1和v2平面上靠近原点旋转。如果模等于1,就是圆旋转
2.4 求解微分方程
2.4.1 微分方程的求解
X
′
(
t
)
=
A
∗
X
(
t
)
X'(t)=A*X(t)
X′(t)=A∗X(t)
回忆差分方程的求解是先找到了方程的特解X0,然后将特解用特征向量进行分解,Xk就是特征值与特征向量乘积的组合了
X
(
0
)
=
c
1
∗
v
1
+
.
.
.
+
c
n
∗
v
n
X(0)=c_1*v_1+...+c_n*v_n
X(0)=c1∗v1+...+cn∗vn
X
(
k
)
=
c
1
∗
λ
1
k
∗
1
+
.
.
.
.
+
c
n
∗
λ
k
k
∗
v
n
X(k)=c1*λ_1^k*_1+....+cn*λ_k^k*v_n
X(k)=c1∗λ1k∗1+....+cn∗λkk∗vn
在微分方程中,其实就是用特征值的指数替换了特征值的幂次而已
X
(
0
)
=
c
1
∗
v
1
+
.
.
.
+
c
n
∗
v
n
X(0)=c_1*v_1+...+c_n*v_n
X(0)=c1∗v1+...+cn∗vn
X ( t ) = c 1 ∗ e λ 1 ∗ t + . . . . + c n ∗ e λ k ∗ t ∗ v n X(t)=c1*e^{λ_1*t}+....+cn*e^{λ_k*t}*v_n X(t)=c1∗eλ1∗t+....+cn∗eλk∗t∗vn
2.4.2 微分方程的稳态
与差分方程一样,微分方程也有稳态稳态。
- 如果有一个特征值为0,其余特征值小于0,则X(t)中当t趋近于无穷时,结果是一个稳态
- 如果特征值全部大于1,X(t)是发散的,值趋于无穷,零点是一个排斥子
- 如果特征值全部小于1,X(t)是退化的,值趋于0,零点是一个吸引子
- 如果有的特征值大于0,有的特征值小于0,零点是一个鞍点
因为特征值之和等于矩阵的迹,特征值之积等于矩阵的行列式值,对于2x2矩阵的稳定性判断,我们希望结果是收敛的,必有特征值都小于0,所以有如下判据
t
r
a
c
e
(
A
)
<
0
trace(A)<0
trace(A)<0
d e t ( A ) > 0 det(A)>0 det(A)>0
2.4.3 解耦合
如果能够把X(t)中全部的变量单独分解开来,一个方程中都是自己的导数,就是一种解耦合。只要把系数矩阵A变成λ,就保证了每个变量的导数都只和自己有关,即实现了解耦合。使用特征向量可以实现解耦合。
解耦合的作用是在原来混杂的微分方程中,分解出构成他们的独立的变量。找到了各个独立分量之后,原来的耦合的变量,就是根据特征向量重新组合的结果。
在差分方程中,做的是对X0变成特征向量的线性次数的重新组合;在微分方程中,利用解耦得到独立变量,做的是X(t)变成特征向量的函数次数的重新组合。
(1)变量代换
使用特征向量S来进行解耦合
令
X
(
t
)
=
S
∗
Y
(
t
)
令 X(t)=S*Y(t)
令X(t)=S∗Y(t)
其
中
S
=
{
v
1
,
v
2
,
v
3
.
.
.
.
.
,
v
n
}
其中S=\{v_1,v_2,v_3.....,v_n\}
其中S={v1,v2,v3.....,vn}
把X替换后可以得到
S
∗
Y
′
(
t
)
=
A
∗
S
∗
Y
(
t
)
S*Y'(t)=A*S*Y(t)
S∗Y′(t)=A∗S∗Y(t)
(2)解耦合
下面求解函数Y(t)我们知道
A
=
S
∗
λ
∗
S
−
1
A = S*λ*S^{-1}
A=S∗λ∗S−1
可以得到
S
∗
Y
′
(
t
)
=
S
∗
λ
∗
Y
(
t
)
S*Y'(t)=S*λ*Y(t)
S∗Y′(t)=S∗λ∗Y(t)
两边同时乘以S-1,实现了微分方程的解耦
Y
′
(
t
)
=
λ
∗
Y
(
t
)
Y'(t)=λ*Y(t)
Y′(t)=λ∗Y(t)
{ y 1 ′ ( t ) . . . . . y n ′ ( t ) } = { λ 1 . . . 0 . . . . . . . . . 0 . . . λ n } ∗ { y 1 ( t ) . . . . . y n ( t ) } \left\{ \begin{matrix} y_1'(t)\\ .....\\ y_n'(t) \end{matrix} \right\} =\left\{ \begin{matrix} λ_1 & ... & 0 \\ ... & ... & ... \\ 0 & ... & λ_n \end{matrix} \right\} *\left\{ \begin{matrix} y_1(t)\\ .....\\ y_n(t) \end{matrix} \right\} ⎩⎨⎧y1′(t).....yn′(t)⎭⎬⎫=⎩⎨⎧λ1...0.........0...λn⎭⎬⎫∗⎩⎨⎧y1(t).....yn(t)⎭⎬⎫
解得Y(t)
Y
(
t
)
=
{
c
1
∗
e
λ
1
∗
t
.
.
.
.
.
c
n
∗
e
λ
n
∗
t
}
Y(t)= \left\{ \begin{matrix} c1*e^{λ1*t}\\ .....\\ cn*e^{λn*t} \end{matrix} \right\}
Y(t)=⎩⎨⎧c1∗eλ1∗t.....cn∗eλn∗t⎭⎬⎫
(3)使用解耦合结果可以验证微分方程特征值公式
原来的变量x其实就是y的解耦合微分方程组的线性组合。Y(t)其实可以理解为X(t)在各个特征向量方向上的分量
X
(
t
)
=
S
∗
Y
(
t
)
=
c
1
∗
e
λ
1
∗
t
∗
v
1
+
.
.
.
.
+
c
n
∗
e
λ
n
∗
t
∗
v
n
X(t)=S*Y(t)=c1*e^{λ1*t}*v1+....+cn*e^{λn*t}*vn
X(t)=S∗Y(t)=c1∗eλ1∗t∗v1+....+cn∗eλn∗t∗vn
2.4.4 指数矩阵的意义
如果保留了矩阵求解微分方程可以得到一个指数矩阵
X
′
(
t
)
=
A
∗
X
(
t
)
X'(t)=A*X(t)
X′(t)=A∗X(t)
X ( t ) = e A ∗ t ∗ X ( 0 ) X(t)=e^{A*t}*X(0) X(t)=eA∗t∗X(0)
如果通过特征向量拆解为解耦合微分方程组
Y
′
(
t
)
=
λ
∗
Y
(
t
)
Y'(t)= λ*Y(t)
Y′(t)=λ∗Y(t)
Y ( t ) = e λ ∗ t ∗ Y ( 0 ) Y(t)=e^{λ*t}*Y(0) Y(t)=eλ∗t∗Y(0)
X
(
t
)
=
S
∗
Y
(
t
)
=
S
∗
e
λ
∗
t
∗
S
−
1
∗
X
(
0
)
X(t)=S*Y(t)=S*e^{λ*t}*S^{-1}*X(0)
X(t)=S∗Y(t)=S∗eλ∗t∗S−1∗X(0)
如何理解这个指数矩阵呢?这个可以用个泰勒公式展开进行进一步表达
e
A
∗
t
=
I
+
A
∗
t
+
(
A
∗
t
)
2
2
+
.
.
.
.
+
(
A
∗
t
)
n
n
!
e^{A*t}=I+A*t+\frac{(A*t)^2}{2}+....+\frac{(A*t)^n}{n!}
eA∗t=I+A∗t+2(A∗t)2+....+n!(A∗t)n
如果用SλS-1代替A
e
A
∗
t
=
I
+
S
∗
λ
∗
S
−
1
+
.
.
.
.
+
S
∗
λ
n
∗
S
−
1
∗
t
n
n
!
=
S
∗
e
λ
∗
S
−
1
e^{A*t}=I+S*λ*S^{-1}+....+\frac{S*λ^n*S^{-1}*t^n}{n!}=S*e^λ*S^{-1}
eA∗t=I+S∗λ∗S−1+....+n!S∗λn∗S−1∗tn=S∗eλ∗S−1
2.4.5 求解二阶微分方程的原理和方法
二阶微分方程与二阶差分方程类似,也可以通过配一个恒等式的方法,把二阶微分方程变成一阶的微分方程
2.5 马尔科夫链与稳态
2.5.1 马尔科夫矩阵
马尔科夫矩阵是一种求解演化问题的概率矩阵,比如每年城市人口和乡村人口都会发生变迁,城市人口有10%的流入农村,而农村人口会有20%流入城市,则可以构建下列的迁入迁出矩阵
T
=
{
0.1
0.8
0.9
0.2
}
T=\left\{\begin{matrix}0.1&0.8\\0.9&0.2\end{matrix}\right\}
T={0.10.90.80.2}
具有以下特征
- 所有元素必定大于0
- 所有列的和都为1
- 1必定是马尔科夫矩阵的一个特征值,其余都小于1
A
−
λ
I
=
{
a
11
−
λ
a
12
a
21
a
22
−
λ
}
A-λI=\left\{\begin{matrix}a11-λ&a12\\a21&a22-λ\end{matrix}\right\}
A−λI={a11−λa21a12a22−λ}
把所有数都加到最后一列
A
−
λ
I
=
{
a
11
−
λ
a
12
a
21
+
a
11
−
λ
a
12
+
a
22
−
λ
}
A-λI=\left\{\begin{matrix}a11-λ&a12\\a21+a11-λ&a12+a22-λ\end{matrix}\right\}
A−λI={a11−λa21+a11−λa12a12+a22−λ}
由各列之和为1可得
A
−
λ
I
=
{
a
11
−
λ
a
12
1
−
λ
1
−
λ
}
A-λI=\left\{\begin{matrix}a11-λ&a12\\1-λ&1-λ\end{matrix}\right\}
A−λI={a11−λ1−λa121−λ}
λ=1时有一行为0,必定使得行列式值为0,所以λ是一个特征值
2.5.2 稳态
延续上面的人口迁移问题,若第一年城市人口x1,农村人口x2,第二年呢?
x 1 ′ = 0.9 ∗ x 1 + 0.2 ∗ x 2 x1' = 0.9*x1+0.2*x2 x1′=0.9∗x1+0.2∗x2
x 2 ′ = 0.1 ∗ x 1 + 0.8 ∗ x 2 x2' = 0.1*x1+0.8*x2 x2′=0.1∗x1+0.8∗x2
可以写作差分方程
X
2
=
T
∗
X
1
X_2 = T*X_1
X2=T∗X1
n年之后的人口为
X
n
=
T
n
∗
X
1
X_n = T^n*X_1
Xn=Tn∗X1
所以差分方程对角化展开式可以写作
X
n
=
c
1
∗
λ
1
n
∗
v
1
+
.
.
.
+
c
k
∗
λ
k
n
∗
v
k
X_n = c_1*λ_1^n*v_1+...+c_k*λ_k^n*v_k
Xn=c1∗λ1n∗v1+...+ck∗λkn∗vk
因为其中一个特征值为1,其余所有特征值小于1,所以随着时间推移,最终人口总数会趋于恒定,是一个常量