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

<<主页

龙格-库塔法 (Runge-Kutta Methods)

本模块演示数值求解常微分方程(ordinary differential equation, ODE)初值问题的R-K(Runge-Kutta)方法. 数值解法通过一步一步(step-by-step)的计算得到离散时间点上的函数近似值, 从而近似原问题的解函数. 对于ODE y′ = f(t, y), 若算出了时刻tk的近似解yk, R-K方法使用yk+1 = yk + hkw来近似时刻tk+1 = tk + hk的解y(tk+1). 这里w是用函数f在区间[tk, tk+1]上的采样值k1,…,kn进行加权平均值而算出的导数y. 例如, 本演示模块中的三阶方法(third order)使用三个采样值

k1 = f(tk, yk),
k2 = f(tk + hk ⁄ 2, yk + hk k1 ⁄ 2),
k3 = f(tk + hk, yk + hk(2 k2k1)),

并且通过 w = (k1 + 4k2 + k3) ⁄ 6计算加权平均.

用户首先从下拉菜单中选择一个微分方程(differential equation), 并选定一种R-K方法. 此时在左侧的绘图区, 会有一个黑点标记出所选微分方程在初始时刻t0的解函数值y0. 左侧绘图区还显示对应的初值问题的准确解曲线, 而它的导数曲线在右侧显示. 从这个初始值开始, 用户可使用选定的R-K方法一步一步地求解这个问题. 求解的每一步又分为四个阶段, 每个阶段的执行通过用鼠标点击Next按钮或当前加亮显示的文字来触发:

  1. 使用水平滑块, 用户可以在允许的最小、最大值范围内选择从时刻tktk+1的步长hk. 左侧绘图区中红色水平线指示当前步长的大小. 一旦用户设定好想要的步长, 需点击"Choose Step Size"Next按钮让它生效, 这使得线的颜色由红点变成黑点, 说明步长已经固定. 线的末端仍然用红点标记, 因为它代表此时还未确定的下一步的解.
  2. 下一阶段是通过对函数f采样估算导数的均值. 用户通过点击Sample f按钮来得到采样值, 其个数依赖于所选方法的阶数. 每次采样时, 右侧绘图区都显示一个相应的点, 它指示采样对应的t的值, 通过图形还可以直观地比较采样值与准确解在那个时刻的导数值. 当完成了所有的采样, 点击"Sample Derivative"或Next按钮完成当前阶段. 此时, 右绘图区中显示一条在区间[tk, tk+1]上的水平线段, 代表加权平均值w. 这个加权平均导数值也决定了下一个近似解yk+1的位置, 该点也由红点变为黑点标记.
  3. 当前步的计算通过点击"Take Step"Next按钮来完成, 这将使绘图区下方的表格中增加一行, 显示一个新的时刻点上解函数的近似值和准确值. 同时, 左绘图区中通过这个新节点的原微分方程的准确解用灰色绘出, 而将其导数曲线(也是灰色)添加到右侧绘图区中.
  4. 点击"Next Step"Next按钮将为下一步计算做准备. 此时,绘图区中用一根红色线段显示下一步的缺省步长, 其值一般与前一步相同, 接着又可以重复选择步长阶段(Choose Step Size).

每步都按上述过程依次执行, 直到到达自变量区间的右端点. 注意: 右侧绘图区显示的分段常数函数是左侧显示的解函数分段线性近似的导数.

参考内容: 课本第8.3节, 特别是8.3.2小节.