数值常微分方程
数值常微分方程是计算数学中研究如何用数值方法求解常微分方程初值问题或边值问题的分支。由于绝大多数常微分方程无法求出解析解,数值方法成为获取其近似解的主要工具。
-
问题背景:初值问题
我们考虑一阶常微分方程的初值问题,其标准形式为:
y'(t) = f(t, y(t)), y(t₀) = y₀
我们的目标是找到函数y(t)在一系列离散点t₀, t₁, t₂, ..., t_N上的近似值y₀, y₁, y₂, ..., y_N。其中,f是已知的函数,y₀是初始条件。 -
基本思想:离散化
数值解法的核心是将连续的微分方程问题转化为离散的代数问题。最关键的一步是用差商来近似导数。回顾导数的定义:y'(t) ≈ (y(t+h) - y(t)) / h,其中h是一个很小的步长。这个简单的近似是整个数值ODE方法的基石。 -
最简单的算法:欧拉方法
在点t_n处,利用前向差商近似导数:y'(t_n) ≈ (y(t_{n+1}) - y(t_n)) / h。将其代入微分方程y'(t_n) = f(t_n, y(t_n)),得到:
(y(t_{n+1}) - y(t_n)) / h ≈ f(t_n, y(t_n))
整理上式,并用近似值y_n代替真实值y(t_n),我们得到欧拉法的迭代公式:
y_{n+1} = y_n + h * f(t_n, y_n)
从这个初始点(t₀, y₀)开始,我们可以一步步地计算出所有后续点的近似值。欧拉法直观简单,但精度较低。 -
改进精度:龙格-库塔方法
为了获得更高精度的解,龙格-库塔方法被广泛使用。它通过计算函数f在区间[t_n, t_{n+1}]内多个点的斜率,然后将这些斜率进行加权平均,从而得到一个比欧拉法更精确的斜率估计。
其中最经典的是四阶龙格-库塔方法(RK4),其公式如下:k1 = f(t_n, y_n) k2 = f(t_n + h/2, y_n + h*k1/2) k3 = f(t_n + h/2, y_n + h*k2/2) k4 = f(t_n + h, y_n + h*k3) y_{n+1} = y_n + (h/6) * (k1 + 2*k2 + 2*k3 + k4)RK4 方法每一步的截断误差与
h⁵成正比,因此被称为四阶方法,其精度远高于欧拉法(一阶方法)。 -
处理刚性问题
有些微分方程组的解包含变化速度差异极大的分量(例如,一个快速衰减的分量和一个缓慢变化的分量),这类问题称为刚性问题。使用显式方法(如欧拉法或RK法)求解刚性问题时,为了保持数值稳定性,步长h必须取得非常小,这导致计算效率极低。
为了解决刚性问题,我们需要使用隐式方法,如隐式欧拉法:
y_{n+1} = y_n + h * f(t_{n+1}, y_{n+1})
注意,等式的右边也包含未知的y_{n+1}。这意味着每一步都需要求解一个(可能是非线性的)方程。隐式方法通常具有更好的稳定性,允许使用较大的步长,但计算量更大。 -
多步法与预估-校正技术
之前的方法(如欧拉法、RK法)在计算y_{n+1}时只用到前一步的信息(t_n, y_n),称为单步法。多步法则利用前面多个点的信息(如y_n, y_{n-1}, y_{n-2})来构造更高精度的公式,例如亚当斯-巴什福斯(显式)和亚当斯-莫尔顿(隐式)公式。
在实际应用中,常将显式多步法(作为预估器)和隐式多步法(作为校正器)结合,形成预估-校正方法。预估器提供一个初始近似值,然后校正器通过迭代来改进这个近似值,兼具了显式法计算简单和隐式法精度高、稳定性好的优点。