中点与梯形公式怎样产生可证明误差界?¶
先备知识¶
第 19 章说明任意带标记 Riemann 和在网格趋零时逼近积分,却没有给出某个有限网格 已经误差多小。第 16 章的有限 Taylor 余项和第 15 章的 Rolle 定理可以把函数弯曲程度 转化为有限误差界。
本单元始终在有限闭区间 \([a,b]\) 上工作。反常积分需要先截断;截断后的有限部分才 能使用这里的公式。
学习目标¶
完成本单元后,你应能:
- 从均匀分割写出复合中点与梯形公式;
- 推导中点公式的 \(1/24\) 误差常数;
- 推导梯形公式的 \(1/12\) 误差常数;
- 解释局部 \(O(h^3)\) 怎样累积成全局 \(O(h^2)\);
- 证明导数界覆盖整个区间;
- 正确解释 Python 结果中的条件性误差上界。
牵引问题¶
把 \([a,b]\) 等分成 \(n\) 段,并在每段取中点,当然会得到一个 Riemann 和。但如果 只知道“\(n\) 越大越好”,就无法在运行前决定需要多少段。怎样从 \(f''\) 的界直接 推出有限 \(n\) 的误差保证?
探索与猜想¶
中点公式在每小段只使用中心函数值。Taylor 展开中的一次项关于中点奇对称,积分后 消失,首个需要控制的项是二阶弯曲。
梯形公式用端点割线替代曲线。线性函数没有误差;曲线偏离割线的大小同样由二阶导数 控制。因此两种方法都有二阶全局误差,但常数不同。
概念与理论¶
设
复合中点公式¶
第 \(i\) 段的中点为
复合中点近似定义为
它是一个特定的带标记 Riemann 和。下面的定理不只说明 \(M_n\to\int f\),还给出 有限网格的显式差值界。
中点误差定理¶
定理。 设 \(f\in C^2[a,b]\),并且在整个区间上
则
证明。 固定小区间 \([x_{i-1},x_i]\),记中点为 \(m_i\)。Taylor 余项估计给出
在该小区间积分。一次项关于 \(m_i\) 奇对称,积分为零。因此
共有 \(n\) 段,三角不等式给出
证毕。
每段误差是三次量级,因为积分多带来一个长度因子;段数 \(n=(b-a)/h\) 再消耗一个 \(h^{-1}\),所以全局是二次量级。
复合梯形公式¶
第 \(i\) 段用连接两个端点的割线替代曲线。割线下的面积为
相邻小段共享内部端点,求和得到
线性插值余项¶
设 \(\ell_i\) 是通过 \((x_{i-1},f(x_{i-1}))\)、\((x_i,f(x_i))\) 的直线。对内部点 \(x\),构造
并选 \(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\in C^2[a,b]\) 且 \(|f''|\le M_2\),则
证明。 在一小段上,由插值余项
令 \(t=x-x_{i-1}\),则
对 \(n\) 段求和:
证毕。
同一导数界和同一网格下,梯形误差上界是中点误差上界的两倍。这是上界比较,不表示 每个具体函数的实际误差一定恰好相差两倍。
从误差界到网格预算¶
若希望中点误差不超过 \(\tau>0\),只需
即
梯形公式把分母 \(24\) 改成 \(12\)。最终 \(n\) 必须向上取整;向下取整会破坏已证明 的不等式。
例题与迁移¶
例 1:二次函数达到误差常数¶
取 \(f(x)=x^2\)、区间 \([0,1]\)、\(n=4\),则 \(h=1/4\)、\(M_2=2\)。
而 \(\int_0^1x^2dx=1/3\),所以
梯形值为 \(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}\),只需
右侧约为 \(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\),四个中点为
因而 \(M_4=\frac12\sum f(m_i)\)。
练习 2:梯形权重¶
为什么复合梯形公式的内部节点权重为 \(1\),两个端点权重为 \(1/2\)?
答案
每个内部节点同时属于左右两段,在两个局部梯形中各贡献 \(h/2\),合计为 \(h\); 总区间端点只出现一次,各贡献 \(h/2\)。
练习 3:中点预算¶
设区间长度为 \(3\),且 \(|f''|\le4\)。要使中点误差不超过 \(10^{-3}\),给出 充分网格数。
答案
因 \(\sqrt{4500}\approx67.08\),取 \(n=68\)。
练习 4:梯形预算¶
在上一题相同条件下,梯形公式至少取多少段?
答案
\(\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 权重、四阶误差和正偶数预算。 更高阶外推、自适应与其他求积族不属于本章核心。