Hermite 插值多项式#
三次 Hermite 插值#
给定两个节点 x0,x1,我们需要构造一个三次多项式 H3(x),使其满足以下 4 个条件:
- 函数值条件:H3(x0)=y0,H3(x1)=y1
- 导数值条件:H3′(x0)=m0,H3′(x1)=m1
为了表达 H3(x),我们构造四种基函数 α0(x),α1(x),β0(x),β1(x),它们的取值特性如下表:
| 基函数 | x0 处的函数值 | x1 处的函数值 | x0 处的导数值 | x1 处的导数值 |
|---|
| α0(x) | 1 | 0 | 0 | 0 |
| α1(x) | 0 | 1 | 0 | 0 |
| β0(x) | 0 | 0 | 1 | 0 |
| β1(x) | 0 | 0 | 0 | 1 |
最终结构:
H3(x)=y0α0(x)+y1α1(x)+m0β0(x)+m1β1(x)
构造:
- 函数值基函数:
α0(x)=(1+x1−x02(x−x0))[x0−x1x−x1]2
α1(x)=(1+x0−x12(x−x1))[x1−x0x−x0]2
- 导数值基函数:
β0(x)=(x−x0)[x0−x1x−x1]2
β1(x)=(x−x1)[x1−x0x−x0]2
当 f(x)∈C4[a,b] 时,三次 Hermite 插值的阶段误差为:
R(x)=f(x)−H3(x)=4!f(4)(ξ)(x−x0)2(x−x1)2,ξ∈(a,b)
一般形式的 Hermite 插值#
给定 n+1 个相异节点 x0,x1,…,xn,构造一个 2n+1 次多项式 H2n+1(x),使其满足:
H2n+1(xi)=f(xi),H2n+1′(xi)=f′(xi)(i=0,1,…,n)
公式结构为:
H2n+1(x)=∑i=0n[ai(x)f(xi)+βi(x)f′(xi)]
利用 Lagrange 插值基函数 li(x) 及其导数 li′(xi) 进行构造。
-
函数值基函数 αi(x)
设 αi(x)=(ax+b)li2(x),通过满足条件 αi(xi)=1 和 αi′(xi)=0,求得系数:
- 表达式:αi(x)=[1−2li′(xi)(x−xi)]li2(x)
- 其中 li′(xi)=∑j=0,j=inxi−xj1。
-
导数值基函数 βi(x)
设 βi(x)=C(x−xi)li2(x),通过满足条件 βi′(xi)=1,求得 C=1:
- 表达式:βi(x)=(x−xi)li2(x)
设 f(x)∈C(2n+2)[a,b],则对于任意 x∈[a,b],存在 ξ∈(a,b) 使得插值余项为:
R2n+1(x)=f(x)−H2n+1(x)=(2n+2)!f(2n+2)(ξ)(x−x0)2(x−x1)2…(x−xn)2=(2n+2)!f(2n+2)(ξ)ωn+12(x)
分段低次插值#
龙格现象#
考察函数 f(x)=1+x21 在区间 [−5,5] 上的插值。

