为什么Verlet集成比Euler集成更好?

时间:2010-05-04 22:48:39

标签: physics game-physics verlet-integration runge-kutta

有人可以向我解释为什么Verlet集成比Euler集成更好吗?为什么RK4比Verlet更好?我不明白为什么这是一个更好的方法。

3 个答案:

答案 0 :(得分:14)

Verlet方法擅长模拟具有节能的系统,原因是它是辛的。为了理解这个陈述,您必须将模拟中的时间步骤描述为将状态空间映射到自身的函数f。换句话说,每个时间步都可以写在下面的表格上。

(x(t + dt),v(t + dt))= f(x(t),v(t))

Verlet方法的时间步长函数f具有保留状态空间音量的特殊属性。我们可以用数学术语来写这个。如果状态空间中有一组状态A,则可以通过

定义f(A)

f(A)= {f(x)| for a in A}

现在让我们假设集合A和f(A)是平滑的,所以我们可以定义它们的体积。然后,辛映射f将始终满足f(A)的体积与A的体积相同(并且这将适用于A的所有良好和平滑的选择)。这是通过Verlet方法的时间步长函数来实现的,因此Verlet方法是一种辛方法。

现在最后一个问题是。为什么辛方法适用于模拟节能系统,但我担心你必须阅读一本书才能理解这一点。

答案 1 :(得分:12)

Euler method是一阶积分方案,即总误差与步长成比例。但是,它可能在数值上不稳定,换句话说,累积的误差可能会压倒计算,从而导致无意义。请注意,无论步长大小或系统是否为线性,都会出现这种不稳定性。我不熟悉verlet集成,所以我不能说它的功效。但是,Runge-Kutta methods与欧拉方法的不同之处不仅仅是步长。

从本质上讲,它们基于一种更好的数值近似导数的方法。目前准确的细节让我感到惊讶。一般来说,四阶Runge-Kutta方法被认为是集成方案的主力,但确实有一些disadvantages。它略微耗散,即在计算中加入一个小的一阶导数依赖项,类似于增加的摩擦力。此外,它具有固定的步长,这可能导致难以达到您想要的精度。或者,您可以使用自适应步长方案,如Runge-Kutta-Fehlberg method,它为另外6个函数评估提供了五阶精度。这可以大大减少执行计算所需的时间,同时提高准确性,如here所示。

答案 2 :(得分:2)

如果一切都以线性方式顺应进行,那么使用什么方法并不重要,但是当一些有趣的东西(非线性)发生时,你需要仔细观察,要么通过直接考虑非线性(verlet)或采用较小的时间步长(rk4)。