对于我的家庭工作,我必须制作一个质量弹簧系统(最终是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发布于 2019-05-13 05:47:12
你是如何定义变量的?你能把你的整个项目都包括进来吗?
如果定义了所有变量,则运行代码。
查看您的代码,我不明白您是如何计算公式中的最后一项的。
result += (GRAVITATION + (-Ks * (py[0] - py_prev[0]))) / MASS您需要定义两个点之间的时间差。(这不是py - py_prev,这是高度差)。我认为公式中的最后一项可以这样计算:
result -= delta_t**2 * py[0]稍后,您将需要使用for循环(或者更好的数组,但for循环更容易)来保存振荡器在每个时间点的位置。
https://stackoverflow.com/questions/56073482
复制相似问题