Skip to content

应用Application

数值微分中的截断—舍入权衡

施工中 · 内容逐步修订

Numerical differentiation and roundoff · Step-size selection for finite differences

以截断项和函数值舍入项的竞争解释差分误差的 U 形曲线,并据此选择步长和失败诊断。

形式陈述 ​

数值微分的输入是函数求值过程、求导点 x、差分公式和候选步长;输出是导数近似,以及所用步长和误差诊断。函数值不是精确黑箱:在标准浮点误差模型下,可写每次求值为 f^(t)=f(t)+η(t),其中 η 还可能包含内部算法误差和观测噪声。

以下先讨论一阶导数的数值近似。对前向差分,若 f″ 在邻域内有界,截断项为 C1h。两个函数值的误差经除法放大,给出形如

Eforward(h)≲C1h+C2uh

的简化模型;C2 还携带 f(x) 的尺度与函数实现常数。令两项平衡,可得

hbal≍C2uC1.

这里的平衡计算假设 C1,C2>0;若主截断项或求值噪声恰为零,就不能继续沿用该正项平衡。这不是普适数值,因为 C1,C2 会随变量尺度、函数值和求值算法改变。

中心差分的截断项为 C1h2,而函数值误差仍约按 u/h 放大:

Ecenter(h)≲C1h2+C2uh.

平衡点满足

hbal≍(C2u2C1)1/3.

一般 p 阶截断精度的一阶导数公式对应 C1hp+C2u/h,其平衡尺度为 u1/(p+1) 乘上问题相关因子。更高形式阶会改变左侧斜率,却不会消除右侧的舍入增长。 对 m 阶导数,函数值噪声一般由 h−m 放大;在模型 C1hp+C2u/hm 且两系数为正时,最小化得到 hbal=(mC2u/(pC1))1/(p+m)。不能把一阶导数的指数直接用于二阶及更高阶差分。

一个可执行流程应先按 x 和函数变化尺度选取若干几何递减的 h,计算相邻结果与参考值或高阶估计的差,再寻找误差下降后的平台或反弹。若 x+h=x、函数值非有限、差分结果剧烈跳动或继续减小 h 不再改善,应停止并报告分辨率或求值噪声限制,而不是返回最小步长的结果。

对 K 个候选步长,中心差分需要至多 2K 次函数求值;前向差分复用 f(x) 后需要 K+1 次。除保存诊断历史外,计算可用 O(1) 工作存储;函数求值昂贵时,这项成本应与最终误差一起报告。

若函数值本身只有绝对精度 εf,舍入项应改成 O(εf/h);测量噪声往往远大于机器 u。因此固定推荐 h=10−k 会把数据尺度和求值质量藏掉,不能作为通用停止准则。

直觉

步长较大时,两端函数值相隔太远,割线尚不能代表切线,截断误差占主导。步长逐渐缩小时,局部模型变好;但两次函数值也越来越接近,相减后只剩一个小分子,原有舍入和噪声被 1/h 放大。两种趋势相遇后形成 U 形曲线,最低点附近才是当前公式和精度下可利用的区域。

这也解释了为什么微分比函数求值更敏感:求导在连续函数空间上本来就会放大高频扰动。差分公式没有创造这项困难,只是把它以步长和相减的形式暴露出来。

例子与边界

用 binary64 中心差分估计 sin′⁡(1)=cos⁡1,一次典型运行得到下表;具体末位会随数学库和平台略有变化。

h 绝对误差
10−1 9.00×10−4
10−3 9.01×10−8
10−5 1.11×10−11
10−7 1.94×10−10
10−9 2.97×10−9
10−11 1.17×10−6
10−13 1.79×10−4
10−15 1.48×10−2

误差先按中心公式的二阶趋势下降,在 10−5 附近达到本次 sweep 的最低值,随后因消去和函数求值舍入迅速反弹。表格说明最低点必须通过尺度分析或步长实验寻找,不能从“binary64 有约 16 位小数”直接推出。

复步长公式

f′(x)≈Imf(x+ih)h

不做两个接近实数的相减,对实轴邻域上取实值、且能全纯延拓的函数,具有 O(h2) 截断误差,并可在适当实现下保留很小 h 的精度。实值条件不可省略:若 f(z)=i+z,上式在 x=0 给出 1/h+1,而真导数是 1。实现还必须完整保留复数运算;绝对值、最大值、条件分支或只接受实数的外部程序会破坏推导,因此它不是任意黑箱函数的替代品。

自动微分沿程序的链式法则传播导数,符号微分操作表达式,二者通常没有差分的步长权衡;它们仍可能遇到不可微分支、数值溢出或程序语义问题。自动微分页进一步给出共享计算图的正反向执行及累加不变量,可与本页的多步长差分检查交叉核对。区分这些工具是为了选对误差模型,不是把“数值微分”泛化为所有求导实现。

推论与应用

差分梯度常用于检查解析梯度或自动微分结果。检查失败时,应先做步长 sweep 并观察 U 形区域,再判断是目标函数不光滑、函数值有噪声,还是被检查的梯度确有错误;单一 h 的一次差值无法定位原因。

有限差分公式给出截断阶,浮点误差模型解释舍入项,二者合在一起才构成总误差分析。报告结果时应给函数值精度、变量缩放、步长序列、误差度量和停止原因。

参考资料
  • Nicholas J. Higham, Accuracy and Stability of Numerical Algorithms, 2nd ed., SIAM, 2002, Chs. 1–3.
  • David Goldberg, “What Every Computer Scientist Should Know About Floating-Point Arithmetic,” ACM Computing Surveys 23(1), 1991.
  • NIST Digital Library of Mathematical Functions, §3.4: Differentiation, accessed 2026.
关系图谱8 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系