导数描述局部变化率,计算机拿到的却往往只是有限个函数值。数值微分要解决的问题是:选择哪些采样点,怎样组合这些值,以及这个组合在有限精度下能有多准确。

本章以 lecture note 第 4.1–4.4 节为主要依据。h>0h>0 表示采样间距,Dfwd(x;h)D_{\mathrm{fwd}}(x;h)、Dbwd(x;h)D_{\mathrm{bwd}}(x;h)、Dcen(x;h)D_{\mathrm{cen}}(x;h) 分别表示前向、后向、中心差分;二阶导数使用 D(2)(x;h)D^{(2)}(x;h)。所有采样点都须落在函数的定义区间内。基本差分名称沿用讲义;为明确步长依赖,在讲义的 Dfwd(x)D_{\mathrm{fwd}}(x) 等记号中补写参数 hh。高阶公式的 D3,FD_{3,\mathrm F}、D5,CD_{5,\mathrm C} 等名称是本文定义的辅助记号。workbook 与 slide 用于补充推导和算例[1][1] S. Rojas, “Lecture Notes on Computational Mathematics,” 2025. Course lecture note distributed with MTH2051; local source course-lecture-notes.pdf., [2][2] M. U. School of Mathematics, “MTH2051: Introduction to Computational Mathematics: Course Lecture Notes and Study Workbooks,” 2026. Monash University course materials and study workbooks, Semester 2, 2026., [3][3] R. L. Burden and J. D. Faires, Numerical Analysis, 9th ed. Brooks/Cole, Cengage Learning, 2011.。

从 Taylor 定理构造差分

定义三个基本公式

在相应采样点存在时,定义

Dfwd(x;h)=f(x+h)−f(x)h,Dbwd(x;h)=f(x)−f(x−h)h,Dcen(x;h)=f(x+h)−f(x−h)2h.\begin{aligned} D_{\mathrm{fwd}}(x;h)&=\frac{f(x+h)-f(x)}h,\\ D_{\mathrm{bwd}}(x;h)&=\frac{f(x)-f(x-h)}h,\\ D_{\mathrm{cen}}(x;h)&=\frac{f(x+h)-f(x-h)}{2h}. \end{aligned}
定理带符号的截断误差

前向与后向公式要求 f∈C2f\in C^2,中心公式要求 f∈C3f\in C^3。分别存在位于对应采样区间内的点,使

f′(x)−Dfwd(x;h)=−h2f′′(ξF),f′(x)−Dbwd(x;h)=h2f′′(ξB),f′(x)−Dcen(x;h)=−h26f′′′(ξC).\begin{aligned} f'(x)-D_{\mathrm{fwd}}(x;h)&=-\frac h2 f''(\xi_F),\\ f'(x)-D_{\mathrm{bwd}}(x;h)&=\frac h2 f''(\xi_B),\\ f'(x)-D_{\mathrm{cen}}(x;h)&=-\frac{h^2}6 f'''(\xi_C). \end{aligned}
证明

由带 Lagrange 余项的 Taylor 定理,前向增量为

f(x+h)=f(x)+hf′(x)+h22f′′(ξF).f(x+h)=f(x)+hf'(x)+\frac{h^2}{2}f''(\xi_F).

移项并除以 hh,得到前向公式。对 f(x−h)f(x-h) 做同样展开,二次项的符号保持为正,一次项变为负,得到后向公式。

中心公式需要保留两侧的三阶余项:

f(x±h)=f(x)±hf′(x)+h22f′′(x)±h36f′′′(ξ±).f(x\pm h)=f(x)\pm hf'(x)+\frac{h^2}{2}f''(x) \pm\frac{h^3}{6}f'''(\xi_\pm).

两式相减后,偶次项消去。误差中出现两个三阶导数的平均值。f′′′f''' 连续,由介值定理,这个平均值等于区间内某点的 f′′′(ξC)f'''(\xi_C)。除以 2h2h 即得结论。

因此基本前向、后向公式是一阶准确,中心公式是二阶准确。这里的“阶”是精度阶数,并非导数的阶数。在凸函数上,前向公式高估导数,后向公式低估;这个判断来自误差符号和 f′′≥0f''\geq0。

指数曲线及前向、中心割线

指数曲线及前向、中心割线

从插值到高阶公式

