5.1 特征值

文章目录

  • 1 马尔科夫链
  • 2 特征值与特征向量
  • 3 行列式法求特征值
  • 4 特征空间
  • 5 广义特征向量
  • 6 广义特征空间

1 马尔科夫链

  矩阵的特征值,在马尔科夫链中应用非常广泛。什么是马尔科夫链呢?马尔科夫链是一个概率矩阵。所谓的概率矩阵是有N个概率向量组成的。举个例子,假如有一个移民模型

目的地 北京 上海
北京 0.4
上海 0.3

  这个矩阵代表由北京移民到上海的概率为0.3,有上海移民到北京的概率为0.4。
  那么设初始北京有1000万人,上海有1200万人。
  第一次移民后北京的人口为留在北京的 1000 × 0.7 1000\times0.7 1000×0.7 +上海移民过来的$ 1000 \times0.4$
  第一次移民后上海的人口为留在上海的 1000 × 0.3 1000\times0.3 1000×0.3 +北京移民过来的 1200 × 0.6 1200\times0.6 1200×0.6
  这其实就是矩阵乘以向量嘛。
( 0.7 0.4 0.3 0.6 ) × ( 1000 1200 ) \begin{pmatrix} 0.7 &0.4 \\ 0.3 &0.6 \end{pmatrix}\times\begin{pmatrix}1000\\1200\end{pmatrix} (0.70.30.40.6)×(10001200)
  那么概率矩阵为:
( 0.7 0.4 0.3 0.6 ) \begin{pmatrix} 0.7 &0.4 \\ 0.3 &0.6 \end{pmatrix} (0.70.30.40.6)
  因为概率的总和是1,所以概率矩阵的每个概率向量,向量里的数字加起来和为1。初始向量为:
( 1000 1200 ) \begin{pmatrix}1000\\1200\end{pmatrix} (10001200)
  我们可以用python代码试验这个过程。

from com.youngthing.mathalgorithm.matrix import Matrix

if __name__ == '__main__':
    probability = Matrix([[0.7, 0.4], [0.3, 0.6]])
    vector = Matrix([[1000], [1200]])
    for i in range(1, 100):
        vector = probability * vector
        print(i, "vector=", vector.lines[0][0], vector.lines[1][0])
    print("vector=", vector)

  在第i=29时,这个向量不再变化,也就是说北京和上海的人口不再变化。python运行结果如下:

29 vector= 1257.1428571428564 942.8571428571427
30 vector= 1257.1428571428564 942.8571428571424
31 vector= 1257.1428571428564 942.8571428571424

  这个向量叫做马可夫链的稳态向量。
  那么稳态向量怎么求呢?如果用上面的循环代码求,那也太蠢了。
  稳态向量的求法是用公式:
A p = p A p − p = 0 ( A − I ) p = 0 Ap=p\\ Ap-p=0\\ (A-I)p=0 Ap=pApp=0(AI)p=0
  所以解 ( A − I ) p = 0 (A-I)p=0 (AI)p=0这个方程就可以了
  但是因为稳态向量有多个,所以最好取一个总和为1的向量。所以python代码如下:

def steady_state_vector(self):
    # 首先构造矩阵A-I
    size = len(self.__lines)
    unit_matrix = Matrix(self.unit_matrix(size))
    # A - I = 0
    final_matrix = (self - unit_matrix).append(Matrix([[0] for _ in self.__lines]))
    # 最后概率总和=1
    # 不要第一行
    final_matrix.__lines[0] = [1 for _ in final_matrix.lines[0]]
    print(final_matrix)
    return final_matrix.gaussian_reduction()

  这里新加了矩阵的减法:

def __sub__(self, other):
    return Matrix([[e - other.__lines[y][x] for x, e in enumerate(line)] for y, line in enumerate(self.__lines)])

2 特征值与特征向量

  特征值与特征向量和马尔科夫链的稳态向量概念相似。特征值是这样定义的:
  对于矩阵A和一个非零向量v,如果有:
A v = λ v Av=\lambda v Av=λv
  那么 λ \lambda λ就是A的特征值,v就是A的特征向量。和马尔科夫链的稳态向量对比一下:
