数值分析里的中点法(midpoint method)是求解常微分方程的一种数值方法,属于单步法。
上式的显式中点法为
| | 1e |
隐式中点法为
| | 1i |
。此处是步阶长度,是一个小的正数,,而是计算的近似值。显式中点法也称为是改良的欧拉方法(modified Euler method)[1],隐式中点式是最简单的配置法(Collocation method),可用在哈密顿力学,也就是辛积分器。
此方法的名称是因为上述公式会用到函数在位置的值,也就是在以及中点时的值,前者的值已知,后者的值未知,在计算中点的值时,也需要有一些假设,才能进行计算。
配合图示(见右图)会比较容易理解此一方法。在原始的欧拉方法里,会用,计算曲线在处的切线。此切线和垂直线的交点即为下一个点的值。不过,若此函数的二阶导数在时间和的区间均为正, 或是均为负(如图中的例子),随著加大,曲线和切线的距离会越来越远,导致大误差。图中所画的中点的切线(上方,绿线)比较可以近似这段曲线。不过因为要求解的就是此一曲线,时间的资讯已知,其他资讯不足,可能无法精准的画出中点处的切线。
因此,会先用原始的欧拉方法估计在中点的值,再用以及估计的中点资讯,计算切线斜率。用改善后的切线从计算的值。最后一步即为图的红色弦线。因为红色弦线是估计值,用的是在中点处的估计值,不一定真的会和绿线(真正的中点切线)平行,仍会有误差。
中点法每一步的局部误差是,全域误差是。其运算比欧拉方法要大,但在的过程中,中点法的误差会比欧拉方法降低的更快。
此法也是高阶方法(如龙格-库塔法)的范例之一。
中点法可以视为是改良版的欧拉方法
因此用类似的方式推导。
推导欧拉法的关键是以下的近似等式
| | 2 |
是源自以下的斜率公式
| | 3 |
,其中
在中点法中,将(3)改为更准确的式子
因此可以得到以下类似(3)式,计算的式子
| | 4 |
在上式中,因为还不知道在的值,无法用上式直接计算。解法是用欧拉方法来求解:
代入(4)式中,可得
以上则是显式的中点法(1e)。
隐式中点法(1i)可以将此时间内的波形假设为直线,中间步数的值用和的平均值来表示
因此
因为隐式方法的时间对称性,局部误差中的偶次项都消去了,局部误差的阶数是\。