【问题标题】:Mass spring system with method of Verlet (1d)Verlet方法的质量弹簧系统(1d)
【发布时间】:2019-09-28 02:52:46
【问题描述】:

对于我的家庭作业,我必须制作一个质量弹簧系统(最终是 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

【问题讨论】:

    标签: python physics


    【解决方案1】:

    你是如何定义变量的?你能包括你的整个程序吗?

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-22
      • 2019-11-07
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      相关资源
      最近更新 更多