4150 字
21 分钟
Chapter9:常微分方程数值解法

概述#

这一章研究一阶常微分方程初值问题

{y(x)=f(x,y),axb,y(a)=y0.\begin{cases} y'(x)=f(x,y), & a\le x\le b,\\ y(a)=y_0. \end{cases}

很多微分方程无法写出解析解,但在数值模拟中仍需知道解随时间或空间的变化。因此,数值方法不再试图直接求出完整函数表达式,而是在离散节点

xn=a+nh,n=0,1,,N,x_n=a+nh,\qquad n=0,1,\ldots,N,

上计算近似值

yny(xn).y_n\approx y(x_n).

其中:

  • hh:步长(step size),通常有 h=(ba)/Nh=(b-a)/N
  • y(xn)y(x_n):微分方程真解在 xnx_n 处的精确值
  • yny_n:数值方法计算得到的近似值

本章的主线是:

连续初值问题 \rightarrow 离散节点 \rightarrow 递推格式 \rightarrow 误差与稳定性分析。

课堂重点围绕 Euler 方法展开,并进一步介绍了梯形公式、改进 Euler 法和经典四阶 Runge-Kutta 法。

NOTE

配图占位:插入手写 PPT 中“连续解曲线与等距节点 x0,x1,,xnx_0,x_1,\ldots,x_n”的示意图,用于说明数值解只计算离散节点上的近似值。


目录#


课程范围#

教材第九章包含 Euler 方法、改进 Euler 方法、Runge-Kutta 方法、线性多步法以及相容性、收敛性和稳定性理论。课堂实际讲授范围如下:

教材内容课堂处理本笔记处理
§9.1 Euler 方法详细讲授完整记录,是考试核心
§9.2 改进 Euler 方法讲授梯形公式与预测-校正形式完整记录,作为了解内容
§9.3 Runge-Kutta 方法介绍经典四阶 RK 公式并手算一步记录公式与课堂例题,教师明确说明不考
§9.4 线性多步法只解释“单步法 / 多步法”的概念不记录 Adams、Milne、Hamming 等具体公式
§9.5 相容性、收敛性与稳定性只作定性说明记录步长与稳定性的直观结论,不展开理论证明

教师在复习说明中强调:

  • 第九章考试主要考 Euler 法的计算
  • 可能考向前 Euler,也可能考向后 Euler
  • 向后 Euler 可与 Newton 迭代结合
  • 可能要求用 Taylor 展开推导 Euler 法的局部截断误差
  • 四阶 Runge-Kutta 法不考
  • 编程不考

初值问题的离散化#

给定初值问题

{y(x)=f(x,y),y(a)=y0,\begin{cases} y'(x)=f(x,y),\\ y(a)=y_0, \end{cases}

将区间 [a,b][a,b] 等分:

xn=a+nh,h=baN.x_n=a+nh,\qquad h=\frac{b-a}{N}.

初值给出

y0=y(a).y_0=y(a).

之后利用递推公式依次计算

y1,y2,,yN.y_1,y_2,\ldots,y_N.

数值解因此是一组离散点:

(x0,y0),(x1,y1),,(xN,yN).(x_0,y_0),(x_1,y_1),\ldots,(x_N,y_N).

如果需要得到区间内的连续近似曲线,可再对这些离散点进行插值;本章首先关心各节点上的数值。

通常假设 f(x,y)f(x,y) 连续,并且关于 yy 满足适当的 Lipschitz 条件,从而初值问题在所考虑区间内存在唯一解。课堂没有展开这一理论条件。


数值格式的三种构造思路#

数值微分观点#

用差商近似导数:

y(xn)y(xn+1)y(xn)h.y'(x_n)\approx \frac{y(x_{n+1})-y(x_n)}{h}.

再利用微分方程

y(xn)=f(xn,y(xn)),y'(x_n)=f(x_n,y(x_n)),

即可构造递推格式。

数值积分观点#

将微分方程在 [xn,xn+1][x_n,x_{n+1}] 上积分:

xnxn+1y(x)dx=xnxn+1f(x,y(x))dx.\int_{x_n}^{x_{n+1}}y'(x)\,dx = \int_{x_n}^{x_{n+1}}f(x,y(x))\,dx.

得到精确关系

y(xn+1)y(xn)=xnxn+1f(x,y(x))dx.y(x_{n+1})-y(x_n) = \int_{x_n}^{x_{n+1}}f(x,y(x))\,dx.

因此,只要用某种数值积分公式近似右端积分,就能得到一种常微分方程数值格式:

  • 左矩形公式 \rightarrow 向前 Euler 法
  • 右矩形公式 \rightarrow 向后 Euler 法
  • 梯形公式 \rightarrow 隐式梯形格式

Taylor 展开观点#

xnx_n 处展开:

y(xn+h)=y(xn)+hy(xn)+h22y(xn)+.y(x_n+h) = y(x_n)+hy'(x_n)+\frac{h^2}{2}y''(x_n)+\cdots.

利用微分方程及其导数关系,可以构造高阶方法。课堂没有单独讲 Taylor 方法,主要将 Taylor 展开用于局部截断误差分析。


向前 Euler 法#

格式推导#

xnx_n 处使用向前差商:

y(xn+1)y(xn)hy(xn)=f(xn,y(xn)).\frac{y(x_{n+1})-y(x_n)}{h} \approx y'(x_n) =f(x_n,y(x_n)).

将精确值换成数值近似,得到

yn+1=yn+hf(xn,yn)\boxed{ y_{n+1}=y_n+h f(x_n,y_n) }

这就是向前 Euler 法(forward Euler method),课程中简称 Euler 法。

从数值积分角度看,它等价于用左端点矩形近似积分:

xnxn+1f(x,y(x))dxhf(xn,yn).\int_{x_n}^{x_{n+1}}f(x,y(x))\,dx \approx h f(x_n,y_n).

几何意义#

在点 (xn,yn)(x_n,y_n) 处,微分方程给出的斜率为

f(xn,yn).f(x_n,y_n).

向前 Euler 法用该点的切线沿 xx 方向前进一个步长 hh

yn+1=yn+h×当前斜率.y_{n+1}=y_n+h\times \text{当前斜率}.

它在每一步都把曲线局部近似成直线。

NOTE

配图占位:插入教材图 9-1 或手写 PPT 中“从 PnP_n 沿当前切线推进到下一节点”的 Euler 几何示意图。

显式格式#

yn+1=yn+hf(xn,yn)y_{n+1}=y_n+h f(x_n,y_n)

中,右端只含已知量。已知 yny_n 后,通过函数求值和四则运算即可直接得到 yn+1y_{n+1}

这种格式称为 显式格式(explicit method)

计算流程#

输入:f(x,y)f(x,y)、区间端点 a,ba,b、初值 y0y_0、步长 hh

x[0] = a
y[0] = y0
for n = 0, 1, ..., N-1:
x[n+1] = x[n] + h
y[n+1] = y[n] + h*f(x[n], y[n])

课堂程序演示分别取 h=0.2,0.1,0.05h=0.2,0.1,0.05。结果显示:

  • 步长越小,数值曲线通常越接近精确解
  • 初值处误差为零
  • 随着递推步数增加,各步误差会逐渐积累
NOTE

配图占位:插入课堂程序输出的两幅图:

  1. h=0.2,0.1,0.05h=0.2,0.1,0.05 时向前 Euler 数值解与精确解的对比图;
  2. 三种步长下误差随 tt 变化的曲线图。

课堂例题:向前 Euler 法#

求初值问题

{dydt=yt2+1,y(0)=0.5,0t2.\begin{cases} \dfrac{dy}{dt}=y-t^2+1,\\ y(0)=0.5, \end{cases} \qquad 0\le t\le 2.

该方程的精确解为

y(t)=(t+1)2et2.y(t)=(t+1)^2-\frac{e^t}{2}.

选择这个问题的原因是:它仍是一阶线性方程,精确解已知,便于直接比较数值误差。

h=0.2,tn=0.2n.h=0.2,\qquad t_n=0.2n.

其中

f(t,y)=yt2+1.f(t,y)=y-t^2+1.

向前 Euler 格式为

yn+1=yn+0.2(yntn2+1).y_{n+1}=y_n+0.2(y_n-t_n^2+1).

第一步#

y1=y0+0.2(y0t02+1)=0.5+0.2(0.502+1)=0.8.\begin{aligned} y_1 &=y_0+0.2(y_0-t_0^2+1)\\ &=0.5+0.2(0.5-0^2+1)\\ &=0.8. \end{aligned}

因此

y(0.2)y1=0.8.y(0.2)\approx y_1=0.8.

精确值为

y(0.2)=(1.2)2e0.220.829299.y(0.2)=(1.2)^2-\frac{e^{0.2}}{2} \approx 0.829299.

此步误差约为

y(0.2)y10.029299.y(0.2)-y_1\approx 0.029299.

第二步#

y2=y1+0.2(y1t12+1)=0.8+0.2(0.80.22+1)=1.152.\begin{aligned} y_2 &=y_1+0.2(y_1-t_1^2+1)\\ &=0.8+0.2(0.8-0.2^2+1)\\ &=1.152. \end{aligned}

因此

y(0.4)y2=1.152.y(0.4)\approx y_2=1.152.

精确值为

y(0.4)=(1.4)2e0.421.214088.y(0.4)=(1.4)^2-\frac{e^{0.4}}{2} \approx 1.214088.

误差约为

y(0.4)y20.062088.y(0.4)-y_2\approx 0.062088.

后续各步完全按照同一递推公式计算。


向后 Euler 法#

格式#

将差商看作右端点 xn+1x_{n+1} 处导数的近似:

y(xn+1)y(xn)hy(xn+1)=f(xn+1,y(xn+1)).\frac{y(x_{n+1})-y(x_n)}{h} \approx y'(x_{n+1}) =f(x_{n+1},y(x_{n+1})).

得到向后 Euler 法(backward Euler method):

yn+1=yn+hf(xn+1,yn+1)\boxed{ y_{n+1}=y_n+h f(x_{n+1},y_{n+1}) }

从数值积分角度看,它对应右矩形公式:

xnxn+1f(x,y(x))dxhf(xn+1,yn+1).\int_{x_n}^{x_{n+1}}f(x,y(x))\,dx \approx h f(x_{n+1},y_{n+1}).

隐式格式#

未知量 yn+1y_{n+1} 同时出现在等式两边,不能直接代入计算。每前进一步,都要先解一个代数方程。

这种格式称为 隐式格式(implicit method)

G(z)=zynhf(xn+1,z).G(z)=z-y_n-hf(x_{n+1},z).

yn+1y_{n+1} 是方程

G(z)=0G(z)=0

的根。

ff 关于 yy 非线性时,这通常是非线性方程。

用 Newton 法求解每一步#

Newton 迭代为

z(k+1)=z(k)G(z(k))G(z(k)).z^{(k+1)} =z^{(k)}-\frac{G(z^{(k)})}{G'(z^{(k)})}.

由于

G(z)=1hfy(xn+1,z),G'(z)=1-hf_y(x_{n+1},z),

所以

z(k+1)=z(k)z(k)ynhf(xn+1,z(k))1hfy(xn+1,z(k))\boxed{ z^{(k+1)} =z^{(k)}- \frac{z^{(k)}-y_n-hf(x_{n+1},z^{(k)})} {1-hf_y(x_{n+1},z^{(k)})} }

通常取

z(0)=yn.z^{(0)}=y_n.

原因是相邻两个节点距离只有 hh,当解随 xx 连续变化时,yny_n 往往已经很接近 yn+1y_{n+1},因此是较好的初值。

教材也可使用不动点迭代:

z(k+1)=yn+hf(xn+1,z(k)),z^{(k+1)}=y_n+h f(x_{n+1},z^{(k)}),

但课堂更推荐 Newton 法:

  • ff 的解析表达式已知,fyf_y 通常容易得到
  • 初值 z(0)=ynz^{(0)}=y_n 较好
  • 在正常情况下通常只需少量迭代即可收敛

课堂例题:向后 Euler 第一步#

仍考虑

y=yt2+1,y(0)=0.5,y'=y-t^2+1,\qquad y(0)=0.5,

h=0.2h=0.2。第一步满足

y1=0.5+0.2(y10.22+1).y_1=0.5+0.2(y_1-0.2^2+1).

整理得

0.8y1=0.692,0.8y_1=0.692,

因此

y1=0.865.\boxed{y_1=0.865}.

这里 ff 关于 yy 是线性的,所以可以直接解出;一般非线性问题需用 Newton 迭代。

若写成

G(z)=z0.50.2(z0.04+1)=0.8z0.692,G(z)=z-0.5-0.2(z-0.04+1)=0.8z-0.692,

G(z)=0.8G'(z)=0.8。从 z(0)=0.5z^{(0)}=0.5 出发,Newton 法一步便得到精确根 z=0.865z=0.865


显式格式与隐式格式#

显式格式#

特点:

  • yn+1y_{n+1} 可由已知量直接计算
  • 每一步计算简单
  • 易于编程
  • 步长往往受到稳定性限制

典型方法:

  • 向前 Euler 法
  • 改进 Euler 法
  • 经典四阶 Runge-Kutta 法

隐式格式#

特点:

  • yn+1y_{n+1} 出现在待求方程中
  • 每一步需要解线性或非线性方程
  • 单步计算成本较高
  • 稳定性通常更好,常能允许较大的步长

典型方法:

  • 向后 Euler 法
  • 隐式梯形公式

课堂强调的实际权衡是:

显式方法每一步便宜,但可能被迫使用很小的时间步长;隐式方法每一步更贵,却可能显著减少总步数。

在大规模流体计算中,每个时间层本身就可能涉及超大规模方程组,因此步长限制会直接决定总计算量。

WARNING

课堂用“隐式格式更稳定、步长更自由”突出两类方法的差异。严格地说,稳定性仍取决于具体方程、具体方法和步长;本课程不展开稳定域理论,也不能把“隐式”简单理解成在任何问题上都无条件稳定。


梯形公式#

由精确积分关系

y(xn+1)y(xn)=xnxn+1f(x,y(x))dx,y(x_{n+1})-y(x_n) = \int_{x_n}^{x_{n+1}}f(x,y(x))\,dx,

使用梯形公式:

xnxn+1f(x,y(x))dxh2[f(xn,yn)+f(xn+1,yn+1)].\int_{x_n}^{x_{n+1}}f(x,y(x))\,dx \approx \frac{h}{2} \left[ f(x_n,y_n)+f(x_{n+1},y_{n+1}) \right].

得到

yn+1=yn+h2[f(xn,yn)+f(xn+1,yn+1)]\boxed{ y_{n+1} =y_n+\frac{h}{2} \left[ f(x_n,y_n)+f(x_{n+1},y_{n+1}) \right] }

它同时利用区间左右端点的斜率,精度高于 Euler 法。

由于右端仍含 yn+1y_{n+1},梯形公式是隐式格式,一般需用 Newton 法或不动点迭代求解。

其局部截断误差为

O(h3).O(h^3).
NOTE

配图占位:插入手写 PPT 中“用梯形面积近似 xnxn+1f(x,y(x))dx\int_{x_n}^{x_{n+1}}f(x,y(x))\,dx”的图,并与左矩形公式对照。


改进 Euler 法#

隐式梯形公式需要求解方程。改进 Euler 法先用向前 Euler 预测终点,再用起点和预测终点处的平均斜率校正。

预测#

y~n+1=yn+hf(xn,yn)\boxed{ \widetilde y_{n+1} =y_n+h f(x_n,y_n) }

校正#

yn+1=yn+h2[f(xn,yn)+f(xn+1,y~n+1)]\boxed{ y_{n+1} =y_n+\frac{h}{2} \left[ f(x_n,y_n)+f(x_{n+1},\widetilde y_{n+1}) \right] }

将预测式代入校正式:

yn+1=yn+h2[f(xn,yn)+f(xn+h,yn+hf(xn,yn))].y_{n+1} =y_n+\frac{h}{2} \left[ f(x_n,y_n) +f\left(x_n+h,\,y_n+h f(x_n,y_n)\right) \right].

所有右端量均已知,因此它是显式格式。

直观上:

  1. 用起点斜率做一次 Euler 预测;
  2. 在预测终点计算新的斜率;
  3. 用起点斜率与终点预测斜率的平均值重新前进。

改进 Euler 法也称为 预测-校正法。它的局部截断误差为

O(h3),O(h^3),

与隐式梯形公式具有相同的局部精度阶,但不需要在每一步解非线性方程。

需要注意:它仍是显式方法,步长仍可能受到稳定性约束。


单步法与多步法#

单步法#

若已知 yny_n,便能通过某种计算得到 yn+1y_{n+1},称为单步法。

一般形式为

yn+1=yn+hΦ(xn,yn,h).y_{n+1}=y_n+h\Phi(x_n,y_n,h).

本章课堂涉及的以下方法均是单步法:

  • 向前 Euler 法
  • 向后 Euler 法
  • 梯形公式
  • 改进 Euler 法
  • 四阶 Runge-Kutta 法

四阶 Runge-Kutta 法虽然包含 K1,K2,K3,K4K_1,K_2,K_3,K_4,这些只是当前一步内部的中间量;计算 yn+1y_{n+1} 时仍只需要前一个节点的 yny_n,所以它仍是单步法。

多步法#

若计算 yn+1y_{n+1} 必须同时使用

yn,yn1,,ynk+1,y_n,y_{n-1},\ldots,y_{n-k+1},

则称为 kk 步法。

多步法需要多个起始值,因此通常先用单步法计算前几个节点。教材 §9.4 中的 Adams、Milne、Hamming 方法属于这一类,但课堂未讲具体公式,本课程考试不要求。


局部截断误差#

定义#

考虑一般单步格式

yn+1=yn+hΦ(xn,yn,h).y_{n+1}=y_n+h\Phi(x_n,y_n,h).

假设在第 nn 步输入的是精确值 y(xn)y(x_n),只使用该格式推进一步。格式给出的结果为

y(xn)+hΦ(xn,y(xn),h).y(x_n)+h\Phi(x_n,y(x_n),h).

它与下一节点精确值 y(xn+1)y(x_{n+1}) 的差定义为局部截断误差:

Rn+1=y(xn+1)[y(xn)+hΦ(xn,y(xn),h)]\boxed{ R_{n+1} =y(x_{n+1}) - \left[ y(x_n)+h\Phi(x_n,y(x_n),h) \right] }

含义是:

假设此前没有任何误差,只考察该格式在当前一步新产生了多少误差。

因此,局部截断误差衡量的是格式本身的一步精度,不包含前面各步误差的累积。

不同教材可能采用相反的正负号定义;判断误差阶时不受影响。

向前 Euler 法的局部截断误差#

向前 Euler 格式为

yn+1=yn+hf(xn,yn).y_{n+1}=y_n+h f(x_n,y_n).

于是

Rn+1=y(xn+1)y(xn)hf(xn,y(xn))=y(xn+h)y(xn)hy(xn).\begin{aligned} R_{n+1} &=y(x_{n+1})-y(x_n)-h f(x_n,y(x_n))\\ &=y(x_n+h)-y(x_n)-h y'(x_n). \end{aligned}

xnx_n 处对 y(xn+h)y(x_n+h) 作 Taylor 展开:

y(xn+h)=y(xn)+hy(xn)+h22y(ξn),y(x_n+h) =y(x_n)+hy'(x_n)+\frac{h^2}{2}y''(\xi_n),

其中

ξn(xn,xn+1).\xi_n\in(x_n,x_{n+1}).

代入后,前两项相消:

Rn+1=h22y(ξn)=O(h2)\boxed{ R_{n+1}=\frac{h^2}{2}y''(\xi_n)=O(h^2) }

因此:

  • 向前 Euler 法的局部截断误差为 O(h2)O(h^2)
  • 向前 Euler 法是一阶方法

这里“一阶方法”描述的是整体误差通常为 O(h)O(h),不应与局部截断误差的 O(h2)O(h^2) 混淆。

局部误差与整体误差#

局部截断误差#

  • 假设当前节点值精确
  • 只考察一步新产生的误差
  • 向前 Euler:O(h2)O(h^2)

整体误差#

定义为

en=y(xn)yn.e_n=y(x_n)-y_n.

它包含:

  • 当前一步产生的新误差
  • 前面各步误差传播和积累的结果

在适当光滑性和稳定性条件下,区间长度固定时需要约 N1/hN\sim 1/h 步,因此向前 Euler 的 O(h2)O(h^2) 局部误差累积后,整体误差通常为

O(h).O(h).

Taylor 展开是本课程中估计局部截断误差的核心工具。


经典四阶 Runge-Kutta 法#

计算格式#

经典四阶 Runge-Kutta 法简称 RK4:

yn+1=yn+h6(K1+2K2+2K3+K4)\boxed{ y_{n+1} =y_n+\frac{h}{6}(K_1+2K_2+2K_3+K_4) }

其中

K1=f(xn,yn),K2=f(xn+h2,yn+h2K1),K3=f(xn+h2,yn+h2K2),K4=f(xn+h,yn+hK3).\begin{aligned} K_1&=f(x_n,y_n),\\ K_2&=f\left(x_n+\frac h2,\,y_n+\frac h2K_1\right),\\ K_3&=f\left(x_n+\frac h2,\,y_n+\frac h2K_2\right),\\ K_4&=f(x_n+h,\,y_n+hK_3). \end{aligned}

四个斜率分别对应:

  • 区间起点
  • K1K_1 预测的中点
  • K2K_2 再次预测的中点
  • K3K_3 预测的终点

最后按权重

1:2:2:11:2:2:1

取加权平均。

RK4 的性质:

  • 显式方法
  • 单步法
  • 每一步计算四次 ff
  • 局部截断误差为 O(h5)O(h^5)
  • 整体误差通常为 O(h4)O(h^4)
  • 在稳定性允许时,是工程计算中非常常用的方法

课堂例题:计算一步 RK4#

{y=xy,y(0)=0,\begin{cases} y'=x-y,\\ y(0)=0, \end{cases}

h=0.1.h=0.1.

计算 y(0.1)y(0.1) 的近似值。

这里

f(x,y)=xy,x0=0,y0=0.f(x,y)=x-y, \qquad x_0=0, \qquad y_0=0.

计算 K1K_1#

K1=f(0,0)=0.K_1=f(0,0)=0.

计算 K2K_2#

K2=f(0.05,0+0.05K1)=f(0.05,0)=0.05.\begin{aligned} K_2 &=f\left(0.05,0+0.05K_1\right)\\ &=f(0.05,0)\\ &=0.05. \end{aligned}

计算 K3K_3#

K3=f(0.05,0+0.05K2)=f(0.05,0.0025)=0.0475.\begin{aligned} K_3 &=f\left(0.05,0+0.05K_2\right)\\ &=f(0.05,0.0025)\\ &=0.0475. \end{aligned}

计算 K4K_4#

K4=f(0.1,0+0.1K3)=f(0.1,0.00475)=0.09525.\begin{aligned} K_4 &=f\left(0.1,0+0.1K_3\right)\\ &=f(0.1,0.00475)\\ &=0.09525. \end{aligned}

计算 y1y_1#

y1=0+0.16(0+2×0.05+2×0.0475+0.09525)=0.0048375.\begin{aligned} y_1 &=0+\frac{0.1}{6} \left(0+2\times0.05+2\times0.0475+0.09525\right)\\ &=0.0048375. \end{aligned}

因此

y(0.1)0.0048375.\boxed{y(0.1)\approx 0.0048375}.

该方程精确解为

y(x)=x1+ex,y(x)=x-1+e^{-x},

y(0.1)0.004837418,y(0.1)\approx 0.004837418,

一步 RK4 的误差约为 8.2×1088.2\times10^{-8}

课堂要求理解 RK4 公式的代入顺序,但教师明确说明本次考试不考 RK4。


步长、误差与稳定性#

步长 hh 同时影响精度、稳定性和计算量。

步长减小#

通常有:

  • 单步截断误差减小
  • 数值结果更接近精确解
  • 总步数
N=bahN=\frac{b-a}{h}

增大

  • 计算时间和误差累积步数增加

因此,hh 不能只按“越小越好”理解。

精度问题与稳定性问题#

两者的表现不同:

  • 精度不足:结果仍大体跟随真解,但偏差较大
  • 数值不稳定:结果可能迅速发散到极大值,或正负剧烈振荡

如果计算结果直接“爆掉”,通常已经超出单纯精度不足的范畴。

显式与隐式的实际选择#

  • 显式格式能稳定计算,且精度满足要求时,通常优先使用显式格式
  • 若显式格式必须取极小步长,导致总计算量过大,可考虑隐式格式
  • 隐式格式每一步需要解方程,但可通过较大的步长减少总步数

本课程只要求掌握这一逻辑,不要求计算稳定域或证明稳定性定理。


方法比较#

方法形式单步 / 多步每步主要工作局部截断误差整体阶数
向前 Euler显式单步1 次函数求值O(h2)O(h^2)1 阶
向后 Euler隐式单步解代数方程O(h2)O(h^2)1 阶
梯形公式隐式单步解代数方程O(h3)O(h^3)2 阶
改进 Euler显式单步2 次函数求值O(h3)O(h^3)2 阶
经典 RK4显式单步4 次函数求值O(h5)O(h^5)4 阶

记忆主线:

  • 向前 Euler:用起点斜率
  • 向后 Euler:用终点斜率
  • 梯形公式:平均起点和真实终点斜率
  • 改进 Euler:平均起点和预测终点斜率
  • RK4:综合起点、两个中点和终点的四个斜率

考试与复习要求#

必须掌握#

  1. 初值问题的离散记号:
xn=a+nh,yny(xn).x_n=a+nh,\qquad y_n\approx y(x_n).
  1. 向前 Euler 公式:
yn+1=yn+hf(xn,yn).y_{n+1}=y_n+h f(x_n,y_n).
  1. 向后 Euler 公式:
yn+1=yn+hf(xn+1,yn+1).y_{n+1}=y_n+h f(x_{n+1},y_{n+1}).
  1. 判断显式格式与隐式格式。

  2. 根据给定初值,手算 Euler 法连续两步。

  3. 将向后 Euler 写成方程,并在需要时使用 Newton 法求 yn+1y_{n+1}

  4. 说清局部截断误差的含义:

假设当前节点值精确,仅使用格式推进一步时产生的误差。

  1. 用 Taylor 展开推出向前 Euler 的局部截断误差:
Rn+1=h22y(ξn)=O(h2).R_{n+1}=\frac{h^2}{2}y''(\xi_n)=O(h^2).
  1. 区分:
  • 局部截断误差 O(h2)O(h^2)
  • Euler 方法整体一阶,整体误差通常为 O(h)O(h)

了解即可#

  • 梯形公式
  • 改进 Euler / 预测-校正法
  • 单步法与多步法的概念
  • 经典四阶 Runge-Kutta 法的计算流程
  • 显式与隐式方法的稳定性差异

本课程不要求#

  • RK4 考试计算
  • Adams、Milne、Hamming 等线性多步公式
  • 相容性、收敛性和稳定性的完整理论证明
  • 稳定域计算
  • 编程题
Chapter9:常微分方程数值解法
https://www.sleepyfish2031.top/posts/课程笔记/计算方法/chapter9/
作者
Sleepyfish
发布于
2026-06-22
许可协议
CC BY-NC-SA 4.0