在多项式插值中,曲线仅受限于离散点的位置值:Pn(xi)=yiP_n(x_i) = y_i。

但在力学系统、航迹规划与机器人控制中,传感器往往同时记录了位置坐标与运动速度:

f(xi)=yi以及f′(xi)=yi′.f(x_i) = y_i \quad \text{以及} \quad f'(x_i) = y'_i.

若仍采用普通的点值插值,生成的多项式虽然能够穿过各个路标,却会对各点的切线朝向视而不见,容易在采样点之间诱发不自然的剧烈摆动。

Hermite 插值将导数约束直接纳入多项式求解框架[1][1] R. L. Burden and J. D. Faires, Numerical Analysis, 9th ed. Brooks/Cole, Cengage Learning, 2011., [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.:

  1. Hermite 插值问题:在 P2n+1P_{2n+1} 空间中匹配 2(n+1)2(n+1) 个数值与导数条件;
  2. 存在唯一性定理:利用代数双重根因式分解证明唯一性,通过秩零化度定理证明双射存在;
  3. 基函数解耦哲学:利用平方 Lagrange 基(ℓi(x)2\ell_i(x)^2)消除不同节点间的导数串扰;
  4. 误差余项与切触几何:证明平方节点乘积项 ∏(x−xi)2\prod (x - x_i)^2,揭示误差曲线在节点处的二阶相切特征;
  5. 重节点差商形式:将差商递归拓展到重节点,规避浮点接近判断陷阱;
  6. 不完全条件与密切插值:建立从离散插值向 Taylor 展开的渐进过渡。

Hermite 插值问题定义

定义Hermite 插值多项式

设 a<ba < b,f∈C1([a,b])f \in C^1([a, b]),且 x0,x1,…,xnx_0, x_1, \dots, x_n 为闭区间 [a,b][a, b] 内的 n+1n+1 个两两互异节点。Hermite 插值多项式即为满足如下条件的多项式 H2n+1∈P2n+1H_{2n+1} \in P_{2n+1}:

H2n+1(xi)=f(xi)且H2n+1′(xi)=f′(xi),i=0,1,…,n.H_{2n+1}(x_i) = f(x_i) \quad \text{且} \quad H'_{2n+1}(x_i) = f'(x_i), \quad i = 0, 1, \dots, n.

这里 PmP_m 表示次数不超过 mm 的实多项式空间,其维数为 dim⁡(Pm)=m+1\dim(P_m) = m+1。

对约束条件进行维数核对:

  • 共有 n+1n+1 个独立节点;
  • 每个节点提供 2 个标量方程(1 个函数值,1 个一阶导数值);
  • 总约束方程数为 N=2(n+1)=2n+2N = 2(n+1) = 2n + 2;
  • 能够保证线性方程组对于任意右端项均有唯一解的多项式空间,其维数需为 2n+22n + 2,对应多项式的最高次数为 d=N−1=2n+1d = N - 1 = 2n + 1。

存在与唯一性定理

维数吻合并不等价于线性方程组必定满秩可解。以下利用多项式重根性质给出严密的唯一性与存在性证明。

定理Hermite 插值的存在唯一性

在定义 1 的假设下,在多项式空间 P2n+1P_{2n+1} 中存在且仅存在一个多项式 H2n+1H_{2n+1},同时满足全部 2n+22n+2 个数值与导数条件。

证明

唯一性证明(双重根因式分解):设有两个多项式 H1,H2∈P2n+1H_1, H_2 \in P_{2n+1} 均满足上述 Hermite 条件:

H1(xi)=H2(xi)=f(xi)且H1′(xi)=H2′(xi)=f′(xi),i=0,1,…,n.H_1(x_i) = H_2(x_i) = f(x_i) \quad \text{且} \quad H'_1(x_i) = H'_2(x_i) = f'(x_i), \quad i = 0, 1, \dots, n.

定义差多项式 Q(x)=H1(x)−H2(x)Q(x) = H_1(x) - H_2(x)。由于 P2n+1P_{2n+1} 是线性空间,故 Q∈P2n+1Q \in P_{2n+1},其次数不超过 2n+12n+1(或 Q≡0Q \equiv 0)。

在每个节点 xix_i 处计算 QQ 及其导数的取值:

Q(xi)=H1(xi)−H2(xi)=f(xi)−f(xi)=0,Q′(xi)=H1′(xi)−H2′(xi)=f′(xi)−f′(xi)=0.\begin{aligned} Q(x_i) &= H_1(x_i) - H_2(x_i) = f(x_i) - f(x_i) = 0, \\ Q'(x_i) &= H'_1(x_i) - H'_2(x_i) = f'(x_i) - f'(x_i) = 0. \end{aligned}

由多项式因式定理,可微多项式若在某点同时满足函数值与导数值归零,则该点必为多项式的至少二重根(重数 ≥2\ge 2)。因此,(x−xi)2(x - x_i)^2 必为 Q(x)Q(x) 的因子。

由于各节点 x0,x1,…,xnx_0, x_1, \dots, x_n 两两互异,多项式因式 (x−x0)2,…,(x−xn)2(x - x_0)^2, \dots, (x - x_n)^2 两两互素。它们的乘积必须整除 Q(x)Q(x):

∏i=0n(x−xi)2  ∣  Q(x)  ⟹  Q(x)=g(x)∏i=0n(x−xi)2,\prod_{i=0}^n (x - x_i)^2 \;\Big|\; Q(x) \implies Q(x) = g(x) \prod_{i=0}^n (x - x_i)^2,

其中 g(x)g(x) 为某个多项式。

分析次数关系:

  • 乘积因子的次数为 ∑i=0n2=2(n+1)=2n+2\sum_{i=0}^n 2 = 2(n + 1) = 2n + 2;
  • 若 Q(x)≢0Q(x) \not\equiv 0,则 deg⁡Q=deg⁡g+(2n+2)≥2n+2\deg Q = \deg g + (2n + 2) \ge 2n + 2;
  • 然而空间条件限制 deg⁡Q≤2n+1\deg Q \le 2n + 1。

不等式 2n+2≤deg⁡Q≤2n+12n + 2 \le \deg Q \le 2n + 1 产生矛盾。因此假设不成立,必有 Q(x)≡0Q(x) \equiv 0,即 H1=H2H_1 = H_2。

存在性证明(线性代数同构):定义线性算子

H:P2n+1→R2n+2,H(p)=(p(x0),p′(x0),p(x1),p′(x1),…,p(xn),p′(xn)).\mathcal{H}: P_{2n+1} \to \mathbb{R}^{2n+2}, \quad \mathcal{H}(p) = \Big( p(x_0), p'(x_0), p(x_1), p'(x_1), \dots, p(x_n), p'(x_n) \Big).

上述唯一性结论表明,若 H(p)=0\mathcal{H}(p) = \mathbf{0},则必有 p≡0p \equiv 0。这意味着算子的核空间是平凡的:ker⁡(H)={0}\ker(\mathcal{H}) = \{0\},即算子是单射。

又因为两边向量空间的维数完全相等:dim⁡(P2n+1)=2n+2=dim⁡(R2n+2)\dim(P_{2n+1}) = 2n + 2 = \dim(\mathbb{R}^{2n+2}),根据线性代数中的秩零化度定理,有限维同维数空间之间的单射线性映射必然也是满射。因此 H\mathcal{H} 是双射:对于任意给定的数据向量,在 P2n+1P_{2n+1} 中总能找到唯一原像,从而严格证明了解的存在性。

基函数构造与平方解耦机制

为了直接写出多项式解,我们尝试将插值函数按基函数展开:

H2n+1(x)=∑i=0n(f(xi)hi(x)+f′(xi)h^i(x)).H_{2n+1}(x) = \sum_{i=0}^n \Big( f(x_i) h_i(x) + f'(x_i) \hat{h}_i(x) \Big).

这要求每个节点配备两个基多项式:

  • hi(x)h_i(x) 为数值选择子:在 xix_i 处取值为 11、导数为 00;在外来节点处数值与导数皆为 00;
  • h^i(x)\hat{h}_i(x) 为导数选择子:在 xix_i 处取值为 00、导数为 11;在外来节点处数值与导数皆为 00。

为什么一次 Lagrange 基底失效

回顾 Lagrange 插值基 ℓi(x)=∏j≠ix−xjxi−xj∈Pn\ell_i(x) = \prod_{j \neq i} \frac{x - x_j}{x_i - x_j} \in P_n。虽然在外部节点处 ℓi(xj)=0\ell_i(x_j) = 0(j≠ij \neq i),但其导数 ℓi′(xj)\ell'_i(x_j) 通常不为零。如果直接使用 ℓi(x)\ell_i(x),对一个节点导数项的修改就会干扰所有其他节点的导数,产生严重的交叉串扰。

平方因式的解耦突破

考察 Lagrange 基函数的平方项 ℓi(x)2∈P2n\ell_i(x)^2 \in P_{2n}。由链式法则:

(ℓi2)′(x)=2ℓi(x)ℓi′(x).\big(\ell_i^2\big)'(x) = 2 \ell_i(x) \ell'_i(x).

在任意外部节点 xjx_j(j≠ij \neq i)处代入:

  • 函数值:ℓi(xj)2=02=0\ell_i(x_j)^2 = 0^2 = 0;
  • 导数值:(ℓi2)′(xj)=2⋅0⋅ℓi′(xj)=0(\ell_i^2)'(x_j) = 2 \cdot 0 \cdot \ell'_i(x_j) = 0。

平方运算在每个外部节点处天然制造了二阶零点,一举消除所有外部节点在数值与导数上的交叉串扰。

待定系数推导基函数

因为 ℓi(x)2\ell_i(x)^2 属于 P2nP_{2n},乘以一次多项式 (A(x−xi)+B)(A(x - x_i) + B) 后阶数刚好为 2n+12n+1,提供 2 个自由待定参数来满足本节点 xix_i 的要求。

定义Hermite 基多项式

对每个节点 xix_i(i=0,…,ni = 0, \dots, n),Hermite 基多项式显式构造为:

hi(x)=(1−2ℓi′(xi)(x−xi))ℓi(x)2,h^i(x)=(x−xi)ℓi(x)2.h_i(x) = \Big( 1 - 2\ell'_i(x_i)(x - x_i) \Big) \ell_i(x)^2, \quad \hat{h}_i(x) = (x - x_i) \ell_i(x)^2.

它们满足 4 个 Kronecker 选择子性质:

hi(xj)=δij,hi′(xj)=0,h^i(xj)=0,h^i′(xj)=δij.h_i(x_j) = \delta_{ij}, \quad h'_i(x_j) = 0, \quad \hat{h}_i(x_j) = 0, \quad \hat{h}'_i(x_j) = \delta_{ij}.
证明

记常数 ci=ℓi′(xi)c_i = \ell'_i(x_i)。

  1. 推导 hi(x)h_i(x): 设 hi(x)=(A(x−xi)+B)ℓi(x)2h_i(x) = (A(x - x_i) + B)\ell_i(x)^2。

    • 代入本节点值 hi(xi)=1h_i(x_i) = 1:因为 ℓi(xi)=1\ell_i(x_i) = 1,有 (A(0)+B)(1)2=B=1(A(0) + B)(1)^2 = B = 1。
    • 求导:hi′(x)=Aℓi(x)2+(A(x−xi)+1)⋅2ℓi(x)ℓi′(x)h'_i(x) = A \ell_i(x)^2 + (A(x - x_i) + 1) \cdot 2\ell_i(x)\ell'_i(x)。
    • 代入导数条件 hi′(xi)=0h'_i(x_i) = 0:A(1)2+(0+1)⋅2(1)(ci)=A+2ci=0  ⟹  A=−2ciA(1)^2 + (0 + 1) \cdot 2(1)(c_i) = A + 2c_i = 0 \implies A = -2c_i。 故得 hi(x)=(1−2ℓi′(xi)(x−xi))ℓi(x)2h_i(x) = (1 - 2\ell'_i(x_i)(x - x_i))\ell_i(x)^2。
  2. 推导 h^i(x)\hat{h}_i(x): 设 h^i(x)=(C(x−xi)+D)ℓi(x)2\hat{h}_i(x) = (C(x - x_i) + D)\ell_i(x)^2。

    • 代入本节点值 h^i(xi)=0\hat{h}_i(x_i) = 0:有 (C(0)+D)(1)2=D=0(C(0) + D)(1)^2 = D = 0。
    • 求导:h^i′(x)=Cℓi(x)2+C(x−xi)⋅2ℓi(x)ℓi′(x)\hat{h}'_i(x) = C \ell_i(x)^2 + C(x - x_i) \cdot 2\ell_i(x)\ell'_i(x)。
    • 代入导数条件 h^i′(xi)=1\hat{h}'_i(x_i) = 1:C(1)2+0=C=1C(1)^2 + 0 = C = 1。 故得 h^i(x)=(x−xi)ℓi(x)2\hat{h}_i(x) = (x - x_i)\ell_i(x)^2。

在外来节点 xjx_j(j≠ij \neq i)处,因为 ℓi(xj)=0\ell_i(x_j) = 0 且 ℓi(xj)2=0\ell_i(x_j)^2 = 0,函数值与导数值均严格为零。

两点正弦插值算例

例[0, 1] 区间上正弦函数的两点 Hermite 插值

取 f(x)=sin⁡(πx)f(x) = \sin(\pi x),区间为 [0,1][0, 1],节点数为 n=1n = 1(节点为 x0=0x_0 = 0 与 x1=1x_1 = 1)。

第一步:计算节点处函数值与导数值:

f(0)=sin⁡(0)=0,f′(0)=πcos⁡(0)=π,f(1)=sin⁡(π)=0,f′(1)=πcos⁡(π)=−π.\begin{aligned} f(0) &= \sin(0) = 0, \quad f'(0) = \pi \cos(0) = \pi, \\ f(1) &= \sin(\pi) = 0, \quad f'(1) = \pi \cos(\pi) = -\pi. \end{aligned}

第二步:求出线性 Lagrange 基及导数:

ℓ0(x)=x−10−1=1−x  ⟹  ℓ0′(0)=−1,ℓ1(x)=x−01−0=x  ⟹  ℓ1′(1)=1.\ell_0(x) = \frac{x - 1}{0 - 1} = 1 - x \implies \ell'_0(0) = -1, \quad \ell_1(x) = \frac{x - 0}{1 - 0} = x \implies \ell'_1(1) = 1.

第三步:展开四个三次基函数:

  • 在左节点 x0=0x_0 = 0 处:
h0(x)=(1−2(−1)(x−0))(1−x)2=(1+2x)(1−x)2=1−3x2+2x3,h^0(x)=(x−0)(1−x)2=x(1−x)2=x−2x2+x3.\begin{aligned} h_0(x) &= (1 - 2(-1)(x - 0))(1 - x)^2 = (1 + 2x)(1 - x)^2 = 1 - 3x^2 + 2x^3, \\ \hat{h}_0(x) &= (x - 0)(1 - x)^2 = x(1 - x)^2 = x - 2x^2 + x^3. \end{aligned}
  • 在右节点 x1=1x_1 = 1 处:
h1(x)=(1−2(1)(x−1))x2=(3−2x)x2=3x2−2x3,h^1(x)=(x−1)x2=x3−x2.\begin{aligned} h_1(x) &= (1 - 2(1)(x - 1))x^2 = (3 - 2x)x^2 = 3x^2 - 2x^3, \\ \hat{h}_1(x) &= (x - 1)x^2 = x^3 - x^2. \end{aligned}

第四步:线性组合装配多项式:

H3(x)=f(0)h0(x)+f′(0)h^0(x)+f(1)h1(x)+f′(1)h^1(x)=0+πh^0(x)+0−πh^1(x)=π(x(1−x)2−x2(x−1))=πx(1−x)((1−x)−(−x))=πx(1−x).\begin{aligned} H_3(x) &= f(0) h_0(x) + f'(0) \hat{h}_0(x) + f(1) h_1(x) + f'(1) \hat{h}_1(x) \\ &= 0 + \pi \hat{h}_0(x) + 0 - \pi \hat{h}_1(x) \\ &= \pi \Big( x(1 - x)^2 - x^2(x - 1) \Big) \\ &= \pi x(1 - x) \Big( (1 - x) - (-x) \Big) \\ &= \pi x (1 - x). \end{aligned}

三次项系数在此抵消,插值多项式退化为二次多项式。

对比纯值点插值:因为两端点 f(0)=f(1)=0f(0) = f(1) = 0,普通的 Lagrange 线性多项式为割线 P1(x)≡0P_1(x) \equiv 0,完全丢失了正弦波隆起的特征。而 Hermite 插值准确捕捉到了端点向上 π\pi 和向下 −π-\pi 的切线斜率,忠实勾勒出正弦波的穹顶曲线。

这个交互图需要启用 JavaScript。

Hermite 三次插值多项式 H3(x) 拟合正弦函数值与切线斜率,对比水平割线 P1(x)。

Hermite 三次插值多项式 H3(x) 拟合正弦函数值与切线斜率,对比水平割线 P1(x)。

Hermite 误差余项定理

定理Hermite 插值误差余项公式

设 a<ba < b,f∈C2n+2([a,b])f \in C^{2n+2}([a, b])。设 H2n+1∈P2n+1H_{2n+1} \in P_{2n+1} 为在互异节点 x0,…,xnx_0, \dots, x_n 处插值函数 ff 及其导数 f′f' 的多项式。对区间内每个固定的点 x∈[a,b]x \in [a, b],存在中间点 ξx∈(a,b)\xi_x \in (a, b) 使得

f(x)−H2n+1(x)=f(2n+2)(ξx)(2n+2)!∏i=0n(x−xi)2.f(x) - H_{2n+1}(x) = \frac{f^{(2n+2)}(\xi_x)}{(2n+2)!} \prod_{i=0}^n (x - x_i)^2.
证明

若求值点 xx 刚好为某个节点 xix_i,两端均为零,结论显然成立。

现固定不同于任何节点的 x∈(a,b)x \in (a, b)。定义辅助函数(自变量为 t∈[a,b]t \in [a, b]):

ω(t)=∏i=0n(t−xi)2,K=f(x)−H2n+1(x)ω(x),g(t)=f(t)−H2n+1(t)−Kω(t).\omega(t) = \prod_{i=0}^n (t - x_i)^2, \quad K = \frac{f(x) - H_{2n+1}(x)}{\omega(x)}, \quad g(t) = f(t) - H_{2n+1}(t) - K \omega(t).

统计 g(t)g(t) 的零点重数:

  1. 在求值点 t=xt = x 处:根据常数 KK 的定义,有 g(x)=0g(x) = 0;
  2. 在每个插值节点 xix_i 处:因 f−H2n+1f - H_{2n+1} 和 ω\omega 均在节点处取值为零且导数为零,故 g(xi)=0g(x_i) = 0 且 g′(xi)=0g'(x_i) = 0。

这意味着 g(t)g(t) 在这 n+1n+1 个节点处拥有二重零点,在 xx 处拥有单零点。计入重数,g(t)g(t) 在区间内至少拥有 2(n+1)+1=2n+32(n+1) + 1 = 2n + 3 个零点。

应用广义 Rolle 定理:

  • 求一次导后,g′(t)g'(t) 在 n+1n+1 个节点处仍保留一重零点,并在相邻各相异零点之间各产生一个导数零点,共计至少 2n+22n + 2 个零点;
  • 连续求导 2n+22n + 2 次,必然能在区间内找到一点 ξx∈(a,b)\xi_x \in (a, b) 满足 g(2n+2)(ξx)=0g^{(2n+2)}(\xi_x) = 0。

对 g(t)g(t) 连续求导 2n+22n + 2 次:

  • H2n+1H_{2n+1} 次数至多为 2n+12n + 1,求导后归零:H2n+1(2n+2)(t)≡0H_{2n+1}^{(2n+2)}(t) \equiv 0;
  • 乘积多项式 ω(t)=t2n+2+O(t2n+1)\omega(t) = t^{2n+2} + \mathcal{O}(t^{2n+1}) 为首一的 2n+22n+2 次多项式,求导后为常数 (2n+2)!(2n + 2)!。

将中值点 ξx\xi_x 代入:

g(2n+2)(ξx)=f(2n+2)(ξx)−0−K(2n+2)!=0  ⟹  K=f(2n+2)(ξx)(2n+2)!.g^{(2n+2)}(\xi_x) = f^{(2n+2)}(\xi_x) - 0 - K (2n + 2)! = 0 \implies K = \frac{f^{(2n+2)}(\xi_x)}{(2n + 2)!}.

代回最初定义的等式,即得所求误差公式。

误差接触几何:二阶相切特征

对比 Lagrange 误差公式与 Hermite 误差公式,可以看出本质差异:

  • Lagrange 误差项:∏(x−xi)\prod (x - x_i) 在每个节点处仅有一阶零点,误差曲线以非零斜率直接穿透横轴;
  • Hermite 误差项:∏(x−xi)2\prod (x - x_i)^2 在每个节点处拥有二重零点。误差曲线在节点处与横轴相切,以抛物线平坦接触的方式紧贴零点。
例误差定量估计与真值比对

以函数 f(x)=cos⁡(πx)+xf(x) = \cos(\pi x) + x 在 [0,1][0, 1] 上的两点 Hermite 插值为例,四阶导数为 f(4)(x)=π4cos⁡(πx)f^{(4)}(x) = \pi^4 \cos(\pi x),其最大模长为 M4=π4M_4 = \pi^4。

在 x=1/4x = 1/4 处,理论误差上限为:

∣f(1/4)−H3(1/4)∣≤π424(1/4)2(1−1/4)2=3π42048≈0.1427.|f(1/4) - H_3(1/4)| \le \frac{\pi^4}{24} (1/4)^2 (1 - 1/4)^2 = \frac{3\pi^4}{2048} \approx 0.1427.

真值计算表明:f(1/4)≈0.9571f(1/4) \approx 0.9571,H3(1/4)=0.9375H_3(1/4) = 0.9375。真实绝对误差为 0.01960.0196。理论上界约为真误差的 7.3 倍,给出了可靠的保守保证。

Newton 差商形式与重节点扩展

如同 Lagrange 展开一样,当需要增加新的采样点时,重构 Hermite 基函数需要消耗 O(n2)\mathcal{O}(n^2) 开销。能否将差商表推广到 Hermite 插值?

极限观察

回顾导数的定义:

lim⁡ε→0f(xi+ε)−f(xi)ε=f′(xi).\lim_{\varepsilon \to 0} \frac{f(x_i + \varepsilon) - f(x_i)}{\varepsilon} = f'(x_i).

当两个互异节点彼此无限靠近时,差商自然趋向于导数:

lim⁡xi+1→xif[xi,xi+1]=f′(xi).\lim_{x_{i+1} \to x_i} f[x_i, x_{i+1}] = f'(x_i).

这启发我们将每个 Hermite 节点在差商表中连续书写两次:

z2i=z2i+1=xi,i=0,1,…,n.z_{2i} = z_{2i+1} = x_i, \quad i = 0, 1, \dots, n.
定义重节点差商

对于重节点序列 z0,z1,…,z2n+1z_0, z_1, \dots, z_{2n+1},一阶差商定义为:

f[zi,zi+1]={f(zi+1)−f(zi)zi+1−zi,当 zi+1≠zi,f′(zi),当 zi+1=zi.f[z_i, z_{i+1}] = \begin{cases} \frac{f(z_{i+1}) - f(z_i)}{z_{i+1} - z_i}, & \text{当 } z_{i+1} \neq z_i, \\ f'(z_i), & \text{当 } z_{i+1} = z_i. \end{cases}

当外层节点互异时,高阶差商仍沿用标准递归关系:

f[zi,…,zi+k]=f[zi+1,…,zi+k]−f[zi,…,zi+k−1]zi+k−zi.f[z_i, \dots, z_{i+k}] = \frac{f[z_{i+1}, \dots, z_{i+k}] - f[z_i, \dots, z_{i+k-1}]}{z_{i+k} - z_i}.
定理Hermite 插值的 Newton 形式

利用重节点序列 z0,…,z2n+1z_0, \dots, z_{2n+1},Hermite 插值多项式可表达为:

H2n+1(x)=f[z0]+∑k=12n+1f[z0,…,zk]∏j=0k−1(x−zj).H_{2n+1}(x) = f[z_0] + \sum_{k=1}^{2n+1} f[z_0, \dots, z_k] \prod_{j=0}^{k-1} (x - z_j).

正弦算例的差商表求解

设 x0=0x_0 = 0 和 x1=1x_1 = 1,对应序列 z0=0,z1=0,z2=1,z3=1z_0 = 0, z_1 = 0, z_2 = 1, z_3 = 1。输入数据为 f(0)=0,f′(0)=π,f(1)=0,f′(1)=−πf(0) = 0, f'(0) = \pi, f(1) = 0, f'(1) = -\pi。

kzkf[zk]一阶差商二阶差商三阶差商000100π  (f′(0))2100−01−0=00−π1−0=−π310−π  (f′(1))−π−01−0=−π−π−(−π)1−0=0\begin{array}{c|c|cccc} k & z_k & f[z_k] & \text{一阶差商} & \text{二阶差商} & \text{三阶差商} \\ \hline 0 & 0 & \mathbf{0} & & & \\ 1 & 0 & 0 & \mathbf{\pi} \; (f'(0)) & & \\ 2 & 1 & 0 & \frac{0 - 0}{1 - 0} = 0 & \mathbf{\frac{0 - \pi}{1 - 0} = -\pi} & \\ 3 & 1 & 0 & -\pi \; (f'(1)) & \frac{-\pi - 0}{1 - 0} = -\pi & \mathbf{\frac{-\pi - (-\pi)}{1 - 0} = 0} \end{array}

读取主对角线各项系数 c0=0,c1=π,c2=−π,c3=0c_0 = 0, c_1 = \pi, c_2 = -\pi, c_3 = 0:

H3(x)=0+π(x−0)−π(x−0)(x−0)+0(x−0)2(x−1)=πx−πx2=πx(1−x).\begin{aligned} H_3(x) &= 0 + \pi (x - 0) - \pi (x - 0)(x - 0) + 0 (x - 0)^2 (x - 1) \\ &= \pi x - \pi x^2 = \pi x (1 - x). \end{aligned}

结果与基函数求解严格一致。

算法工程实现细节

在编写算法时,有些实现会用浮点近似 np.isclose(z[i], z[i+1]) 来判断是否为重节点。

这是一个数值隐患:当两个真实独立采样点彼此距离小于容差(例如相距 10−810^{-8})时,会被误判为重节点,强行调用未知的导数值而破坏计算。

工程上应当使用严格的奇偶双索引规则控制:

# 基于结构化奇偶索引填充一阶差商
for i in range(2 * n + 1):
if i % 2 == 0:
Q[i, 1] = df_vals[i // 2] # 重节点处的精确一阶导数值
else:
Q[i, 1] = (Q[i + 1, 0] - Q[i, 0]) / (z[i + 1] - z[i])

不完全条件与密切插值

若某些节点并未提供一阶导数,问题该如何求解?

例如只给出 3 个非平衡约束:

  • 节点 x1x_1 处提供函数值与导数:H(x1)=f(x1),H′(x1)=f′(x1)H(x_1) = f(x_1), H'(x_1) = f'(x_1);
  • 节点 x0x_0 处仅提供函数值:H(x0)=f(x0)H(x_0) = f(x_0)。

总约束数为 N=3N = 3,对应的最小多项式空间为二次空间 P2P_2。

将多项式在信息完备的 x1x_1 点按 Taylor 基展开:

H(x)=f(x1)+f′(x1)(x−x1)+a2(x−x1)2.H(x) = f(x_1) + f'(x_1)(x - x_1) + a_2 (x - x_1)^2.

代入 x0x_0 处的插值条件,立刻解出唯一系数:

a2=f(x0)−f(x1)−f′(x1)(x0−x1)(x0−x1)2.a_2 = \frac{f(x_0) - f(x_1) - f'(x_1)(x_0 - x_1)}{(x_0 - x_1)^2}.

任何满足条件的差多项式 R(x)R(x) 必须包含因式 (x−x0)(x−x1)2(x - x_0)(x - x_1)^2(次数为 3),由 deg⁡R≤2\deg R \le 2 强制得出 R≡0R \equiv 0,证明了解的唯一性。

向 Taylor 展开的渐进极限

当一个区间内的所有节点全部趋于同一个点 x0x_0 时,匹配 0,1,…,m0, 1, \dots, m 阶导数的密切多项式便退化为经典的 Taylor 多项式:

Tm(x)=∑k=0mf(k)(x0)k!(x−x0)k.T_m(x) = \sum_{k=0}^m \frac{f^{(k)}(x_0)}{k!} (x - x_0)^k.

因此,Taylor 多项式是全部节点坍缩到单点时的退化极限,而 Lagrange 插值是全部节点互异离散时的对立极限。Hermite 插值恰好居于两者之间,将空间的离散广度与切线的微分深度融为一体。

从全局多项式迈向局部样条

虽然 Hermite 插值能够锁定局部的切线走向,但它仍旧是一种全局多项式方法。当节点数目 nn 持续增加时,多项式阶数迅速升高,远离采样点的地方依然可能出现不受控的高次波动。

在实际工程应用中,与其一味提高全局阶数,不如固定使用三次多项式,将整个定义域划分为若干子区间分别拟合,并在接缝处施加严格的光滑拼接。

在下一篇样条插值中,我们将推导兼顾局部灵活性与 C2C^2 高度光滑的自然三次样条体系。

参考文献

  1. [1] R. L. Burden and J. D. Faires, Numerical Analysis, 9th ed. Brooks/Cole, Cengage Learning, 2011. ↩
  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. ↩