我将SHM的标准微分方程用于上述仿真,a = -w ^ 2 * x。我正在使用odeint作为求解器的Python。尽管对其进行了多次编辑,但我一直将输出保持为直线而不是正弦曲线。代码是:
from scipy.integrate import odeint
from pylab import *
k = 80 #Spring Constant
m = 8 #mass of block
omega = sqrt(k/m) #angular velocity
def deriv(x,t):
return array([x[1],(-1)*(k/m)*x[0]])
t = linspace(0,3.62,100)
xinit = array([0,0])
x = odeint(deriv,xinit,t)
acc_mass = zeros(t.shape[0])
for q in range(0,t.shape[0]):
acc_mass[q] = (-1)*(omega**2)*x[q][0]
f, springer = subplots(3, sharex = True)
springer[0].plot(t,x[:,0],'r')
springer[0].set_title('Position Variation')
springer[1].plot(t,x[:,1],'b')
springer[1].set_title('Velocity Variation')
springer[2].plot(t,acc_mass,'g')
springer[2].set_title('Acceleration Variation')
最佳答案
正如Warren Weckesser所指出的那样,代码是正确的,但是由于位移的初始条件为0,因此输出也为0。因此,在他的建议下,我更改了初始条件并获得了所需的正弦输出曲线。