知道如何求解特征值后,下面介绍特征值的具体应用
类似消元法的LU分解、施密特正交化的QR分解,特征值部分可以引出对角化分解,但注意对角化的前提在于,矩阵A必须具有n个线性无关的特征向量(可能有/没有重复的特征值,没有重根 ⇒ \Rightarrow ⇒n个线性无关的特征向量,必要不充分条件)
ps. 当矩阵不具有n个线性无关的特征向量,则无法对角化,但可以三角化
矩阵对角化
假设已经找到所有特征向量,将它们作为列向量构成矩阵
S
=
[
x
1
x
2
⋯
x
n
]
\boldsymbol{S}=\left[\begin{array}{llll} \mathbf{x}_{1} & \mathbf{x}_{2} & \cdots & \mathbf{x}_{\mathrm{n}} \end{array}\right]
S=[x1x2⋯xn]
那么,根据特征值的特点,有
A
S
=
A
[
x
1
x
2
⋯
x
n
]
=
[
λ
1
x
1
λ
2
x
2
⋯
λ
n
x
n
]
=
[
x
1
x
2
⋯
x
n
]
[
λ
1
0
⋯
0
0
λ
2
0
⋮
⋱
⋮
0
⋯
0
λ
n
]
=
S
Λ
\begin{aligned} \boldsymbol{A} \boldsymbol{S} &=\boldsymbol{A}\left[\begin{array}{llll} \mathbf{x}_{1} & \mathbf{x}_{2} & \cdots & \mathbf{x}_{\mathrm{n}} \end{array}\right] \\ &=\left[\begin{array}{lllll} \lambda_{1} \mathbf{x}_{1} & \lambda_{2} \mathbf{x}_{2} & \cdots & \lambda_{\mathrm{n}} \mathbf{x}_{\mathrm{n}} \end{array}\right] \\ &=\left[\begin{array}{llll} \mathbf{x}_{1} & \mathbf{x}_{2} & \cdots & \mathbf{x}_{\mathrm{n}} \end{array}\right]\left[\begin{array}{cccc} \lambda_{1} & 0 & \cdots & 0 \\ 0 & \lambda_{2} & & 0 \\ \vdots & & \ddots & \vdots \\ 0 & \cdots & 0 & \lambda_{\mathrm{n}} \end{array}\right] \\ &=\boldsymbol{S} \boldsymbol{\Lambda} \end{aligned}
AS=A[x1x2⋯xn]=[λ1x1λ2x2⋯λnxn]=[x1x2⋯xn]
λ10⋮00λ2⋯⋯⋱000⋮λn
=SΛ
其中,所有特征值作为对角元,组成矩阵
Λ
=
[
λ
1
0
⋯
0
0
λ
2
0
⋮
⋱
⋮
0
⋯
0
λ
n
]
\boldsymbol{\Lambda}=\left[\begin{array}{cccc} \lambda_{1} & 0 & \cdots & 0 \\ 0 & \lambda_{2} & & 0 \\ \vdots & & \ddots & \vdots \\ 0 & \cdots & 0 & \lambda_{\mathrm{n}} \end{array}\right]
Λ=
λ10⋮00λ2⋯⋯⋱000⋮λn
再次强调,上述操作的前提是,矩阵A必须具有n个线性无关的特征向量,这样才保证
S
\boldsymbol S
S可逆
最终,矩阵对角化表示为
A
=
S
Λ
S
−
1
\boldsymbol{A}=\boldsymbol{S}\boldsymbol{\Lambda}\boldsymbol{S}^{-1}
A=SΛS−1
之前说过,若矩阵 A \mathbf A A经过初等变换能得到矩阵 B \mathbf B B,则 A \mathbf A A与 B \mathbf B B等价(相抵),记为 A ≅ B \mathbf A \cong \mathbf B A≅B
任何矩阵,有唯一的相抵标准形 A ≅ ( Ir 0 0 0 ) \mathbf A\cong\left(\begin{array}{cc} \operatorname{Ir} & 0 \\ 0 & 0 \end{array}\right) A≅(Ir000),从而行秩=列秩
消元和列操作能得到“相抵标准型”(只保留了最内核的秩信息),而这里得到“相似标准形”(保有矩阵操作的基本性质——特征值)
可以相似对角化的前提条件:
- n 阶方阵 A ∼ 对角矩阵 ⟺ A 有 n 个线性无关的特征向量 n阶方阵\mathbf A\sim 对角矩阵\iff \mathbf A有n个线性无关的特征向量 n阶方阵A∼对角矩阵⟺A有n个线性无关的特征向量(这条是可相似对角化的本质核心,后面都是推论)
- n 阶方阵 A ∼ 对角矩阵 d i a g ( λ 1 , λ 2 , . . . , λ n ) ⇒ λ 1 , λ 2 , . . . , λ n 就是 A 的全部特征值 n阶方阵\mathbf A\sim 对角矩阵diag(\lambda_1,\lambda_2,...,\lambda_n)\Rightarrow \lambda_1,\lambda_2,...,\lambda_n就是\mathbf A的全部特征值 n阶方阵A∼对角矩阵diag(λ1,λ2,...,λn)⇒λ1,λ2,...,λn就是A的全部特征值
- 上两条的推论: n 阶方阵 A ∼ 对角矩阵 ⟺ A 的每个 k i 重特征值的特征子空间维数都为 k i ⟺ A 的每个 k i 重特征值都对应 k i 个线性无关的特征向量 ⟺ A 的每个 k i 重特征值 λ i 都满足 R a n k ( λ i I − A ) = k i n阶方阵\mathbf A\sim 对角矩阵\iff \\ \mathbf A的每个k_i重特征值的特征子空间维数都为k_i\iff \\ \mathbf A的每个k_i重特征值都对应k_i个线性无关的特征向量\iff \\ \mathbf A的每个k_i重特征值\lambda_i都满足Rank\mathbf{(\lambda_i I-A})=k_i n阶方阵A∼对角矩阵⟺A的每个ki重特征值的特征子空间维数都为ki⟺A的每个ki重特征值都对应ki个线性无关的特征向量⟺A的每个ki重特征值λi都满足Rank(λiI−A)=ki
-
n
阶方阵
A
的特征值都不相同
/
都是单根
⇒
A
∼
对角矩阵
n阶方阵\mathbf A的特征值都不相同/都是单根\Rightarrow A\sim 对角矩阵
n阶方阵A的特征值都不相同/都是单根⇒A∼对角矩阵
(相当于所有特征向量都线性无关) - 一个特别的情况:
n 阶方阵 A 是实对称矩阵 ⇒ A ∼ 对角矩阵 n阶方阵\mathbf A是实对称矩阵\Rightarrow A\sim 对角矩阵 n阶方阵A是实对称矩阵⇒A∼对角矩阵
另外,方阵 A \mathbf A A为实对称矩阵的情况下,其特性带来一些特殊的性质:
- n阶实对称矩阵 A \mathbf A A的特征值都是实数,且不同特征值对应的特征向量相互正交(实对称矩阵一定有 n n n个无关正交向量)
- 实对称矩阵正交相似于对角矩阵:n阶实对称矩阵 A \mathbf A A在相似对角化时,一定存在一个正交矩阵 C \mathbf C C,可以用于“变换坐标系”,即 C − 1 A C = d i a g ( λ 1 , λ 2 , . . . , λ n ) \mathbf {C^{-1}AC}=diag(\lambda_1,\lambda_2,...,\lambda_n) C−1AC=diag(λ1,λ2,...,λn)
应用:矩阵的幂
对角化的应用之一,就是为我们提供了新的视角来看待矩阵的幂(前提:矩阵A具有n个线性无关的特征向量)
由于
A
=
S
Λ
S
−
1
\boldsymbol{A}=\boldsymbol{S}\boldsymbol{\Lambda}\boldsymbol{S}^{-1}
A=SΛS−1,我们都能轻易得到
A
\boldsymbol{A}
A的
k
k
k次幂的
A
k
\boldsymbol{A}^k
Ak的信息:
A
k
=
(
S
Λ
S
−
1
)
(
S
Λ
S
−
1
)
.
.
.
(
S
Λ
S
−
1
)
=
S
Λ
k
S
−
1
\boldsymbol{A}^k=(\boldsymbol{S}\boldsymbol{\Lambda}\boldsymbol{S}^{-1})(\boldsymbol{S}\boldsymbol{\Lambda}\boldsymbol{S}^{-1})...(\boldsymbol{S}\boldsymbol{\Lambda}\boldsymbol{S}^{-1})=\boldsymbol{S}\boldsymbol{\Lambda}^k\boldsymbol{S}^{-1}
Ak=(SΛS−1)(SΛS−1)...(SΛS−1)=SΛkS−1这就是说:
- A k \boldsymbol{A}^k Ak的特征向量与 A \boldsymbol{A} A相同,而对应的特征值变为 Λ \boldsymbol{\Lambda} Λ的幂次 Λ k \boldsymbol{\Lambda}^k Λk
- 矩阵的幂乘以向量
A
k
u
0
\boldsymbol{A}^k \mathbf{u}_{0}
Aku0,可以简化表示为通式
A
k
u
0
=
S
Λ
k
S
−
1
S
c
=
S
Λ
k
c
=
c
1
λ
1
k
x
1
+
c
2
λ
2
k
x
2
+
…
+
c
n
λ
n
k
x
n
\boldsymbol{A}^k \mathbf{u}_{0}=\boldsymbol{S}\boldsymbol{\Lambda}^k\boldsymbol{S}^{-1}\boldsymbol{S} \mathbf{c}=\boldsymbol{S}\boldsymbol{\Lambda}^k\mathbf{c}=c_{1} \lambda_{1}^{k} \mathbf{x}_{1}+c_{2} \lambda_{2}^{k} \mathbf{x}_{2}+\ldots+c_{n} \lambda_{n}^{k} \mathbf{x}_{n}
Aku0=SΛkS−1Sc=SΛkc=c1λ1kx1+c2λ2kx2+…+cnλnkxn
其中需要将 u 0 \mathbf{u}_{0} u0表示为特征向量的线性组合 u 0 = S c \mathbf{u}_{0}=\boldsymbol{S} \mathbf{c} u0=Sc,并且注意前提是需要一整套线性无关的特征向量/或者说特征向量矩阵 S \boldsymbol{S} S可逆(否则无法保证任意 u 0 \mathbf{u}_{0} u0都可以被拆解)
具体细节后文会介绍
推论:
- 若矩阵A具有n个线性无关的特征向量,如果其所有特征值 ∣ λ i ∣ < 1 |\lambda_i|<1 ∣λi∣<1,则 k → ∞ 时 A k → 0 k\rightarrow \infty时\boldsymbol{A}^k\rightarrow 0 k→∞时Ak→0(因为 Λ k → 0 \boldsymbol{\Lambda}^k\rightarrow 0 Λk→0,故 A k = S Λ k S − 1 → 0 \boldsymbol{A}^k=\boldsymbol{S}\boldsymbol{\Lambda}^k\boldsymbol{S}^{-1}\rightarrow 0 Ak=SΛkS−1→0)
应用:求差分方程
对于一个一阶差分方程( u k \mathbf{u}_{k} uk为向量, A \boldsymbol{A} A为系数矩阵) u k + 1 = A u k \mathbf{u}_{k+1}=\boldsymbol{A} \mathbf{u}_{k} uk+1=Auk后一项由前一项 u k \mathbf{u}_{k} uk给出,已知条件是初始的 u 0 \mathbf{u}_{0} u0,现在希望求 u k \mathbf{u}_{k} uk
首先,很容易求解得到 u k = A k u 0 \mathbf{u}_{k}=\boldsymbol{A}^k \mathbf{u}_{0} uk=Aku0,然而这样形式的解没有实际意义(仍需要计算大量矩阵的幂)
注意这里再次出现「矩阵的幂」,那么容易想到进行对角化,向特征值和特征向量上靠拢
具体而言,求解过程是:
- 求出 A \boldsymbol{A} A的所有特征向量,(假设具有n个线性无关的特征向量,才能继续)则所有特征向量张成整个空间,从而将 u 0 \mathbf{u}_{0} u0表示为特征向量的线性组合 u 0 = c 1 x 1 + c 2 x 2 + … + c n x n = S c \mathbf{u}_{0}=c_{1} \mathbf{x}_{1}+c_{2} \mathbf{x}_{2}+\ldots+c_{n} \mathbf{x}_{n}=\boldsymbol{S} \mathbf{c} u0=c1x1+c2x2+…+cnxn=Sc其中,列向量 c \mathbf{c} c保存了各个特征向量的系数
- 对角化得到 A = S Λ S − 1 \boldsymbol{A}=\boldsymbol{S}\boldsymbol{\Lambda}\boldsymbol{S}^{-1} A=SΛS−1,则第 k k k项 u k \mathbf{u}_{k} uk为 A k u 0 = S Λ k S − 1 S c = S Λ k c = c 1 λ 1 k x 1 + c 2 λ 2 k x 2 + … + c n λ n k x n \boldsymbol{A}^k \mathbf{u}_{0}=\boldsymbol{S}\boldsymbol{\Lambda}^k\boldsymbol{S}^{-1}\boldsymbol{S} \mathbf{c}=\boldsymbol{S}\boldsymbol{\Lambda}^k\mathbf{c}=c_{1} \lambda_{1}^{k} \mathbf{x}_{1}+c_{2} \lambda_{2}^{k} \mathbf{x}_{2}+\ldots+c_{n} \lambda_{n}^{k} \mathbf{x}_{n} Aku0=SΛkS−1Sc=SΛkc=c1λ1kx1+c2λ2kx2+…+cnλnkxn
直观理解:找到特征向量,则不论多少次矩阵幂,始终都是对于特征向量进行缩放,则容易获得 A u 0 = c 1 λ 1 x 1 + c 2 λ 2 x 2 + … + c n λ n x n \boldsymbol{A} \mathbf{u}_{0}=c_{1} \lambda_{1} \mathbf{x}_{1}+c_{2} \lambda_{2} \mathbf{x}_{2}+\ldots+c_{n} \lambda_{n} \mathbf{x}_{n} Au0=c1λ1x1+c2λ2x2+…+cnλnxn A k u 0 = c 1 λ 1 k x 1 + c 2 λ 2 k x 2 + … + c n λ n k x n \boldsymbol{A}^{k} \mathbf{u}_{0}=c_{1} \lambda_{1}^{k} \mathbf{x}_{1}+c_{2} \lambda_{2}^{k} \mathbf{x}_{2}+\ldots+c_{n} \lambda_{n}^{k} \mathbf{x}_{n} Aku0=c1λ1kx1+c2λ2kx2+…+cnλnkxn
关于“稳态”:
- 对于实数特征值,征值 ∣ λ i ∣ < 1 |\lambda_i|<1 ∣λi∣<1的项最终会消失,特征值 ∣ λ i ∣ = 1 |\lambda_i|=1 ∣λi∣=1的项恒定,特征值 ∣ λ i ∣ > 1 |\lambda_i|>1 ∣λi∣>1的项最终不断增长
- 对于复数特征值,虚部引入了复平面上的“旋转”,故特征值的幅值仍然确定稳态,而相位则对应了每次做矩阵乘法时特征向量的旋转角度
详见线性代数学习笔记7-5:复习——正交、投影、特征值、差分/微分方程 - 那么,方程的解就是 u k = A k u 0 = S Λ k c \mathbf{u}_{k}=\boldsymbol{A}^{k} \mathbf{u}_{0}=\boldsymbol{S}\boldsymbol{\Lambda}^k\mathbf{c} uk=Aku0=SΛkc
举例:求Fibonacci数列
斐波那契数列为0,1,1,2,3,5,8,13,其通项公式为 F k + 2 = F k + 1 + F k F_{k+2}=F_{k+1}+F_{k} Fk+2=Fk+1+Fk,需要求 F 100 F_{100} F100
首先要寻找/构造差分方程,由于通项公式给出的是二阶差分方程(同时出现了前后三项),我们可以额外增加一个方程,得到一个方程组(可表示为矩阵向量乘法),从而构造一阶的差分方程
{
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.
{Fk+2=Fk+1+FkFk+1=Fk+1其中,将前后两项组成的列向量视为一个整体,即令
u
k
=
[
F
k
+
1
F
k
]
\mathbf{u}_{k}=\left[\begin{array}{l}F_{k+1} \\F_{k}\end{array}\right]
uk=[Fk+1Fk],则出现一阶的差分方程
u
k
+
1
=
[
1
1
1
0
]
u
k
\mathbf{u}_{k+1}=\left[\begin{array}{ll}1 & 1 \\1 & 0\end{array}\right] \mathbf{u}_{k}
uk+1=[1110]uk
至此,转化为上面的问题
u
k
+
1
=
A
u
k
\mathbf{u}_{k+1}=\boldsymbol{A} \mathbf{u}_{k}
uk+1=Auk,其中
A
=
[
1
1
1
0
]
\boldsymbol{A} =\left[\begin{array}{ll}1 & 1 \\1 & 0\end{array}\right]
A=[1110],给出初始的
u
0
\mathbf{u}_{0}
u0,现在希望求
u
100
\mathbf{u}_{100}
u100
- A \boldsymbol{A} A为对称阵,特征值必为实数,且对称矩阵的特征向量正交,可以求出 λ 1 = 1 + 5 2 ≈ 1.618 , x 1 = [ λ 1 1 ] \lambda_{1}=\frac{1+\sqrt{5}}{2}\approx 1.618,\quad\mathbf{x}_{1}=\left[\begin{array}{c}\lambda_{1} \\1\end{array}\right] λ1=21+5≈1.618,x1=[λ11] λ 2 = 1 − 5 2 ≈ − 0.618 , x 2 = [ λ 2 1 ] \lambda_{2}=\frac{1-\sqrt{5}}{2}\approx -0.618,\quad\mathbf{x}_{2}=\left[\begin{array}{c}\lambda_{2} \\1\end{array}\right] λ2=21−5≈−0.618,x2=[λ21]
- 分解 u 0 \mathbf u_0 u0得到 u 0 = [ F 1 F 0 ] = [ 1 0 ] = c 1 x 1 + c 2 x 2 , c 1 = 1 5 , c 2 = − 1 5 \mathbf{u}_{0}=\left[\begin{array}{l}F_{1} \\F_{0}\end{array}\right]= \left[\begin{array}{l}1 \\0\end{array}\right]=c_{1} \mathbf{x}_{1}+c_{2} \mathbf{x}_{2}, \quad c_{1}=\frac{1}{\sqrt{5}}, c_{2}=-\frac{1}{\sqrt{5}} u0=[F1F0]=[10]=c1x1+c2x2,c1=51,c2=−51
这里求解特征向量时有一定技巧:
求解 ( A − λ I ) x = 0 \mathbf{( A-\lambda I)}\boldsymbol x=0 (A−λI)x=0,由于 d e t ( A − λ I ) = 0 det \mathbf{( A-\lambda I)}=0 det(A−λI)=0,则矩阵 ( A − λ I ) = [ 1 − λ 1 1 − λ ] \mathbf{( A-\lambda I)}=\left[\begin{array}{ll}1-\lambda & 1 \\1 & -\lambda\end{array}\right] (A−λI)=[1−λ11−λ]必然是二阶的不可逆矩阵,从而方程的两行一定线性相关,解这个方程只需满足其中任意一行即可(必然同时满足另一行),由此,我们直接从第二行得到方程的解,即特征向量 x = [ λ 1 ] \mathbf{x} =\left[\begin{array}{c}\lambda \\1\end{array}\right] x=[λ1]
可以将 x = [ λ 1 ] \mathbf{x} =\left[\begin{array}{c}\lambda \\1\end{array}\right] x=[λ1]回代 ( A − λ I ) x = 0 \mathbf{( A-\lambda I)}\boldsymbol x=0 (A−λI)x=0验证:第二行结果为0;第一行结果 λ 2 − λ − 1 \lambda^{2}-\lambda-1 λ2−λ−1就是特征多项式 det ( A − λ I ) = ∣ 1 − λ 1 1 − λ ∣ \operatorname{det}(\boldsymbol{A}-\lambda \boldsymbol{I})=\left|\begin{array}{cc} 1-\lambda & 1 \\ 1 & -\lambda \end{array}\right| det(A−λI)= 1−λ11−λ ,因而也为0,可见 x = [ λ 1 ] \mathbf{x} =\left[\begin{array}{c}\lambda \\1\end{array}\right] x=[λ1]就是方程 ( A − λ I ) x = 0 \mathbf{( A-\lambda I)}\boldsymbol x=0 (A−λI)x=0的解(特征向量)
- 由上,有
u
k
=
A
k
u
0
=
S
Λ
k
c
=
c
1
λ
1
k
x
1
+
c
2
λ
2
k
x
2
\mathbf{u}_{k}=\boldsymbol{A}^k \mathbf{u}_{0}=\boldsymbol{S}\boldsymbol{\Lambda}^k\mathbf{c}=c_{1} \lambda_{1}^{k} \mathbf{x}_{1}+c_{2} \lambda_{2}^{k} \mathbf{x}_{2}
uk=Aku0=SΛkc=c1λ1kx1+c2λ2kx2带入数据,可以得到
[
F
100
F
99
]
=
A
99
[
F
1
F
0
]
=
[
λ
1
λ
2
1
1
]
[
λ
1
99
λ
2
99
]
[
c
1
c
2
]
=
[
c
1
λ
1
100
+
c
2
λ
2
100
c
1
λ
1
99
+
c
2
λ
2
99
]
\left[\begin{array}{c}F_{100} \\F_{99}\end{array}\right]= \boldsymbol{A}^{99}\left[\begin{array}{l}F_{1} \\F_{0}\end{array}\right] =\left[\begin{array}{cc}\lambda_{1} & \lambda_{2} \\1 & 1\end{array}\right] \left[\begin{array}{cc}\lambda_{1}{ }^{99} & \\& \lambda_{2}{ }^{99}\end{array}\right] \left[\begin{array}{l}c_{1} \\c_{2}\end{array}\right] =\left[\begin{array}{l}c_{1} \lambda_{1}^{100}+c_{2} \lambda_{2}{ }^{100}\\c_{1} \lambda_{1}^{99}+c_{2} \lambda_{2}{ }^{99}\end{array}\right]
[F100F99]=A99[F1F0]=[λ11λ21][λ199λ299][c1c2]=[c1λ1100+c2λ2100c1λ199+c2λ299]
此即Fibonacci数列的通项公式
分析:
由于 ∣ λ 2 ∣ ≈ 0.618 < 1 |\lambda_2|\approx 0.618<1 ∣λ2∣≈0.618<1,则 k → ∞ 时 λ 2 k → 0 k\rightarrow \infty时\lambda_2^k\rightarrow 0 k→∞时λ2k→0;
而 ∣ λ 1 ∣ ≈ 1.618 > 1 |\lambda_1|\approx 1.618>1 ∣λ1∣≈1.618>1,故 λ 1 \lambda_1 λ1控制着Fibonacci数列的增长;
总体上,这个数列不断增长(不稳定),增长的速度由特征值决定
- 最终可得, F 100 = c 1 λ 1 100 + c 2 λ 2 100 ≈ c 1 λ 1 100 F_{100}=c_{1} \lambda_{1}^{100}+c_{2} \lambda_{2}{ }^{100}\approx c_{1} \lambda_{1}^{100} F100=c1λ1100+c2λ2100≈c1λ1100