欧拉方法

维基百科,自由的百科全书
跳转至: 导航搜索

数学计算机科学中,欧拉方法,命名自它的发明者萊昂哈德·歐拉,是一种一阶数值方法,用以对给定初值的常微分方程(即初值問題)求解。它是一种解决数值常微分方程的最基本的一类显型方法(Explicit method)。

非形式化的几何诠释[编辑]

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

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

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

顺着切线向前走一小步到点A_1。如果我们假设A_1是曲线上的一点(实际上通常不是),那么同样的道理就可以确定下一条切线,依此类推。在经过几步之后,一条折线A_0A_1A_2A_3\dots就被计算出来了。大部分的情况下,这条折线与原先的未知曲线偏离不远,并且任意小的误差都可以通过减少步长来得到(虽然对于刚性方程而言会比较复杂。下文将提到)。

欧拉方法的推导[编辑]

图示为方程y'=y, y(0)=1.的数值积分。蓝色为欧拉法,绿色为中点法,红色为精确解。y=e^t. 步长h=1.0.
图示为同一个方程在步长h=0.25时的结果。可以看出中点法比欧拉法收敛更快。

以以下微分方程為例

y'(t) = f(t,y(t)), \qquad \qquad y(t_0)=y_0,

希望用 y 在點 (t0,y(t0)) 附近的線性近似來得到其近似解(也就是 y泰勒展開式的前二項)。利用時間 tn 時的數值,若用單步的欧拉方法,可得到時間 tn+1 = tn + h 時的近似值如下:

 y_{n+1} = y_n + hf(t_n,y_n).  \qquad \qquad

欧拉方法是一種顯型方法,也就是說 y_{n+1} 的解是 y_i, i \leq n 的顯函數。

欧拉方法可以求解一階的微分方程,一個N階的微分方程可以用導入 N-1 個變數來表示 y', y'', ..., y^{(N)} 的方式,分解為N個一階的微分方程。因此可以用欧拉方法求解以下的向量 \mathbf{y}(t)=(y(t),y'(t),y''(t),...,y^{(N)}(t)) 來得到高階微分方程的解。

应用例题[编辑]

设微分方程为 y'=y ,初始值为 y(0)=1, 试用欧拉方法求 y_3的近似值,步长为 h=1.

欧拉法则表达式:

 y_{n+1} = y_n + hf(t_n,y_n).  \qquad \qquad

首先求f(t_0, y_0)n = 0 . 此微分方程仅有一个变量 y, 因此无须考虑给y赋值.

 f(y_0)=1. \qquad \qquad

以上解得切线的斜率,切点(0,1)在解曲线上。回顾斜率的定义:在单位时间内,y变量和t变量的比值, 可以计作为 \operatorname{d}y/\operatorname{d}t.

 h \cdot f(y_0) = 1 \cdot 1 = 1. \qquad \qquad
 y_0 + hf(y_0) = y_1 = 1 + 1 \cdot 1 = 2. \qquad \qquad

重复以上步骤求出 y_2y_3 的值.

 y_2 = y_1 + hf(y_1) = 2 + 1 \cdot 2 = 4 \qquad \qquad
 y_3 = y_2 + hf(y_2) = 4 + 1 \cdot 4 = 8 \qquad \qquad

由于欧拉法则属于递归算法,为了避免出现计算错误,建议使用Excel或者类似的制表程序

y_n t_n y'(t) h dy y_{n+1}
1 0 1 1 1 2
2 1 2 1 2 4
4 2 4 1 4 8

误差分析[编辑]

参考文献[编辑]

  • E. Hairer, S.P. Norsett, G. Wanner: 普通微分等式解法 I, Springer Verlag
  • M. Hermann: 常微分等式的数值控制,初值及边界值问题, 奥登堡出版社,慕尼黑与维也纳, 2004, ISBN 3-486-27606-9