Scipy.integrate.odeint 对于不同的阻尼比返回具有几乎相同频率的曲线,它们不应该不同吗?

计算科学 Python scipy 振荡
2021-12-13 00:38:40

我正在尝试使用 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

像这样的东西:

在此处输入图像描述

但我希望得到看起来更像这样的东西:

在此处输入图像描述

我究竟做错了什么?

0个回答
没有发现任何回复~