Bootstrap

【线性代数06】特征值及矩阵对角化的简要讨论

  终于到特征值的部分了,对于矩阵而言,特征值就像一种浓缩的信息。将特征值求出来后放在对角线的位置,就是直观视野下的对角化。矩阵能否对角化?怎样对角化?对角化后有什么好处?这是我们本次要讨论的内容。

求解特征值及特征向量


对角化

描述特征值和特征向量最经典的式子是下面这个
A x = λ x Ax=\lambda x Ax=λx
如果我们假定有 n n n个特征向量,则
A [ x 1 x 2 ⋯ x n ] = [ x 1 x 2 ⋯ x n ] [ λ 1 0 … 0 0 λ 2 … 0 ⋮ ⋮ ⋱ ⋮ 0 0 … λ n ] ⇒ A S = S Λ A\begin{bmatrix}x_1 & x_2 & \cdots & x_n \end{bmatrix} = \begin{bmatrix}x_1 & x_2 & \cdots & x_n \end{bmatrix}\begin{bmatrix}\lambda_1 & 0 & \ldots & 0 \\ 0 & \lambda_2 & \ldots & 0 \\ \vdots &\vdots & \ddots & \vdots \\ 0 &0 & \ldots & \lambda_n \end{bmatrix} \Rightarrow AS = S\Lambda A[x1x2xn]=[x1x2xn] λ1000λ2000λn AS=SΛ
如果 S S S可逆,则 A A A就能对角化为 Λ \Lambda Λ,这当 A A A n n n个特征值互不相同时是可实现的。 即
A = S Λ S − 1   或   Λ = S − 1 A S A = S \Lambda S^{-1} \ \ 或 \ \ \Lambda = S^{-1}AS A=SΛS1    Λ=S1AS
我们来看例子
A = [ 1 2 − 1 4 ] A = \begin{bmatrix}1 & 2 \\ -1 & 4 \end{bmatrix} A=[1124]
由于 A S = S Λ AS=S\Lambda AS=SΛ,所以能想到 ∣ A − λ E ∣ ∣ S ∣ = 0 |A-\lambda E||S| = 0 AλE∣∣S=0 ∣ S ∣ ≠ 0 |S| \ne 0 S=0时,必然有 ∣ A − λ E ∣ = 0 |A-\lambda E|=0 AλE=0,以此作为求解特征值的依据
det ⁡ ( A − λ I ) = ∣ 1 − λ 2 − 1 4 − λ ∣ = 0 \det (A-\lambda I)= \begin{vmatrix}1-\lambda & 2 \\ -1 & 4-\lambda \end{vmatrix}=0 det(AλI)= 1λ124λ =0
( 1 − λ ) ( 4 − λ ) + 2 = λ 2 − 5 λ + 6 ⇒ λ 1 = 2 ,   λ 2 = 3 (1-\lambda)(4-\lambda)+2=\lambda ^2-5\lambda+6 \Rightarrow \lambda_1=2, \ \lambda_2 = 3 (1λ)(4λ)+2=λ25λ+6λ1=2, λ2=3
将特征值代回后,即可求得对应的特征向量
{ ( A − λ 1 I ) x = ( A − 2 I ) x = 0 ⇒ [ − 1 2 − 1 2 ] x = 0 ⇒ x = [ 2 1 ] ( A − λ 2 I ) x = ( A − 3 I ) x = 0 ⇒ [ − 2 2 − 1 1 ] x = 0 ⇒ x = [ 1 1 ] \begin{cases}(A-\lambda_1 I)x=(A-2I)x=0 \Rightarrow \begin{bmatrix}-1 & 2 \\ -1 & 2 \end{bmatrix}x=0 \Rightarrow x= \begin{bmatrix} 2 \\1 \end{bmatrix} \\ \\ (A-\lambda_2 I)x=(A-3I)x=0 \Rightarrow \begin{bmatrix}-2 & 2 \\ -1 & 1 \end{bmatrix}x=0 \Rightarrow x= \begin{bmatrix} 1 \\1 \end{bmatrix} \end{cases} (Aλ1I)x=(A2I)x=0[1122]x=0x=[21](Aλ2I)x=(A3I)x=0[2121]x=0x=[11]
可以发现求解特征向量即求解 A − λ I A-\lambda I AλI所在的零空间,与其所在的行空间正好垂直。应该说明,这样一个对角化的过程又称特征值分解或谱分解,用过频谱仪的朋友应该知道上面那几条孤零零的峰值线正是信号傅里叶分解后得到的谱线,虽然特征值的应用并不仅限于此。

更一般地,研究矩阵的秩和行列式与其特征值的关系,会发现下述结论:

矩阵的迹为特征值之和,行列式为特征值之积


对角化条件的讨论

并不是所有的矩阵都能实现对角化,实现对角化的条件是苛刻的,需要矩阵有 n n n个不同的特征值。而如果矩阵中有两个相同的特征值,如
A = [ 1 1 − 1 3 ] A = \begin{bmatrix}1 & 1 \\-1 & 3 \end{bmatrix} A=[1113]
我们很清楚地知道两个特征值都是2,对应的特征向量都为
( A − 2 I ) x = 0 ⇒ [ − 1 1 − 1 1 ] x = 0 ⇒ x = [ 1 1 ] (A-2I)x=0 \Rightarrow \begin{bmatrix}-1 & 1 \\ -1 & 1 \end{bmatrix}x=0 \Rightarrow x= \begin{bmatrix} 1 \\1 \end{bmatrix} (A2I)x=0[1111]x=0x=[11]
此时就发生了特征向量的缺失。


若尔当标准型

对角矩阵相比于普通矩阵有更优良的性质,比如此时计算行列式的值就等于主对角线上各元素的乘积,而且此时矩阵也足够稀疏。若尔当提出了将矩阵近似对角化的方法,即矩阵总是可以化为若尔当标准型。如将前面所提到的矩阵进行相似对角化,就有:
A = [ 1 1 − 1 3 ] ⇒ B = [ 2 1 0 2 ] A = \begin{bmatrix}1 & 1 \\-1 & 3 \end{bmatrix} \Rightarrow B = \begin{bmatrix}2 & 1 \\0 & 2 \end{bmatrix} A=[1113]B=[2012]
可以发现相似矩阵A和B的迹和行列式是一致的,因此对应的特征值也是一致的,但特征向量一般不一致

若尔当标准型的目标就是将更多的矩阵化简到一类只比对角矩阵稍微复杂的矩阵:若尔当标准型。实际上这是一种简单的分块对角矩阵。1

[ J 1          ⋱          J p ] \begin{bmatrix}J_{1}&\;&\;\\\;&\ddots &\;\\\;&\;&J_{p}\end{bmatrix} J1Jp
这里的“简单”是指每小块矩阵都具备一种很简单的形状:
J i = [ λ i 1          λ i ⋱          ⋱ 1          λ i ] {\displaystyle J_{i}={\begin{bmatrix}\lambda _{i}&1&\;&\;\\\;&\lambda _{i}&\ddots &\;\\\;&\;&\ddots &1\\\;&\;&\;&\lambda _{i}\end{bmatrix}}} Ji= λi1λi1λi
其中主对角线上都是同一个系数,而对角线上方一排全是1。形同以上 J i {\displaystyle J_{i}} Ji的矩阵称为若尔当矩阵。而矩阵 J i {\displaystyle J_{i}} Ji中每一个这样的小块被称为若尔当块。如在最开始的例子中,C就是A化简后得到的若尔当块。
检验如下:


>> A=[1,1;-1,3];
>> [X,D] = eig(A) %对A作特征值分解

X =

    0.7071   -0.7071
    0.7071   -0.7071


D =

    2.0000         0
         0    2.0000

>> [V,J]=jordan(A) % 求解若尔当标准型

V =

    -1     1
    -1     0


J =

     2     1
     0     2

再举复杂一点的例子看看,可以发现此时有两个若尔当块。
D = [ 3 1 0 0 3 0 0 0 2 ] D = \begin{bmatrix}\begin{array}{cc:c} 3 & 1 & 0 \\0 & 3 & 0 \\ \hdashline 0 & 0 & 2\end{array}\end{bmatrix} D= 300130002
我们可以按照特征值的理论去构造一个相应的三角阵 E E E,如
E = [ 3 4 5 0 3 1 0 0 2 ] E = \begin{bmatrix} 3& 4 & 5\\0& 3& 1 \\ 0& 0 & 2\end{bmatrix} E= 300430512

>> E=[3,4,5;0,3,1;0,0,2];
>> [X,D] = eig(E),[V,J]=jordan(E)

X =

    1.0000   -1.0000   -0.5774
         0    0.0000   -0.5774
         0         0    0.5774


D =

     3     0     0
     0     3     0
     0     0     2


V =

   -1.0000   -1.0000    1.0000
   -1.0000         0   -0.2500
    1.0000         0         0


J =

     2     0     0
     0     3     1
     0     0     3

这些例子告诉我们,当存在重根时,矩阵就暗示了无法对角化的风险,因为此时可能无法再找到 n n n个线性无关的特征向量,也就找不到对应的可逆矩阵 S S S来完成对角化(进一步讨论需要考虑重根的代数重数和几何重数是否相等,并不在此次讨论范围)


正规矩阵

当将数扩充到复数域后,我们着重来看一类特殊的矩阵——正规矩阵2,定义

有一类矩阵,如对角矩阵、实对称矩阵( A T = A A^T=A AT=A)、实反对称矩阵( A T = − A A^T=-A AT=A)、厄米特矩阵( A H = A A^H=A AH=A)、反厄米特矩阵( A H = − A A^H=-A AH=A)、正交矩阵( A T A = A A T = E A^TA=AA^T=E ATA=AAT=E)以及酉矩阵( A H A = A A H = E A^HA=AA^H=E AHA=AAH=E)等,都有一个共同的性质: A H A = A A H A^HA=AA^H AHA=AAH。为了能够用统一的方法研究他们的相似标准型,我们引入正规矩阵的概念。 A ∈ C m × n A \in\Complex^{m\times n} ACm×n,且 A H A = A A H A^HA=AA^H AHA=AAH,则称为正规矩阵。


容易看出,实矩阵在引入共轭的概念后仅是复矩阵的特例,所谓酉矩阵也只是标准正交矩阵在复数域上的推广。正规矩阵是类很特殊的矩阵,而特殊的矩阵会具有特殊的性质。在方阵条件下,正规矩阵除了有 n n n个不同的特征值外,最重要的一点是属于不同特征值的特征子空间是互相正交的。应该指出,这样一个对角化的结果将能确保 n n n个特征值所对应的矩阵恰好是一个酉矩阵,而酉矩阵对应的逆矩阵正是其共轭转置矩阵,即 A − 1 = A H A^{-1}=A^{H} A1=AH,这就是最棒的特殊性质。
A = U Λ U H   或   Λ = U H A U A = U \Lambda U^{H} \ \ 或 \ \ \Lambda = U^{H}AU A=UΛUH    Λ=UHAU

比如我们看一个简单的实对称矩阵
A = [ 3 1 1 2 ] A = \begin{bmatrix}3 & 1 \\1 & 2 \end{bmatrix} A=[3112]

>> [X,D]=eig([3,1;1,2])

X =

    0.5257   -0.8507
   -0.8507   -0.5257

D =

    1.3820         0
         0    3.6180


>> X*D*X'  % 检验X作为标准正交矩阵的性质

ans =

    3.0000    1.0000
    1.0000    2.0000

应用

接下来我们谈谈矩阵对角化的好处,比如为计算 A n A^n An时带来了方便,而这种矩阵自我的幂次,常常能用于描述系统演化的规律


求解差分方程

一个经典的例子就是斐波那切数列,即满足‘0,1,1,2,3,5,8,13,21,34,55,89,144,···’ 这样一个递增规律的数列。写成前后项的通式即
F ( n ) = F ( n − 1 ) + F ( n − 2 ) F(n)=F(n-1)+F(n-2) F(n)=F(n1)+F(n2)
这在算法题中经常作为递归实现的典型例子,但这次我们关注的是其通项是如何求得的。根据差分方程的理论,我们可以列出其特征根方程为
r 2 − r − 1 = 0 r^2-r-1=0 r2r1=0
于是解得
r 1 = 1 + 5 2 = 1.618     r 2 = 1 − 5 2 = − 0.618 r_1=\frac{1+\sqrt{5}}{2}=1.618 \ \ \ r_2=\frac{1-\sqrt{5}}{2}=-0.618 r1=21+5 =1.618   r2=215 =0.618
从而
F ( n ) = C 1 r 1 n + C 2 r 2 n F(n)=C_1r_1^n+C_2r_2^n F(n)=C1r1n+C2r2n
根据
{ C 1 + C 2 = 0 n = 0 C 1 r 1 + C 2 r 2 = 1 n = 1 ⇒ C 1 = 1 r 1 − r 2 = 0.447 , C 2 = 1 r 2 − r 1 = − 0.447 \begin{cases} C_1+C_2=0 &n=0 \\ C_1r_1+C_2r_2 = 1&n=1 \end{cases} \Rightarrow C_1=\frac{1}{r_1-r_2}=0.447, C_2=\frac{1}{r_2-r_1}=-0.447 {C1+C2=0C1r1+C2r2=1n=0n=1C1=r1r21=0.447,C2=r2r11=0.447
最后
F ( n ) = 0.447 ( 1.618 ) n − 0.447 ( − 0.618 ) n F(n)=0.447(1.618)^n-0.447(-0.618)^n F(n)=0.447(1.618)n0.447(0.618)n
现在我们从矩阵的视角出发,首要的问题就在于,A在哪里? 通过补充一个 F ( n − 1 ) = F ( n − 1 ) F(n-1)=F(n-1) F(n1)=F(n1)项,我们成功找到了A:
{ F ( n ) = F ( n − 1 ) + F ( n − 2 ) F ( n − 1 ) = F ( n − 1 ) ⇒ [ 1 1 1 0 ] [ F ( n − 1 ) F ( n − 2 ) ] = [ F ( n ) F ( n − 1 ) ] ⇒ A x n − 1 = x n \begin{cases} F(n)=F(n-1)+F(n-2) \\ F(n-1) = F(n-1) \end{cases} \Rightarrow \begin{bmatrix} 1&1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} F(n-1) \\ F(n-2) \end{bmatrix} = \begin{bmatrix} F(n) \\ F(n-1) \end{bmatrix} \Rightarrow A x_{n-1} = x_{n} {F(n)=F(n1)+F(n2)F(n1)=F(n1)[1110][F(n1)F(n2)]=[F(n)F(n1)]Axn1=xn
由于 A x n − 1 = x n Ax_{n-1}=x_n Axn1=xn,于是逐次向下迭代到 x 1 x_1 x1就有:
A n − 1 x 1 = x n A^{n-1}x_1=x_n An1x1=xn
现在转换为怎么求 A n − 1 A^{n-1} An1,注意到 A A A是可对角化的矩阵
A = S Λ S − 1 ⇒ A n = S Λ n S − 1 A = S \Lambda S^{-1} \Rightarrow A^n = S\Lambda^{n}S^{-1} A=SΛS1An=SΛnS1
因此计算对角矩阵 Λ \Lambda Λ的幂次将十分方便,只需令每个特征值变成相应的幂次即可。求解 A A A的特征值
det ⁡ ( A − λ I ) = ∣ 1 − λ 1 1 − λ ∣ = λ 2 − λ − 1 \det (A-\lambda I)= \begin{vmatrix}1-\lambda & 1 \\ 1 & -\lambda \end{vmatrix}=\lambda ^2-\lambda-1 det(AλI)= 1λ11λ =λ2λ1
可见此处的 λ \lambda λ就前面的特征根方程这种的 r r r是一致的。(这并不偶然)
λ 1 = 1 + 5 2 = 1.618     λ 2 = 1 − 5 2 = − 0.618 \lambda_1=\frac{1+\sqrt{5}}{2}=1.618 \ \ \ \lambda_2=\frac{1-\sqrt{5}}{2}=-0.618 λ1=21+5 =1.618   λ2=215 =0.618
再求特征向量,有趣的是,此时的特征向量可以取为
x = [ 1 λ − 1 ] ⇒ S = [ 1 1 λ 1 − 1 λ 2 − 1 ] = [ 1 1 0.618 − 0.618 ] x=\begin{bmatrix} 1 \\ \lambda-1 \end{bmatrix} \Rightarrow S=\begin{bmatrix} 1 & 1 \\ \lambda_1-1 & \lambda_2-1 \end{bmatrix}=\begin{bmatrix} 1 & 1 \\ 0.618 & -0.618 \end{bmatrix} x=[1λ1]S=[1λ111λ21]=[10.61810.618]
于是有
A n − 1 = S Λ n − 1 S − 1 = [ 1 1 0.618 − 0.618 ] [ λ 1 n − 1 0 0 λ 2 n − 1 ] [ 0.7236 0.4472 0.2764 − 0.4472 ] A^{n-1} = S\Lambda^{n-1}S^{-1}=\begin{bmatrix} 1 & 1 \\ 0.618 & -0.618 \end{bmatrix}\begin{bmatrix} \lambda_1^{n-1} & 0 \\ 0 & \lambda_2^{n-1}\end{bmatrix}\begin{bmatrix} 0.7236 & 0.4472 \\ 0.2764 & -0.4472 \end{bmatrix} An1=SΛn1S1=[10.61810.618][λ1n100λ2n1][0.72360.27640.44720.4472]
可以求得 A 11 n − 1 = 0.7236 λ 1 n − 1 + 0.2764 λ 2 n − 1 A_{11}^{n-1} =0.7236 \lambda_1^{n-1} +0.2764 \lambda_2^{n-1} A11n1=0.7236λ1n1+0.2764λ2n1,由于 x 1 = [ 1 , 0 ] T x_1=[1,0]^T x1=[1,0]T,所以
F ( n ) = A 11 n − 1 = 0.7236 λ 1 n − 1 + 0.2764 λ 2 n − 1 = 0.447 ( 1.618 ) n − 0.447 ( − 0.618 ) n F(n)=A_{11}^{n-1}=0.7236 \lambda_1^{n-1} +0.2764 \lambda_2^{n-1}=0.447(1.618)^n-0.447(-0.618)^n F(n)=A11n1=0.7236λ1n1+0.2764λ2n1=0.447(1.618)n0.447(0.618)n
从而验证了两种方法的一致性。在信号与系统中,我们学过特征根与系统的稳定性相关,当特征根的绝对值小于1时,此时系统会趋向于稳定,这从等比数列的敛散性能直观看出。


求解微分方程

微分方程与差分方程理论的相似之处在于利用特征根方程求得特征根,再利用已知的初始条件待定 n n n个系数。对于微分方程而言,此时解的形式为
f ( t ) = C 1 e r 1 t + C 2 e r 2 t + ⋯ + C n e r n t f(t)=C_1e^{r_1 t}+C_2e^{r_2 t}+\cdots+C_ne^{r_n t} f(t)=C1er1t+C2er2t++Cnernt
而我们知道 e x e^x ex的幂级数展开式为
e x = ∑ n = 0 ∞ x n n ! = 1 + x + x 2 2 + x 3 6 + ⋯ e^{x}=\sum_{n=0}^{\infty}\frac{x^n}{n!}=1+x+\frac{x^2}{2}+\frac{x^3}{6}+\cdots ex=n=0n!xn=1+x+2x2+6x3+
而如果能将其表示为矩阵形式 e A t e^{At} eAt,即
e A t = I + A t + A 2 t 2 2 + A 3 t 3 6 + ⋯ = S Λ 0 S − 1 + S Λ S − 1 t + S Λ 2 S − 1 t 2 2 + ⋯ = S e Λ t S − 1 e^{At}=I+{At}+\frac{A^2t^2}{2}+\frac{A^3t^3}{6}+\cdots =S \Lambda^0 S^{-1}+S \Lambda S^{-1} t + \frac{S\Lambda^2 S^{-1}t^2}{2}+\cdots = Se^{\Lambda t}S^{-1} eAt=I+At+2A2t2+6A3t3+=SΛ0S1+SΛS1t+2SΛ2S1t2+=SeΛtS1
这正是问题过渡求解的核心思想。类似地,在微分方程中,此时特征根的实部为负时,系统才会趋向于稳定,而在一般的电路设计其实经常会出现对系统稳定性的考察。比如对于下面的这个微分方程
y ′ ′ + b y ′ + k y = 0 y^{\prime \prime}+by^{\prime}+ky=0 y′′+by+ky=0
我们同样可以找出这个矩阵A,即
[ − b − k 1 0 ] [ y ′ y ] = [ y ′ ′ y ′ ] ⇒ A x n − 1 = x n \begin{bmatrix} -b&-k \\ 1 & 0 \end{bmatrix} \begin{bmatrix} y^{\prime } \\ y \end{bmatrix} = \begin{bmatrix} y^{\prime \prime} \\ y^{\prime}\end{bmatrix} \Rightarrow A x_{n-1} = x_{n} [b1k0][yy]=[y′′y]Axn1=xn

综上可以发现,在差分方程中,阶次由前后项的顺序决定,在微分方程中,阶次由微分次数决定。一般性地,我们可以将矩阵A写作下列形式,从而将 n n n阶的方程转换成了一个1维的的向量方程。
A = [ 最高阶用其他阶表示的系数行 n − 1 阶单位阵 + 1 列 0 ] A=\begin{bmatrix} 最高阶用其他阶表示的系数行 \\ n-1阶单位阵+1列0 \end{bmatrix} A=[最高阶用其他阶表示的系数行n1阶单位阵+10]


  1. 维基百科-若尔当标准型 ↩︎

  2. 百度百科-正规矩阵 ↩︎

;