数值分析里的中点法(midpoint method)是求解常微分方程的一种数值方法,属于单步法。

中点法的图示说明,假设等于的实际值。中点法计算让红色的弦近似平行于中点处的切线(绿色)

上式的显式中点法为

1e

隐式中点法为

1i

。此处是步阶长度,是一个小的正数,,而是计算的近似值。显式中点法也称为是改良的欧拉方法(modified Euler method)[1],隐式中点式是最简单的配置法英语collocation method(Collocation method),可用在哈密顿力学,也就是辛积分器英语symplectic integrator

此方法的名称是因为上述公式会用到函数在位置的值,也就是在以及中点时的值,前者的值已知,后者的值未知,在计算中点的值时,也需要有一些假设,才能进行计算。

配合图示(见右图)会比较容易理解此一方法。在原始的欧拉方法里,会用,计算曲线在处的切线。此切线和垂直线的交点即为下一个点的值。不过,若此函数的二阶导数在时间的区间均为正, 或是均为负(如图中的例子),随着加大,曲线和切线的距离会越来越远,导致大误差。图中所画的中点的切线(上方,绿线)比较可以近似这段曲线。不过因为要求解的就是此一曲线,时间的资讯已知,其他资讯不足,可能无法精准的画出中点处的切线。

因此,会先用原始的欧拉方法估计在中点的值,再用以及估计的中点资讯,计算切线斜率。用改善后的切线从计算的值。最后一步即为图的红色弦线。因为红色弦线是估计值,用的是在中点处的估计值,不一定真的会和绿线(真正的中点切线)平行,仍会有误差。

中点法每一步的局部误差是,全域误差是。其运算比欧拉方法要大,但在的过程中,中点法的误差会比欧拉方法降低的更快。

此法也是高阶方法(如龙格-库塔法)的范例之一。

中点法的推导

 
微分方程 的数值积分求解图。
  蓝:欧拉法
  绿:中点法
  红:精确解: 
步长 
 
同一个方程的数值方法求解,步长缩减为 ,可以看出中点法的收敛比欧拉法要快

中点法可以视为是改良版的欧拉方法

 

因此用类似的方式推导。 推导欧拉法的关键是以下的近似等式

  2

是源自以下的斜率公式

  3

,其中 

在中点法中,将(3)改为更准确的式子

 

因此可以得到以下类似(3)式,计算 的式子

  4

在上式中,因为还不知道  的值,无法用上式直接计算 。解法是用欧拉方法来求解 :

 

代入(4)式中,可得

 

以上则是显式的中点法(1e)。

隐式中点法(1i)可以将此时间内的波形假设为直线,中间步数 的值用  的平均值来表示

 

因此

 

因为隐式方法的时间对称性,局部误差中 的偶次项都消去了,局部误差的阶数是\ 

相关条目

脚注

  1. ^ Süli & Mayers 2003,第328页

参考资料

  • Griffiths, D. V.; Smith, I. M. Numerical methods for engineers: a programming approach. Boca Raton: CRC Press. 1991: 218. ISBN 0-8493-8610-1. 
  • Süli, Endre; Mayers, David, An Introduction to Numerical Analysis, Cambridge University Press, 2003, ISBN 0-521-00794-1 .
  • Burden, Richard; Faires, John. Numerical Analysis. Richard Stratton. 2010: 286. ISBN 978-0-538-73351-9.