11.2 积分与数值积分:从局部速率到累计总量
监控系统每分钟记录一次请求速率,业务却问一天处理了多少请求;概率模型给出的是密度,产品却关心某个区间内发生事件的概率。两类问题都在把局部速率累积成总量。
本课目标
- 区分不定积分与定积分;
- 用微积分基本定理连接导数和积分;
- 理解概率密度、累计量与面积的关系;
- 比较矩形法、梯形法和采样误差。
1. 定积分是和的极限
把区间 $[a,b]$ 切成许多小段,在每段取一个样本点 $x_i^*$,形成黎曼和:
$$ \sum_{i=1}^{n}f(x_i^*)\Delta x_i. $$
当分割越来越细,若这些和趋向同一极限,就得到定积分:
$$ \int_a^b f(x),dx. $$
若 $f(x)\ge0$,它可解释为曲线与横轴间的带符号面积。函数在横轴下方时贡献为负,因此定积分不是无条件的几何面积。
单位检查很有帮助:若 $f(t)$ 的单位是“请求/秒”,$dt$ 的单位是秒,积分结果就是请求数。
2. 不定积分是一族原函数
若 $F'(x)=f(x)$,则 $F$ 是 $f$ 的一个原函数:
$$ \int f(x),dx=F(x)+C. $$
$C$ 不能省略,因为导数会消去任意常数。定积分则由上下限给出一个数,不需要再加任意常数。
微积分基本定理把局部变化与累计量连接起来:
$$ \int_a^b f(x),dx=F(b)-F(a),\qquad F'=f. $$
它并不是说所有函数都有容易写出的初等原函数。许多实际积分只能用特殊函数或数值方法计算。
3. 概率密度不是点概率
连续随机变量 $X$ 的密度 $p(x)$ 满足:
$$ p(x)\ge0,\qquad \int_{-\infty}^{\infty}p(x),dx=1. $$
区间概率为:
$$ P(a\le X\le b)=\int_a^b p(x),dx. $$
对连续分布,单点概率 $P(X=x)$ 通常为零,但密度 $p(x)$ 可以大于零,甚至可能大于 1。密度有单位,概率没有单位;不能把某点的密度值直接叫作“这个值发生的概率”。
累计分布函数是:
$$ F(x)=P(X\le x)=\int_{-\infty}^{x}p(t),dt. $$
在可导处有 $F'(x)=p(x)$,这正是累计量与局部速率的关系。
4. 采样数据只能近似积分
若只有离散监控点,可以用梯形法:
$$ \int_a^b f(x),dx \approx \sum_i \frac{f(t_i)+f(t_{i+1})}{2}(t_{i+1}-t_i). $$
from collections.abc import Sequence
def trapezoidal_integral(
times: Sequence[float], rates: Sequence[float]
) -> float:
if len(times) != len(rates) or len(times) < 2:
raise ValueError("times 和 rates 必须等长且至少包含两个点")
if any(right <= left for left, right in zip(times, times[1:])):
raise ValueError("时间戳必须严格递增")
total = 0.0
for left, right, r_left, r_right in zip(
times, times[1:], rates, rates[1:]
):
total += (r_left + r_right) * (right - left) / 2
return total
seconds = [0, 60, 120, 180]
requests_per_second = [10, 14, 13, 9]
print(trapezoidal_integral(seconds, requests_per_second))这个结果依赖采样假设:相邻观测之间用直线连接。若中间发生尖峰,低频采样可能完全错过。增加算法精度不能弥补原始数据没有观测到的变化。
常见数值积分方法包括:
| 方法 | 区间内假设 | 特点 |
|---|---|---|
| 左/右矩形法 | 函数值保持不变 | 简单,方向性偏差明显 |
| 中点法 | 用中点代表区间 | 通常比端点矩形更准 |
| 梯形法 | 相邻点间线性变化 | 适合已有离散样本 |
| Simpson 法 | 局部二次近似 | 对光滑函数精度更高 |
| 自适应积分 | 在难点处细分 | 控制估计误差,但成本变化 |
5. 误差来自不止一个地方
数值积分至少要区分:
- 建模误差:真实过程并不等于选定函数;
- 采样误差:观测频率不足或时间戳不规则;
- 离散化误差:有限分割近似连续积分;
- 舍入误差:浮点累计造成的偏差。
缩小步长通常降低离散化误差,却增加计算量和浮点运算次数。选择方法时要结合函数平滑性、误差目标和计算预算,而不是只比较公式阶数。
6. 在软件系统中看见积分
- 请求速率随时间积分得到请求总数;
- 功率随时间积分得到能量;
- 概率密度在区间积分得到概率;
- 速度随时间积分得到位移;
- 连续现金流贴现后积分得到现值。
有些系统用计数器直接记录累计量,比对速率曲线再积分更可靠。但计数器会重置、溢出或丢失,仍需处理数据质量。数学工具不能替代对采集机制的理解。
常见误区
- 积分永远是正面积:定积分带符号。
- 密度值就是概率:连续分布的区间概率才由密度积分得到。
- 采样更密就一定更准:传感器偏差和模型误差不会自动消失。
- 有解析公式就无需数值考虑:公式在浮点实现中仍可能溢出、消减或精度不足。
练习
- 由速度 $v(t)=3t^2$ 求 $t=0$ 到 $t=2$ 的位移。
- 用矩形法和梯形法近似 $\int_0^1x^2dx$,比较不同步长的误差。
- 解释为什么连续均匀分布在
[0, 0.5]的概率是0.5,但任一单点概率是零。 - 为监控积分代码增加缺测区间策略,并说明它隐含的业务假设。
小结
导数把整体过程切到局部,积分把局部速率重新累积为总量。计算机面对的是有限样本和有限精度,因此数值积分的答案总要连同采样方式、近似方法与误差假设一起解释。
下一课回到山谷:已知当前位置的局部坡度,怎样选择步长、处理噪声并判断是否真的接近最优解。