010 The Euler or Tangent Line Method 欧拉法或切线法
为了讨论数值近似法,主要集中于一阶微分方程的初值问题 假定 在平面 内某个包含 的矩形内是连续的,根据定理 2.4.2,在包含 的某个区间内有唯一解 。如果方程 是非线性的,解存在的区间比较难确定,或许无法表达成 的某种简单关系。不过这里假定要讨论的各种情况下,在感兴趣的区间内,初始问题 存在唯一解。
在 2.7 小节,我们简单的讨论过欧拉法,也称为切线法。为了推导这种方法,将 在 写作如下形式 使用差的商表示微分得到 如果用 代替 那么就得到了欧拉公式 如果步长 一样,用 表示,用 表示 ,那么上式可以简化为 欧拉法就是反复使用 或者 计算得到一系列的值 ,它们是解 在 的近似值。
这里我们分析的初值问题如下。 是一阶线性方程,容易求解,结合初始条件 那么解是 这个问题有解析解,因此不必使用数值法。不过精确的解可以用于评估数值法的精度。这一章我们会始终使用这个问题来评估不同的数值方法。 的解彼此迅速发散,因此可以预见在中等长度的区间上,想要近似都是一个很困难的事情。这也是选择这个问题的原因之一,它能很容易的观察到更有效的方法的收益。
例 1 使用欧拉公式 来近似求解初值问题 的解 ,区间要求是 ,步长 。
解:使用计算机辅助,得到下表。精度一般。如果 ,从 到 需要 2000 步,计算量相当大才得到一个比较好的精度。后续会讨论其他数值方法,使用更大的步长更少的计算步骤就能得到同样甚至更好的精度。
| Exact | |||||
|---|---|---|---|---|---|
| 0.0 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 |
| 0.1 | 1.5475000 | 1.5761188 | 1.5952901 | 1.6076289 | 1.6090418 |
| 0.2 | 2.3249000 | 2.4080117 | 2.4644587 | 2.5011159 | 2.5053299 |
| 0.3 | 3.4333560 | 3.6143837 | 3.7390345 | 3.8207130 | 3.8301388 |
| 0.4 | 5.0185326 | 5.3690304 | 5.6137120 | 5.7754845 | 5.7942260 |
| 0.5 | 7.2901870 | 7.9264062 | 8.3766865 | 8.6770692 | 8.7120041 |
| 1.0 | 45.588400 | 53.807866 | 60.037126 | 64.382558 | 64.897803 |
| 1.5 | 282.07187 | 361.75945 | 426.40818 | 473.55979 | 479.25919 |
| 2.0 | 1745.6662 | 2432.7878 | 3029.3279 | 3484.1608 | 3540.2001 |
为了研究使用数值近似时的误差,同时也为了提出更精确的方法,从不同视角来审视欧拉法是很有帮助的。
一种方式是将问题写成积分方程。令 是初值问题 的解,那么从 到 积分得到 那么 里面的积分的几何意义是 到 之间曲线下的面积。如果我们用 在 处的值 代替函数,就是用矩形面积来代替实际区域。假定步长 都相等,那么 ,得到

为了得到 的近似 ,将 中 替换成其近似 。这样就得到了欧拉公式 。下一节会讨论通过更精确的积分近似得到更精确的算法。
另一个方法是假定 在 附近存在泰勒级数 即 如果仅保留两项,并且用 代替 那么得到了公式 。如果保留更多项,那么近似会更精确。通过泰勒级数的余项可以估算误差。
后向欧拉公式
欧拉公式的一个变化是使用区间右侧的函数值来估算积分,那么
这就是后向欧拉公式(backward Euler formula)
假定知道了 需要计算 ,而 并没有给出计算 的显式公式。这里仅仅是隐式地定义了 。因此,这个公式也称为隐式欧拉公式(implicit Euler formula)。如何求解 依赖于函数 。
例 2 使用后向欧拉公式 来近似求解初值问题 的解 ,区间要求是 ,步长 。
解:对于 ,后向欧拉公式 变成 微分方程 是线性的,因此上式也是线性的。整理得到 使用计算机辅助,得到下表。对于这个问题,后向欧拉法的值比精确值要大,而欧拉法的估算要比精确值小。后向欧拉法的误差也要比欧拉法大一些,不过当 很小时,差异不显著。
| Exact | |||||
|---|---|---|---|---|---|
| 0.0 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 | 1.0000000 |
| 0.1 | 1.6929688 | 1.6474375 | 1.6236638 | 1.6104634 | 1.6090418 |
| 0.2 | 2.7616699 | 2.6211306 | 2.5491368 | 2.5095731 | 2.5053299 |
| 0.3 | 4.4174530 | 4.0920886 | 3.9285724 | 3.8396379 | 3.8301388 |
| 0.4 | 6.9905516 | 6.3209569 | 5.9908303 | 5.8131282 | 5.7942260 |
| 0.5 | 10.996956 | 9.7050002 | 9.0801473 | 8.7472667 | 8.7120041 |
| 1.0 | 103.06171 | 80.402761 | 70.452395 | 65.419964 | 64.897803 |
| 1.5 | 959.44236 | 661.00731 | 542.12432 | 485.05825 | 479.25919 |
| 2.0 | 8934.0696 | 5435.7294 | 4172.7228 | 3597.4478 | 3540.2001 |
后向欧拉法的名字由来是因为它使用后向差的商 来近似微分方程 中的导数,而不是不是公式 中的前向差的商。
既然后向欧拉公式并不比前向欧拉公式更精确,还比前向欧拉公式更复杂,那么讨论的目的是什么呢?这是后向微分公式中最简单的例子,这类方法在讨论特定的微分方程时非常有效且更为精确。8.4 小节的末尾还会讨论这一点。