A p = p Ap=p Ap=p
  可见马尔可夫链的稳态向量就是特征值 λ = 1 \lambda=1 λ=1的特殊场景而已。特征向量有无穷多个,但是特征值的个数是有限的。从特征值的几何意义就是,矩阵不过是把某些向量给延长(或缩短)了而已。

3 行列式法求特征值

  求特征值的通用方法,就是大学课本教给我们的方法。
A v − λ v = 0 ( A − λ I ) v = 0 d e t ( A − λ I ) = 0 Av-\lambda v=0\\ (A-\lambda I)v=0\\ det(A-\lambda I)=0 Avλv=0(AλI)v=0det(AλI)=0
  但是为了避免首项的系数是负数,要把 d e t ( A − λ I ) = 0 det(A-\lambda I)=0 det(AλI)=0换成 d e t ( λ I − A ) = 0 det(\lambda I-A)=0 det(λIA)=0
  对 d e t ( λ I − A ) = 0 det(\lambda I-A)=0 det(λIA)=0的计算,会得到一个多项式方程,这个多项式方程就叫做特征方程。举个例子:
A = ( 2 1 − 1 1 2 − 1 − 1 − 1 2 ) λ I − A = ( λ − 2 1 − 1 1 λ − 2 − 1 − 1 − 1 λ − 2 ) d e t ( λ I − A ) = λ 3 − 6 λ 2 + 9 λ − 4 = ( λ − 1 ) 2 ( λ − 4 ) = 0 λ 1 = λ 2 = 1 , λ 3 = 4 A=\begin{pmatrix} 2& 1& -1\\ 1& 2& -1\\ -1& -1& 2 \end{pmatrix}\\ \lambda I-A=\begin{pmatrix} \lambda-2& 1& -1\\ 1& \lambda-2& -1\\ -1& -1& \lambda-2 \end{pmatrix}\\ det(\lambda I-A)=\lambda^3 - 6\lambda^2 + 9\lambda - 4\\ =(\lambda-1)^2(\lambda-4)=0\\ \lambda_1=\lambda_2=1,\lambda_3=4 A=211121112λIA=λ2111λ2111λ2det(λIA)=λ36λ2+9λ4=(λ1)2(λ4)=0λ1=λ2=1,λ3=4
  在上面的例子中 λ 3 − 6 λ 2 + 9 λ − 4 = 0 \lambda^3 - 6\lambda^2 + 9\lambda - 4=0 λ36λ2+9λ4=0就是矩阵的特征方程。

4 特征空间

  前面说过矩阵不过是把自己的特征向量给延长或缩短了,为了求特征值和特征向量,我们有以下的方程:
( A − λ I ) v = 0 (A-\lambda I)v=0 (AλI)v=0
  把某个特征值代进去,得到的 A − λ I A-\lambda I AλI是一个矩阵,这个矩阵会把对应的特征向量变成0向量。这群向量构成了一个空间,这个空间就叫做特征空间
  可以举个例子:
A = ( 2.0 1.0 − 1.0 1.0 2.0 − 1.0 − 1.0 − 1.0 2.0 ) A − λ I = ( 1.0 1.0 − 1.0 1.0 1.0 − 1.0 − 1.0 − 1.0 1.0 ) A=\begin{pmatrix} 2.0 & 1.0 & -1.0\\ 1.0 & 2.0 & -1.0\\ -1.0 & -1.0 & 2.0 \end{pmatrix}\\ A-\lambda I=\begin{pmatrix} 1.0 & 1.0 & -1.0\\ 1.0 & 1.0 & -1.0\\ -1.0 & -1.0 & 1.0 \end{pmatrix}\\ A=2.01.01.01.02.01.01.01.02.0AλI=1.01.01.01.01.01.01.01.01.0
  然后我们根据定义解下齐次线性方程组就可以了。
( 1.0 1.0 − 1.0 1.0 1.0 − 1.0 − 1.0 − 1.0 1.0 ) ∼ ( 1.0 1.0 − 1.0 0.0 0.0 0.0 0.0 0.0 0.0 ) ∴ v = k 1 ( 1 0 1 ) + k 2 ( 0 1 1 ) \begin{pmatrix} 1.0 & 1.0 & -1.0\\ 1.0 & 1.0 & -1.0\\ -1.0 & -1.0 & 1.0 \end{pmatrix} \sim \begin{pmatrix} 1.0 & 1.0 & -1.0\\ 0.0 & 0.0 & 0.0\\ 0.0 & 0.0 & 0.0 \end{pmatrix}\\ \therefore v=k_1\begin{pmatrix}1\\0\\1\end{pmatrix}+k_2\begin{pmatrix}0\\1\\1\end{pmatrix} 1.01.01.01.01.01.01.01.01.01.00.00.01.00.00.01.00.00.0v=k1101+k2011
  所以这个特征空间的两个基就求出来了。我们再试一下下一个特征值4:
