科学仿真

数值品味的底线:插值、求积与随机数的坑

导读:Numerical Recipes 第 1-2 章不是算法,是「数值品味」:什么时候可以信任一个 routine,什么时候它在悄悄骗你。

插值的真相

高阶多项式插值不是好东西:Runge 现象(等距节点插值 $1/(1+25x^2)$ 在端点振荡爆炸)说明阶数不保证质量。分段低阶(样条)+ 合理节点分布(Chebyshev)才是正路。

NR 的准则:除非有理由,默认用三次样条或有理插值,远离 20 阶以上多项式。

求积与微妙的失效

梯形/辛普森对光滑函数足够;Gauss 求积用同样点数拿到更高精度——但被积函数有奇点或强振荡时,自适应求积(自适应 Simpson/Gauss-Kronrod)才可靠。

随机数:线性同余生成器的低维相关性是历史事故之源。现代实践:用经过检验的生成器(Mersenne Twister/PCG),绝不自己发明。

黑盒使用守则

NR 的态度:routine 可以当黑盒,但必须知道三件事——输入的合法域、失效时的行为、精度声明。任何「结果看起来不对」的问题,先做一次收敛性实验再怀疑算法。

常见误区

  • 等距高阶插值拟合实验数据,端点处得到荒谬预测。
  • 用随机数生成器的可重复性需求与密码学需求混为一谈。

吃透自检

  • 能演示 Runge 现象并解释成因
  • 能为给定积分问题选择合适的求积方案
  • 能说明自己所用随机数生成器的周期与已知缺陷

← 科学仿真 书目精读列表 经典研读