常见插值法(共4页)_第1页
常见插值法(共4页)_第2页
常见插值法(共4页)_第3页
常见插值法(共4页)_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上常见插值法 【摘 要】插值方法在数值分析中起着非常重要的作用。在此介绍一些常见的插值方法及 其应用范例。【关键字】数值分析;插值方法;应用;专心-专注-专业1. 插值法定义 . . 插值法又称“”,是利用函数f (x)在某中插入若干点的,作出适当的特定函数,在这些 表(1) 插值点点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法。如果这特定函数是,就称它为插值多项式。2.常见的插值法及其构造 Lagrange插值法(a).公式推导:表(1)的Lagrange插值的插值多项式 ,(j=0,1,2.n)。其中插值基函数是 ,(i

2、,j=0,1 2.n) 。其插值余项为 其中, (b).matlab实现方法: Matlab没有直接求解的相关函数,现编译如下:function yi = Lagarange_chazhi(x,y,xi)% 求拉格朗日插值,并返回一个输入为xi时的函数值% x 为插值点向量,至少有三项% y 为插值点值的向量,项数与x相同m = length(x); %求插值个数m1 = length(y);if m<=2 error('项数不足!');endif m=m1 error('!y的项数应与x相同!');end %对参数的判断lag_hanshu = 0; s

3、yms X;for (l = 1:m) %构造插值基函数 la = y(l); for a = (1:l-1) la = la*(X-x(a)/(x(l)-x(a); end for a = (l+1:m) la = la*(X-x(a)/(x(l)-x(a); end format long lag_hanshu = lag_hanshu+la; %求解出插值函数endyi = subs( lag_hanshu,'X',xi); %返回插值函数输入为xi时的值End(c).方法缺陷:当插值点个数时,将产生龙格现象: 经典例子,对进行拉格朗日插值图(1)中从左到右,从上到下,n

4、分别为 图(1) Lagarange插值法的龙格现象4,5.11,可以看出,当后,它的插值函数在两个端点处发生剧烈的波动,造成较大的误差。所以拉格朗日插值法一般不适用于高次插值。 分段线性插值法(a).插值原理: 为避免高次产生的龙格现象,采用分段插值,相邻两节点间的函数为一次线性函数, 图形为线段,在a,b间为折线,如图(2)。 图(2) 分段线性插值(b).matlab实现方法: Matlab中没有现成的函数,现编译如下:function Fenduan_liner(x,y)%对x,y进行分段线性插值%用虚线画出插值后的函数m = length(x); %求插值个数m1 = length(

5、y);if m=m1 error('!y的项数应与x相同!');end %对参数的判断hold on;for ii = 1:m-1 plot(x(ii) x(ii+1),y(ii) y(ii+1); %画出线段endplot(x,y,'o'); %画出插值点end(c).方法缺陷:在节点处曲线不平滑。 保形插值(Hermite插值)(a) .插值原理: 针对分段插值法不光滑的问题,Hermite插值引入插值点的导数。 表(2) Hermite插值法 由于若且已知函数表及导数表,则存在唯一不超过次多项式满足插值条件 则,通过求解方程,可得出插值函数 其插值余项为且

6、与x有关。(b).matlab实现方法:Matlab中没有现成的函数,现编译如下:function yi = Hermite(x,y,der_y,xi)%对x,y进行Hermite插值,其各节点的导数为der_y%返回值为带入矩阵xi后的函数值if length(x) = length(y) if length(y) = length(der_y) n = length(x); %求插值个数 endelse error('!y的项数应与x相同!');end if n<=1 warning('项数不足!');end %对参数的判断syms X;H = 0;f

7、or jj = 1:n a = 0; b = 0; l = 1; for ii = 1:n if ii = jj a = a+1/(x(jj)-x(ii); l = l*(X-x(ii)/(x(jj)-x(ii); end end A = (1-2*(X-x(jj)*a)*l2; B = (X-x(jj)*l2; H = H+(A*y(jj)+B*der_y(jj); %迭代法求Hendyi = subs(H,'X',xi);end(c).方法缺陷:无法获得各点的导数 三次样条法(a) .插值原理: 对每两个点间进行三次多项式的插值,且通过端点导数推导出各点导数,使得插值函数在

8、插值点处导数相等。(b).matlab实现方法:Matlab有现成的函数spline,以下为help spline “PP = spline(X,Y) provides the piecewise polynomial form of the cubic spline interpolant to the data values Y at the data sites X,for use with the evaluator PPVAL and the spline utility UNMKPP.X must be a vector.” 插值法关系图lagarange 插值法龙格现象 光滑节点

9、处导数相同 Hermite 插值法分段线性 插值法 降次防止龙格现象导数不易得到 节点不光滑 由边界条件推导各节点导数三次样条 插值法3. 插值法对比例证对,在x=-1,-0.5,0,0.5,1点处插值代码如下:syms X;Y = 1./(1+25*X2);x = -1:0.5:1;y = subs(Y,'X',x);der_y = subs(diff(Y),'X',x);xi = -1:0.01:1;yi = 1./(1+25*xi.2);yi_Lagarange = Lagarange_chazhi(x,y,xi);yi_Hermite = Hermite

10、(x,y,der_y,xi);yi_Yangtiao = spline(x,y,xi);hold on;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');结果图形为 (注:蓝色实线为原函数,蓝色圆点为插值点,蓝色短虚线为分段线性插值,蓝色点虚线为Hermite插值,绿色点 虚线为Lagarange插值,绿色短虚线为三次样条插值)结果分析: 所有插值法中,分段线性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论