该【常见插值法 】是由【baba】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【常见插值法 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。第1页常见插值法【摘要】插值方法在数值分析中起着特别重要的作用。在此介绍一些常见的插值方法及其应用范例。【关键字】数值分析;插值方法;应用;插值法定义..............插值法又称“内插法”,是利用函数f(x)在某区间中插入若干点的函数值,作出适当的特定函数,在这些表(1)插值点点上取已知值,在区间的其他点上用这特定函数的值作为函数f(x)的近似值,这种方法称为插值法。假如这特定函数是多项式,就称它为插值多项式。?Lagrange插值法(a).公式推导:表(1)的Lagrange插值的插值多项式,(j=0,1,2....n)。其中插值基函数是,(i,j=0,12...n)。其插值余项为其中,(b).matlab实现方法:Matlab没有干脆求解的相关函数,现编译如下:functionyi=Lagarange_chazhi(x,y,xi)%求拉格朗日插值,并返回一个输入为xi时的函数值%x为插值点向量,至少有三项%y为插值点值的向量,项数及x相同第7页m=length(x);%求插值个数m1=length(y);ifm<=2error('项数不足!');endifm~=m1error('!!!y的项数应及x相同!!!');end%对参数的推断lag_hanshu=0;symsX;for(l=1:m)%构造插值基函数la=y(l);fora=(1:l-1)la=la*(X-x(a))/(x(l)-x(a));endfora=(l+1:m)la=la*(X-x(a))/(x(l)-x(a));endformatlonglag_hanshu=lag_hanshu+la;%求解出插值函数endyi=subs(lag_hanshu,'X',xi);%返回插值函数输入为xi时的值End(c).方法缺陷:当插值点个数时,将产生龙格现象:经典例子,对进行拉格朗日插值图(1)中从左到右,从上到下,n分别为第3页图(1)Lagarange插值法的龙格现象4,5...11,可以看出,当后,它的\插值函数在两个端点处发生猛烈的波动,造成较大的误差。所以拉格朗日插值法一般不适用于高次插值。?分段线性插值法(a).插值原理:为避开高次产生的龙格现象,采纳分段插值,相邻两节点间的函数为一次线性函数,图形为线段,在[a,b]间为折线,如图(2)。图(2)分段线性插值(b).matlab实现方法:Matlab中没有现成的函数,现编译如下:functionFenduan_liner(x,y)%对x,y进行分段线性插值%用虚线画出插值后的函数m=length(x);%求插值个数m1=length(y);ifm~=m1error('!!!y的项数应及x相同!!!');end%对参数的推断holdon;forii=1:m-1plot([x(ii)x(ii+1)],[y(ii)y(ii+1)]);第4页%画出线段endplot(x,y,'o');%画出插值点end(c).方法缺陷:在节点处曲线不平滑。?保形插值(Hermite插值).插值原理:针对分段插值法不光滑的问题,Hermite插值引入插值点的导数。表(2)Hermite插值法由于若且已知函数表及导数表,则存在唯一不超过次多项式满意插值条件则,通过求解方程,可得出插值函数其插值余项为且及x有关。(b).matlab实现方法:Matlab中没有现成的函数,现编译如下:functionyi=Hermite(x,y,der_y,xi)%对x,y进行Hermite插值,其各节点的导数为der_y%返回值为带入矩阵xi后的函数值iflength(x)==length(y)iflength(y)==length(der_y)n=length(x);%求插值个数endelseerror('!!!y的项数应及x相同!!!');endifn<=1warning('项数不足!');end%对参数的推断symsX;H=0;第5页forjj=1:na=0;b=0;l=1;forii=1:nifii~=jja=a+1/(x(jj)-x(ii));l=l*(X-x(ii))/(x(jj)-x(ii));endendA=(1-2*(X-x(jj))*a)*l^2;B=(X-x(jj))*l^2;H=H+(A*y(jj)+B*der_y(jj));%迭代法求Hendyi=subs(H,'X',xi);end(c).方法缺陷:无法获得各点的导数④:对每两个点间进行三次多项式的插值,且通过端点导数推导出各点导数,使得插值函数在插值点处导数相等。(b).matlab实现方法:Matlab有现成的函数spline,以下为‘helpspline’“PP=spline(X,Y)providesthepiecewisepolynomialformofthecubicsplineinterpolanttothedatavaluesYatthedatasitesX,.”⑤插值法关系图lagarange插值法龙格现象光滑节点处导数相同Hermite插值法分段线性插值法降次防止龙格现象导数不易得到节点不光滑第7页由边界条件推导各节点导数三次样条插值法插值法对比例证对,在x=-1,-,0,,1点处插值代码如下:symsX;Y=1./(1+25*X^2);x=-1::1;y=subs(Y,'X',x);der_y=subs(diff(Y),'X',x);xi=-1::1;yi=1./(1+25*xi.^2);yi_Lagarange=Lagarange_chazhi(x,y,xi);yi_Hermite=Hermite(x,y,der_y,xi);yi_Yangtiao=spline(x,y,xi);holdon;plot(x,y,'o',xi,yi,'b');%画出分段插值Fenduan_liner(x,y);%画出拉格朗日插值plot(xi,yi_Lagarange,':g');%画出Hermite插值plot(xi,yi_Hermite,':');%画出三次样条插值plot(xi,yi_Yangtiao,'--g');结果图形为第7页(注:蓝色实线为原函数,蓝色圆点为插值点,蓝色短虚线为分段线性插值,蓝色点虚线为Hermite插值,绿色点虚线为Lagarange插值,绿色短虚线为三次样条插值)第7页结果分析:全部插值法中,分段线性插值最贴近原函数,其次Hermite插值法,再其次为三次样条,及Lagarange插值第7页法接近。但分段线性插值法在结点处不光滑,Hermite导数信息不易获得,Lagarange插值法虽然计算简洁,但高次产生龙格现象,所以三次样条插值法比较好用。第10页【参考文献】
常见插值法 来自淘豆网m.daumloan.com转载请标明出处.