我正在尝试使用 Scipy 的 odeint 求解器针对不同的阻尼因子求解谐波振荡器的 ODE。
我正在使用以下代码,基于此示例:
from scipy.integrate import odeint
m = 1 # kg
k = 10 # N/m
omega = np.sqrt(k / m)
def eps(c):
return (c / (2 * mass * np.sqrt(kspring/mass)))
def calc_deri(y, t, eps, omega):
return (y[1], -eps * omega * y[1] - omega **2 * y[0])
time_vec = np.linspace(0, 8, 80)
yinit = (1, 0)
plt.figure(figsize=(10, 7))
for c in [1, 2, 3, 4, 5, 6]:
eps_c = eps(c)
yarr = odeint(calc_deri, yinit, time_vec, args=(eps_c, omega))
plt.plot(time_vec, yarr[:, 0])
plt.show()
我的问题是,无论我使用什么组合k,我总是得到一组具有非常接近振荡频率的曲线(我无法从图中判断是否完全没有差异或差异是否如此小到不显示在图表上)。mc
像这样的东西:
但我希望得到看起来更像这样的东西:
我究竟做错了什么?

