• 7.11 特征值


    1 马尔科夫链

      矩阵的特征值,在马尔科夫链中应用非常广泛。什么是马尔科夫链呢?马尔科夫链是一个概率矩阵。所谓的概率矩阵是有N个概率向量组成的。举个例子,假如有一个移民模型,这个模型里,由北京移民到上海的概率为0.3,上海移民到北京的概率为0.4。
      那么设初始北京有1000万人,上海有1200万人。
      第一次移民后北京的人口为留在北京的 1000 × 0.7 1000\times0.7 1000×0.7 +上海移民过来的 1200 × 0.4 1200 \times 0.4 1200×0.4
      第一次移民后上海的人口为留在上海的 1200 × 0.6 1200\times0.6 1200×0.6 +北京移民过来的 1000 × 0.3 1000\times0.3 1000×0.3
      这其实就是矩阵乘以向量嘛。
    ( 0.7 0.4 0.3 0.6 ) × ( 1000 1200 ) (0.70.40.30.6)\times(10001200) (0.70.30.40.6)×(10001200)
      那么概率矩阵为:
    ( 0.7 0.4 0.3 0.6 ) (0.70.40.30.6) (0.70.30.40.6)
      因为概率的总和是1,所以概率矩阵的每个概率向量,向量里的数字加起来和为1。初始向量为:
    ( 1000 1200 ) (10001200) (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)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    29 vector= 1257.1428571428564 942.8571428571427
    30 vector= 1257.1428571428564 942.8571428571424
    31 vector= 1257.1428571428564 942.8571428571424
    
    • 1
    • 2
    • 3

      这个向量叫做马可夫链的稳态向量。
      那么稳态向量怎么求呢?如果用上面的循环代码求,那也太蠢了。
      稳态向量的求法是用公式:
    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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

      这里新加了矩阵的减法:

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

    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
      为什么要取行列式为0呢?因为行列式不为0,只有0解,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=(211121112)\\ \lambda I-A=(λ2111λ2111λ2)\\ 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λ2 det(λ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就是矩阵的特征方程。
      那对于复杂的矩阵,特征方程怎么求呢?接下来,我会介绍一种机械的方法,也就是用矩阵的迹来求特征多项式,就是我的下一篇文章:5.2 用迹求特征多项式

    单位特性向量

      因为每个特征值对应的特征向量可以有多个,为了标准化,把长度为1的特征向量定为标准特征向量,也叫单位特征向量normalized eigenvector。具体的计算比较简单,就是将向量的各个坐标都除于向量的长度,就完成了单位化。

  • 相关阅读:
    NX二次开发-使用NXOpen::DisplayModification类,将UF曲线-面-体等tag设置颜色
    Jakob Jenkov 个人博客 JCE 部分(译文)
    【数据结构】:二叉树与堆排序的实现
    IDEA配置Maven
    机器学习笔记之马尔可夫链蒙特卡洛方法(四)吉布斯采样
    [工业自动化-5]:西门子S7-15xxx编程 - PLC系统初识别 :PLC概述与发展史
    贴片和直插型IRM红外遥控接收头引脚定义和规格参数及使用注意事项
    【CentOS 7】网络配置及其相关命令
    数据恢复篇:如何在 Android 手机上恢复未保存/删除的 Word 文档
    input修改checkbox复选框默认选中样式
  • 原文地址:https://blog.csdn.net/m0_66201040/article/details/127888979