Scipy没有显示出正确的特征值



我试图求解M^-1*K的特征值,但得到了错误的特征值。这里的问题是什么?正确的特征值应为:3.17、9.13、13.98、17.15

from scipy import linalg
import numpy as np

M = np.diag([30,30,30,30])  # ton
K = np.array([[5000,-2500,0,0],
[-2500,5000,-2500,0],
[0,-2500,5000,-2500],
[0,0,-2500,2500]
])

M_inv = linalg.inv(M)
la, v = linalg.eig(M_inv @ K)

print(la)

您的代码为la:计算以下内容

In [82]: la
Out[82]: array([ 10.05122987,  83.33333333, 195.60802961, 294.34074052])

如果我们取这些值的平方根,我们可以看到la包含您期望的值的平方

In [83]: np.sqrt(la)
Out[83]: array([ 3.17036747,  9.12870929, 13.98599405, 17.15636152])

因此,我怀疑问题在于将您正在解决的问题正确地转换为Python代码并解释结果。

看起来这是一个振动问题(M是质量矩阵,K是弹簧力的刚度矩阵(,你实现的方程求解的是振动频率的平方ω²,而你期望的结果是频率ω。

最新更新