数学实验 埃尔米特插值

    技术2022-05-11  118

    作者:张建生 教… 文章来源:本站原创 点击数: 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 


    最新回复(0)