2026-09-09 计算物理:Runge 现象与 Hermite 插值

求差商算法

先求所有一阶差商(用已知数值):

f[x0,x1],…,f[xn−1,xn].

再求所有二阶差商……(此时 f(x1),f(x2),… 不再需要,可将结果存入替换)。

差商表:

节点 函数值 一阶差商 二阶差商 三阶差商
x0 y0=f(x0) f[x0,x1] f[x0,x1,x2] f[x0,x1,x2,x3]
x1 y1=f(x1) f[x1,x2] f[x1,x2,x3]
x2 y2=f(x2) f[x2,x3]
x3 y3=f(x3)

存入一维数组。或用二维数组,取相应元素。

多项式插值。

Q:数据点越多越好吗?

Runge 现象(过拟合):

y=11+25x2.

当 n=9 时,插值函数在区间边缘发生明显振荡。

Runge 现象示意图

解决:

  1. 分段,低次插值。
  2. Hermite 插值。
  3. 三次样条插值。

Hermite 插值

更高要求:除函数值相等,还要求若干阶导数也相等。

(如飞机机翼设计。)

p(x)≈f(x)⟺{p(xi)=f(xi),p′(xi)=f′(xi),p″(xi)=f″(xi),⋮

重节点差商

差商连续性定理:f[x0,…,xn] 是其变量的连续函数。

f[x0,x0]=limx1→x0f[x0,x1]=f′(x0).
f[x0,x0,x0]=limx1→x0x2→x0f[x0,x1,x2]=12!f″(x0).

一般地,

f[x0,…,x0⏟n+1 个]=1n!f(n)(x0).

Taylor 插值

Newton 插值中令 xi→x0 ,则

Nn(x)=f(x0)+f′(x0)(x−x0)+⋯+f(n)(x0)n!(x−x0)n.

Taylor 插值是一个节点上的 n 次 Hermite 插值。

Hermite 插值

m+1 个条件构造一个 m 次 Hermite 多项式。

  1. 三点三次:x0,x1,x2 ,共 4 个条件。
p(xi)=f(xi)(i=0,1,2),p′(x1)=f′(x1).
  1. 两点三次:x0,x1 ,共 4 个条件。
p(xi)=f(xi),p′(xi)=f′(xi),i=0,1.

Why 三次?避免 Runge 现象。

[G: 更多点怎么分?]

G 补充

将节点按 x0<x1<⋯<xn 排序,再把整个区间拆成

[x0,x1],[x1,x2],…,[xn−1,xn].

在每个小区间上只构造低次多项式:只有函数值时可作分段线性插值;同时知道端点函数值和一阶导数时,可在每个 [xi,xi+1] 上作两点三次 Hermite 插值。各段共享端点函数值,因此函数连续;若共享同一端点导数,则一阶导数也连续。

三点三次

设

p(x)=f(x0)+f[x0,x1](x−x0)+f[x0,x1,x2](x−x0)(x−x1)+A(x−x0)(x−x1)(x−x2).

将 p′(x1)=f′(x1) 代入,得到 A 。

余项公式:因为 x0,x1,x2 是零点,x1 相当于二重零点,

R(x)=K(x)(x−x0)(x−x1)2(x−x2)=f(x)−p(x)=f(4)(ξx)4!(x−x0)(x−x1)2(x−x2).

例

f(x)=x3/2.
f(14)=18,f(1)=1,f(94)=278,f′(1)=32.

给出三点三次 Hermite 多项式。

  1. 作差商表。
f[x0,x1],f[x1,x2].

于是

p(x)=18+76(x−14)+1130(x−14)(x−1)+A(x−14)(x−1)(x−94).

将 p′(1)=f′(1) 代入,得到 A 。

R(x)=f(4)(ξ)4!(x−14)(x−1)2(x−94),ξ∈(14,94).

[? 推测:求 A ,即可得到插值多项式;余项用于估计。]

两点三次

节点为 x0,x1 ,满足

p(xi)=f(xi),p′(xi)=f′(xi).

类似 Lagrange 插值,设

p(x)=H3(x)=a0α0(x)+a1α1(x)+b0β0(x)+b1β1(x),

均为三次多项式。

满足

αj(xi)=δij,αj′(xi)=0,
βj(xi)=0,βj′(xi)=δij.

确定系数

H3(x)=y0α0(x)+y1α1(x)+m0β0(x)+m1β1(x).

α 用于函数值插值,β 用于导数插值。

α0(x1)=0,α0′(x1)=0,

故 x1 为 α0 的二重零点。

α0(x)=(ax+b)(x−x1x0−x1)2.

再由

α0(x0)=1,α0′(x0)=0,

求出 a,b 。类似得到 β0,β1 。

[G: 补全 β,m0 求法]

G 补充

由基函数条件可直接构造

β0(x)=(x−x0)(x−x1x0−x1)2,β1(x)=(x−x1)(x−x0x1−x0)2.

它们满足 βj(xi)=0 和 βj′(xi)=δij 。因此乘在 β0 前的系数就是端点斜率

m0=f′(x0),

同理 m1=f′(x1) 。另外,a0=y0=f(x0) 、a1=y1=f(x1) 。

H3(x)=y0(1+2x−x0x1−x0)(x−x1x0−x1)2+y1(1+2x−x1x0−x1)(x−x0x1−x0)2+m0(x−x0)(x−x1x0−x1)2+m1(x−x1)(x−x0x1−x0)2.
R3(x)=f(4)(ξx)4!(x−x0)2(x−x1)2,ξx∈(x0,x1).

函数插值

问题:n→∞ 时,Ln(x) 不收敛。

分段线性插值。

分段 Hermite 插值(两点三次)→ 需要额外信息(导数)。

如

11+x2,

用 polynomial 近似(近似后便于求导)。

基本思想:用分段低次多项式替代单个高次多项式。


2026-09-09 计算物理:Runge 现象与 Hermite 插值
https://sitson.pages.dev/2026/09/09/2026-09-09-computational-physics-hermite-interpolation/
Author
Joe Lewis
Posted on
September 9, 2026
Licensed under