单块求积用一个低次多项式近似整个区间;复合求积把区间细分,再逐块使用同一个低次公式。改进准确度靠的是缩小网格,而不是把全局插值次数不断提高。

本章沿用 lecture note 第 5.6 节的网格约定:nn 是小区间数,节点有 n+1n+1 个。设

xi=a+ih,h=b−an,I=∫abf(x) dx.x_i=a+ih,\qquad h=\frac{b-a}{n},\qquad I=\int_a^b f(x)\,dx.

误差始终写成 I−QI-Q。下面由单块误差定理推导全局常数,避免混淆小区间宽度与 Simpson 块宽度[1][1] S. Rojas, “Lecture Notes on Computational Mathematics,” 2025. Course lecture note distributed with MTH2051; local source course-lecture-notes.pdf., [2][2] M. U. School of Mathematics, “MTH2051: Introduction to Computational Mathematics: Course Lecture Notes and Study Workbooks,” 2026. Monash University course materials and study workbooks, Semester 2, 2026., [3][3] R. L. Burden and J. D. Faires, Numerical Analysis, 9th ed. Brooks/Cole, Cengage Learning, 2011.。

三个复合公式

定义复合梯形与中点公式

对 n≥1n\geq1,定义

Tn=h[f(a)+f(b)2+∑i=1n−1f(xi)],T_n=h\left[\frac{f(a)+f(b)}2+\sum_{i=1}^{n-1}f(x_i)\right],Mn=h∑i=0n−1f ⁣(xi+h2).M_n=h\sum_{i=0}^{n-1}f\!\left(x_i+\frac h2\right).
定义复合 Simpson 公式

要求 nn 为正偶数。每个 Simpson 块占两个小区间,宽度为 2h2h:

Sn=h3[f(a)+f(b)+4∑1≤i<ni oddf(xi)+2∑2≤i<ni evenf(xi)].S_n=\frac h3\left[f(a)+f(b) +4\sum_{\substack{1\leq i<n\\i\ \mathrm{odd}}}f(x_i) +2\sum_{\substack{2\leq i<n\\i\ \mathrm{even}}}f(x_i)\right].
证明权重的拼接

把单块公式逐项相加。梯形内节点属于左右两个块,各得 h/2h/2,总权重为 hh。Simpson 每块的三个权重是 (h/3,4h/3,h/3)(h/3,4h/3,h/3)。奇数节点只在一块的中间,偶数内节点连接两块,端点只出现一次,因此得到 1,4,2,4,…,2,4,11,4,2,4,\ldots,2,4,1 的权重结构。中点节点各属于一个小区间。

四个小区间与两个 Simpson 块的宽度和权重

四个小区间与两个 Simpson 块的宽度和权重

局部误差如何累积成全局误差

定理复合误差与常数

若 f∈C2[a,b]f\in C^2[a,b],存在各自的 ξT,ξM∈[a,b]\xi_T,\xi_M\in[a,b],使

I−Tn=−b−a12h2f′′(ξT),I-T_n=-\frac{b-a}{12}h^2f''(\xi_T),I−Mn=b−a24h2f′′(ξM).I-M_n=\frac{b-a}{24}h^2f''(\xi_M).

若 f∈C4[a,b]f\in C^4[a,b],且 nn 为偶数,则存在 ξS∈[a,b]\xi_S\in[a,b],使

I−Sn=−b−a180h4f(4)(ξS).I-S_n=-\frac{b-a}{180}h^4f^{(4)}(\xi_S).
证明

每个梯形块的误差是 −h3f′′(ξi)/12-h^3f''(\xi_i)/12。求和后,用连续导数的介值定理把 nn 个导数值的平均值写为某点导数,再用 nh=b−anh=b-a,得到梯形结论。中点块的常数为 h3/24h^3/24,同理可得。

Simpson 有 n/2n/2 个块。每块宽 2h2h,所以单块误差为

−(2h)52880f(4)(ξi)=−h590f(4)(ξi).-\frac{(2h)^5}{2880}f^{(4)}(\xi_i) =-\frac{h^5}{90}f^{(4)}(\xi_i).

共有 n/2n/2 项,平均值仍可写为同一个连续导数的某点值,因此总误差为 −nh5f(4)(ξS)/180-nh^5f^{(4)}(\xi_S)/180,即所求。

于是梯形和中点的全局精度是二阶,Simpson 是四阶。单块 O(h3)O(h^3) 的误差乘上约 1/h1/h 个块后变成 O(h2)O(h^2),不能把局部阶数直接当作全局阶数。这些是上界意义的阶数;若首项系数为零,具体函数可能表现出更高阶甚至完全精确。

将余项导数换成最大绝对值,就得到可计算的界。记

Br=max⁡x∈[a,b]∣f(r)(x)∣.B_r=\max_{x\in[a,b]}|f^{(r)}(x)|.

