跳到内容

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). $$

python
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. 在软件系统中看见积分

  • 请求速率随时间积分得到请求总数;
  • 功率随时间积分得到能量;
  • 概率密度在区间积分得到概率;
  • 速度随时间积分得到位移;
  • 连续现金流贴现后积分得到现值。

有些系统用计数器直接记录累计量,比对速率曲线再积分更可靠。但计数器会重置、溢出或丢失,仍需处理数据质量。数学工具不能替代对采集机制的理解。

常见误区

  • 积分永远是正面积:定积分带符号。
  • 密度值就是概率:连续分布的区间概率才由密度积分得到。
  • 采样更密就一定更准:传感器偏差和模型误差不会自动消失。
  • 有解析公式就无需数值考虑:公式在浮点实现中仍可能溢出、消减或精度不足。

练习

  1. 由速度 $v(t)=3t^2$ 求 $t=0$ 到 $t=2$ 的位移。
  2. 用矩形法和梯形法近似 $\int_0^1x^2dx$,比较不同步长的误差。
  3. 解释为什么连续均匀分布在 [0, 0.5] 的概率是 0.5,但任一单点概率是零。
  4. 为监控积分代码增加缺测区间策略,并说明它隐含的业务假设。

小结

导数把整体过程切到局部,积分把局部速率重新累积为总量。计算机面对的是有限样本和有限精度,因此数值积分的答案总要连同采样方式、近似方法与误差假设一起解释。

下一课回到山谷:已知当前位置的局部坡度,怎样选择步长、处理噪声并判断是否真的接近最优解。

Built with VitePress | Software Systems Atlas