数值积分:机器怎么算积分
本文基于模型知识整理(生成时未联网核对),误差界建议对照 Numerical Recipes §4 或 Atkinson 复核。
一句话定义
找不到解析原函数(kp-013 的 $e^{-x^2}$ 困境)或只有离散数据点时,数值积分用"采样 + 加权求和"逼近定积分:中点/梯形法则(线性近似,误差 O(h²))、Simpson 法则(抛物线近似,误差 O(h⁴))——用泰勒一阶/二阶思想(kp-008)换取可控制精度的答案。
为什么重要
工程与科学中 99% 的实际积分是数值的:没有闭式解、被积函数是黑盒程序或实验数据(kp-029 的姊妹篇)。理解误差阶,才能回答"要 6 位精度需要多少采样点""我的数据网格够不够密"——这是把 kp-012 的几何直觉变成可交付数字的最后一公里。
前置知识
核心概念
- 中点法则:$\int_a^bf\approx(b-a)f\left(\frac{a+b}2\right)$(单段);复合版每段取中点。
- 梯形法则:$\approx\frac{b-a}2[f(a)+f(b)]$——用两端连线(弦)近似弧;复合版权系数 1,2,2,…,2,1。
- Simpson 法则:$\approx\frac{b-a}6[f(a)+4f(m)+f(b)]$——过三点的抛物线;复合版要求偶数段,系数 1,4,2,4,…,4,1。
- 误差阶(f 光滑、段长 h):中点/梯形 $O(h^2)$(中点常略优且符号相反);Simpson $O(h^4)$。加密一倍:梯形误差 ÷4、Simpson ÷16。
- 权衡:函数求值成本高(黑盒/实验)时,同等精度下 Simpson 用少得多的点。
- 失效警报:不可微/剧烈振荡的被积函数,误差阶承诺失效(光滑性是阶的前提);周期函数另说(梯形对光滑周期函数意外地准)。
原理与机制
为什么中点比梯形"更准一档":梯形用弦替代弧, systematically 高估凸函数;中点用切线平行线,误差反号且只有一半(泰勒展开对两者逐项比较:中点二阶项系数是梯形的一半且异号)——两者平均(或直接 Simpson)时二阶项相消,跳上 O(h⁴),这正是 Simpson 的构造原理。
误差从哪里来:把 f 的泰勒展开逐段代入求和——每一阶的贡献累加出一个 ∑k·h^k 型的整体误差;h→0 时最低次项幸存,给出阶数。kp-008 的余项纪律在这里变成预算表。
自适应积分的思想:误差估计(如 Simpson 与两次中点之比)大的子区间继续二分——把采样预算花在最难的区段;现代积分器(SciPy quad)的默认行为。
图示
梯形: ∫ ≈ h/2·(f₀ + 2f₁ + ⋯ + 2fₙ₋₁ + fₙ) 误差 O(h²)
Simpson: ∫ ≈ h/3·(f₀ + 4f₁ + 2f₂ + 4f₃ + ⋯ + fₙ) 误差 O(h⁴) (n偶)
加密: h→h/2 ⇒ 梯形误差/4 ; Simpson误差/16
警告: 光滑性前提 | 黑盒函数=数值积分的主场 (kp-029)
直观类比
测量蜿蜒国境线:梯形法=把边境线当直线段量;Simpson=每两段用圆滑曲线拟合再量。拐弯越急(函数越不光滑)误差越大;把段切得更碎(h 减半),测量精度按各自的"倍增定律"提升。
实例或案例
- 正态概率:$\int_{-\infty}^{x}e^{-t^2/2}dt$ 无解析原函数——统计软件全部数值积分(kp-030)。
- 实验数据的能量:只有离散采样(传感器),梯形法直接对数据表积分。
- SciPy 实战:
quad(f, a, b)(自适应 Simpson 系)返回 (值, 误差估计)——误差估计与 kp-023 的"信任边界"意识配套使用。
常见误区
- 误区一:"段数够多就一定准"。不光滑(|x| 类尖点)或噪声数据下阶数失效;先看被积函数脾气再谈加密。
- 误区二:"Simpson 的 n 用奇数段"。Simpson 复合版要求偶数子区间——实现 off-by-one 的经典事故。
- 误区三:"把数值积分结果当精确值交付"。永远携带误差阶/估计值——kp-029 的"数值无真值"纪律。
与其他知识点的关系
自测题
- 用单段梯形与 Simpson 估计 $\int_0^1x^2dx$,谁的误差小?
答:梯形给 0.5(真 1/3,误差 1/6);Simpson 给 $\frac16(0+4\cdot\frac14+1)=\frac13$ 精确——x² 是二次多项式,Simpson 对它无误差。
- Simpson 复合版为何要求偶数段?
答:抛物线拟合以"三点一段"为单位(两子区间一段),总段数必须是 2 的倍数。
- 需要把误差从 1e-3 压到 1e-9,梯形与 Simpson 各需加密多少倍?
答:梯形 O(h²):步长 ÷10³;Simpson O(h⁴):步长 ÷10^{1.5}≈÷31.6。
延伸阅读
- Numerical Recipes 第 4 章(积分器全家桶与自适应策略)。
- Atkinson《An Introduction to Numerical Analysis》第 5 章。
- SciPy
integrate文档(quad/quad_vec 实战)。