跳到正文

误差传播与条件数:输入误差怎样放大

14 分钟

实验数据和参数总有误差。函数 y=f(x) 在小扰动下可用微分 Δy≈f'(x)Δx 估计输出误差。导数不仅描述变化率,也描述模型对输入误差的局部敏感性。

绝对与相对误差

同样误差0.1,对数值100影响很小,对0.2影响很大。绝对误差适合看单位尺度,相对误差适合跨尺度比较。接近0时相对误差可能失去稳定意义。

多变量传播

若 y=f(x₁,…,xₙ),一阶近似由各偏导乘输入扰动相加。最坏情况可取绝对值上界;随机独立误差常用平方和估计,但需明确统计假设,不能混用。

条件问题与算法问题

问题本身对输入极敏感叫病态;算法额外放大舍入误差叫数值不稳定。换更高精度可能缓解后者,却不能让病态问题自动获得可靠信息。

相消

两个很接近的大数相减会丢失有效数字。计算 sqrt(x+1)-sqrt(x) 在大 x 时,可有理化为更稳定形式。代数等价不保证浮点计算同样可靠。

报告精度

结果有效位数应匹配输入和敏感性。给出区间或误差估计,比输出十位小数更诚实。

最后用蒙特卡洛扰动输入做交叉检查,观察输出分布是否与一阶近似一致。

练习:分析圆面积对半径测量误差的敏感性,再找一个会发生大数相消的表达式并改写。

小纸条

代数上等价的两个公式为什么在计算机中可能精度不同?