跳转至

中点与梯形公式怎样产生可证明误差界?

先备知识

第 19 章说明任意带标记 Riemann 和在网格趋零时逼近积分,却没有给出某个有限网格 已经误差多小。第 16 章的有限 Taylor 余项和第 15 章的 Rolle 定理可以把函数弯曲程度 转化为有限误差界。

本单元始终在有限闭区间 \([a,b]\) 上工作。反常积分需要先截断;截断后的有限部分才 能使用这里的公式。

学习目标

完成本单元后,你应能:

  1. 从均匀分割写出复合中点与梯形公式;
  2. 推导中点公式的 \(1/24\) 误差常数;
  3. 推导梯形公式的 \(1/12\) 误差常数;
  4. 解释局部 \(O(h^3)\) 怎样累积成全局 \(O(h^2)\)
  5. 证明导数界覆盖整个区间;
  6. 正确解释 Python 结果中的条件性误差上界。

牵引问题

\([a,b]\) 等分成 \(n\) 段,并在每段取中点,当然会得到一个 Riemann 和。但如果 只知道“\(n\) 越大越好”,就无法在运行前决定需要多少段。怎样从 \(f''\) 的界直接 推出有限 \(n\) 的误差保证?

探索与猜想

中点公式在每小段只使用中心函数值。Taylor 展开中的一次项关于中点奇对称,积分后 消失,首个需要控制的项是二阶弯曲。

梯形公式用端点割线替代曲线。线性函数没有误差;曲线偏离割线的大小同样由二阶导数 控制。因此两种方法都有二阶全局误差,但常数不同。

概念与理论

\[ x_i=a+ih,\qquad h=\frac{b-a}{n},\qquad i=0,\ldots,n. \]

复合中点公式

\(i\) 段的中点为

\[ m_i=\frac{x_{i-1}+x_i}{2}. \]

复合中点近似定义为

\[ M_n =h\sum_{i=1}^{n}f(m_i). \]

它是一个特定的带标记 Riemann 和。下面的定理不只说明 \(M_n\to\int f\),还给出 有限网格的显式差值界。

中点误差定理

定理。\(f\in C^2[a,b]\),并且在整个区间上

\[ |f''(x)|\le M_2. \]

\[ \left|\int_a^bf(x)\,dx-M_n\right| \le\frac{b-a}{24}M_2h^2. \]

证明。 固定小区间 \([x_{i-1},x_i]\),记中点为 \(m_i\)。Taylor 余项估计给出

