23

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

4

3 回答 3

17

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

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

Verlet 方法的时间步长函数 f 具有保存状态空间体积的特殊性质。我们可以用数学术语来写。如果您在状态空间中有一组状态 A,那么您可以通过以下方式定义 f(A)

f(A) = {f(x)| 对于 A 中的 x }

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

现在最后一个问题是。为什么辛方法对模拟具有能量守恒的系统有好处,但恐怕您必须阅读一本书才能理解这一点。

于 2010-05-05T17:04:45.933 回答
15

Euler 方法是一阶积分方案,即总误差与步长成正比。但是,它可能在数值上不稳定,换句话说,累积的误差会压倒计算,让您胡说八道。请注意,无论您使步长多小或系统是否为线性,都可能发生这种不稳定性。我不熟悉verlet集成,所以我不能谈论它的功效。但是,Runge-Kutta 方法与 Euler 方法的不同之处不仅仅是步长。

本质上,它们基于一种更好的数值逼近导数的方法。确切的细节现在让我无法理解。一般来说,四阶龙格-库塔方法被认为是积分方案的主力,但它确实有一些缺点。它是轻微耗散的,即在您的计算中添加了一个小的一阶导数相关项,类似于增加的摩擦。此外,它具有固定的步长,这可能会导致难以达到您想要的精度。或者,您可以使用自适应步长方案,例如Runge-Kutta-Fehlberg 方法,这为额外的 6 次函数评估提供了五阶精度。这可以大大减少执行计算所需的时间,同时提高准确性,如此处所示

于 2010-05-05T04:09:17.017 回答
2

如果一切都以线性方式滑行,那么您使用哪种方法并不重要,但是当发生有趣的事情(非线性)时,您需要更仔细地查看,或者直接考虑非线性(verlet)或采取更小的时间步长(rk4)。

于 2010-05-05T03:33:20.243 回答