1.4分段插值 一. 分段线性插值
在每个区间 i i + 1 上,用1阶多项式 (直线) 逼近 f (x):
for x ∈[x i , x i +1]
即用折线代替曲线。设f (x )连续 一f (x ) P 1h (x ) →记 h = max | x i + 1 - x i | 易证:当 h →0 致 优点:计算简单,适用于光滑性要求不高的插值问题。
缺点:分段插值函数只能保证连续性,失去了原函数的光滑性。 二. 分段三次(Hermite )插值
不少实际插值问题不仅要求函数值相等,而且还要求导数值也相等。这就导致下面的Hermite 插值。
', ... , y n ', x 0, ... , x n ; y 0, ... , y n ; y 0
给定
[x i , x i +1]
在 上利用两端点的 y 及 y' 构造3次Hermite 函数。 [x , x ]
S 3(x 并满足: ) =y i αi (x ) +y i +1αi +1(x ) +y i βi (x ) +y i +1βi +1(x ) S 3(x i ) =y i , S 3(x i +1) =y i +1, 从而 ' ' '
S 3(x i ) =y ' i , S 3(x i +1) =y i +1.
αi (x i ) =1, αi +1(x i ) =0, βi (x i ) =0, βi +1(x i ) =0, αi (x i +1) =0, αi +1(x i +1) =1, βi (x i +1) =0, βi +1(x i +1) =0,
' ' ' α' i (x i ) =0, αi +1(x i ) =0, βi (x i ) =1, βi +1(x i ) =0,
' ' '
α' i (x i +1) =0, αi +1(x i +1) =0, βi (x i +1) =0, βi +1(x i +1) =1.
2由此条件可得: x -x i ⎫2⎛x -x i +1⎫⎛
αi (x ) = ⎪ 1+2⎪, i +1⎭i +1i ⎭⎝i ⎝
2 ⎛x -x i +1⎫
βi (x ) = ⎪(x -x i ). i +1⎭⎝i
'
'
类似可得的表达式。
下面是matlab 函数pieceline (x ,y ,u )实现分段线性插值多项式的计算。
function v=pline(x,y,u) delta=diff(y)./diff(x); n=length(x); k=ones(size(u)); for j=2:n-1
k(x(j)
s=u-x(k);
v=y(k)+s.*delta(k);
程序中,pline 是分段线性插值函数;
输入参数x ——给定的数据点的横坐标所组成的向量 Y ——给定的数据点的纵坐标所组成的向量 U ——需要计算的点所组成的向量
输出参数v ——u 所对应的分段线性插值多项式的值,即v (i )=s1(u (i )),其中s1是未来满足分段线性插值多项式
Detla 是计算差商的最后计算s 、v
1.4分段插值 一. 分段线性插值
在每个区间 i i + 1 上,用1阶多项式 (直线) 逼近 f (x):
for x ∈[x i , x i +1]
即用折线代替曲线。设f (x )连续 一f (x ) P 1h (x ) →记 h = max | x i + 1 - x i | 易证:当 h →0 致 优点:计算简单,适用于光滑性要求不高的插值问题。
缺点:分段插值函数只能保证连续性,失去了原函数的光滑性。 二. 分段三次(Hermite )插值
不少实际插值问题不仅要求函数值相等,而且还要求导数值也相等。这就导致下面的Hermite 插值。
', ... , y n ', x 0, ... , x n ; y 0, ... , y n ; y 0
给定
[x i , x i +1]
在 上利用两端点的 y 及 y' 构造3次Hermite 函数。 [x , x ]
S 3(x 并满足: ) =y i αi (x ) +y i +1αi +1(x ) +y i βi (x ) +y i +1βi +1(x ) S 3(x i ) =y i , S 3(x i +1) =y i +1, 从而 ' ' '
S 3(x i ) =y ' i , S 3(x i +1) =y i +1.
αi (x i ) =1, αi +1(x i ) =0, βi (x i ) =0, βi +1(x i ) =0, αi (x i +1) =0, αi +1(x i +1) =1, βi (x i +1) =0, βi +1(x i +1) =0,
' ' ' α' i (x i ) =0, αi +1(x i ) =0, βi (x i ) =1, βi +1(x i ) =0,
' ' '
α' i (x i +1) =0, αi +1(x i +1) =0, βi (x i +1) =0, βi +1(x i +1) =1.
2由此条件可得: x -x i ⎫2⎛x -x i +1⎫⎛
αi (x ) = ⎪ 1+2⎪, i +1⎭i +1i ⎭⎝i ⎝
2 ⎛x -x i +1⎫
βi (x ) = ⎪(x -x i ). i +1⎭⎝i
'
'
类似可得的表达式。
下面是matlab 函数pieceline (x ,y ,u )实现分段线性插值多项式的计算。
function v=pline(x,y,u) delta=diff(y)./diff(x); n=length(x); k=ones(size(u)); for j=2:n-1
k(x(j)
s=u-x(k);
v=y(k)+s.*delta(k);
程序中,pline 是分段线性插值函数;
输入参数x ——给定的数据点的横坐标所组成的向量 Y ——给定的数据点的纵坐标所组成的向量 U ——需要计算的点所组成的向量
输出参数v ——u 所对应的分段线性插值多项式的值,即v (i )=s1(u (i )),其中s1是未来满足分段线性插值多项式
Detla 是计算差商的最后计算s 、v