问题定义

本章我们关注「初值问题」的数值解法。所谓初值问题是指给定

$$ \left\{\begin{aligned} &\frac{\mathrm{d}y}{\mathrm{d}x} =f(x,y), a\leqslant x\leqslant b \\ &y(a)=\eta \end{aligned}\right. $$

求 $y(x)$ 的问题。数值解法即不用求出 $y(x)$ 的表达式,而只要得到一系列 $x$ 对应的 $y(x)$ 的数表。

Euler 法

在 $x_n$ 处 Taylor 展开 $y(x_{n+1})$,有

$$ y(x_{n+1})=y(x_n)+hy'(x_n)+\frac{h^2}{2!}y''(\xi), \xi\in(x_n, x_{n+1}) $$

略去余项,改写为迭代形式,得到

$$ \left\{\begin{aligned} &y_{n+1}=y_n+hf(x_n, y_n)\\ &y_0=\eta \end{aligned}\right. $$

此为解初值问题的 Euler 法。

梯形法

用梯形公式计算积分有

$$ y_{n+1}=y_n+\frac{h}2(f(x_n, y_n) + f(x_{n+1}, y_{n+1})) $$

显然这是隐式方法。

Runge-Kutta 法

显式 RK 方法的一般形式为

$$ \left\{\begin{aligned} &y_{n+1}=y_n+h\sum_{i=1}^sb_iK_i\\ &K_i=f(x_n+c_ih, y_n+h\sum_{j=1}^{i-1}a_{ij}K_j) \end{aligned}\right. $$

其中 $b_i,c_i,a_{ij}$ 都是常数,$c_1=0,a_{1j}=0, j=1, 2, \cdots,s-1$,$s$ 为「级数」。

改进的 Euler 方法(2 级 2 阶 RK 法)