插值法
插值法的定义
设函数 f(x) 在区间 [a,b] 上有定义,已知其在 n+1 个互异节点 x0,x1,…,xn 处的函数值
yi=f(xi),i=0,1,…,n
构造函数 g(x),满足
g(xi)=yi,i=0,1,…,n
这称为插值法。
其中,f(x) 为求插函数,g(x) 为插值函数,[a,b] 为插值区间,x0,x1,…,xn 为插值节点,x 为插值点。
- x 在插值区间内称为内插。
- x 在插值区间外但仍用 g(x) 近似 f(x),称为外插或外推。
多项式插值的存在唯一性
设 x0,x1,…,xn 是 n+1 个互异节点,给定函数值 f(xk),k=0,1,…,n。则存在唯一的次数不超过 n 的多项式 pn(x)∈Pn,使得
pn(xk)=f(xk),k=0,1,…,n
Lagrange 插值多项式
设 x0,x1,…,xn 是 n+1 个互异节点。对每个 i=0,1,…,n,定义
li(x)=j=0j=i∏nxi−xjx−xj
则有
li(xk)=δik,i,k=0,1,…,n
其中 δik 为 Kronecker 记号。由此构造
pn(x)=i=0∑nf(xi)li(x)
称为 Lagrange 插值多项式,它满足
pn(xk)=f(xk),k=0,1,…,n
且次数不超过 n。Lagrange 基本多项式只依赖节点,与 f(x) 无关。
Lagrange 插值多项式的余项公式
设 f(x) 在区间 [a,b] 上具有 n 阶连续导数,且在 (a,b) 内存在有界的 n+1 阶导数。记
wn+1(x)=i=0∏n(x−xi)
则对任意 x∈[a,b],存在 ξ∈(a,b),使得
rn(x)=f(x)−pn(x)
满足
rn(x)=(n+1)!f(n+1)(ξ)wn+1(x)
即
f(x)=pn(x)+(n+1)!f(n+1)(ξ)wn+1(x)
其中 ξ 依赖于节点和插值点。
Lagrange 插值多项式的误差估计
插值误差
rn(x)=f(x)−pn(x)
由余项公式得
rn(x)=(n+1)!f(n+1)(ξ)wn+1(x)
其中
wn+1(x)=i=0∏n(x−xi),ξ∈(a,b)
若记
Mn+1=a≤x≤bmaxf(n+1)(x)
则对任意 x∈[a,b],有
∣rn(x)∣≤(n+1)!Mn+1∣wn+1(x)∣
误差主要由 f(n+1) 和 wn+1(x) 决定。
等距节点插值误差的分布特征与 Runge 现象
当插值节点为等距节点时,记 x=x0+th,则有
wn+1(x)=hn+1q(t),q(t)=t(t−1)⋯(t−n)
由此
∣rn(x)∣≤(n+1)!Mn+1∣wn+1(x)∣
误差大小与 ∣q(t)∣ 的分布直接相关。
对等距节点,误差通常在区间中部较小、两端较大;外插距离越远,误差往往增长越快。
在等距节点上做高次多项式插值时,端点附近可能出现并随次数升高而加剧的振荡,这称为 Runge 现象。
差商的定义
设 x0,x1,…,xn 为互异节点。零阶差商定义为
f[xi]=f(xi),i=0,1,…,n
一阶差商为
f[x0,x1]=x1−x0f(x1)−f(x0)
一般地,对 k≥1,
f[x0,x1,…,xk]=xk−x0f[x1,x2,…,xk]−f[x0,x1,…,xk−1]
n 阶差商还可写为
wn+1(x)=(x−x0)(x−x1)⋯(x−xn)
则
f[x0,x1,…,xn]=i=0∑n∏j=0j=in(xi−xj)f(xi)=i=0∑nwn+1′(xi)f(xi)
该式表明 n 阶差商对节点具有对称性。
Newton 插值多项式
设 x0,x1,…,xn 是 n+1 个互异节点,f 在这些节点上的函数值已知。以差商为系数构造
Nn(x)=f[x0]+f[x0,x1](x−x0)+f[x0,x1,x2](x−x0)(x−x1)+⋯+f[x0,x1,…,xn](x−x0)(x−x1)⋯(x−xn−1)
这称为 Newton 插值多项式,其一般项为
Nn(x)=k=0∑nf[x0,x1,…,xk]j=0∏k−1(x−xj)
其中约定当 k=0 时空乘积为 1。并满足
Nn(xi)=f(xi),i=0,1,…,n
它与 Lagrange 插值多项式本质相同,只是表示形式不同。
Newton 形式便于增点:增加节点 xn+1 时,只需补一项新的差商项。
Newton 插值多项式的余项
设 x0,x1,…,xn 是 n+1 个互异节点,记
wn+1(x)=(x−x0)(x−x1)⋯(x−xn)
则
f(x)=Nn(x)+f[x0,x1,…,xn,x]wn+1(x)
其中 f[x0,x1,…,xn,x] 是关于节点 x0,x1,…,xn,x 的 n+1 阶差商。
若 f(x) 在区间 [a,b] 上具有 n+1 阶连续导数,则存在 ξ∈(a,b),使得
f[x0,x1,…,xn,x]=(n+1)!f(n+1)(ξ)
从而
Rn(x)=f(x)−Nn(x)=(n+1)!f(n+1)(ξ)wn+1(x)
因此其余项公式与 Lagrange 相同。
Newton 前差和后差插值公式
当插值节点等距时,设
xi=x0+ih,i=0,1,…,n
前向差分为
Δf(xi)=f(xi+1)−f(xi),Δkf(xi)=Δ(Δk−1f(xi))
后向差分为
∇f(xi)=f(xi)−f(xi−1),∇kf(xi)=∇(∇k−1f(xi))
取
x=x0+th,t=hx−x0
则 Newton 前差公式为
Nn(x)=Nn(x0+th)=f(x0)+tΔf(x0)+2!t(t−1)Δ2f(x0)+⋯+n!t(t−1)⋯(t−n+1)Δnf(x0)
适合插值点靠近 x0 时使用。
取
x=xn+th,t=hx−xn
则 Newton 后差公式为
Nn(x)=Nn(xn+th)=f(xn)+t∇f(xn)+2!t(t+1)∇2f(xn)+⋯+n!t(t+1)⋯(t+n−1)∇nf(xn)
适合插值点靠近 xn 时使用。
Hermite 插值多项式
设函数 f(x) 在插值节点 x0,x1,…,xn∈[a,b] 处的函数值及一阶导数分别为 f(xi),f′(xi),i=0,1,…,n。则存在唯一的多项式 H2n+1(x)∈P2n+1,满足
H2n+1(xi)=f(xi),H2n+1′(xi)=f′(xi),i=0,1,…,n
设 li(x) 为对应的 Lagrange 基本多项式,则
H2n+1(x)=i=0∑nf(xi)[1−2(x−xi)li′(xi)]li2(x)+i=0∑nf′(xi)(x−xi)li2(x)
这是一阶导数情形下的 Hermite 插值多项式。
Hermite 插值多项式的余项和误差估计
若 f(x) 在 [a,b] 上具有 2n+2 阶连续导数,则对任意 x∈[a,b],存在 ξ∈(a,b),使得
R2n+1(x)=f(x)−H2n+1(x)=(2n+2)!f(2n+2)(ξ)i=0∏n(x−xi)2
即
f(x)=H2n+1(x)+(2n+2)!f(2n+2)(ξ)i=0∏n(x−xi)2
若记
M2n+2=a≤x≤bmaxf(2n+2)(x)
则有
∣R2n+1(x)∣≤(2n+2)!M2n+2i=0∏n(x−xi)2
进一步
a≤x≤bmax∣f(x)−H2n+1(x)∣≤(2n+2)!M2n+2a≤x≤bmaxi=0∏n(x−xi)2
分段线性插值及其误差估计
设 a=x1<x2<⋯<xn+1=b 为区间 [a,b] 上的互异节点,已知函数值 fk=f(xk),k=1,2,…,n+1。求分段函数 g1(x),使其在每个子区间 [xi,xi+1] 上是线性多项式,且 g1(x)∈C[a,b],并满足
g1(xk)=fk,k=1,2,…,n+1
这称为 f(x) 在 [a,b] 上的分段线性插值函数。在每个子区间上
g1,i(x)=f(xi)+f[xi,xi+1](x−xi),x∈[xi,xi+1]
其中
f[xi,xi+1]=xi+1−xif(xi+1)−f(xi)
并记
g1(x)=g1,i(x),x∈[xi,xi+1],i=1,2,…,n
令
hi=xi+1−xi,h=1≤i≤nmaxhi
若 f∈C2[a,b],则在每个子区间上有
xi≤x≤xi+1max∣f(x)−g1,i(x)∣≤8hi2xi≤x≤xi+1max∣f′′(x)∣
从而
a≤x≤bmax∣f(x)−g1(x)∣≤8h2M2
其中
M2=a≤x≤bmax∣f′′(x)∣
分段抛物线插值及其误差估计
设 a=x1<x2<⋯<x2m+1=b 为区间 [a,b] 上的互异节点,已知函数值 fk=f(xk),k=1,2,…,2m+1。构造分段函数 g2(x),使其在每个区间 [x2i−1,x2i+1] 上为经过三点 (x2i−1,f2i−1)、(x2i,f2i)、(x2i+1,f2i+1) 的二次插值多项式 g2,i(x),即
g2,i(xk)=fk,k=2i−1,2i,2i+1,i=1,2,…,m
并定义
g2(x)=g2,i(x),x∈[x2i−1,x2i+1],i=1,2,…,m
这称为 f(x) 在 [a,b] 上的分段抛物线插值函数。
记
hi=xi+1−xi,h=1≤i≤2mmaxhi
若 f∈C3[a,b],并记
M3=a≤x≤bmax∣f(3)(x)∣
则在每个区间上有
x2i−1≤x≤x2i+1max∣f(x)−g2,i(x)∣≤12M3h3
从而
a≤x≤bmax∣f(x)−g2(x)∣≤12M3h3
因此分段抛物线插值的误差阶为 O(h3)。
分段三次 Hermite 插值及其误差估计
设 a=x1<x2<⋯<xn+1=b 为 [a,b] 上的互异节点,已知节点函数值与导数值
fk=f(xk),fk′=f′(xk),k=1,2,…,n+1
求分段函数 Sh(x),使其在每个子区间 [xk,xk+1] 上为三次多项式,且 Sh(x)∈C1[a,b],并满足
Sh(xk)=fk,Sh′(xk)=fk′,k=1,2,…,n+1
这称为 f(x) 在 [a,b] 上的分段三次 Hermite 插值函数。
在每个子区间 [xk,xk+1] 上,Sh(x) 是以端点 xk,xk+1 及其一阶导数值构造的两点三次 Hermite 插值多项式,记为 Sh,k(x),并记
Sh(x)=Sh,k(x),x∈[xk,xk+1],k=1,2,…,n
记
hk=xk+1−xk,h=1≤k≤nmaxhk
若 f∈C4[a,b],则在每个子区间上有
xk≤x≤xk+1max∣f(x)−Sh,k(x)∣≤384hk4xk≤x≤xk+1max∣f(4)(x)∣
从而
a≤x≤bmax∣f(x)−Sh(x)∣≤384M4h4,M4=a≤x≤bmax∣f(4)(x)∣
因此分段三次 Hermite 插值的误差阶为 O(h4)。
样条函数的定义
设 a=x1<x2<⋯<xn+1=b 为区间 [a,b] 上的互异节点。若分段函数 S(x) 满足:
- 在每个子区间 [xk,xk+1] 上,S(x) 都是 k 次多项式
- S(x)∈Ck−1[a,b]
则称 S(x) 为以 x1,x2,…,xn+1 为节点的 k 次样条函数,简称 k 次样条。
二次基样条插值
设节点为等距节点
xi=a+(i−1)h,i=1,2,…,n+1,h=nb−a
取二次样条基函数
gi(x)=ϕ(hx−xi),i=0,1,…,n+2
其中 ϕ(t) 为分段二次函数
ϕ(t)=32⎩⎨⎧0,t2+3t+49,−2t2+23,t2−3t+49,∣t∣>23−23≤t<−21−21≤t<2121≤t≤23
则二次基样条插值函数为
S(x)=k=0∑n+2αkgk(x)
其中 αk 为待定系数。若已知节点函数值 fi=f(xi),则插值条件
S(xi)=fi,i=1,2,…,n+1
化为
αi−1+6αi+αi+1=6fi,i=1,2,…,n+1
再附加端点一阶导数条件
S′(a)=f′(a),S′(b)=f′(b)
则有
α0−α2=−23hf′(a),−αn+αn+2=23hf′(b)
联立即可唯一确定二次基样条插值函数。
三次样条插值
设节点组 a=x1<x2<⋯<xn+1=b,已知节点函数值 f(xi)=fi,i=1,2,…,n+1)。若分段函数
S(x)=⎩⎨⎧S1(x),⋯Si(x),⋯Sn(x),x∈[x1,x2]x∈[xi,xi+1]x∈[xn,xn+1]
满足 S(x)∈C2[a,b],且每个 Si(x) 都是三次的多项式,并满足插值条件
S(xi)=fi,i=1,2,…,n+1
则称 S(x) 为函数 f(x) 的三次样条插值函数。
三次样条插值的求解与边界条件
设
hi=xi+1−xi,bi=hifi+1−fi,i=1,2,…,n
记
αi=S′′(xi),i=1,2,…,n+1
则在每个子区间 [xi,xi+1] 上,三次样条可写为
Si(x)=fi+[bi−6hi(2αi+αi+1)](x−xi)+2αi(x−xi)2+6hiαi+1−αi(x−xi)3
因此三次样条的求解可归结为确定 α1,α2,…,αn+1,对内点 i=2,3,…,n,有方程
μiαi−1+2αi+λiαi+1=di
其中
μi=hi−1+hihi−1,λi=hi−1+hihi
di=hi−1+hi6(bi−bi−1)
这给出 n−1 个内点方程,再配合边界条件即可唯一确定全部 αi,常用边界条件如下
S′′(x1)=S′′(xn+1)=0
即
α1=αn+1=0
此时将上式与内点方程联立,即可求得全部 αi。
S′(a)=f′(a),S′(b)=f′(b)
此时边界方程为
2α1+α2=d1,αn+2αn+1=dn+1
其中
d1=h16(b1−f′(a)),dn+1=hn6(f′(b)−bn)
于是得到关于 α1,α2,…,αn+1 的 n+1 阶三对角线性方程组
2μ212μ3λ22⋱λ3⋱μn⋱21λn2α1α2⋮αnαn+1=d1d2⋮dndn+1
其系数矩阵强优对角,故方程组有唯一解。解出 αi 后,再代入 Si(x) 的表达式即可得到三次样条的分段表示
完备三次样条的误差估计
设函数 f(x)∈C4[a,b],SC(x) 表示 f(x) 在 {xi}i=1n+1 上的完备三次样条插值函数,则
a≤x≤bmax∣f(x)−SC(x)∣≤3845M4h4
a≤x≤bmax∣f′(x)−SC′(x)∣≤241M4h3
a≤x≤bmax∣f′′(x)−SC′′(x)∣≤83M4h2
其中
M4=a≤x≤bmax∣f(4)(x)∣,h=1≤i≤nmaxhi