这个问题问的是一个系统,它有两个质量,每个质量连接两个弹簧,看起来像这样:
%s M1 %s M2 %s
外部弹簧具有弹簧常数kb,而内弹簧具有常数k。我写了一些代码来寻找系统的正常模式,我得到的频率是0.160,我非常确定这是正确的。然而,当我试图用线性代数解决同样的问题时,我得到了-1.2和-1.0的特征值。我也不太明白如何编写代码,因为到目前为止,我的运动方程不适合任何python代码示例,我也不知道如何将矩阵d^2/dt^2X传递给eigh()函数。运动方程是:
d^2/dt^2 X= AX,其中X是向量,A是具有质量和弹性常数的矩阵。
下面是我写的代码:
from scipy import linalg as LA
A = np.array([[(-1/m1)*(kb+ks),(1/m1)*ks],[(1/m2)*ks,(-1/m2)*(kb+ks)]])
w,v = LA.eigh(A)
print(w)
print(v)发布于 2020-11-25 04:27:09
通过添加每个质量的速度作为变量,将二阶系统重塑为一阶常微分方程组(dx/dt = Cx)。看看https://scipy-cookbook.readthedocs.io/items/CoupledSpringMassSystem.html吧。关于特征值/特征向量,必须考虑C矩阵的特征值/特征向量,而不是A矩阵的特征值/特征向量,然后直接得到模态。
我在这里为一个类似的系统写了一个代码:https://scicomp.stackexchange.com/questions/36357/system-of-second-order-odes-runge-kutta-4th-order/36358?noredirect=1#comment70848_36358
https://stackoverflow.com/questions/64951136
复制相似问题