数值积分
定积分是曲线下方的面积。很多函数没有能用手积出来的公式解。像实验那样,只有点、没有式子的时候也有。想法很单纯。把区间 [a,b] 切成细的竖条,用简单的图形估计每一条的面积,再加起来。用矩形填比较粗,把上边斜着连成梯形就更好,两格两格地配成抛物线就准确得多。切得越细,也就是把 n 调大,越接近真值,而接近的速度随规则而不同。拿一个真值已知的积分,f=1+sin x,答案是 π+2,下面的图比较三种规则在同样的力气下精度差多少。金色的条是那些小块,灰色曲线是被积分的函数。
灰色曲线是 f(x)=1+sin x,要求的面积是它在 [0,π] 下面的那一块。真值恰好是 π+2≈5.1416,所以误差可以照实来量。金色的条是把区间切成 n 块的矩形。上面的按钮选择条的高度取左端、右端还是中点。把 n 滑块调大,条变细,估计值走向真值。左端和右端会偏向一侧,中点让上下的误差抵消,通常最准。
同一个积分,同一个真值 π+2。这一次不把条的上边放平,而是用直线连起两端,填成梯形。矩形在曲线和条之间留下空的三角形,梯形顺着那道斜坡用直线走,把空隙大大缩小。移动 n 滑块,在同样的 n 上,误差比前一张图的 1 次估计更小。梯形误差与 h² 成正比,所以把 n 加倍,误差大约落到 1/4。矩形只落到 1/2,比起来这是快一阶的收敛。
梯形用直线估计曲线。如果用曲线来估计曲线呢。辛普森规则把区间两格两格地捆起来,用经过那三个点的抛物线去配曲线。直线漏掉的弯曲也被抓住了。虚线是真曲线,几乎叠在上面的金色是抛物线估计。把 n 按偶数移动,误差的数字比梯形小整整若干位。辛普森误差与 h⁴ 成正比,所以把 n 加倍,误差落到 1/16。同样的块数,精度好了一大截。
一张图把三种规则的面目放在一起。纵轴是 log10(误差),横轴是块数 n。选定规则扫过 n,就画出误差下降的曲线。下降的斜率是精度的阶 p,读数给出这个估计。矩形下降得缓 (p≈1),梯形更陡 (p≈2),辛普森像悬崖 (p≈4)。曲线越陡,同样的 n 增加削掉的误差越多。辛普森一旦碰到机器还能分辨的最小数,就不再往下走。
最后把三个放在同样的条件下并排比较。三根条是同样的 n,也就是同样的计算量下,中点、梯形和辛普森的误差。纵轴是对数刻度,条的长度就是误差的位数。移动 n,三根都变短,但辛普森的条把另外两根压在下面。同样的力气,选哪一个公式把精度按位数分开。数值分析里要紧的不是盲目把 n 调大,而是选一个更好的规则。用同样的块数把三种规则并排放着比,就是这一讲的比较。