作者:张建生 教… 文章来源:本站原创 点击数: 150 更新时间:2006-12-4 |
前面提到,一维插值方法主要有分段线性插值、三次样条插值等,本节将介绍常用的一维插值方法.
4.3.1 分段多项式插值 1. 分段线性插值
分段线性插值的提法如下:
问题:设函数
f(x)
在
n+1
个节点
X0,X1,...,Xn处的函数值已知,为 y 0 ,y 1 ,…y n .
要求:求一个分段(共n段)
线性函数
q(x),
使其满足
:
q(Xi)=yi,i=0,1,...,n.
根据直线的点斜式方程变形得到
q(x)
在第
i
段
[Xi-1,Xi
]
上的表达式为
q(x)=(X-X i )/(X i-1 -X i )*y i-1 +(X-X i-1 )/(X i -X i-1 )*y i ,X i-1 ≤X≤X i ,i=1,2,...,n ![]()
可以证明,分段线性插值具有良好的改敛性.即n趋于无穷大时,
lim q(x)=f(x),
其中
f(x)
为被插值函数.
分段线性插值在计算插值时,只用到前后两个相邻节点的函数值,计算量小.在对函数表作插值计算时,经常用到.
例4.1求Φ(2.3456789)
解 由标准正态分布函数值表可以得到 Φ( 2.34) =0.99036, Φ (2.35)=0.99061.
采用分段线性插值计算Φ(
2.3456789).
取区间
[Xi-1
,Xi
]=[2.34,2.35],在端点处
被插值函数
f(x)=
Φ(x)
.
则
f(Xi-1)
=
Φ(Xi-1)
=
Φ
(2.34)=0.99036;
f(Xi)
=
Φ
(Xi
)=
Φ
(2.35)=0.99061.
利用如上分段线性插值公式得到
Φ
(
2.3456789)=q(2.3456789)=0.9905
2.
分段三次埃尔米特插值
在插值问题中,如果除了在插值节点的函数值给定外,还要求在节点的导数值为给定值,即插值问题变为
设函数
f(x)
在节点X0,X1,...,Xn
处的函数值为
y0,y1,...,yn
,
导数值为
y'
0
,y'
1
,...,y'
n
,
求一个分段(共
n
段)多项式函数
q(x),
使其满足
q(X
i
)=yi,q'(x
i
)=y'
i
,i=0,1,...,n.
相当于在每一小段上应满足四个条件(方程),可以确定四个待定参数.三次多项式正好有四个系数,所以可以考虑用三次多项式函数作为插值函数,这就是分段三次埃尔米特插值,它与分段线性插值一起都称为分段多项式插值.
例题:x=[0 1 2 3 4 5 6 7 8 9 10]; y=[0 2 0 -4 0 4 0 -2 0 3 1]; 各点的导数值 z=[1 0 -1.2 -0.1 0.1 0.5 0.7 0.2 0.1 0 -2]; 编程描绘观测点,并依据这些观测点给出分段三次埃尔米特插值函数f(x)的图象.
记三次多项式f(x)=f1*x^3+f2*x^2+f3*x+f4
可以得到 f(0)=f1*0^3+f2*0^2+f3*0+f4=f4=0 f(1)=f1*1^3+f2*1^2+f3*1+f4=f1+f2+f3+f4=2 f'(x)=3*f1*x^2+2*f2*x+f3 f'(0)=f3=1 f'(1)=3*f1+2*f2+f3=0
记A=[0 0 0 1;1 1 1 1;0 0 1 0;3 2 1 0];
b=[0 2 1 0]'; 因此在第一区间上的三次埃尔米特插值变为解方程A*f=b. 解得 f=inv(A)*b 绘图: hold on plot(x(1),y(1),x(2),y(2)); fplot('f(1)*x^3+f(2)*x^2+f(3)*x+f(4)',[0 1 -5 5]); 一般的,在MATLAB中编程如下: x=[0 1 2 3 4 5 6 7 8 9 10]; y=[0 2 0 -4 0 4 0 -2 0 3 1]; z=[1 0 -1.2 -0.1 0.1 0.5 0.7 0.2 0.1 0 -2]; hold on for i=1:10 b=[y(i) y(i+1) z(i) z(i+1)]'; A1=[x(i)^3 x(i)^2 x(i) 1]; A2=[x(i+1)^3 x(i+1)^2 x(i+1) 1]; A3=[3*x(i)^2 2*x(i) 1 0]; A4=[3*x(i+1)^2 2*x(i+1) 1 0]; A=[A1; A2; A3; A4];
f=inv(A)*b;
plot(x(i),y(i),x(i+1),y(i+1)); t=x(i):0.1:x(i+1); plot(t,f(1)*t.^3+f(2)*t.^2+f(3)*t+f(4)); end ![]()
做
1
)
如何简单地产生分段三次埃尔米特插值公式?
2
)分段三次埃尔米特插值与分段线性插值的曲线光滑程度有何差别?
3
)在上面问题中,如果只要求节点的导数存在,则分段多项式的次数为多少?提示:联立相邻两段上的埃尔米特插值函数的导函数,带入中点横坐标.
|