赞
踩
哈喽,鉴于上一篇博文出现问题,此处特地开一篇,我也是一脸蒙蔽。
很多博文只会求得矩阵特征分解的特征值和特征向量,而从没有进行验证,验证方法两个
1 A*v=lam*v lam是特征值
2 det(A-lam*I)=0 I是单位阵
我随机产生的矩阵求特征值发现有复数产生,为了方便,网上找了不是复数的矩阵。
错误方法复现
- >>> A
- array([[-1, 1, 0],
- [-4, 3, 0],
- [ 1, 0, 2]])
- lamba,va=np.linalg.eig(A)
-
- #the first validation
- >>> np.dot(A,va)
- array([[ 0. , 0.40824829, 0.40824829],
- [ 0. , 0.81649658, 0.81649658],
- [ 2. , -0.40824829, -0.40824829]])
- >>> np.dot(np.diag(lamba),va)
- array([[ 0. , 0.81649658, 0.81649658],
- [ 0. , 0.81649658, 0.81649658],
- [ 1. , -0.40824829, -0.40824829]])
-
- #服不服?这是错的
-
- #the second validation
- >>> np.linalg.det(A-np.diag(lamba))
- -2.0
-
- #崩溃不
-
-
且不说上面有个特征值是重复的。
原因是加转置就正确了,公式是公式,实际操作就是不
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。