微积分 · 数值积分

数值积分

数值积分只用f的几个值估计∫f:在每一段上用过这些值的简单曲线代替f,再把曲线下的有向面积加起来。辛普森法用抛物线;对光滑的函数,段数每加倍一次,误差最终缩小到约1/16。

数值积分与本页画面

很多积分没法靠原函数算出来:e−x2e^{-x^2}有原函数,却写不成初等函数;测量得到的数据更是连公式都没有。数值积分只用f的值来估计∫abf(x) dx\int_a^b f(x)\,dx:把[a, b]分成n段,每段宽Δx=(b−a)/n\Delta x = (b - a)/n,在每一段上用过f几个值的简单曲线p代替f,再把p下面的有向面积加起来:

n段的辛普森法(mᵢ是第i段的中点)
Sn=Δx6∑i=0n−1[f(xi)+4f(mi)+f(xi+1)]S_n = \frac{\Delta x}{6} \sum_{i=0}^{n-1} \big[f(x_i) + 4f(m_i) + f(x_{i+1})\big]

中点法M用过f(mi)f(m_i)的水平线,梯形法T用连接两端的弦,辛普森法S用过两端和中点的抛物线,所以它用到f的2n + 1个值。图上p是黄色的。图下的长条把差p(x)−f(x)p(x) - f(x)放大画出来,它的有向面积就是误差,即方法的和减去积分。教科书常把这个和叫作“2n个子区间的辛普森法”,算的是同一个数。

在宽为h的一段上把f按中点展开:中点法的误差约是−h3f′′/24-h^3 f''/24,梯形法约是+h3f′′/12+h^3 f''/12,段很窄时前者接近后者的−½倍。sin x、n = 4时两者是+0.0523和−0.1039。按2 : 1加权,这一项就消掉了;而且恒有S=(2M+T)/3S = (2M + T)/3。剩下的从每段h5f(4)/2880h^5 f^{(4)}/2880开始。长条上看得出来:本页的每个函数上,梯形法的差都只有一种符号,辛普森法的差有正有负,几乎抵消。

辛普森法不只对二次函数准,对三次函数也准。以中点为原点,(x−m)3(x - m)^3是奇函数:它在这一段上的积分是0,辛普森法给它的和也是0,因为权重1、4、1是对称的。x³在[0, 2]上只分一段时,抛物线是3x2−2x3x^2 - 2x,明显不是x³,可差的两瓣面积是−1/4和+1/4,所以S1=4S_1 = 4,正好等于积分。(x−m)4(x - m)^4是偶函数,消不掉:x⁴只用一条抛物线得20/3,而积分是32/5,差4/15。

把各段加起来,误差按1/n的幂变小。f光滑、误差的首项又不为0时,n每加倍一次,中点法和梯形法的误差最终缩小约4倍(误差∝1/n²),辛普森法缩小约16倍(∝1/n⁴)。eˣ上n取1、2、4时,辛普森法的误差是5.8 × 10⁻⁴、3.7 × 10⁻⁵、2.3 × 10⁻⁶。这套展开要求f足够光滑。√x在0处竖直起步,抛物线跟不上无穷大的斜率,误差每加倍只缩小约21.5≈2.832^{1.5} \approx 2.83倍,而且几乎全部来自第一段。

值得注意

  • 读数里的积分值来自原函数(2、e − 1、ln 2、2/3、4、32/5),所以显示的误差是真实误差,不是估计。
  • 同样用sin x的9个值:分四段的辛普森法离∫₀^π sin x dx差0.00027,分八段的梯形法差0.026。

操作

  • 转n、换方法,看下面的差怎么变。长条每次都会重新缩放,读它左侧的刻度。
  • 按n → ∞,n逐次加倍到64。每一行记下误差,以及它比上一行缩小了几倍。

相关概念