数学实验 埃尔米特插值

作者:张建生 教… 文章来源:本站原创 点击数: 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值