3. 噪声对差分的影响分析
数值微分在理论上只是“差商逼近导数”,但在工程实现中,真正决定结果可用性的往往不是截断误差,而是噪声。传感器读数、ADC量化、浮点舍入都会在相邻采样点之间引入随机扰动,而差分运算恰恰是“用两个相近的数相减再除以一个很小的数”,这种结构对噪声极其敏感。本节从噪声放大机制出发,推导误差传播公式,并用具体数值示例说明信噪比如何随步长恶化,为后续的噪声抑制方法建立定量直觉。
一、噪声放大机制:小分母与相减抵消
先约定记号:设真实信号为 f(x),实际观测为 f̃(x) = f(x) + ε(x),其中 ε(x) 是零均值、标准差为 σ 的独立噪声。采用前向差分估计导数:
D_h f̃(x) = [f̃(x+h) − f̃(x)] / h
= [f(x+h) − f(x)] / h + [ε(x+h) − ε(x)] / h
第一项是真实差商,第二项就是噪声贡献。关键观察有两点。其一,分子中两个噪声样本相减,方差相加而非相消:Var(ε(x+h) − ε(x)) = 2σ²。其二,整个噪声项还要除以步长 h,于是噪声被放大 1/h 倍。步长越小,差商越接近真实导数,但噪声项反而越剧烈——这正是数值微分中“截断误差与噪声误差此消彼长”的核心矛盾。
从几何上看,差分是用两点连线斜率近似切线斜率。当 h 很小时,两点的函数值几乎相等,其差值主要由噪声决定,连线方向被噪声“劫持”,斜率估计随之剧烈抖动。可以把它理解为:信号差值的量级约为 f′(x)·h,而噪声差值的量级约为 √2·σ,两者之比随 h 减小而下降,噪声逐渐占据主导。
二、误差传播公式:从单点方差到导数方差
把上面的直觉写成公式。对前向差分,噪声项为 η = [ε(x+h) − ε(x)] / h。由于两个噪声样本独立,
E[η] = 0
Var(η) = (σ² + σ²) / h² = 2σ² / h²
标准差(η) = √2 · σ / h
若改用中心差分 [f̃(x+h) − f̃(x−h)] / (2h),噪声项为 [ε(x+h) − ε(x−h)] / (2h),方差为 2σ² / (4h²) = σ² / (2h²),标准差为 σ / (√2 · h)。可见中心差分在相同步长下把噪声标准差降低了约 √2 倍,这是它除了截断误差更小之外的第二个优势。
更一般地,若差分模板的系数为 c_i(满足 Σc_i = 0 以消去常数项),则噪声标准差为 σ · √(Σc_i²) / h^p,其中 p 为分母中 h 的幂次。这个式子说明:模板系数绝对值越大、分母步长越小,噪声放大越严重。高阶差分模板虽然截断误差更小,但系数平方和通常更大,噪声代价更高,实际选用时必须在两者之间权衡。
把截断误差也纳入,前向差分的总误差上界可写成 |f″(ξ)|·h/2 + √2·σ/h。对 h 求极小,得到最优步长 h* ≈ √(2√2·σ / |f″|),量级为 √σ。这解释了一个常见现象:当数据带有约 10⁻³ 量级噪声时,最优步长往往在 10⁻² 附近,而不是盲目取 10⁻⁶。
三、信噪比恶化示例:一组可复算的数值
下面给出一个明确标注为教学示例的计算,便于读者自行复现。设真实函数 f(x) = sin(x),在 x = 0.5 处导数真值为 cos(0.5) ≈ 0.87758。观测噪声标准差取 σ = 1×10⁻³,分别用前向差分在 h = 10⁻¹、10⁻²、10⁻³、10⁻⁴ 下估计,噪声标准差按 √2σ/h 计算:
| 步长 h | 噪声标准差 √2σ/h | 截断误差量级 |f″|h/2 | 噪声/信号比 | 结果可用性判断 |
|---|---|---|---|---|
| 1×10⁻¹ | ≈ 1.41×10⁻² | ≈ 2.2×10⁻² | ≈ 1.6% | 截断误差主导,尚可 |
| 1×10⁻² | ≈ 1.41×10⁻¹ | ≈ 2.2×10⁻³ | ≈ 16% | 噪声开始明显 |
| 1×10⁻³ | ≈ 1.41 | ≈ 2.2×10⁻⁴ | ≈ 161% | 噪声淹没信号 |
| 1×10⁻⁴ | ≈ 14.1 | ≈ 2.2×10⁻⁵ | ≈ 1607% | 完全不可用 |
表中“噪声/信号比”以噪声标准差除以导数真值 0.87758 估算。可以看到,当 h 从 10⁻² 降到 10⁻³ 时,截断误差下降了约一个数量级,但噪声标准差上升了约一个数量级,总误差反而变大。若用信噪比 SNR = 20·log₁₀(|f′| / 噪声标准差) 衡量,h = 10⁻² 时约 15.9 dB,h = 10⁻³ 时降至约 −4.1 dB,即噪声功率已超过信号功率。这就是“信噪比恶化”的定量含义:不是信号变弱了,而是差分把噪声抬到了与信号同一量级甚至更高。
常见误区:认为“步长越小越精确”。在无噪声的理想数学环境中这成立,但在带噪数据上,步长小于 √σ 量级后,导数估计会被噪声主导,继续减小步长只会让结果更差。判断依据应是比较噪声标准差与截断误差的量级,而不是凭经验取一个很小的 h。