两种方法的优缺点:
RK4优点:
- 精度(由于其更好的逼近级数,因此产生了四阶精度)
- 人工/固有感应阻尼(有点像隐式方法)增加了稳定性(而简单的欧拉步骤却没有,实际上却相反,引入了会积聚的虚假能量,可能会使系统陷入混乱)
RK4缺点:
- 计算费用:尽管与隐式方法或混合IMEX方法相比并没有那么高的要求,但RK4的成本是显式Euler的4倍,因为它需要更多的函数求值。这表明在瞄准优化的前沿时。
- 仍然不稳定:根据所涉及的力量类型,RK4可能与欧拉一样不稳定。平均而言,RK4更加稳定,并且倾向于从其赋予的阻尼“技能”中受益。
- 非渐近性:数字阻尼会带来成本-您无法模拟能量/体积/等能量较大的系统。损失不应随时间施加可见的影响(例如,分子动力学,势场衍生的力,变化问题)
Verlet专业人士:
- 欧拉步骤复杂度的一到两倍(取决于您的Verlet口味:位置或速度)。
- 辛:节省内部能量
- 二阶精度:许多游戏不需要高精度的浮点结果,并且二阶比在游戏场景中令人赏心悦目(而且:“游戏”发现时,它用于非游戏场景模拟中,因此没那么糟糕)
缺点:
- 稳定,但仍然:就稳定性而言,可能是最好的显式方法。当将硬约束添加到系统时,它往往会赢得优势,因此在基于位置的动力引擎中实现投影约束时,可以减少头痛。如果系统受到较大的外力干扰,并且未添加阻尼/摩擦,则它会变为无穷大。即使这样,在内部(弹簧)力的大小也有一定的数值限制,但它们平均比RK4的作用力高
- 较低的精度:如果您需要较高的精度估计,则无用
- 在某些仿真中,平均而言,与RK4相比,所需的时间步长更短(RK4得益于其精度和内部阻尼)
在一个之上使用另一个取决于场景。如果刚度,较大的外力和虚拟能量是一个问题,请考虑在描述/标题中使用“隐式”字词的其他方法。
请注意,一些作者/书籍将术语半隐式欧拉用于实际的显式欧拉积分器,称为辛欧拉方法(或欧拉·克罗默),从中实际推导出Verlet。Verlet也被某些人称为“跨越式方法”。速度Verlet和中点方法非常相似,因为在t + 0.5*dt
类预测器-校正器步骤是必需的。IMEX方法(隐式-显式)也用于命名两种相似但不完全相同的方法:将计算分为刚性和非刚性部分,并在其上使用不同的积分器(对于非刚性为显式,对于刚性为隐式)或求解通过隐式更新步骤来改变速度并以显式方式更新位置(这是混合半隐式方法,属于IMEX类方法,因为刚性部分对加速度计算的影响最大)。隐式方法比较麻烦,需要为整个配置求解一个同时非线性方程组。隐式方法用于可变形体,通常不用于解耦刚体。
如评论之一所述,如果可以,请不要使用欧拉。使用中点方法,半隐式Euler或相同的位置-Verlet。与显式的Euler积分器相比,它们都具有略高的精度和明显更高的稳定性。
推荐的迷你比较读物:
http://wiki.vdrift.net/Numerical_Integration