我试图求解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是弹簧力的刚度矩阵(,你实现的方程求解的是振动频率的平方ω²,而你期望的结果是频率ω。