(x0,y0), (x1,y1)是数据集上相异的两点,且x0<x1。y=fx在xi上的函数值和一阶导数值分别为yi=fxi和mi=f'xi (i=0,1),求三次多项式H3x,使其满足H3xi=yiH3'xi=mi (i=0,1)。
构造三次埃尔米特插值多项式
H3x=y0a0x+y1a1x+m0β0x+m1β1x
条件
函数 |
函数值 |
导数值 |
|
x0 |
x1 |
x0 |
x1 |
a0x |
1 |
0 |
0 |
0 |
a1x |
0 |
1 |
0 |
0 |
β0x |
0 |
0 |
1 |
0 |
β1x |
0- |
0 |
0 |
1 |
由 a0x1=a0'x1=0
可写成 a0x=[a+b(x-x0)](x-x1)2
由a0x0=1 得 a=1(x0-x1)2
再由a0'(x0) = 0得b = - 2(x0-x1)3,所以
a0x = [1+2x-x0x1-x0]( x-x1x0-x1)2
同理(将x0<->x1)
a1x = [1+2x-x0x1-x0]( x-x1x0-x1)2
同样由β0(x0) = β0(x1)= β0'(x1) = 0,可令
β0(x) = c(x-x0)( x-x1)2
再由β0'(x0) = 1,得c = 1(x0-x1)2
β0(x) = (x-x0) ( x-x1x0-x1)2 ,β1(x) = (x-x1) ( x-x0x1-x0)2
a0(x) = [1+2x-x0x1-x0] ( x-x1x0-x1)2 ,β0(x) = (x-x0) ( x-x1x0-x1)2
a1(x) = [1+2x-x1x0-x1] ( x-x0x1-x0)2 ,β1(x) = (x-x1) ( x-x0x1-x0)2
即
a0(x) = [1+2l1(x)]l02(x)
β0(x) = [x-x0]l02(x)
a1(x) = [1+2l0(x)]l12(x)
β1(x) = [x-x1]l12(x)
l02(x) ,l12(x) 为以(x0,y0),(x1,y1) 插值点得Lagrange一次基函数。
可得满足条件得三次埃尔米特插值多项式为
H3x = y0a0(x) + y1a1(x) + m0β0x+m1β1x
= y0[1+2x-x0x1-x0] ( x-x1x0-x1)2 + y1[1+2x-x1x0-x1] ( x-x0x1-x0)2 + m0(x-x0) ( x-x1x0-x1)2 + m1(x-x1) ( x-x0x1-x0)2
uses interp_unit;//置顶
x:=array(5,1,19,8);
y:=array(2,3,1,7);
xx:=array(4,12);
return pchip(x,y,xx);
//返回:array(3.3403,6.9345)