A = ( 2.0 1.0 − 1.0 1.0 2.0 − 1.0 − 1.0 − 1.0 2.0 ) A − λ I = ( − 2.0 1.0 − 1.0 1.0 − 2.0 − 1.0 − 1.0 − 1.0 − 2.0 ) A=\begin{pmatrix} 2.0 & 1.0 & -1.0\\ 1.0 & 2.0 & -1.0\\ -1.0 & -1.0 & 2.0 \end{pmatrix}\\ A-\lambda I=\begin{pmatrix} -2.0 & 1.0 & -1.0\\ 1.0 & -2.0 & -1.0\\ -1.0 & -1.0 & -2.0 \end{pmatrix}\\ A=2.01.01.01.02.01.01.01.02.0AλI=2.01.01.01.02.01.01.01.02.0
  同样,解一下这个齐次方程组:
( − 2.0 1.0 − 1.0 1.0 − 2.0 − 1.0 − 1.0 − 1.0 − 2.0 ) ∼ ( − 2.0 1.0 − 1.0 0.0 1.0 1.0 0.0 0.0 0.0 ) ∴ v = k ( 0 1 1 ) \begin{pmatrix} -2.0 & 1.0 & -1.0\\ 1.0 & -2.0 & -1.0\\ -1.0 & -1.0 & -2.0 \end{pmatrix} \sim \begin{pmatrix} -2.0 & 1.0 & -1.0\\ 0.0 & 1.0 & 1.0\\ 0.0 & 0.0 & 0.0 \end{pmatrix}\\ \therefore v=k\begin{pmatrix}0\\1\\1\end{pmatrix} 2.01.01.01.02.01.01.01.02.02.00.00.01.01.00.01.01.00.0v=k011
  这样两个特征值的特征空间就求出来了。

5 广义特征向量

  有了特征向量和特征向量构成的特征空间,我们知道 A − λ I A-\lambda I AλI可以把特征空间里的向量变成0。我们再想想, ( A − λ I ) 2 (A-\lambda I)^2 (AλI)2能不能把某个向量变成0呢?三次方呢?四次方呢?有了方向,数学家们就开始思考了,于是有了广义特征向量的定义:
( A − λ I ) j v = 0 (A-\lambda I)^jv=0 (AλI)jv=0
  公式中v被成为广义特征向量generalized eigenvector,对于某个固定的v,上述公式中的 j j j的最小值是广义特征向量的下标index。毫无疑问,特征向量本身是一个j=1的广义特征向量。我们举个例子:
A = ( 2 1 1 − 2 − 1 − 2 1 1 2 ) λ = 1 A= \begin{pmatrix} 2 & 1 & 1\\ -2 & -1 & -2\\ 1 & 1 & 2 \end{pmatrix}\\ \lambda=1 A=221111122λ=1
  以 λ 1 = 2 \lambda_1=2 λ1=2为例子,求它的特征方程:
A − I = ( 1 1 1 − 2 − 2 − 2 1 1 1 ) ∼ ( 1 1 1 0 0 0 0 0 0 ) v = k 1 ( − 1 1 0 ) + k 2 ( − 1 0 1 ) ( A − I ) 2 = ( 0 0 0 0 0 0 0 0 0 ) v = k 1 ( 1 0 0 ) + k 2 ( 0 1 0 ) + k 3 ( 0 0 1 ) A-I= \begin{pmatrix} 1 & 1 & 1\\ -2 & -2 & -2\\ 1 & 1 & 1 \end{pmatrix} \sim \begin{pmatrix} 1 & 1 & 1\\ 0 & 0 & 0\\ 0 & 0 & 0 \end{pmatrix}\\ v=k_1\begin{pmatrix}-1\\1\\0\end{pmatrix}+k_2\begin{pmatrix}-1\\0\\1\end{pmatrix}\\ (A-I)^2= \begin{pmatrix} 0 & 0 & 0\\ 0 & 0 & 0\\ 0 & 0 & 0 \end{pmatrix}\\ v=k_1\begin{pmatrix}1\\0\\0\end{pmatrix}+k_2\begin{pmatrix}0\\1\\0\end{pmatrix}+k_3\begin{pmatrix}0\\0\\1\end{pmatrix}\\ AI=121121121100100100v=k1110+k2101(AI)2=000000000v=k1100+k2010+k3001
  所以j到2时,再乘什么都是0矩阵了,广义特征向量就是任意向量,再乘方就没意义了。

