采用Verlet方法的质量弹簧系统(1d)

时间:2019-05-10 08:21:42

标签: python physics

对于我的家庭作业,我必须制作一个整体弹簧系统(最终2d),但是我首先尝试1d。但是我无法正常工作,请帮助我。我们必须使用Verlet的方法,并且必须在python中实现以下功能。我的代码错了吗?而我该怎么做呢?

公式:https://drive.google.com/open?id=1Oi4MVOyTPvMLqZ35zFtQTgPlxNNrCHZy

def verlet():
    result = 2 * py[0]  # 2y(ti)
    result -= py_prev[0]    # - y(ti - dt)
    result += (GRAVITATION + (-Ks * (py[0] - py_prev[0]))) / MASS
    py_prev[0] = py[0]
    py[0] = result/20

1 个答案:

答案 0 :(得分:0)

您如何定义变量?您可以包含整个程序吗?

如果定义了所有变量,则代码将运行。

查看您的代码,我看不到您如何计算公式中的最后一项。

result += (GRAVITATION + (-Ks * (py[0] - py_prev[0]))) / MASS

您需要定义两点之间的时间差。 (这不是py [0]-py_prev [0],这是高度差)。 我认为公式中的最后一项可以这样计算:

result -= delta_t**2 * py[0]

稍后,您将需要使用for循环(甚至更好的数组,但是for循环更容易)来保存振荡器在每个时间点的位置。