除了龙格现象外,高次插值还存在以下问题:
- 计算量大:插值次数越高,公式越复杂,计算工作量呈指数级增长。
- 误差积累:高次多项式的每一项系数计算都涉及多次乘除,舍入误差容易堆积。
分段线性插值#
给定区间 [a,b] 上的节点 a=x0<x1<⋯<xn=b 及其函数值 f(xi)=yi。
分段线性插值函数 Ih(x) 满足:
- Ih(x)∈C[a,b](在整个区间上连续)。
- 在每个小区间 [xi,xi+1] 上,Ih(x) 是一个线性多项式(一次函数)。
- 满足插值条件:Ih(xi)=yi(i=0,1,…,n)。
在每个局部区间 [xi,xi+1] 上,利用 Lagrange 一次插值公式:
Ih(x)=xi−xi+1x−xi+1yi+xi+1−xix−xiyi+1,x∈[xi,xi+1]
设 f∈C2[a,b],Ih(x) 为 f(x) 的分段线性插值多项式,则对于 x∈[xi,xi+1],其误差为:
∣f(x)−Ih(x)∣⩽8M2(xi+1−xi)2
其中 M2=maxa⩽x⩽b∣f′′(x)∣。
若记最大步长 h=maxi(xi+1−xi),则全区间上的误差界为:
∥f−Ih∥∞=a⩽x⩽bmax∣f(x)−Ih(x)∣⩽8M2h2
分段三次 Hermite 插值#
添加一阶导数插值条件,用来克服分段线性插值在节点处不可导(有尖角)的问题。
已知节点 x0,x1,…,xn 及其对应的函数值 yk 和导数值 mk。
若函数 Ih(x) 满足:
- 一阶连续:Ih(x)∈C1[a,b](不仅曲线连续,切线也连续)。
- 完全匹配:Ih(xk)=fk,Ih′(xk)=mk。
- 分段三次:在每个小区间 [xk,xk+1] 上,Ih(x) 是一个三次多项式。
在单个区间 [xk,xk+1] 上,利用局部基函数构造:
Ih(x)=ykαk(x)+yk+1αk+1(x)+mkβk(x)+mk+1βk+1(x)
αk(x)=(1+2xk+1−xkx−xk)(xk−xk+1x−xk+1)2
αk+1(x)=(1+2xk+1−xkxk+1−x)(xk+1−xkx−xk)2
βk(x)=(x−xk)(xk−xk+1x−xk+1)2
βk+1(x)=(x−xk+1)(xk+1−xkx−xk)2
与分段线性插值类似,全区间上的函数可以表示为:
Ih(x)=i=0∑n[fiαi(x)+miβi(x)]
若 f(x)∈C4[a,b],记 M4=max∣f(4)(x)∣,则误差界为:
∣f(x)−Ih(x)∣⩽384h4M4
三次样条插值#
若函数 S(x) 满足以下三个条件,则称其为三次样条插值函数:
- 二阶连续性:S(x)∈C2[a,b],即在整个区间上具有连续的一阶和二阶导数(曲线非常光滑)。
- 插值性:S(xk)=fk,k=0,1,…,n。
- 分段三次:在每个小区间 [xk,xk+1] 上,S(x) 是一个三次多项式。
相比分段三次 Hermite 插值,样条插值不需要知道原函数的导数值,它通过自身的平滑要求(二阶导数连续)自动计算出所需的导数。
自由度分析#
在 n 个小区间上,每个区间有 4 个系数 (ak,bk,ck,dk),总共有 4n 个待定系数。
约束条件统计:
- 内部节点连续性:在 n−1 个内部节点处,函数值、一阶导、二阶导均需连续,共 3(n−1) 个条件。
- 插值条件:n+1 个节点处必须经过已知点,共 n+1 个条件。
- 总计条件数:3n−3+n+1=4n−2 个。
方程数比未知数少 2 个,因此必须额外补充 2 个边界条件 才能得到唯一解。
| 类型 | 边界条件名称 | 具体描述 | 公式表达 |
|---|
| (a) | 固支边界 | 已知两端点的一阶导数(斜率)。 | S′(x0)=f0′, S′(xn)=fn′ |
| (b) | 简支边界 | 已知两端点的二阶导数(弯矩)。 | S′′(x0)=f0′′, S′′(xn)=fn′′ |
| (c) | 周期边界 | 首尾节点的函数值及各阶导数相等。 | S(i)(x0)=S(i)(xn), i=0,1,2 |
给定区间 [a,b] 上的函数值及上述任一种边界条件,则在全区间上存在唯一的三次样条插值函数 S(x)。
三弯矩法#
三次样条函数 S(x) 的表达式有多种形式,但在实际计算中,使用二阶导数值 S′′(xi)=Mi (i=0,1,…,n) 来表示更为方便。
- 力学解释:Mi 在物理上可以解释为细梁在节点 xi 处的弯矩(Bending Moment)。
- 算法名称:由于推导出的方程组中,每一个点的弯矩只与相邻的两个弯矩有关(形成三对角关系),故称为三弯矩算法。