如何解决Python 中的线性代数:计算 3x3 矩阵的特征向量
我正在使用 Python 来导出与 3x3 矩阵中的特征值相关联的特征向量。我的代码返回正确的特征值但错误的特征向量。
A = np.array([[-2,-4,2],[-2,1,[4,2,5]])
print (A)
print ('-------------------------------------------------------')
eigenvalues,eigenvectors = np.linalg.eig(A) # must use this line of code exactly
print(f'eigenvalues of matrix A are:{eigenvalues}')
print ('-------------------------------------------------------')
print(f'eigenvectors of matrix A are:{eigenvectors}')
例如,与值 6 关联的特征向量应该是 [1,6,16],而不是代码输出的内容。
解决方法
正确,可以通过第二个特征值和特征向量的特征向量/特征值条件来检查。
其中 u
是特征向量,lambda
是其特征值。
因此,我们将特征向量 v[:,1]
乘以 A
,并检查它是否与将相同的特征向量乘以其特征值 w[1]
相同。
>>> w,v = np.linalg.eig(A)
# w contains the eigenvalues.
# v contains the corresponding eigenvectors,one eigenvector per column.
# The eigenvectors are normalized so their Euclidean norms are 1
>>> u = v[:,1]
>>> print(u)
[ 0.53452248,-0.80178373,-0.26726124]
>>> lam = w[1]
>>> lam
3.0
>>> print(np.dot(A,u))
[ 1.60356745 -2.40535118 -0.80178373]
>>> print(lam*u)
[ 1.60356745 -2.40535118 -0.80178373]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。