清华大学课程“数值分析”(No.20240033)
交互演示网站

<<主页

Adams多步法

本模块演示数值求解常微分方程(ordinary differential equation, ODE)初值问题的显式线性多步Adams-Bashforth方法. 数值解法通过一步一步(step-by-step)的计算得到离散时间点上的函数近似值, 从而近似原问题的解函数. Adams-Bashforth方法是显式线性多步法, 它依靠多个以前时刻的近似解生成新的近似解. 对于一个n阶的Adams-Bashforth方法, 它根据n个以前时刻近似解算出的导数值进行插值, 然后通过对插值多项式积分计算下一步近似解. 特别地, 对于ODE y′ = f(t, y), 以及近似解对应的坐标点(tkn+1, ykn+1),…,(tk, yk), 时刻tk+1的近似解y(tk+1)yk+1 = yk + P(tk+1) − P(tk), 其中P(t)是p(t)的原函数, 对函数值f(tkn+1, ykn+1),…,f(tk, yk) 进行插值得到的唯一的n − 1阶多项式.

用户首先从下拉菜单中选择一个微分方程(differential equation), 并选定Adams-Bashforth方法的阶数. 此时在左侧的绘图区, 会有一个蓝色点标记出所选微分方程在初始时刻的解函数值, 而用黑色绘出对应的初值问题的准确解曲线. 在右侧绘图区, 用黑色绘出准确解的导数曲线, 而用蓝色点标记初始时刻的导数. 接着用户需选择在整个计算区间内的总步数. 除了一阶方法外, 本演示中所有方法都需要多个以前时刻点的解函数值, 因此需使用一些其他方法(例如单步法)来生成足够多时间点上的解, 以便多步法可以执行. 在这里, 点击Initial Step按钮生成这些启动解, 它们的每一个都需要调用同阶的R-K方法来产生. 在绘图区演示了这些计算步, 并将结果记录于下面的表格中. 当生成了足够的启动值, Initial Step按钮变为无效状态, 此时可以用选定的Adams-Bashforth方法开始计算.

在完成了必需的初始化过程后, 用户可以使用选定的Adams-Bashforth方法一步一步地求解这个问题. 每一步又分为两个阶段, 每个阶段的执行通过用鼠标点击Next按钮或当前加亮显示的文字来触发:

  1. "插值": 通过对前n个近似解的导数的插值计算出多项式p(t). 在右侧绘图区用红色曲线绘出插值函数p(t), 而用同样的颜色将通过最近的近似解的p(t)的原函数P(t)绘于左侧绘图区. (tk+1, P(tk+1))(tk+1, p(tk+1))处的红点限定了这些函数与当前步有关的部分(即区间[tk, tk+1])).
  2. 当前步的计算通过点击"Take Step"Next按钮来完成, 这使与当前步有关的曲线部分的颜色由红色变为绿色, 同时在右侧绘图区抹去剩余的红色曲线和红点. 在左侧绘图区, 标记新近似解的点由红色变为蓝色, 同时将新解的导数值加入右侧绘图区, 用蓝色点表示. 在左侧绘图区用一条灰色曲线显示通过这个新坐标点的原微分方程的准确解, 相应的导数曲线示于右侧. 另外, 新时刻的近似解和准确解记录于下方的表格中.

参考内容: 课本第8.4.2小节的有关内容.