\[ \left|f(x)-f(m_i)-f'(m_i)(x-m_i)\right| \le\frac{M_2}{2}(x-m_i)^2. \]

在该小区间积分。一次项关于 \(m_i\) 奇对称,积分为零。因此

\[ \begin{aligned} \left|\int_{x_{i-1}}^{x_i}f(x)\,dx-hf(m_i)\right| &\le\frac{M_2}{2} \int_{-h/2}^{h/2}t^2\,dt\\ &=\frac{M_2h^3}{24}. \end{aligned} \]

共有 \(n\) 段,三角不等式给出

\[ \left|\int_a^bf-M_n\right| \le n\frac{M_2h^3}{24} =\frac{b-a}{24}M_2h^2. \]

证毕。

每段误差是三次量级,因为积分多带来一个长度因子;段数 \(n=(b-a)/h\) 再消耗一个 \(h^{-1}\),所以全局是二次量级。

复合梯形公式

\(i\) 段用连接两个端点的割线替代曲线。割线下的面积为

\[ \frac h2\bigl(f(x_{i-1})+f(x_i)\bigr). \]

相邻小段共享内部端点,求和得到

\[ T_n =h\left[ \frac{f(a)+f(b)}2+\sum_{i=1}^{n-1}f(x_i) \right]. \]

线性插值余项

\(\ell_i\) 是通过 \((x_{i-1},f(x_{i-1}))\)\((x_i,f(x_i))\) 的直线。对内部点 \(x\),构造

\[ \Phi(t)=f(t)-\ell_i(t)-K(t-x_{i-1})(t-x_i), \]

并选 \(K\) 使 \(\Phi(x)=0\)。函数 \(\Phi\)\(x_{i-1},x,x_i\) 有三个零点。 连续使用两次 Rolle 定理,存在 \(\xi_x\in(x_{i-1},x_i)\) 使 \(\Phi''(\xi_x)=0\)。由于 \(\ell_i''=0\),得到

\[ f(x)-\ell_i(x) =\frac{f''(\xi_x)}{2}(x-x_{i-1})(x-x_i). \]

这一步说明“曲线偏离割线”确实由二阶导数控制,而不是图像猜想。

梯形误差定理

定理。\(f\in C^2[a,b]\)\(|f''|\le M_2\),则

\[ \left|\int_a^bf(x)\,dx-T_n\right| \le\frac{b-a}{12}M_2h^2. \]

证明。 在一小段上,由插值余项

\[ |f(x)-\ell_i(x)| \le\frac{M_2}{2}(x-x_{i-1})(x_i-x). \]

\(t=x-x_{i-1}\),则

\[ \begin{aligned} \left|\int_{x_{i-1}}^{x_i}(f-\ell_i)\,dx\right| &\le\frac{M_2}{2}\int_0^h t(h-t)\,dt\\ &=\frac{M_2h^3}{12}. \end{aligned} \]

\(n\) 段求和:

\[ \left|\int_a^bf-T_n\right| \le n\frac{M_2h^3}{12} =\frac{b-a}{12}M_2h^2. \]

证毕。

同一导数界和同一网格下,梯形误差上界是中点误差上界的两倍。这是上界比较,不表示 每个具体函数的实际误差一定恰好相差两倍。

从误差界到网格预算

若希望中点误差不超过 \(\tau>0\),只需

\[ \frac{M_2(b-a)^3}{24n^2}\le\tau, \]

\[ n\ge \sqrt{\frac{M_2(b-a)^3}{24\tau}}. \]

梯形公式把分母 \(24\) 改成 \(12\)。最终 \(n\) 必须向上取整;向下取整会破坏已证明 的不等式。

例题与迁移

例 1:二次函数达到误差常数

\(f(x)=x^2\)、区间 \([0,1]\)\(n=4\),则 \(h=1/4\)\(M_2=2\)

\[ M_4=\frac14\left[ \left(\frac18\right)^2+ \left(\frac38\right)^2+ \left(\frac58\right)^2+ \left(\frac78\right)^2 \right] =\frac{21}{64}. \]

\(\int_0^1x^2dx=1/3\),所以

\[ \frac13-M_4=\frac1{192} =\frac{1}{24}\cdot2\cdot\left(\frac14\right)^2. \]

梯形值为 \(T_4=11/32\),误差 \(1/96\),也恰好等于对应上界。

例 2:先证明导数界

\([0,1]\) 上计算 \(\int_0^1e^x dx\)。因为 \(f''(x)=e^x\le e\),可取 \(M_2=e\)。若中点目标误差为 \(10^{-4}\),只需

\[ n\ge\sqrt{\frac{e}{24\cdot10^{-4}}}. \]

右侧约为 \(33.66\),所以取 \(n=34\)。若只在若干采样点观察到 \(e^x<e\),并不能 替代闭区间上的单调性证明。

例 3:调用唯一 Python 实现

教材代码只调用 src/mathbook_examples/quadrature.py

from mathbook_examples.quadrature import (
    composite_midpoint,
    composite_trapezoid,
)

midpoint = composite_midpoint(lambda x: x * x, 0.0, 1.0, 4, 2.0)
trapezoid = composite_trapezoid(lambda x: x * x, 0.0, 1.0, 4, 2.0)

value 是浮点近似,error_bound 是在调用者已经证明 \(M_2=2\) 的前提下得到的 解析上界;status="fixed_grid" 表示程序没有接收目标容差;evaluations 记录函数 求值数。解析上界不覆盖浮点舍入误差。

即时检验与回望

即时检验 1

若把中点网格数加倍,二阶误差上界变为原来的多少?

答案

\(h\) 减半,而上界正比于 \(h^2\),所以变为原来的 \(1/4\)

即时检验 2

知道 \(f''(a)=0\),能否把 \(M_2=0\) 用于整个 \([a,b]\)

答案

不能。\(M_2\) 必须满足整个区间上 \(|f''(x)|\le M_2\)。一个端点的导数值 不能控制其他位置。

回望:公式权重来自局部近似;严格误差来自全区间导数界;程序只执行公式,不证明 调用者输入的数学假设。

习题与答案

练习 1:写出公式

\([0,2]\) 上取 \(n=4\),写出复合中点公式的四个取样点。

答案

\(h=1/2\),四个中点为

\[ \frac14,\quad\frac34,\quad\frac54,\quad\frac74. \]

因而 \(M_4=\frac12\sum f(m_i)\)

练习 2:梯形权重

为什么复合梯形公式的内部节点权重为 \(1\),两个端点权重为 \(1/2\)

答案

每个内部节点同时属于左右两段,在两个局部梯形中各贡献 \(h/2\),合计为 \(h\); 总区间端点只出现一次,各贡献 \(h/2\)

练习 3:中点预算

设区间长度为 \(3\),且 \(|f''|\le4\)。要使中点误差不超过 \(10^{-3}\),给出 充分网格数。

答案
\[ \frac{4\cdot3^3}{24n^2}\le10^{-3} \quad\Longleftrightarrow\quad n^2\ge4500. \]

\(\sqrt{4500}\approx67.08\),取 \(n=68\)

练习 4:梯形预算

在上一题相同条件下,梯形公式至少取多少段?

答案
\[ \frac{4\cdot3^3}{12n^2}\le10^{-3} \quad\Longleftrightarrow\quad n^2\ge9000. \]

\(\sqrt{9000}\approx94.87\),故取 \(n=95\)

练习 5:线性函数

说明两种公式对任意线性函数都精确。

答案

线性函数的二阶导数恒为零,两个误差上界都为零。几何上,梯形割线就是原图像; 中点值乘区间长度也等于线性函数在该段的积分。

练习 6:首个非法证书

某解答在 \([0,2]\) 上计算 \(e^x\),只检查 \(f''(0)=1\),随后把 \(M_2=1\) 代入误差公式。指出错误并给出有效界。

答案

错误是把单点导数值当作整个区间的上界。这里 \(f''(x)=e^x\) 单调递增, 所以 \([0,2]\) 上应取 \(M_2=e^2\) 或任何更大的已证明上界。

练习 7:方法比较

同一 \(M_2\)、区间和网格下,中点上界为何更小?这是否证明中点实际误差总更小?

答案

证明给出的常数分别为 \(1/24\)\(1/12\),所以中点上界是梯形上界的一半。 这只比较最坏情形上界;具体函数可能出现额外抵消,不能据此断言每次实际误差的 严格大小关系。

常见误区与后续

  • 只写“Riemann 和收敛”,却不给有限网格误差;
  • 把某一点的 \(f''\) 值当作整个区间上的界;
  • 忘记局部误差求和时段数随 \(h^{-1}\) 增长;
  • 网格预算向下取整;
  • 把解析截断误差界说成包含浮点舍入与函数求值误差。

下一单元使用两个相邻小段组成面板,建立 Simpson 权重、四阶误差和正偶数预算。 更高阶外推、自适应与其他求积族不属于本章核心。