数值积分把面积按条来量
定积分就是曲线下的面积。但有无数函数没有能手算的初等原函数,而且很多时候你只有采样点(比如实验数据),根本没有公式。那要怎么求面积?想法和小学的面积一样简单:把区间 [a,b] 切成细细的竖条,用简单图形估计每一条的面积,再加起来。用矩形填很粗糙;把顶边斜切成梯形会更好;把条两两成对、用抛物线拟合则准得多。条切得越细(n 越大)越接近真值,但接近的速度因规则而异。本讲固定一个真值已知的积分(f=1+sin x,答案 π+2),用眼睛比较三种规则在同样功夫下精度差多少。
灰色曲线是 f(x)=1+sin x,我们要的面积是它在 0 到 π 之间下方的部分。真值正好是 π+2≈5.1416,所以误差能真正量出来。金色条是把区间切成 n 段的矩形。用上面的开关选每根条的高度取在左端、右端还是中点。把 n 滑块调大,条变细,估计值逼近真值。左端、右端会偏向一侧,而中点让高估和低估相互抵消,通常最准。
同一个积分,同一个真值 π+2。这次不再把条顶留平,而是用直线连接两端,把每条填成梯形。矩形会在曲线和条之间留下空三角,而梯形用直线贴着那段斜边,大大缩小空隙。拖动 n 滑块,确认同样的 n 下误差比第一块小。梯形误差与 h² 成正比,所以 n 加倍误差大约降到四分之一。相比矩形只降到一半,这是快了一个量级的收敛。
梯形是用直线近似曲线。那用曲线来近似曲线呢?辛普森法把区间两两成对,用一条恰好过这三点的抛物线拟合曲线,把直线抓不住的弯曲也抓住。虚线是真曲线,几乎压在它上面的金色就是抛物线拟合。让 n 取偶数移动,会看到误差数字比梯形小好几位。辛普森误差与 h⁴ 成正比,所以 n 加倍误差竟降到十六分之一。同样的条数,精度爆发式提升。
现在用一张图揭穿三种规则的真面目。纵轴是 log10(误差),横轴是条数 n。选一种规则、扫动 n,就画出一条下降的误差曲线。关键在下降的斜率:那就是精度阶数 p,读数里有估计值。矩形下降平缓(p≈1),梯形更陡(p≈2),辛普森像悬崖(p≈4)。曲线越陡,同样增加 n 削去的误差就越多。注意辛普森一旦触到机器精度的地板,就不再下降了。
最后把三者并排,在相同条件下正面比较。三根条是用同样 n、完全相同计算量的中点、梯形、辛普森的误差。纵轴是对数刻度,所以条的长度就是误差的位数。移动 n:三根都变短,但辛普森的条把另外两根压得彻底。讯息很清楚:花同样的功夫,选哪个公式会让精度差出好几个数量级。数值分析的核心教训不是一味加大 n,而是选一个更聪明的规则。