多项式插值提供另一条构造路线:先用节点值确定 pnp_n,再计算 pn′(xr)p_n'(x_r)。这里沿用 lecture note 第 5.1 节的小写 pnp_n,表示次数至多为 nn 的一般插值多项式;大写 PnP_n 留给 Legendre 多项式。

定理节点处的插值导数余项

设 n≥1n\geq1,节点 x0,…,xnx_0,\ldots,x_n 互异,f∈Cn+1f\in C^{n+1}。令

ω(t)=∏j=0n(t−xj).\omega(t)=\prod_{j=0}^n(t-x_j).

对任一节点 xrx_r,存在节点凸包中的 ξ\xi,满足

f′(xr)−pn′(xr)=f(n+1)(ξ)(n+1)!ω′(xr).f'(x_r)-p_n'(x_r) =\frac{f^{(n+1)}(\xi)}{(n+1)!}\omega'(x_r).
证明

节点互异保证 ω′(xr)≠0\omega'(x_r)\ne0。取

C=f′(xr)−pn′(xr)ω′(xr),Φ(t)=f(t)−pn(t)−Cω(t).C=\frac{f'(x_r)-p_n'(x_r)}{\omega'(x_r)},\qquad \Phi(t)=f(t)-p_n(t)-C\omega(t).

Φ\Phi 在所有节点为零,并满足 Φ′(xr)=0\Phi'(x_r)=0。因此共有至少 n+2n+2 个按重数计算的零点。反复使用 Rolle 定理,存在 ξ\xi 使 Φ(n+1)(ξ)=0\Phi^{(n+1)}(\xi)=0。pnp_n 的这阶导数为零,ω(n+1)=(n+1)!\omega^{(n+1)}=(n+1)!,故 C=f(n+1)(ξ)/(n+1)!C=f^{(n+1)}(\xi)/(n+1)!。

这个证明没有对未知的 ξ(t)\xi(t) 求导。直接微分逐点插值余项,却把 ξ\xi 当常数,是不合法的。

对于三个节点 x,x+h,x+2hx,x+h,x+2h,Lagrange 基在左端的导数权重依次是 (−3,4,−1)/(2h)(-3,4,-1)/(2h),于是

D3,F(x;h)=−3f(x)+4f(x+h)−f(x+2h)2h.D_{3,\mathrm F}(x;h) =\frac{-3f(x)+4f(x+h)-f(x+2h)}{2h}.

节点余项定理给出

f′(x)−D3,F(x;h)=h23f′′′(ξ).f'(x)-D_{3,\mathrm F}(x;h) =\frac{h^2}{3}f'''(\xi).

右端使用

D3,B(x;h)=3f(x)−4f(x−h)+f(x−2h)2h,D_{3,\mathrm B}(x;h) =\frac{3f(x)-4f(x-h)+f(x-2h)}{2h},

其余项同为 h2f′′′(ξ)/3h^2f'''(\xi)/3。三点中心公式就是 Dcen(x;h)D_{\mathrm{cen}}(x;h),中间节点的权重为零。

五点中心公式为

D5,C(x;h)=f(x−2h)−8f(x−h)+8f(x+h)−f(x+2h)12h.D_{5,\mathrm C}(x;h) =\frac{f(x-2h)-8f(x-h)+8f(x+h)-f(x+2h)}{12h}.

五点左端公式为

D5,F(x;h)=−25f(x)+48f(x+h)−36f(x+2h)+16f(x+3h)−3f(x+4h)12h.D_{5,\mathrm F}(x;h) =\frac{-25f(x)+48f(x+h)-36f(x+2h)+16f(x+3h)-3f(x+4h)}{12h}.

若 f∈C5f\in C^5,节点余项定理分别给出

f′(x)−D5,C(x;h)=h430f(5)(ξ),f′(x)−D5,F(x;h)=h45f(5)(η).\begin{aligned} f'(x)-D_{5,\mathrm C}(x;h)&=\frac{h^4}{30}f^{(5)}(\xi),\\ f'(x)-D_{5,\mathrm F}(x;h)&=\frac{h^4}{5}f^{(5)}(\eta). \end{aligned}

这里的常数来自节点积:中心处 ω′(x)=4h4\omega'(x)=4h^4,左端处 ω′(x)=24h4\omega'(x)=24h^4。右端五点公式可将左端公式中的 hh 换成 −h-h,保持整个分母的符号同步改变。

命题权重为什么是这些数

上面的三点、五点公式恰是相应 Lagrange 插值多项式在目标节点的导数。

证明

把节点写成 x+rjhx+r_jh,则第 jj 个基函数是

ℓj(x+sh)=∏k≠js−rkrj−rk.\ell_j(x+sh)=\prod_{k\ne j}\frac{s-r_k}{r_j-r_k}.

对 ss 求导,再乘 1/h1/h,即可得到全部权重。也可独立核对矩条件。若写成 h−1∑jwjf(x+rjh)h^{-1}\sum_jw_jf(x+r_jh),权重须满足

∑jwjrjk={1,k=1,0,k=0,2,…,n.\sum_jw_jr_j^k= \begin{cases}1,&k=1,\\0,&k=0,2,\ldots,n.\end{cases}

三点前向权重 (−3/2,2,−1/2)(-3/2,2,-1/2) 的前三个矩是 (0,1,0)(0,1,0)。五点中心权重 (1,−8,0,8,−1)/12(1,-8,0,8,-1)/12 的前五个矩是 (0,1,0,0,0)(0,1,0,0,0);五点前向权重 (−25,48,−36,16,−3)/12(-25,48,-36,16,-3)/12 也满足同一组矩条件。节点互异,若两个权重向量均满足条件,它们对每个 Lagrange 基函数的作用相同,因而逐项相等。权重因此唯一。

二阶导数与一般矩条件

定义

D(2)(x;h)=f(x+h)−2f(x)+f(x−h)h2.D^{(2)}(x;h)=\frac{f(x+h)-2f(x)+f(x-h)}{h^2}.
定理二阶中心差分的误差

若 f∈C4f\in C^4,存在 ξ∈(x−h,x+h)\xi\in(x-h,x+h),使

f′′(x)−D(2)(x;h)=−h212f(4)(ξ).f''(x)-D^{(2)}(x;h)=-\frac{h^2}{12}f^{(4)}(\xi).
证明

将两侧 Taylor 展开保留到三次项,并分别写四阶 Lagrange 余项。相加后奇次项消去;减去 2f(x)2f(x) 再除以 h2h^2,得到四阶导数平均值乘 h2/12h^2/12。连续性和介值定理把平均值写成某点导数。

讲义第 4.3 节还给出五点二阶中心公式。以 D5(2)D_5^{(2)} 作为本文的辅助名称:

D5(2)(x;h)=−f(x+2h)+16f(x+h)−30f(x)+16f(x−h)−f(x−2h)12h2.D_5^{(2)}(x;h)=\frac{-f(x+2h)+16f(x+h)-30f(x)+16f(x-h)-f(x-2h)}{12h^2}.
命题五点二阶公式的四阶精度

若 f∈C6f\in C^6,则当 h→0h\to0 时

D5(2)(x;h)=f′′(x)−h490f(6)(x)+o(h4).D_5^{(2)}(x;h)=f''(x)-\frac{h^4}{90}f^{(6)}(x)+o(h^4).
证明

节点偏移 (−2,−1,0,1,2)(-2,-1,0,1,2) 的权重为 (−1,16,−30,16,−1)/12(-1,16,-30,16,-1)/12。零至五阶矩依次为 (0,0,2,0,0,0)(0,0,2,0,0,0),六阶矩为 −8-8。Taylor 展开到六阶后除以 h2h^2,二阶项给出 f′′f'',六阶项给出 −8h4f(6)(x)/6!=−h4f(6)(x)/90-8h^4f^{(6)}(x)/6!=-h^4f^{(6)}(x)/90。连续六阶导数保证余项为 o(h4)o(h^4)。

边界不能使用左右对称节点。四点前向二阶公式为

2f(x)−5f(x+h)+4f(x+2h)−f(x+3h)h2=f′′(x)−1112h2f(4)(x)+O(h3),\frac{2f(x)-5f(x+h)+4f(x+2h)-f(x+3h)}{h^2} =f''(x)-\frac{11}{12}h^2f^{(4)}(x)+O(h^3),

这个展开要求 f∈C5f\in C^5。将权重 (2,−5,4,−1)(2,-5,4,-1) 代入 Taylor 展开,零至三阶矩依次为 (0,0,2,0)(0,0,2,0),四阶矩为 −22-22,便得到系数 −22/4!=−11/12-22/4!=-11/12;五阶余项除以 h2h^2 为 O(h3)O(h^3)。

一般地,若近似 rr 阶导数,写成 h−r∑jwjf(x+rjh)h^{-r}\sum_jw_jf(x+r_jh)。为了达到 pp 阶精度,零至 r+p−1r+p-1 阶矩应全部匹配:只有第 rr 阶矩为 r!r!,其余为零。Taylor 定理直接证明误差为 O(hp)O(h^p),前提是所需导数连续有界。增加节点数本身不保证提高精度,关键是这些矩是否消去。

步长越小,结果未必越好

沿用讲义第 4.4 节,以 ϵmach\epsilon_{\mathrm{mach}} 表示机器精度。假设采样值的绝对误差各不超过 δ\delta。中心一阶差分的采样误差至多为 δ/h\delta/h,因为两个扰动相减再除以 2h2h。中心二阶差分的对应界为 4δ/h24\delta/h^2。这里尚未包括除法和自变量舍入;它是一个明确的采样扰动模型。

定理一阶导数误差模型的最优步长

对正数 C1,C2,ϵmachC_1,C_2,\epsilon_{\mathrm{mach}} 和 p≥1p\geq1,模型

Emodel(h)=C1hp+C2ϵmachhE_{\mathrm{model}}(h)=C_1h^p+\frac{C_2\epsilon_{\mathrm{mach}}}{h}

在 h>0h>0 上具有唯一最小点

hopt=(C2ϵmachpC1)1/(p+1).h_{\mathrm{opt}}=\left(\frac{C_2\epsilon_{\mathrm{mach}}}{pC_1}\right)^{1/(p+1)}.
证明

导数为 pC1hp−1−C2ϵmach/h2pC_1h^{p-1}-C_2\epsilon_{\mathrm{mach}}/h^2,其符号与严格递增的 pC1hp+1−C2ϵmachpC_1h^{p+1}-C_2\epsilon_{\mathrm{mach}} 相同,故只有一个由负变正的零点。模型在两端都趋于无穷,该点是唯一全局最小点。代入得最小模型误差为 O(ϵmachp/(p+1))O(\epsilon_{\mathrm{mach}}^{p/(p+1)}),常数取决于 C1,C2,pC_1,C_2,p。

中心二阶导数的扰动项是 h−2h^{-2},同理最优模型步长按 ϵmach1/(p+2)\epsilon_{\mathrm{mach}}^{1/(p+2)} 缩放,不能套用上面一阶导数的结论。实际误差可能振荡甚至偶然为零;U 形包络并不是每次测量都严格满足的轨迹。

交互实验:比较精度与舍入

这个交互图需要启用 JavaScript。

实验固定 f(x)=exf(x)=e^x、x=0x=0,一阶和二阶真导数均为一。先把步长从 0.10.1 减半:基本前向误差约缩小两倍,中心误差约缩小四倍。再继续减小步长,观察实际误差与示意包络的区别。选取二阶导数时,留意采样扰动为何更快放大。

公式h=0.1h=0.1 的近似真值为一时的绝对误差
前向1.0517091810.051709181
中心1.0016675000.001667500
五点中心0.9999966630.000003337

这些数值用于核验推导,不替代一般误差定理。若只有实验数据,还须检查测量噪声和节点间距是否符合公式的假设。

如何选用

内点且数据光滑时先考虑中心公式;边界用单侧高阶公式。先确认节点可用,再估计导数与采样噪声的尺度。需要更高精度时,可以在满足误差展开条件的前提下使用 Richardson 外推。这条路线消去的是已知阶数的误差项,无法消除任意噪声。

参考文献

  1. [1] S. Rojas, “Lecture Notes on Computational Mathematics,” 2025. Course lecture note distributed with MTH2051; local source course-lecture-notes.pdf. ↩
  2. [2] M. U. School of Mathematics, “MTH2051: Introduction to Computational Mathematics: Course Lecture Notes and Study Workbooks,” 2026. Monash University course materials and study workbooks, Semester 2, 2026. ↩
  3. [3] R. L. Burden and J. D. Faires, Numerical Analysis, 9th ed. Brooks/Cole, Cengage Learning, 2011. ↩