一阶常微分方程与定性理论

欧拉法(Euler's method)

/ OY-ler /

多数微分方程的解没有公式——但我们仍能逐点地数值算出答案。欧拉法是最早也最简单的这类数值求解器,其他一切方法都由它衍生。其想法近乎稚拙:你知道当前位置,又从方程知道此刻的斜率,于是沿这个方向迈一小步直走,再从新位置重新看斜率,如此反复。

具体地,要把初值问题 dy/dx = f(x, y)、y(x_0) = y_0 向前推进,选一个小步长 h。从当前点 (x_n, y_n),方程给出斜率 f(x_n, y_n);沿切线走一步落到 y_{n+1} = y_n + h*f(x_n, y_n),并令 x_{n+1} = x_n + h。反复进行,就把近似解描成一条由小切线段拼成的折线——这正是它也被称作切线法或折线法的原因。它就是被做成算法的方向场:在每点读出当地斜率,沿它走。

欧拉法是一切数值解常微分方程的概念基础,但实践中它粗糙,你应知道它诚实的局限。它是一阶精度的:步长减半只大致把误差减半,所以高精度要求极小且极多的步。误差会累积,对某些方程(刚性方程)除非 h 极小,否则方法会失稳。真实软件用它更聪明的后裔——改进欧拉法(休恩法),尤其是龙格-库塔方法——它们走更巧的试探步,每步换来高得多的精度。但它们每一个都始于欧拉那一个诚实的想法:沿斜率迈步。

用步长 h = 0.5 解 dy/dx = y、y(0) = 1。第一步:y_1 = 1 + 0.5*1 = 1.5,在 x = 0.5。第二步:y_2 = 1.5 + 0.5*1.5 = 2.25,在 x = 1。真值 e^1 约为 2.718,可见这粗糙的步长明显偏低——缩小 h 会缩小差距。

每一步都沿当前切线走;步长越小,越贴近真实曲线。

步长越小,截断误差越小,但步数增多,舍入误差随之累积——存在一个实用下限,再缩小 h 也无济于事。而且欧拉法只有一阶精度;真正干活时,龙格-库塔或其他高阶格式几乎总是更恰当的选择。

又称
forward Euler methodtangent-line method欧拉折线法歐拉折線法