主要内容
- 特征值和特征向量
- 矩阵的特征值分解
- 对角化
正文
特征值和特征向量是一块非常重要的内容,虽然它的数学公式非常简单,但是真正搞明白它却很困难,需要费一些劲。第一部分我们先介绍特征值和特征向量,然后举例来充分的理解它们,重点在于充分理解求解特征值和特征向量。第二部分重点介绍它们的应用。
特征值和特征向量
不妨先记特征向量为 x x x, 通俗来讲,所谓特征向量就是将矩阵(方阵)作用于该向量后得到与该向量平行的向量,用公式表示如下: A x = λ x Ax=\lambda x Ax=λx这里的系数 λ \lambda λ就是特征值,对 λ \lambda λ是没有限制的,它可以为实数,可以为复数,可以为零。当 λ \lambda λ为零的时候,我们得到方程 A x = 0 Ax=0 Ax=0,这时候特征向量就是零空间中的向量。这是一种比较特殊的情况,一般来讲,当 A A A为奇异矩阵的时候,也就是 A A A的行列式为 0 0 0的时候,它会有一个值为 0 0 0的特征值。
我们先看几个例子: 在投影操作中(以三维为例),我们有两种比较特殊的情况:
- 当 b b b在平面内的时候: P b = b Pb=b Pb=b这种形式就是特征向量的一种, P P P的特征向量为 b b b,特征值为 1 1 1。
- 当 b b b垂直于平面的时候: P b = 0 b Pb=0b Pb=0b这是另一种特殊的情况,对于特征向量 b b b,它的特征值为 0 0 0。
例如:对于置换矩阵
P
=
[
0
1
1
0
]
P=\begin{bmatrix}0&1\\1&0\end{bmatrix}
P=[0110]我们可以从它的本义上来分析一下,置换矩阵的作用就是用于交换矩阵的行,变换矩阵的行无非有两种结果,一种是矩阵(这里是向量)发生了变化,一种是不发生变化,但是又要保证变换以后向量平行。所有只有两种可能,一种是置换以后结果同原向量相同,另一种是置换以后结果是原向量的负数倍。对于
P
x
=
λ
x
Px=\lambda x
Px=λx,第一种情况我们可以猜:
x
1
=
[
1
1
]
x_1=\begin{bmatrix}1\\1\end{bmatrix}
x1=[11],第二种情况我们可以猜:
x
2
=
[
1
−
1
]
x_2=\begin{bmatrix}1\\-1\end{bmatrix}
x2=[1−1],计算得到
λ
1
=
1
,
λ
2
=
−
1
\lambda_1=1,\lambda_2=-1
λ1=1,λ2=−1。实际上,
n
×
n
n\times n
n×n的矩阵由
n
n
n个特征值,
n
n
n个特征向量。
关于特征值我们有这样的结论: 特征值之和为矩阵的对角线的和,矩阵的对角线之和又称为迹。
求解特征值的一般方法: 仅靠猜是太难找到答案了,所以这里有一种普遍的方法。对于 A x = λ x Ax=\lambda x Ax=λx,我们可以移项得到 ( A − λ I ) x = 0 (A-\lambda I)x=0 (A−λI)x=0。根据零空间的内容,如果 A − λ I A-\lambda I A−λI是非奇异矩阵,也就是说它的行列式不为 0 0 0,那么零空间就只有一个零向量,显然我们求的特征向量是不能这样的,所以必然有 A − λ I = 0 A-\lambda I=0 A−λI=0通过解这个方程,我们就可以得到所有可能的特征值,通俗来讲, A − λ I A-\lambda I A−λI的意义就是在 A A A的对角线上减去 λ \lambda λ。我们可以看一下这个例子: A = [ 3 1 1 3 ] A=\begin{bmatrix}3&1\\1&3\end{bmatrix} A=[3113] d e t ( A − λ I ) = ∣ 3 − λ 1 1 3 − λ ∣ = λ 2 − 6 λ + 8 det(A-\lambda I)=\begin{vmatrix}3-\lambda&1\\1&3-\lambda\end{vmatrix}=\lambda^2-6\lambda+8 det(A−λI)=∣∣∣∣3−λ113−λ∣∣∣∣=λ2−6λ+8可以很简单的解得 λ 1 = 2 , λ 2 = 4 \lambda_1=2,\lambda_2=4 λ1=2,λ2=4。根据韦达定理: λ 1 + λ 2 = 6 , λ 1 λ 2 = 8 \lambda_1+\lambda_2=6,\lambda_1\lambda_2=8 λ1+λ2=6,λ1λ2=8实际上, 6 6 6是矩阵的对角线之和, 8 8 8是矩阵的行列式。这意味着:
- 特征值之和等于对角线之积
- 特征值之积等于矩阵的行列式
现在我们知道了特征值,接着就可以求特征向量了: ( A − λ I ) x = 0 (A-\lambda I)x=0 (A−λI)x=0根据这个方程,我们可以知道求特征向量就是在求零空间的一组基,他们显然是线性无关的。最后可以求得: x 1 = [ 1 1 ] , x 2 = [ − 1 1 ] x_1=\begin{bmatrix}1\\1\end{bmatrix},x_2=\begin{bmatrix}-1\\1\end{bmatrix} x1=[11],x2=[−11]。我们会发现,这里的特征向量与前面置换矩阵的特征向量相同,但是特征值不同。这两个例子的区别就在于后者在对角线上加了一定的数值。在公式上我们分析一下: ( A + μ I ) x = A x + μ x = λ x + μ x = ( λ + μ ) x (A+\mu I)x=Ax+\mu x=\lambda x+\mu x=(\lambda+\mu)x (A+μI)x=Ax+μx=λx+μx=(λ+μ)x 这表明了矩阵在对角线上加一定的数值,其特征值就会加一定的数值,而特征向量保持不变,但是这并不是一定成立的。
还有一种比较特殊的情况:三角矩阵,例如: A = [ 3 1 0 3 ] A=\begin{bmatrix}3&1\\0&3\end{bmatrix} A=[3013]类似的,我们求解特征值 d e t ( A − λ I ) = ∣ 3 − λ 1 0 3 − λ ∣ = ( 3 − λ ) 2 = 0 det(A-\lambda I)=\begin{vmatrix}3-\lambda&1\\0&3-\lambda\end{vmatrix}=(3-\lambda)^2=0 det(A−λI)=∣∣∣∣3−λ013−λ∣∣∣∣=(3−λ)2=0,我们得到两个特征值 λ 1 = 3 , λ 2 = 3 \lambda_1=3,\lambda_2=3 λ1=3,λ2=3,将这两个特征值带入 A x = 3 x Ax=3x Ax=3x,会得到两个相同的特征向量,或者又叫做没有其他的线性无关的特征向量,这样的矩阵叫做退化矩阵。此外,这个例子给我们了其他的启示,三角矩阵或者对角矩阵的特征值就是对角线的值。
矩阵的特征值分解
我们从 A S AS AS出发,其中 S S S表示由 A A A的线性无关的特征向量组成的矩阵,又叫特征矩阵。 A S = A [ : : : . . . : x 1 x 2 x 3 . . . x n : : : . . . : ] = [ : : : . . . : x 1 λ 1 λ 2 x 2 λ 3 x 3 . . . λ n x n : : : . . . : ] = [ : : : . . . : x 1 x 2 x 3 . . . x n : : : . . . : ] [ λ 1 0 0 . . . 0 0 0 0 . . . 0 0 0 0 . . . λ n ] AS=A\begin{bmatrix}:&:&:&...&:\\x_1&x_2&x_3&...&x_n\\:&:&:&...&:\end{bmatrix}=\begin{bmatrix}:&:&:&...&:\\x_1\lambda_1&\lambda_2x_2&\lambda_3x_3&...&\lambda_nx_n\\:&:&:&...&:\end{bmatrix}=\begin{bmatrix}:&:&:&...&:\\x_1&x_2&x_3&...&x_n\\:&:&:&...&:\end{bmatrix}\begin{bmatrix}\lambda_1&0&0&...&0\\0&0&0&...&0\\0&0&0&...&\lambda_n\\\end{bmatrix} AS=A⎣⎡:x1::x2::x3:.........:xn:⎦⎤=⎣⎡:x1λ1::λ2x2::λ3x3:.........:λnxn:⎦⎤=⎣⎡:x1::x2::x3:.........:xn:⎦⎤⎣⎡λ100000000.........00λn⎦⎤我们可以发现,最后得到了特征矩阵和特征值组成的对角矩阵的乘积,将这个特征值组成的对角矩阵记为 Λ \Lambda Λ,可以有这样的公式: A S = S Λ AS=S\Lambda AS=SΛ由这个基本的公式出发,我们又可以得到 A = S Λ S − 1 , S − 1 A S = Λ A=S\Lambda S^{-1},S^{-1}AS=\Lambda A=SΛS−1,S−1AS=Λ。第一个公式将矩阵 A A A分解成了特征向量和特征值,这就是矩阵的特征值分解。第二个公式实现了将矩阵进行对角化,这也是非常实用的一种工具。
接下来借助这个公式我们分析一下矩阵的幂。 对于基本公式 A x = λ x Ax=\lambda x Ax=λx, A 2 x = λ A x = λ 2 x A^2x=\lambda Ax=\lambda^2x A2x=λAx=λ2x A k x = λ A k − 1 x = λ 2 A k − 2 x = . . . = λ k x A^kx=\lambda A^{k-1}x=\lambda^2A^{k-2}x=...=\lambda^kx Akx=λAk−1x=λ2Ak−2x=...=λkx对于 A = S Λ S − 1 A=S\Lambda S^{-1} A=SΛS−1: A k = S Λ S − 1 S Λ S − 1 . . . S Λ S − 1 = S Λ k S − 1 A^k=S\Lambda S^{-1}S\Lambda S^{-1}...S\Lambda S^{-1}=S\Lambda^kS^{-1} Ak=SΛS−1SΛS−1...SΛS−1=SΛkS−1如果我们直接使用 A A A进行求 k k k次幂的话,那计算量将会非常的大,当使用这个公式后,计算量大大的减小了,因为我们只需要计算特征值和特征向量,然后在对特征值进行求幂即可。这个公式告诉我们矩阵的幂从根本上来讲只是对矩阵的特征值进行了求幂。如果我们的特征值 λ i < 1 i = 1... n \lambda_i<1\qquad i=1...n λi<1i=1...n,那么当 k → ∞ ⇒ λ i → 0 i = 1... n k\rightarrow\infty\Rightarrow\lambda_i\rightarrow0\quad i=1...n k→∞⇒λi→0i=1...n。这样的矩阵称为稳定矩阵,随着幂数的增大,矩阵会趋向于 0 0 0。
对角化
对于矩阵 A n × n A_{n\times n} An×n,如果 A A A有 n n n个互不相同的特征值,那么 A A A有 n n n个线性无关的特征向量,并且 A A A是可对角化的,否则 A A A是不能够对角化的,因为 S S S将会没有逆。如果存在重复的特征值,那么 A A A可能存在 n n n个线性无关的特征向量。最简单的例子就是 I I I,它有 n n n个重复的特征值 1 1 1,但是它有 n n n个线性无关的特征向量。比较糟糕的情况就是前面的例子,当 A = [ 3 1 0 3 ] A=\begin{bmatrix}3&1\\0&3\end{bmatrix} A=[3013],我们得到两个相同的特特征值但是只有一个线性无关的特征向量。所以它是不能对角化的。实际上,每个不同的特征值都对应不同的特征向量。
差分方程: u k + 1 = A u k u_{k+1}=Au_k uk+1=Auk。如果我们已有一个向量 u 0 u_0 u0,他可以分解成特征向量的线性组合,如下: u 0 = c 1 x 1 + c 2 x 2 + . . . + c n x n = S c u_0=c_1x_1+c_2x_2+...+c_nx_n=Sc u0=c1x1+c2x2+...+cnxn=Sc 根据 u k + 1 = A u k u_{k+1}=Au_k uk+1=Auk,我们可以推出 u k = A u k − 1 = A 2 u k − 2 = . . . = A k u 0 u_{k}=Au_{k-1}=A^2u_{k-2}=...=A^ku_0 uk=Auk−1=A2uk−2=...=Aku0。因为 u 0 u_0 u0是由特征向量线性组合得到的,所以这时候我们就可以进一步运算,得到更加简单的结果: u k = A k u 0 = c 1 λ 1 k x 1 + c 2 λ 2 k x 2 + . . . + c n λ n k x n = Λ k S c u_k=A^ku_0=c_1\lambda^k_1x_1+c_2\lambda_2^kx_2+...+c_n\lambda^k_nx_n=\Lambda^kSc uk=Aku0=c1λ1kx1+c2λ2kx2+...+cnλnkxn=ΛkSc特征值在有关对角矩阵的计算上的威力真的是令人惊叹的。例如:斐波那契数列:斐波那契数列的公式为: F k + 2 = F k + 1 + F k F_{k+2}=F_{k+1}+F_{k} Fk+2=Fk+1+Fk但是我们需要将他表达成 u k + 1 = A u k u_{k+1}=Au_k uk+1=Auk的形式,可以记 u k = [ F k + 1 F k ] u_k=\begin{bmatrix}F_{k+1}\\F_{k}\end{bmatrix} uk=[Fk+1Fk],那么 u k + 1 = [ F k + 2 F k + 1 ] u_{k+1}=\begin{bmatrix}F_{k+2}\\F_{k+1}\end{bmatrix} uk+1=[Fk+2Fk+1],此外还需要得到一个矩阵。这就需要一些技巧,不过也是显然的,我们应该能够发现规律,再增加一个方程: F k + 1 = F k + 1 F_{k+1}=F_{k+1} Fk+1=Fk+1因此最终得到的矩阵表达式为: 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当我们需要求 F 100 F_{100} F100的时候,带上面的公式即可。这个例子还有一个比较重要的地方,就是需要将 u 0 u_0 u0表达成特征向量的线性组合的形式,然后求出组合的系数,此外就是需要确定特征向量。当确定了这些以后,就可以解决问题了。这个问题表明了,增长率取决于特征值。