跳转到内容

欧拉方法

维基百科,自由的百科全书

数学计算机科学中,欧拉方法(英语:Euler method[注 1]),是一种一阶数值方法,用以对给定初值的常微分方程[注 2]求解。

欧拉方法是常微分方程数值方法中最基本的显式方法;是一阶的方法,意味着其局部截断误差[注 3]正比于步长的平方,并且其全局截断误差正比于步长。[注 4]

非正式的几何描述

欧拉方法的图示。待求的曲线为蓝色,它的折线近似为红色。

考虑计算这样的一个未知曲线的形状:它具有给定的起点并且满足一个给定的微分方程。 这里,所谓“微分方程”可以看作能够通过曲线上任意点的位置而计算出这一点的切线斜率的公式。

思路是,一开始只知道曲线的起点(假设为),曲线其他部分是未知的,不过通过微分方程,的斜率可以被计算出来,也就得到了切线。

顺着切线向前走一小步到点。如果假设是曲线上的一点(实际上通常不是),那么同样的道理就可以确定下一条切线,依此类推。在经过几步之后,一条折线就被计算出来了。一般情况下,这条折线与原先的未知曲线偏离不远,并且任意小的误差都可以通过减少步长来得到。

欧拉方法的推导

图示为方程的数值积分。蓝色为欧拉法,绿色为中点法,红色为精确解。所用步长为
图示为同一个方程在步长时的结果。可以看出中点法比欧拉法收敛更快。

以以下微分方程为例

希望用 y 在点 (t0,y(t0)) 附近的线性近似来得到其近似解(也就是 y泰勒展开式的前二项)。利用时间 tn 时的数值,若用单步的欧拉方法,可得到时间 tn+1 = tn + h 时的近似值如下:

欧拉方法是一种显型方法,也就是说 的解是 , 的显函数。

欧拉方法可以求解一阶的微分方程,而任何阶的微分方程都可以表示成一阶的微分方程。

对于微分方程

可以通过新设辅助变量 ,得到以下的等价方程

这是一个以为变量的一阶系统,因此可以用欧拉法求解,也可以使用其他的一阶数值方法。[1]

应用例题

设微分方程为 ,初始值为 ,试用欧拉方法求 的近似值,步长为

欧拉法为:

首先求(当),的定义为,因此有

透过以上步骤,求得解曲线在点的切线斜率。回顾直线斜率的定义:变化量和变化量的比值,亦记作

接着是

重复以上步骤求出的值。

由于欧拉法属于递归算法,把运算整理成表格也许有助于避免计算错误。

1 0 1 1 1 2
2 1 2 1 2 4
4 2 4 1 4 8

局部截尾误差

欧拉法的局部截尾误差(Local truncation error, LTE)是指在实施一次欧拉法所产生的误差,是指经过一步的数值解与在时精确解的误差。数值解由以下给出:

对于精确解,使用泰勒级数展开给出:

欧拉法的局部截尾误差为:

拥有三阶有界导数时,这个结果是成立的。[2]

结果显示:当步长很小时,局部截尾误差近似与 成比例。也就是说,欧拉法精确度不如其他的高阶方法(如龙格-库塔法线性多步法英语Linear multistep method),这些方法的局部截尾误差与p>2)成比例。

全局截尾误差

全局截尾误差(Global truncation error, GTE)是指在一个固定时间时的误差,但是很多步之后该方法需要以从初始时间到达该时间来计算。全局截尾误差可以看做是一个每一步的局部截尾误差的累积效应。[3] 经过的步骤数为,而每步的误差则正比于。因此,可以预期全局截尾误差是正比于的。[4]

这个直观的推测可以被严谨地证明。如果解存在二阶有界导数,并且关于利普希茨连续的,那么全局截尾误差是有界的:

其中 是在给定区间内的二阶导数的上界,的利普希茨常数。[5]

这种精确的形式其实是没有什么意义的,通常情况下这个上界都会严重高估了欧拉法所造成的实际误差。[6]重要的是,这显示了全局截尾误差是近似正比于的,所以欧拉法被称为是一阶的。[7]

相关条目

注脚

  1. ^ 命名自它的发明者莱昂哈德·欧拉
  2. ^ 初值问题
  3. ^ 即每步误差
  4. ^ 欧拉方法经常应用于作为构建一些更复杂方法的基础,例如预估-校正方法

参考资料

  1. ^ Butcher 2003,第3页;Hairer, Nørsett & Wanner 1993,第2页
  2. ^ Butcher 2003,第60页
  3. ^ Atkinson 1989,第344页
  4. ^ Butcher 2003,第49页
  5. ^ Atkinson 1989,第346页;Lakoba 2012,公式 (1.16)
  6. ^ Iserles 1996,第7页
  7. ^ Butcher 2003,第63页

参考文献