数值计算之 插值法(6)样条插值

数值计算之 插值法(6)样条插值

数值计算之 插值法(6)样条插值

前言分段插值存在的问题样条插值三次样条插值样条插值与分段埃尔米特插值的区别后记

前言

本篇介绍插值法的最后一节,样条插值。

分段插值存在的问题

采用分段插值可以避免龙格现象,提升插值精度,但是分段插值的结果并不平滑。采用分段三次埃尔米特插值能够使得插值结果在节点附近相对平滑(没有突变点)。但是其平滑性也只是对于一阶导而言的。

为了让插值结果具有更好的平滑性,可以使用样条插值。

样条插值

对于待插值函数

f

(

x

)

f(x)

f(x),已知节点

x

0

,

x

1

,

,

x

n

x_0,x_1,\dots,x_n

x0​,x1​,…,xn​处的函数值,将相邻两节点进行分段,获得n个插值小区间,在每个区间内使用k次多项式

S

i

(

x

)

S_i(x)

Si​(x)插值,使其满足插值条件与k-1阶平滑性:

S

i

(

x

i

)

=

f

(

x

i

)

,

S

i

(

x

i

+

1

)

=

f

(

x

i

+

1

)

,

0

i

n

1

(

1

)

S

i

(

j

)

(

x

i

+

1

)

=

S

i

+

1

(

j

)

(

x

i

+

1

)

,

0

i

n

2

,

1

j

k

1

(

2

)

S_i(x_i)=f(x_i),S_i(x_{i+1})=f(x_{i+1}),0\le i\le n-1\quad (1) \\ \quad \\ S_i^{(j)}(x_{i+1})=S_{i+1}^{(j)}(x_{i+1}),0\le i\le n-2,1\le j\le k-1\quad (2) \\

Si​(xi​)=f(xi​),Si​(xi+1​)=f(xi+1​),0≤i≤n−1(1)Si(j)​(xi+1​)=Si+1(j)​(xi+1​),0≤i≤n−2,1≤j≤k−1(2) 将每段插值结果组合后,就是样条插值。

三次样条插值

比较常用的是三次样条插值法,即假设上面的

S

i

(

x

)

S_i(x)

Si​(x)是三次多项式:

S

i

(

x

)

=

a

i

+

b

i

x

+

c

i

x

2

+

d

i

x

3

S_i(x)=a_i+b_ix+c_ix^2+d_ix^3

Si​(x)=ai​+bi​x+ci​x2+di​x3 由上式可知,一段三次样条含有4个未知数,则节点

x

0

,

x

1

,

,

x

n

x_0,x_1,\dots,x_n

x0​,x1​,…,xn​对应的三次样条含有4n个未知数。

每个节点

x

0

,

x

1

,

,

x

n

x_0,x_1,\dots,x_n

x0​,x1​,…,xn​都满足式(1),产生2n个等式。

每个节点

x

0

,

x

1

,

,

x

n

x_0,x_1,\dots,x_n

x0​,x1​,…,xn​都满足式(2),产生2(n-1)个等式。

因此,三次样条插值本身满足的条件只能形成4n-2个方程,少于未知参数量4n,必须添加额外条件:

自然边界:

S

(

x

0

)

=

S

(

x

n

)

=

0

S''(x_0)=S''(x_n)=0

S′′(x0​)=S′′(xn​)=0 固定边界:

S

(

x

0

)

=

c

1

,

S

(

x

n

)

=

c

2

S'(x_0)=c_1,S'(x_n)=c_2

S′(x0​)=c1​,S′(xn​)=c2​ 周期样条:

S

(

x

0

)

=

S

(

x

n

)

,

S

(

x

0

)

=

S

(

x

n

)

S'(x_0)=S'(x_n),S''(x_0)=S''(x_n)

S′(x0​)=S′(xn​),S′′(x0​)=S′′(xn​) Not-a-knot:

S

(

x

0

)

=

S

(

x

1

)

,

S

(

x

n

1

)

=

S

(

x

n

)

S'''(x_0)=S'''(x_1),S'''(x_{n-1})=S'''(x_{n})

S′′′(x0​)=S′′′(x1​),S′′′(xn−1​)=S′′′(xn​)

实际上可以自行设定条件,只要能够额外产生两个方程。

样条插值与分段埃尔米特插值的区别

样条插值曲线本身是光滑的,因为样条需要满足节点插值条件和平滑性。

分段埃尔米特插值需要同时满足节点函数值与导数值。换言之,埃米尔特插值的平滑性是由给定的节点导数值决定的。

后记

终于把插值给搞完了。下篇就是拟合了。

相关创意