10. 特征值和特征向量

什么是特征值

是方阵的一个属性,把方正当做变换的时候的一个特征。


image.png

在矩阵A 的转换下,向量的方向没有改变,只是长度变化了。


image.png

求解

零向量肯定满足,不过在特征向量时不考虑这个向量。
但是特征值可以为0


image.png

image.png

image.png

特征值和特征向量

image.png

image.png

image.png

image.png

对角(上三角,下三角)矩阵的特征值

image.png

A 的 M次幂的性质(M >= 1)

image.png

image.png

投影变换

image.png

下图这个变换矩阵就是根据Y=X做翻转


image.png

那么在Y=X的所有向量,就是特征向量; 同时垂直于Y=X的向量也是特征向量。


image.png

image.png

如果矩阵A含有2个不同的特征值,则他们对应的特征向量线性无关

image.png

image.png

image.png

几何重数和代数重数

image.png

矩阵相似性

image.png

A和B 的特征方程相同。特征值相同。

image.png
image.png

P 可逆,所以N个特征向量线性无关。


image.png

如果A 有N个线性无关的特征向量或者N个不相同的特征值,则A可以被对角化
如果A 没有N个不相同的特征值,A不一定不能被对角化

矩阵对角化的实现

import numpy as np
from numpy.linalg import eig, inv
from playLA.LinearSystem import rank
from playLA.Matrix import Matrix


def diagonalize(A):

    assert A.ndim == 2
    assert A.shape[0] == A.shape[1]

    eigenvalues, eigenvectors = eig(A)

    P = eigenvectors
    if rank(Matrix(P.tolist())) != A.shape[0]:
        print("Matrix can not be diagonalized!")
        return None, None, None

    D = np.diag(eigenvalues)
    Pinv = inv(P)

    return P, D, Pinv


if __name__ == "__main__":

    A1 = np.array([[4, -2],
                   [1, 1]])
    P1, D1, Pinv1 = diagonalize(A1)
    print(P1)
    print(D1)
    print(Pinv1)
    print(P1.dot(D1).dot(Pinv1))
    print()


    A2 = np.array([[3, 1],
                   [0, 3]])
    P2, D2, Pinv2 = diagonalize(A2)
    print(P2)
    print(D2)
    print(Pinv2)
    print()

矩阵对角化的应用

image.png

image.png

为什么关心矩阵的幂

image.png

你可能感兴趣的:(10. 特征值和特征向量)