什么是特征值
是方阵的一个属性,把方正当做变换的时候的一个特征。
在矩阵A 的转换下,向量的方向没有改变,只是长度变化了。
求解
零向量肯定满足,不过在特征向量时不考虑这个向量。
但是特征值可以为0
特征值和特征向量
对角(上三角,下三角)矩阵的特征值
A 的 M次幂的性质(M >= 1)
投影变换
下图这个变换矩阵就是根据Y=X做翻转
那么在Y=X的所有向量,就是特征向量; 同时垂直于Y=X的向量也是特征向量。
如果矩阵A含有2个不同的特征值,则他们对应的特征向量线性无关
几何重数和代数重数
矩阵相似性
A和B 的特征方程相同。特征值相同。
P 可逆,所以N个特征向量线性无关。
如果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()