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

<<主页

误差估计

本模块通过估计局部误差(local error)和整体误差(global error)研究数值求解常微分方程(ordinary differential equation, ODE)初值问题的欧拉法的准确性. 数值解法通过一步一步(step-by-step)的计算得到离散时间点上的函数近似值, 从而近似原问题的解函数. 欧拉法的每步计算都沿着解函数曲线的切线方向(其斜率由常微分方程指定)进行外推. 在本演示中, 将显示对每步欧拉法计算的局部误差和整理累积误差的估计. 下面将对这些量进行更详细的定义.

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

  1. 使用水平滑块, 用户可以在允许的最小、最大值范围内选择想要的步长. 根据所选步长算出下一近似解用红色绘出. 在近似解附近, 分别用深蓝色区域和浅蓝色区域显示局部误差和整体累积误差(第一步之后)的估计(深蓝色区域叠加在浅蓝色区域上面, 由此后者的一部分看不清楚). 点击"Choose Step Size"Next按钮让当前所选步长生效, 近似解曲线的最新部分因此确定下来, 其颜色由红色变为黑色.
  2. 当前步的计算通过点击"Take Step"Next按钮来完成, 这将使绘图区显示粉红色的通过这个新解的原微分方程的准确解(抹去原有的粉色曲线), 同时在下方表格中打印一个新的时刻点上解函数的近似值和准确值. 在绘图区中, 局部误差估计(深蓝色区域)将被抹去, 而保留整体误差估计(浅蓝色区域).
  3. 点击"Next Step"Next按钮将为下一步计算做准备. 此时,绘图区中用一根红色线段显示下一步的缺省步长, 其值一般与前一步相同, 接着又可以重复选择步长阶段(Choose Step Size).

每步都按上述过程依次执行, 直到到达自变量区间的右端点.

技术细节

如果误差估计是准确的, 相应的解曲线将落在对应的着色区域里. 这意味着通过上一个近似解的准确解曲线将在深蓝色的局部误差估计区域内, 而原始初值问题的准确解曲线在浅蓝色的整体误差估计区域内. 由于本演示使用的是误差估计而不是误差限, 上述结论并不总成立. (准确的误差限是严格的, 但常常过于悲观). 下面给出这里所用误差估计的详细描述.

对于ODE方程y′ = f(t, y)和初始值(t0, y0), 记初值问题的准确解为y(t), 代表近似解的点为(tk, yk), 而计算步长为 hk = tktk−1. 第k步计算的局部误差表示数值方法从时刻tk−1计算到时刻tk所产生的误差. 记uk−1(t)为通过点(tk−1, yk−1)的ODE的准确解, 则局部误差为ykuk−1(tk). 对于欧拉方法, 可以用 (hk2⁄ 2) yk来近似局部误差. 本演示使用有限差分公式(f (tk, yk) − f(tk−1, yk−1)) ⁄ (tktk−1)来估算 yk.

整体误差是相当于初值问题准确解的总误差, 即yky(tk). 整体误差不但受局部误差的影响, 而且受传递误差, 即uk−1(t)相对于准确解y(t)的误差, 的影响. 假设第k步计算开始时的整体误差限为ek−1. 设 N = | 1 + hk fy(tk−1, yk−1) |, 第k步之后的传递误差限近似为 N ek−1. 设置一个固定的参数 d = 0.05,, 在本演示中使用有限差分公式(f (tk−1, yk−1 + d) − f(tk−1, yk−1d)) ⁄ (2d)来估算 fy(tk−1, yk−1).

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