gpt4 book ai didi

python - Numpy - 模态矩阵和对角特征值

转载 作者:太空宇宙 更新时间:2023-11-04 10:14:12 25 4
gpt4 key购买 nike

我在 Python Numpy 中编写了一个简单的线性代数代码,通过计算 $M^{-1}.A.M$(M 是模态矩阵)来计算特征值的对角线,但它运行得很奇怪。

代码如下:

import numpy as np

array = np.arange(16)
array = array.reshape(4, -1)
print(array)

[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]

eigenvalues, eigenvectors = np.linalg.eig(array)

print eigenvalues
[ 3.24642492e+01 -2.46424920e+00 1.92979794e-15 -4.09576009e-16]

print eigenvectors
[[-0.11417645 -0.7327781 0.54500164 0.00135151]
[-0.3300046 -0.28974835 -0.68602671 0.40644504]
[-0.54583275 0.15328139 -0.2629515 -0.8169446 ]
[-0.76166089 0.59631113 0.40397657 0.40914805]]

inverseEigenVectors = np.linalg.inv(eigenvectors) #M^(-1)
diagonal= inverseEigenVectors.dot(array).dot(eigenvectors) #M^(-1).A.M

print(diagonal)
[[ 3.24642492e+01 -1.06581410e-14 5.32907052e-15 0.00000000e+00]
[ 7.54951657e-15 -2.46424920e+00 -1.72084569e-15 -2.22044605e-16]
[ -2.80737213e-15 1.46768503e-15 2.33547852e-16 7.25592561e-16]
[ -6.22319863e-15 -9.69656080e-16 -1.38050658e-30 1.97215226e-31]]

最终的“对角”矩阵应该是主对角线上有特征值而其他地方为零的对角矩阵。但它不是......第一个主对角线值是特征值,但第二个不是(尽管就像两个第二个特征值一样,它们几乎为零)。

顺便说一下,像 $-1.06581410e-14$ 这样的数字实际上是零,所以我怎样才能让 numpy 将它们显示为零?

我做错了什么?

谢谢...

最佳答案

只需将最终结果四舍五入到所需的数字即可:

print(diagonal.round(5))

array([[ 32.46425, 0. , 0. , 0. ],
[ 0. , -2.46425, 0. , 0. ],
[ 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ]])

不要混淆计算精度和打印策略。

关于python - Numpy - 模态矩阵和对角特征值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36391125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com