gpt4 book ai didi

math - 时间修正的 Verlet 数值积分公式

转载 作者:行者123 更新时间:2023-12-04 16:43:14 31 4
gpt4 key购买 nike

有一个常用的verlet-integration Johnathan Dummer 在网上的公式,称为 Time-Corrected Verlet。但是我读过几个论坛帖子,人们在某些情况下会得到奇怪或意外的结果。

Formula by Johnathan Dummer:

x1 = x + (x – x0) * dt / dt0 + a * dt^2

还有一个 stackoverflow answer ,其中指出 Dummer 的时间校正公式被破坏,并且海报将他自己的推导呈现为正确的推导。

Suggested correct formula by a stackoverflow answer
x1 = x + (x – x0) * dt / dt0 + a * dt * (dt + dt0) / 2

那么,Dummer 的公式真的被打破了吗?如果是,海报的推导是否更好?

PS:Dummer使用verlet积分公式 x1 = x - x0 + a * dt^2也很奇怪在他的网站上而不是正确的 x1 = 2x - x0 + a * dt^2 .

最佳答案

维基百科页面Verlet integration - Non-constant time differences给出两个公式,不做引用。我自己没有检查过推导,但第二个改进公式的推理看起来很合理。

我已经下载了 Dummer 的电子表格并修改了其中一个公式以使用更正。结果要好得多。

Comparison of methods

确切的结果以黄色显示,我们看到仅使用具有波动帧速率的普通 Verlet 算法是很糟糕的。 Dummer 的红色时间正确变体非常好,但有点偏离。带有改进校正的深绿色版本要好得多。

对于具有二次解的重力射弹,您可能会发现改进版本是准确的。当度数变得更高时,它将与真实路径不同,可能值得测试以查看我们是否仍能获得更好的近似值。

Comparing methods for sin

对 sin 曲线进行相同的计算表明改进的方法要好得多。在这里,时间正确的 Verlet 漂移了很多。改进后的版本更好,与确切答案仅相差一点点。

对于PS。注意如果在TCV公式中设置dt=dt0

x1 = x + (x – x0) * dt / dt0 + a * dt^2

你得到
x1 = x + x – x0 + a * dt^2
= 2 x – x0 + a * dt^2

原始的 Verlet 公式。

关于math - 时间修正的 Verlet 数值积分公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32709599/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com