例如 Simpson 的充分条件是

(b−a)5B4180n4≤tol.\frac{(b-a)^5B_4}{180n^4}\leq\mathrm{tol}.

因此可选择不小于 ((b−a)5B4/(180tol))1/4((b-a)^5B_4/(180\mathrm{tol}))^{1/4} 的最小正偶数。这需要真正可用的导数界;仅由两个网格结果接近,不能得到同样的保证。

凸函数、界与成本

若 f′′≥0f''\geq0,误差定理给出 Mn≤I≤TnM_n\leq I\leq T_n。也可从凸性直接证明:每块上,函数图像在端点连线之下,积分不超过梯形;关于中点的对称两点平均至少为中点函数值,积分后至少为中点近似。

一次直接计算的函数调用数分别为:梯形 n+1n+1,中点 nn,Simpson n+1n+1。比较相同 nn 时,Simpson 必须取偶数;比较相同成本时,应另外核对实际调用数。高阶规则的误差常数涉及不同阶导数,并不存在对所有函数都更好的固定排序。

命题两个精确的组合恒等式

对同一个粗网格,恒有

T2n=Tn+Mn2,S2n=Tn+2Mn3=4T2n−Tn3.T_{2n}=\frac{T_n+M_n}{2},\qquad S_{2n}=\frac{T_n+2M_n}{3} =\frac{4T_{2n}-T_n}{3}.
证明

细网格中,新节点恰是粗网格各块中点。将 T2nT_{2n} 的权重按旧节点和新节点拆开,分别等于 Tn/2T_n/2 与 Mn/2M_n/2。对 S2nS_{2n},旧内节点权重为 h/3h/3,端点为 h/6h/6,新中点为 2h/32h/3,正是 Tn/3+2Mn/3T_n/3+2M_n/3。再代入第一个等式即可。

这些是任意函数采样值之间的代数恒等式,不需要光滑性。它们的四阶误差结论仍然需要前面的条件。后一个表达式也是第一层 Richardson 外推的来源。

观测阶数与光滑性失效

若误差有非零首项 I−Q(h)=Chp+o(hp)I-Q(h)=Ch^p+o(h^p),则

∣I−Q(h)∣∣I−Q(h/2)∣⟶2p,pobs=log⁡2∣I−Q(h)∣∣I−Q(h/2)∣⟶p.\frac{|I-Q(h)|}{|I-Q(h/2)|}\longrightarrow2^p, \qquad p_{\mathrm{obs}}=\log_2\frac{|I-Q(h)|}{|I-Q(h/2)|}\longrightarrow p.

证明只需将分子、分母分别除以 hph^p,再取极限;C≠0C\ne0 保证分母最终不为零。只有误差上界 O(hp)O(h^p) 时,不能反推该比值一定趋于 2p2^p。

对 f(x)=xf(x)=\sqrt{x},端点导数无界,标准二阶与四阶定理均不适用。开放式公式不取端点,并不能恢复缺失的光滑性。甚至可严格证明其复合中点误差绝对值是 Θ(h3/2)\Theta(h^{3/2}):第一块误差为 (2/3−1/2)h3/2(2/3-1/\sqrt2)h^{3/2},其余块由凹性可知同为负;第 i≥1i\geq1 块用局部二阶导数界控制,绝对值不超过 h3/2/(96i3/2)h^{3/2}/(96i^{3/2})。级数收敛,因此得到同阶上界,第一块给出非零下界。

交互实验与可执行例子

这个交互图需要启用 JavaScript。

先用指数函数观察误差比,再改为平方根,检查高阶预期为什么失效。窄峰例子提醒我们:粗网格上的小误差差值可能只是没采到重要区域。

下面的实现与网页实验使用同一组权重;接口中的 nn 表示小区间数。

def composite_simpson(f, a, b, n):
if not isinstance(n, int) or not a < b or n < 2 or n % 2:
raise ValueError("require a < b and positive even n")
h = (b - a) / n
total = f(a) + f(b)
for i in range(1, n):
total += (4 if i % 2 else 2) * f(a + i * h)
return h * total / 3

在 [0,1][0,1] 上积分 x4x^4 时,误差恰为 −2h4/15-2h^4/15,因为四阶导数恒为 2424。用这个算例核对程序的权重、误差符号和网格定义,比只比较一个小数结果更有效。

参考文献

  1. [1] S. Rojas, “Lecture Notes on Computational Mathematics,” 2025. Course lecture note distributed with MTH2051; local source course-lecture-notes.pdf. ↩
  2. [2] M. U. School of Mathematics, “MTH2051: Introduction to Computational Mathematics: Course Lecture Notes and Study Workbooks,” 2026. Monash University course materials and study workbooks, Semester 2, 2026. ↩
  3. [3] R. L. Burden and J. D. Faires, Numerical Analysis, 9th ed. Brooks/Cole, Cengage Learning, 2011. ↩