误差由步长决定
这一讲的所有方法都被同一个约定捆在一起:误差大约是 C 乘以 h 的 p 次方,即 error≈C·hᵖ,其中 p 是该方法的阶数。欧拉是一阶,RK2 二阶,RK4 与辛普森四阶。这为何重要?把误差对步长 h 画在对数-对数平面上,会得到一条直线,其斜率正是阶数 p。阶数=斜率。所以步长减半,p 阶误差缩小 2 的 p 次方倍,四阶方法竟达 16 倍。那么把 h 无限缩小就行了吗?不。太小时舍入误差会从地板冒起,显式方法越过稳定界限就会爆发。加之步数与 1/h 成正比增长,计算成本飙升。归根结底,在精度与成本之间找到平衡点,才是数值分析真正的功夫。
横轴是 log h,纵轴是 log(误差)。对 error=C·hᵖ 两边取对数就得到一条直线,其斜率正是阶数 p。三条直线分别是一阶、二阶、四阶。用分段按钮高亮某一阶,再用 h 滑块沿直线移动点。h 减小同样的量时,四阶的点下降得陡峭得多。阶数越高,同样的付出下误差降得越快。这一张图就是整讲的地图。
只看阶数逻辑,把 h 送向 0,误差似乎也会归零。现实并非如此。总误差是截断误差 C·h² 加上舍入误差 ε/h。缩小 h,第一项下降而第二项上升,于是曲线画出一个 U 形谷。把 h 滑块拖到谷的左端,点会变红,触到舍入误差地板,误差重新增大。没有什么是无限精确的。谷底就是那台机器能达到的最好结果。
阶数并非唯一的墙。取衰减方程 y'=−ky,令 k=5,用显式欧拉求解。上方的色带是步长轴。绿色区是稳定且精确,红色区是不稳定,分界在 h = 2/k = 0.4。把滑块点移到绿色内,越小越贴近真解。但越过 0.4 进入红色,无论精度如何,数值解都会变号并爆发。小步长不只是精确,更是防止发散的安全线。
现在把四种方法集到一个平面比较。Euler(一阶)、RK2(二阶)、RK4(四阶)、辛普森(四阶)的误差直线一同画出。用分段按钮选方法以高亮其直线,h 滑块会同时移动所有直线上的点。在大 h 处差异很小,但随 h 缩小,高阶方法变得压倒性地精确。同为四阶,辛普森的直线略低于 RK4,是因为它的系数 C 更小。阶数决定斜率,系数决定高度。
压轴是实战的拉锯。出现两条柱。误差 = C·h² 随 h 减小而缩短,成本 = 步数 ∝ 1/h 随 h 减小而增长。下方曲线是两者的加权和,即总损失。把 h 滑块拖到两端。一端误差过多,另一端成本过高,而正中某处藏着最佳点。点变绿之处,就是同时兼顾精确与成本的最佳步长。这正是整讲所指向的结论。