矩阵基础知识--------通俗易懂之----矩阵的特征向量和特征值

    技术2022-07-10  134

    在开始之前,我们先看有一组例子:

    我们若有矩阵A: ,和一个向量v, 若我们不断用矩阵A来左乘v,输出的结果会有什么样的特点呢?我们来看看:

    我们看看用矩阵A左乘四次的向量可视化出来是什么的结果:

    蓝色是向量v,黑色是向量v不断用矩阵A左乘出来的向量。我们可以看到,左乘出来的向量会不断接近一个向量方向,这个方向,就是矩阵A的特征向量的方向。蓝色是向量v。红色是计算出来的特征向量。

    如上图所示的两条红色向量,把他们无限延长,会形成一个“X”,这个红色的X就是所谓的矩阵的特征空间。

    看到这里也许有同学会问,特征向量是两条,为什么只会不断拟合其中一条?因为这是跟特征向量对应的特征值有关的,用矩阵不断乘一个向量,只会拟合到特征值最大的特征向量。

     

    然后我们来看看特征向量和特征值的关系:

    若矩阵A与它的特征向量v相乘,那么就会完全等于A的特征值与A的特征向量相乘。(特征值为常数)

    所以对于一个矩阵而言,它的特征值和特征向量是它的本质。我们看一下下图:

    红色向量为矩阵A的特征向量v,黑色向量为矩阵A乘A的特征向量Av。

    那么综合上面所有信息我们可以知道:

    任意一个向量v,它经过数次与矩阵A相乘,得到的向量Av会几乎和矩阵A的特征向量方向相同。这时候,可以把Av看作A的特征向量,那么再继续用矩阵A乘的时候,得到的向量方向就不变了,变化的只有长度,长度为原来的长度乘特征值。

    实验:

    用特征值为2的矩阵A,不断左乘某个向量b,看看得到向量的长度是不是2的倍数:

    A = np.array([ #特征值为2 [2,0], [0,2] ]) eigenvalue,featurevector=np.linalg.eig(A) print(eigenvalue) b = np.array([ [2], [1] ]) b = np.matmul(A,b) print(np.sqrt(b[0]**2+b[1]**2)) #[4.47213595] b = np.matmul(A,b) print(np.sqrt(b[0]**2+b[1]**2)) #[8.94427191] b = np.matmul(A,b) print(np.sqrt(b[0]**2+b[1]**2)) #[17.88854382] b = np.matmul(A,b) print(np.sqrt(b[0]**2+b[1]**2)) #[35.77708764] b = np.matmul(A,b) print(np.sqrt(b[0]**2+b[1]**2)) #[71.55417528]

    我们可以看到,结论符合。所以如果矩阵A的特征值为1的话,那么不断左乘的话,得到的结果也是不会变的。

     

    具体例子说明:

    我们可以把矩阵A看作是一个运动。A表示了运动的方向(特征向量)和运动的速度(特征值)。如果一个向量b被这个矩阵A左乘,那么b就会往矩阵A所规定的方向和速度运行。A乘了b多少次,就是b以A规定的方向和速度运行了多少秒。

     

     

    Processed: 0.010, SQL: 9