数值积分
我们使用的各种数值积分方法都是对积分做近似,近似的本质类似于泰勒级数展开式。在实际模拟中,不可能使用泰勒级数展开中的无穷项,所以积分方法只用级数的截断类似。更健壮的积分方法是使用级数中的更多项。积分方法对模拟的精度有非常大的影响。最简单的积分有欧拉积分,其次有Velet积分(类似蛙跳积分)、蛙跳积分。理解这些概念首先需了解级数展开与积分。
级数展开与积分
泰勒级数展开
s ( t + h ) = s ( t ) + s ˙ ( t ) h + 1 2 s ¨ ( t ) h 2 + ⋯ \mathbf{s}(t+h)=\mathbf{s}(t)+\dot{\mathbf{s}}(t) h+\frac{1}{2} \ddot{\mathbf{s}}(t) h^{2}+\cdots s(t+h)=s(t)+s˙(t)h+21s¨(t)h2+⋯
欧拉积分只用到了前两项: s ( t + h ) ≈ s ( t ) + s ˙ ( t ) h \mathbf{s}(t+h) \approx \mathbf{s}(t)+\dot{\mathbf{s}}(t) h s(t+h)≈s(t)+s˙(t)h。因为只用到了一阶导数,所以欧拉积分是一阶方法。
常见的二阶方法有
梯形法 s ( t + h ) = s ( t ) + s ˙ ( t ) + s ˙ ( t + h ) 2 h \mathbf{s}(t+h)=\mathbf{s}(t)+\frac{\dot{\mathbf{s}}(t)+\dot{\mathbf{s}}(t+h)}{2} h s(t+h)=s(t)+2s˙(t)+s˙(t+h)h
中点法 s ( t + h ) = s ( t ) + s ˙ ( t + 0.5 h ) h \mathbf{s}(t+h)=\mathbf{s}(t)+\dot{\mathbf{s}}(t+0.5 h) h s(t+h)=s(t)+s˙(t+0.5h)h
Velet积分
Velet积分假设加速度仅由位置决定,即 a = 1 m f ( x