作者:张建生 教… 文章来源:本站原创 点击数: 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 )在上面问题中,如果只要求节点的导数存在,则分段多项式的次数为多少?提示:联立相邻两段上的埃尔米特插值函数的导函数,带入中点横坐标.
来源:http://www.h999.cn/lunwen/yj/200612/17126.html