数值解
Euler 与 RK4:步长、误差与 Taylor 展开的关系。
约 6 分钟
从一个问题开始
单摆方程 没有初等闭式解。可我们仍然想知道 是什么样,想画出它的曲线。
我们需要一种只用加减乘除就能算出近似解的方法,而且必须能估计误差、知道什么时候它会失效。
选"单摆":。这个方程没有初等闭式解。但实验照样画出了曲线:它是一步一步算出来的。把步长 调大,红色的 Euler 曲线开始偏离蓝色的 RK4,甚至发散。回到有精确解的"指数增长",看右下角两种方法的终点误差随 如何变化: 减半,Euler 误差约减半,RK4 误差约减到 。
告诉我们当前的斜率。从 出发,沿这个斜率走一小步 ,得到下一个近似点。步长越小越准,但误差如何随 缩小,取决于我们对"走一步"的近似有多精细:这应该能用 Taylor 展开算清楚。
定义
局部截断误差是从精确值 出发走一步后与 的差。全局误差是 ,其中 步。若全局误差为 ,称方法是 阶的。
推导:Euler 法的阶
局部截断误差为 ,全局误差为 。
Taylor 展开精确解:。Euler 一步正好是前两项,所以局部误差 。
全局误差:设 , 关于 是 -Lipschitz 的,局部误差不超过 。则 迭代得 ,用了 。所以全局误差 : 步各犯 的错,累积成 。
更高阶:Runge–Kutta
Euler 法只用了区间左端的斜率。更好的做法是在区间内多采几个斜率,加权平均。
局部截断误差 ,全局误差 。
完整证明要把 全部 Taylor 展开到 并与 的展开逐项比较,篇幅较长。这里证明一个足以说明思想的特殊情形: 不依赖 。此时 ,,, 这正是 Simpson 求积公式,而 。Simpson 公式对三次多项式精确,误差为 ,即 。一般情形的结论相同,只是展开更繁琐。全局误差从局部误差按 Euler 法证明中同样的累积论证得到 。
这就是实验中" 减半,误差减到 "的来源:。
定理:为什么大步长会发散
对 (),Euler 法给出 。真解衰减到 ,而数值解衰减当且仅当 ,即 。
直接代入:。
步长超过 时 振荡放大,与真解毫无关系。这解释了实验里大步长时 Euler 曲线的发散。这种"刚性"问题需要隐式方法,那是数值分析的内容。
步长减半,Euler 法的误差只减半;把 调得很小并不能弥补方法的低阶,反而增加计算量与舍入误差。而 太大时 Euler 法会发散。精度(阶)与稳定性(步长上限)是两件事,都要考虑。
应用
单摆、三体问题、Lorenz 系统、几乎所有真实的物理模型,都只能数值求解。实验里单摆的曲线是 RK4 以 为步长、每步四次求值算出来的。步数 ;精度和计算量之间的权衡,是整个科学计算的日常。
数值方法不是"近似的数学"。它有自己的定理:阶、收敛、稳定性都是可以精确证明的命题。Euler 法的全局误差界 里的每个字母都有明确含义,而且它诚实地告诉你误差随 指数增长:预报越远越不准。