本文关注函数插值的基本知识,包括多项式插值的 Lagrange, Neville, Newton 方法,误差估计,Runge现象,Chebyshev节点,Hermite 插值,三次样条插值
Polynomial Interpolation
Problem Setting
本节关注函数插值问题,即给定数据 (x1,y1),…,(xn,yn),(xi=xj,∀i,j), 求函数 f(⋅), 使得 yi=f(xi) ,其中 f(⋅) 要求为 n−1 阶多项式。
Uniqueness
可以证明满足条件的多项式是唯一的。
多项式插值问题可以转化为求解线性方程组。设 f(x)=a0+a1x+⋯+an−1xn−1
⎣⎢⎢⎢⎡11⋮1x1x2⋮xn⋯⋯⋱⋯x1n−1x2n−1⋮xnn−1⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡a0a1⋮an−1⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎤
其系数矩阵为 Vandemonde 行列式,记为 A,则有
det(A)=i<j∏(xj−xi)=0
所以该线性方程组有唯一解
经过以上的分析,可以知道求解的方法很简单,直接 A−1y 即可求得多项式。但是这样需要对矩阵求逆,计算量很大(O(n3)),所以实际中几乎不可能通过直接求解线性方程组的方法。以下介绍三种多项式插值的方法。
Lagrange’s Approach
Lagrange 多项式插值的中心思想是求一组基 lk(x),使得
{lk(xi)=1,i=klk(xi)=0,i=k
lk 的构造基于零点
lk(x)=p~k(xk)p~k(x), p~k(x)=i=k∏(x−xi)
对这组基进行线性组合就可以得到满足条件的插值多项式
f(x)=k=1∑nyklk(x)
实际计算中,构造多项式的系数所需的时间复杂度为 O(n2),主要在于 p~k(xk) 的计算。在计算 f(x) 时,为了减少重复计算,可以先计算 i=1∏n(x−xi),再在每一项中除去多余的因数,这样的时间复杂度为 O(n).
Neville’s Approach
Neville 多项式插值的思想是用两个 n−1 个点插值得到的多项式,合成新的由 n 个点插值得到的多项式。
记 p1(x) 为 (x1,y1),…,(xn−1,yn−1) 插值得到的多项式,p2(x) 为 (x2,y2),…,(xn,yn)。考虑用这两个多项式的组合得到新的满足条件的多项式 p(x),即
p(n)=α1(x−α2)p1(x)+β1(x−β2)p2(x)
为了使得 x1,xn 满足条件,可以使 α2=xn,β2=x1;为了使剩余点满足条件,可以使系数之和为 1,即相当于 p1,p2 的仿射组合。最终可以得到
p(x)=xn−x1xn−xp1(x)+xn−x1x−x1p2(x)
在插值问题中,通常考虑内插值,即 x1≤x≤xn,此时 p(x) 相当于做了一个凸组合。
这么做的好处是凸组合具有数值稳定性的。设 a=αb+(1−α)c,b,c 的误差分别为 δb,δc,则有
δd≤αδb+(1−α)δc≤max(δb,δc)
Newton’s Approach
Newton 多项式插值的思想是在前 n−1 个点插值得到的多项式 pn−1 的基础上加上修正,使 pn 满足条件。由于 pn−1 为 n−2 阶多项式,并且要使前 n−1 个点都满足条件,可以使
pn(x)=pn−1(x)+αn−1i=1∏n−1(x−xi)
根据多项式插值的唯一性,αn−1 与 Lagrange 插值的最高次系数应该相等。对比即可知道
αn−1=i−1∑nyij=ij=1∏n(xi−xj)−1
实际上,αn−1 也被称为 n 阶差商 f[x1,x2,…,xn]
差商具有以下几点性质:
f[xk]f[x1,x2,…,xk]=yk=xk−x1f[x2,x3,…,xk]−f[x1,x2,…,xk−2]
-
对称性:对于任意排列 σ,有
f[x1,x2,…,xk]=f[σ(x1),σ(x2),…,σ(xk)]
-
当 f 充分光滑时,有
(x1,…,xk)→(x∗,…,x∗)limf[x1,…,xk]=(k−1)!f(k−1)(x∗)
Polynomial Reconstruction
Problem setting
本节在上一节问题的基础上加上 (xi,yi) 是在函数 y=f(x), x∈[a,b] 上采样的点的条件,重点关注重构多项式 pn−1 的效果好坏。
Error Bound
根据牛顿法多项式插值,对于任意点 x,有
f(x)−pn−1(x)=f[x1,x2,…,xn,x]i=1∏n(x−xi)=n!f(n)(ξ)i=1∏n(x−xi)
因此,可以得到以下误差界
∣f(x)−pn−1(x)∣∥f(x)−pn−1(x)∥∞≤n!t∈[a,b]supf(n)(t)i=1∏n(x−xi)≤n!∥f(n)(x)∥∞∥∥∥∥∥i=1∏n(x−xi)∥∥∥∥∥∞
可以看到误差界由两部分组成:前一项由函数的性质决定,这是多项式重构中不可避免的一项;而后一项与采样的点有关,采样地越好,误差就会越小。
Runge’s Phenomenon
由于函数 f 本身的性质而导致重构误差大的现象被称为龙格现象,它的数学表示为
n→∞limsup∥f(x)−pn(x)∥∞>0
典型的例子有 f(x)=(1+x)−1.
Chebyshev Nodes
为了减小多项式重构的误差,需要寻找合适的采样点来最小化 ∥∥∥∥i=1∏n(x−xi)∥∥∥∥∞
首先考虑 [a,b]=[−1,1] 的情况。事实上,最优的采样点为 Chebyshev 结点,即
xi=cos2n(2i−1)π,i∈{1,2,…,n}
令 Tn(x)=2n−1i=1∏n(x−xi),对比函数的根和首项系数并根据插值多项式的唯一性,可以得到
Tn=cos(narccosx)
即为 Chebyshev 多项式。很显然 ∥Tn(x)∥∞≤1,所以有 min∥∥∥∥i=1∏n(x−xi)∥∥∥∥∞≤2n−11.
接下来只需要证明 min∥∥∥∥i=1∏n(x−xi)∥∥∥∥∞=2n−11。假设存在首一多项式 f, degf=n−1,使得 ∥f∥∞<2n−11
令 g(x)=2n−1f(x)−Tn(x),那么 degg≤n−1。
考虑点 zi=cosniπ, i∈{0,1,…,n},有
g(zi)=2n−1f(zi)−(−1)i
由于 ∥∥2n−1f∥∥∞<1,所以 g(zi) 的符号完全由后一项决定。根据零点存在性定理,g(x) 有 n 个点,这与 degg≤n−1 矛盾。所以有最佳采样点为 Chebyshev 结点。利用仿射变换即可以推广到任意区间 [a,b] 上去,可以得到
xk=2a+b+2b−acos2n(2k−1)π
误差界为
∥f(x)−pn−1(x)∥∞≤2n−1n!∥∥f(n)(x)∥∥∞(2b−a)n
Hermite Interpolation
Problem Setting
在这里不仅要求采样函数值满足条件,还要求在这些点处的导数满足要求,即
p(x1)=f(x1)p(x2)=f(x2)⋮p(xn)=f(xn)p′(x1)=f′(x1)p′(x2)=f′(x2)⋮p′(xn)=f′(xn)⋯⋯⋮⋯p(m1)(x1)=f(m1)(x1)p(m2)(x2)=f(m2)(x2)⋮p(mn)(xn)=f(mn)(xn)
其中 m 不要求相等.
Solution
实际上,这个问题可以转化为允许重结点的 Newton 插值,将 xi 看作 mi 个 xi 作插值,差商可以看作导数,即
f[xi,xi]=1!f′(xi), f[xi,xi,xi]=2!f′′(xi), …
Matrix Function
Hermite 插值与矩阵函数非常相关。
根据 Cayley-Hamilton 定理,An 可以被 I,A,…,An−1 线性表示。因此对于任意矩阵函数 f(A),进行 Taylor 展开后可以表示为一个 n−1 阶多项式,f(A)=p(A).
根据 Jordan 标准型,求 f(A) 等价于求 f(J). 而对于一个 Jordan 块 Jk,形如
Jk=⎣⎢⎢⎡λk1λk1⋱⋱λk1⎦⎥⎥⎤
根据 Taylor 展开,有
f(Jk)=⎣⎢⎢⎡f(λk)1!f′(λk)f(λk)2!f′′(λk)1!f′(λk)f(λk)⋯⋯⋯⋯⎦⎥⎥⎤
因此,求矩阵函数相当于对 λ1,…,λk 做 Hermite 插值.
Spline Interpolation
样条函数即分段多项式.
Linear Spline
线性样条是最简单的样条插值,它相当于用直线将相邻插值点相连。
假设插值点为 x0<x1<⋯<xn,且 hi=xi+1, h=maxhi. 那么在区间 [xi,xi+1] 上,线性样条为
si(x)=f(xi)+xi+1−xif(xi+1)−f(xi)(x−xi)
线性样条虽然简单,但它也有很好的性质:不会产生不必要的震荡。它的问题在于在插值点处不可导,光滑性不好。
接下来进行误差分析。线性样条在一个区间上相当于 n=2 时的多项式插值,根据上面的结论,有
∥s(x)−f(x)∥∞≤2∥f′′(x)∥∞∣(x−xi)(x−xi+1)∣≤8∥f′′(x)∥∞h2
Cubic Hermite
对于每个区间 [xi,xi+1],使用三次函数 si(x)=aix3+bix2+cix+di 进行插值,其中 si 满足
si(xi)=f(xi)si′(xi)=f′(xi)si(xi+1)=f(xi+1)si′(xi+1)=f′(xi+1)
这样的好处是导数连续,问题也显而易见,需要各插值点的导数。
Cubic Spline
与 三次 Hermite 插值一样,采用三次样条 si 进行插值,其中 si 满足
si(xi)=f(xi), si(xi+1)=f(xi+1)si′(xi+1)=si+1′(xi+1)si′′(xi+1)=si+1′′(xi+1)
这样能保证二阶导数连续,并且只需要函数值。
参数有 4n 个,但是上述约束只有 4n−2 个,所以需要增加另外的要求,通常是对端点 x0,xn 增加条件。
-
Complete 完全样条
s0′(x0)=k0, sn−1′(xn)=kn
-
Natural 自然样条
s0′′(x0)=sn−1′′(xn)=0
-
Periodic 周期样条,要求 f(x0)=f(xn)
s0′(x0)=sn−1′(xn), s0′′(x0)=sn−1′′(xn)
-
Not-a-knot
s0′′′(x1)=s1′′′(x1), sn−2′′′(xn−1)=sn−1′′′(xn−1)
三次样条的求解可以使用与 Lagrange 插值相同的思路,先找出基函数,再进行线性组合。
令 yi=f(xi), ϕ(x)=3x2−2x3, ψ(x)=x3−x2,设 ki=f′(xi),那么可以求得,满足函数值和一阶条件的样条为
si(x)=yiϕ(hixi+1−x)+yi+1ϕ(hix−xi)−kihiψ(hixi+1−x)+ki+1hiψ(hix−xi)
求二阶导数有
si′′(xi+1)si+1′′(xi+1)=6hi2yi−6hi2yi+1+2hiki+4hiki+1=−6hi+12yi+1+6hi+12yi+2−4hi+1ki+1−2hi+1ki+2
令 si′′(xi+1)=si+1′′(xi+1),有
βiki+αi+1kk+1+βi+1ki+2=ηi+ηi+1
其中 βi=h1i, αi+1=2(βi+βi+1), ηi=3hi2yi+1−yi. 加上额外的约束条件,即可转化为求解一个对角占优的三对角或接近三对角线性方程组。
三次样条插值的好处在于它能最小化势能,其中势能定义为
E(t)=∥t′′(x)∥2=∫ab[t′′(x)]2dx
有以下结论:
- 令 s(x) 为自然样条,则 E(s)≤E(g), ∀g∈W0={g∈C2[x0,xn]:g(xi)=f(xi)}
- 令 s(x) 为完全样条,则 E(s)≤E(g), ∀g∈W1={g∈W0:g′(x0)=f(x0), g′(xn)=f(xn)}
可以令 r(x)=g(x)−s(x),那么有
∫x0xn[g′′(x)]2dx=∫x0xn[s′′(x)]2dx+∫x0xn[r′′(x)]2dx+2∫x0xns′′(x)r′′(x)dx
而
∫x0xns′′(x)r′′(x)dx=i=0∑n−1∫xixi+1s′′(x)r′′(x)dx=i=0∑n−1s′′(x)r′(x)∣xixi+1−∫xixi+1s′′′(x)r′(x)dx=s′′(xn)r′(xn)−s′′(x0)r′(x0)−s′′′(xn)r(xn)+s′′′(x0)r(x0) +i=0∑n−1∫xixi+1s′′′′(x)r(x)dx
因为 s(x) 为三次函数,所以有 s′′′′(x)=0,∫xixi+1s′′′′(x)r(x)dx=0. 同时 r(xn)=r(x0)=0
对于自然样条,s0′′(x0)=sn−1′′(xn)=0,所以有 ∫x0xns′′(x)r′′(x)dx=0;
对于 g∈W1,r′(xn)=r′(x0)=0,所以有 ∫x0xns′′(x)r′′(x)dx=0。
于是结论成立。
对于三次样条插值的误差界,有如下结论
∥s(j)(x)−f(j)(x)∥∞≤∥f(4)(x)∥∞⋅O(h4−j), j∈{0,1,2}
General Interpolation
以上讨论的都是插值函数的基为多项式的情况。本节讨论采用一般的基进行插值时的情况。
此时问题变为:给定 (x1,y1),…,(xn,yn)∈Rm×R, (xi=xj,∀i,j) 和 ϕ1(x),…,ϕn(x):Rm→R,找到一个函数 ϕ(x)∈span{ϕ1(x),…,ϕn(x)} 使得 ϕ(xi)=yi,∀i
同样可以转化为求解线性方程组的问题。只需要设 ϕ(x)=c1ϕ1(x)+⋯+cnϕn(x),则有
⎣⎢⎢⎢⎡ϕ1(x1)ϕ1(x2)⋮ϕ1(xn)ϕ2(x1)ϕ2(x2)⋮ϕ2(xn)⋯⋯⋱⋯ϕn(x1)ϕn(x2)⋮ϕn(xn)⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡c1c2⋮cn⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎤
对于不同的基,矩阵有不同的形式,需要对特定问题再进行分析,这里就不再展开。
常用的基函数有:多项式、分段多项式、有理函数、三角函数、镜像基函数、小波基函数
Two-Dimensional Interpolation
本节讨论二维插值问题。
Lagrange Interpolation
Lagrange 多项式插值对于一些特定的插值点有唯一解,如矩形网格、等距三角形网格。Lagrange 多项式插值并不总是适定的(存在唯一解)。有如下定理:
令 P 为二元多项式的有限维向量空间。多项式插值问题在 P 中适定当且仅当 (x1,y1),…,(xn,yn) 不在任意一条代数曲线 p(x,y)=0 上。
以下介绍两种二维插值的方法。
Shepard’s Method
Shephard 方法的思想是离插值点越近,受插值点函数值的影响就越大。具体如下:
F(x,y)=i=1∑nzi⋅ωi(x,y)
其中 ωi(x,y) 为权函数,满足 i=1∑nωi(x,y)=1.
一个经典权函数为
ωi(x,y)=j=1∑n∥∥∥∥[x−xjy−yj]∥∥∥∥−p∥∥∥∥[x−xiy−yi]∥∥∥∥−p, p≥1
ωi(x,y) 与距离有关,并且距离越小,权重越大
Delaunay triangulation – dual of Voronoi diagram
Delaunay triangulation 和 Voronoi diagram 的示例如下
![](/img/Delaunay_triangulation.png)
其中黑色点为给定的插值点,蓝色线为Delaunay triangulation,红色为Voronoi diagram,两个互为对偶关系。每一块红色区域内的点都与区域内的插值点最近。通过 Delaunay triangulation 得到的插值方法就是根据估计点最近的三个插值点,即 Delaunay triangulation 的顶点来进行线性插值。具体如下:
假设三个插值点分别为 A,B,C,则
s(x,y)=αf(xA,yA)+βf(xB,yB)+γf(xC,yC)
其中 (α,β,γ) 为 (x,y) 的重心坐标,可以通过以下方程求解
⎣⎡xy1⎦⎤=⎣⎡xAyA1xByB1xCyC1⎦⎤⎣⎡αβγ⎦⎤