numpy中求取特征值和特征向量
特征值和特征向量的求取不进行编程实现,因为整个求取过程中最重要的是求解 d e t ( A − λ I ) = 0 det(A-λI)=0 det(A−λI)=0 对应的 n n n次方程,其中 n n n是矩阵 A A A的阶数。
import numpy as np
from np.linalg import eig # eigen缩写
if __name__ == "__main__":
A1 = np.array([[4, -2], [1, 1]])
# eig方法两个返回值,分别是特征值和特征向量
eigen_values, eigen_vectors = eig(A1)
print(eigen_values) # [3.0, 2.0]
print(eigen_vectors) # [[0.8944..., 0.7071...], [0.4472..., 0.7071...]]
A2 = np.array([[0, 1], [1, 0]])
e_values, e_vectors = eig(A2)
print(e_values) # [1.0, -1.0]
print(e_vectors) # [[0.7071, -0.7071], [0.7071, 0.7071]]
# 复数特征值
A3 = np.array([[0, -1], [1, 0]])
e_values, e_vectors = eig(A3)
print(e_values) # [0.0+1.0j, 0.0-1.0j]
print(e_vectors) # [[0.7071 + 0j, 0.7071 - 0j], [0 - 0.7071j, 0 + 0.7071j]]
# 多重特征值
A4 = np.array([[1, 0], [0, 1]])
e_values, e_vectors = eig(A4)
print(e_values) # [1.0, 1.0]
print(e_vectors) # [[1, 0], [0, 1]]
A5 = np.array([[3, 1], [0, 3]])
e_values, e_vectors = eig(A5)
print(e_values) # [3.0, 3.0]
# [1, 0]和[-1, 0]实际上是线性相关(共线)的,这种结果产生是因为numpy本身内部的算法
print(e_vectors) # [[1, -1], [0, 0]]
矩阵的相似型(相似矩阵)
这一节是在为之后理解特征值和特征向量的具体用途进行铺垫。同时也是理解特征值和特征向量中“特征”一词在矩阵中具体的指代。
定义
如果矩阵 A A A和 B B B满足, A = P − 1 B P A = P^{-1}BP A=P−1BP 则称矩阵 A A A和 B B B相似。
理解这一概念可以类比相似三角形,回顾相似三角形,指的是三个内角相同,而三边的长度没有具体要求的两个三角形(即形状一样,大小不一样)。两个矩阵的相似和相似三角形一样,都是从不同的视角观察相同的内容, A = P − 1 B P A=P^{-1}BP A=P−1BP这个关系式中,

最低0.47元/天 解锁文章
2158

被折叠的 条评论
为什么被折叠?