6 广义特征空间

  对于上述的规律,我们总在j增大到一定程度后,广义特征向量所在的空间是不会增大的。所以对某个特定的特征值定义了以下空间:
E j ( λ ) = { v ∣ ( A − λ I ) j v = 0 } E_j(\lambda)=\{v|(A-\lambda I)^jv=0\} Ej(λ)={v(AλI)jv=0}
  当 j j j无穷大时定义的空间 E ∞ ( λ ) E_\infty(\lambda) E(λ),被称为广义特征空间generalized eigenspace。但是也不要看到无穷就悲观,因为前面我们说了当j到一定程度时, E j ( λ ) E_j(\lambda) Ej(λ)空间不再扩大,这个时候就等于广义特征空间,这时候的 j j j被称为广义特征向量最大下标maximum index of
a generalized eigenvector of A associated to λ
,数学符号为 m a x − i n d ( λ ) max-ind(\lambda) maxind(λ)。实际上 m a x − i n d ( λ ) max-ind(\lambda) maxind(λ)等于该特征值最大约当块的行数。所以利用这个特性,可以快速确定矩阵的约当标准型。如下面的矩阵:
( 2 1 − 1 1 2 − 1 − 1 − 1 2 ) λ 1 = λ 2 = 1 , λ 3 = 4 \begin{pmatrix} 2 & 1 & -1\\ 1 & 2 & -1\\ -1 & -1 & 2 \end{pmatrix}\\ \lambda_1=\lambda_2=1,\lambda_3=4 211121112λ1=λ2=1,λ3=4
  它的约当标准型有两种可能:
( 1 1 0 0 1 0 0 0 4 ) o r ( 1 0 0 0 1 0 0 0 4 ) \begin{pmatrix} 1 & 1 & 0\\ 0 & 1& 0\\ 0 & 0 & 4 \end{pmatrix}or \begin{pmatrix} 1 & 0 & 0\\ 0 & 1& 0\\ 0 & 0 & 4 \end{pmatrix} 100110004or100010004
  那么到底是哪一种?这个时候就需要用特征空间了,求出 m a x − i n d ( 1 ) max-ind(1) maxind(1)。那只能拿特征方程计算下呗:
A − λ I = ( 1 1 − 1 1 1 − 1 − 1 − 1 1 ) ∼ ( 1 1 − 1 0 0 0 0 0 0 ) ( A − λ I ) 2 = ( 3 3 − 3 3 3 − 3 − 3 − 3 3 ) ∼ ( 1 1 − 1 0 0 0 0 0 0 ) A-\lambda I=\begin{pmatrix} 1 & 1 & -1\\ 1 & 1 & -1\\ -1 & -1 & 1 \end{pmatrix} \sim \begin{pmatrix} 1 & 1 & -1\\ 0 & 0 & 0\\ 0 & 0 & 0\end{pmatrix}\\ (A-\lambda I)^2=\begin{pmatrix} 3 & 3 & -3\\ 3 & 3 & -3\\ -3 & -3 & 3 \end{pmatrix}\sim \begin{pmatrix} 1 & 1 & -1\\ 0 & 0 & 0\\ 0 & 0 & 0 \end{pmatrix}\\ AλI=111111111100100100(AλI)2=333333333100100100
  特征方程的二次方并没有变成0矩阵,说明 m a x − i n d ( 1 ) = 1 max-ind(1)=1 maxind(1)=1,所以约当标准型为:
( 1 0 0 0 1 0 0 0 4 ) \begin{pmatrix} 1 & 0 & 0\\ 0 & 1& 0\\ 0 & 0 & 4 \end{pmatrix} 100010004

你可能感兴趣的:(线性代数【更新中】,python,开发语言)