用户工具

站点工具


常微分方程:第十五章_数值解法

第十五章 数值解法

15.1 数值解的基本概念

定义15.1.1(初值问题)

$$\frac{dy}{dx} = f(x, y), \quad y(x_0) = y_0$$

数值解:在离散点 $x_0 < x_1 < \cdots < x_N$ 上求近似值 $y_n \approx y(x_n)$。

步长:$h_n = x_{n+1} - x_n$,常取等步长 $h$。

定义15.1.2(局部截断误差)

单步法 $y_{n+1} = y_n + h\phi(x_n, y_n, h)$ 的局部截断误差: $$T_{n+1} = y(x_{n+1}) - y(x_n) - h\phi(x_n, y(x_n), h)$$

若 $T_{n+1} = O(h^{p+1})$,称方法具有 $p$ 阶精度。

15.2 Euler方法

15.2.1 显式Euler方法

$$y_{n+1} = y_n + hf(x_n, y_n)$$

几何意义:用切线近似曲线。

局部截断误差:$T_{n+1} = \frac{h^2}{2}y(\xi) = O(h^2)$,一阶精度。 整体误差:$O(h)$ 15.2.2 隐式Euler方法(后退Euler) $$y_{n+1} = y_n + hf(x_{n+1}, y_{n+1})$$ 需解方程求 $y_{n+1}$,但稳定性更好。 15.2.3 梯形公式 $$y_{n+1} = y_n + \frac{h}{2}[f(x_n, y_n) + f(x_{n+1}, y_{n+1})]$$ 局部截断误差 $O(h^3)$,二阶精度。 15.2.4 改进Euler方法(Heun方法) 预测:$\bar{y}_{n+1} = y_n + hf(x_n, y_n)$ 校正:$y_{n+1} = y_n + \frac{h}{2}[f(x_n, y_n) + f(x_{n+1}, \bar{y}_{n+1})]$ 等价形式: $$\begin{cases}k_1 = f(x_n, y_n)
k_2 = f(x_n + h, y_n + hk_1)
y_{n+1} = y_n + \frac{h}{2}(k_1 + k_2)\end{cases}$$ 二阶精度。 ===== 15.3 Runge-Kutta方法 ===== 一般形式: $$\begin{cases}k_1 = f(x_n, y_n)
k_2 = f(x_n + c_2h, y_n + ha_{21}k_1)
\vdots
k_s = f(x_n + c_sh, y_n + h\sum_{j=1}^{s-1}a_{sj}k_j)
y_{n+1} = y_n + h\sum_{i=1}^s b_ik_i\end{cases}$$ 15.3.1 经典四阶Runge-Kutta(RK4) $$\begin{cases}k_1 = f(x_n, y_n)
k_2 = f(x_n + \frac{h}{2}, y_n + \frac{h}{2}k_1)
k_3 = f(x_n + \frac{h}{2}, y_n + \frac{h}{2}k_2)
k_4 = f(x_n + h, y_n + hk_3)
y_{n+1} = y_n + \frac{h}{6}(k_1 + 2k_2 + 2k_3 + k_4)\end{cases}$$ 局部截断误差 $O(h^5)$,四阶精度。 ===== 15.4 线性多步法 ===== 一般形式: $$\sum_{j=0}^k \alpha_j y_{n+j} = h\sum_{j=0}^k \beta_j f_{n+j}$$ 其中 $\alpha_k = 1$,$|\alpha_0| + |\beta_0| \neq 0$。 15.4.1 Adams-Bashforth方法(显式) 基于外推:$y_{n+k} = y_{n+k-1} + h\sum_{j=0}^{k-1}\beta_j f_{n+j}$ - 二阶:$y_{n+2} = y_{n+1} + \frac{h}{2}(3f_{n+1} - f_n)$ - 四阶:$y_{n+4} = y_{n+3} + \frac{h}{24}(55f_{n+3} - 59f_{n+2} + 37f_{n+1} - 9f_n)$ 15.4.2 Adams-Moulton方法(隐式) 基于内插:$y_{n+k} = y_{n+k-1} + h\sum_{j=0}^k \beta_j^* f_{n+j}$ - 二阶(梯形):$y_{n+1} = y_n + \frac{h}{2}(f_n + f_{n+1})$ - 四阶:$y_{n+3} = y_{n+2} + \frac{h}{24}(9f_{n+3} + 19f_{n+2} - 5f_{n+1} + f_n)$ 15.4.3 预测-校正方法 用显式方法预测,隐式方法校正: - PECE模式:预测(P) → 估值(E) → 校正(C) → 估值(E) - PEC模式:预测 → 估值 → 校正 ===== 15.5 稳定性与刚性问题 ===== 定义15.5.1(绝对稳定性) 用数值方法求解试验方程 $\frac{dy}{dx} = \lambda y$($\text{Re}(\lambda) < 0$),若对某步长 $h$ 有 $y_n \to 0$($n \to \infty$),称方法对该 $h$ 绝对稳定。 稳定区域:复平面上使方法绝对稳定的 $z = \lambda h$ 的集合。 15.5.1 各方法的稳定区域 - 显式Euler:单位圆 $|1+z| < 1$(圆盘) - 隐式Euler:$|z-1| > 1$(圆外,包含整个左半平面) - 梯形公式:整个左半平面(A-稳定) - RK4:较复杂区域,大致为左半平面的一部分 15.5.2 刚性问题 定义:若系统同时存在快变和慢变模式(特征值大小相差悬殊),称为刚性系统。 刚性比:$S = \frac{\max|\text{Re}\lambda_i|}{\min|\text{Re}\lambda_i|}$ 当 $S \gg 1$ 时,显式方法需要极小步长才能稳定,隐式方法更合适。 ===== 15.6 方程组与高阶方程 ===== 15.6.1 方程组的数值解 $$\mathbf{y}' = \mathbf{f}(x, \mathbf{y}), \quad \mathbf{y} = (y_1, \ldots, y_m)^T$$ RK4推广:各分量分别计算。 15.6.2 高阶方程降阶 $$y^{(m)} = f(x, y, y', \ldots, y^{(m-1)})$$ 令 $z_1 = y, z_2 = y', \ldots, z_m = y^{(m-1)}$,化为方程组: $$\begin{cases}z_1' = z_2
z_2' = z_3
\vdots
z_m' = f(x, z_1, \ldots, z_m)\end{cases}$$ ===== 15.7 边值问题的数值解 ===== 15.7.1 打靶法(Shooting Method) 将边值问题 $y
= f(x,y,y')$,$y(a) = \alpha$,$y(b) = \beta$ 转化为初值问题。

猜测 $y'(a) = s$,数值求解至 $x = b$,调整 $s$ 使得 $y(b;s) = \beta$。

用Newton迭代:$s_{n+1} = s_n - \frac{y(b;s_n)-\beta}{\partial y/\partial s|_{s_n}}$

15.7.2 差分法

在内部点 $x_i$ 上用差分近似导数: $$y(x_i) \approx \frac{y_{i+1} - 2y_i + y_{i-1}}{h^2}$$ 得到线性方程组(三对角),可用追赶法求解。 15.7.3 有限元方法 变分原理 + 分片多项式逼近,详见偏微分方程数值解。 ===== 15.8 例题详解 ===== 例15.1:用RK4求解 $y' = y - x^2 + 1$,$y(0) = 0.5$,取 $h = 0.2$,求 $y(0.2)$。 *解*: - $k_1 = f(0, 0.5) = 0.5 - 0 + 1 = 1.5$ - $k_2 = f(0.1, 0.5 + 0.1 \times 1.5) = f(0.1, 0.65) = 0.65 - 0.01 + 1 = 1.64$ - $k_3 = f(0.1, 0.5 + 0.1 \times 1.64) = f(0.1, 0.664) = 0.664 - 0.01 + 1 = 1.654$ - $k_4 = f(0.2, 0.5 + 0.2 \times 1.654) = f(0.2, 0.8308) = 0.8308 - 0.04 + 1 = 1.7908$ $$y_1 = 0.5 + \frac{0.2}{6}(1.5 + 2 \times 1.64 + 2 \times 1.654 + 1.7908) = 0.8293$$ 精确解 $y = (x+1)^2 - 0.5e^x$,$y(0.2) = 0.8292986…$,误差极小。 ===== 15.9 习题 ===== 习题15.1:用显式Euler方法($h = 0.1$)求解 $y' = -y$,$y(0) = 1$,计算 $y(0.5)$ 并与精确解比较。 习题15.2:推导改进Euler方法的局部截断误差,证明其为二阶方法。 习题15.3:用RK4求解初值问题 $y' = x + y$,$y(0) = 1$,取 $h = 0.1$,求 $y(0.4)$。 习题15.4:分析中点法 $y_{n+1} = y_n + hf(x_n + \frac{h}{2}, y_n + \frac{h}{2}f_n)$ 的稳定区域。 习题15.5:用打靶法求解边值问题 $y = -y$,$y(0) = 0$,$y(\frac{\pi}{2}) = 1$。

习题15.6:证明梯形公式是A-稳定的。

习题15.7:对于刚性系统 $\begin{cases}y_1' = -1000y_1 + y_2
y_2' = y_1 - y_2\end{cases}$,分析为什么隐式方法更适合。

常微分方程/第十五章_数值解法.txt · 最后更改: 127.0.0.1