网站大量收购独家精品文档,联系QQ:2885784924

拉格朗日插值..doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
拉格朗日插值.

拉格朗日插值绘制龙格现象 一、问题叙述 龙格反例1/(1+x^2)说明高次代数插值会导致误差很大。在区间[-5,5]上取等距结点构造10次拉格朗日插值多项式用计算机绘制图形显示龙格现象。 二、理论分析 拉格朗日插值:假设有(n+1)个拉格朗日插值结点 ,已知函数值 求n次多项式使其满足插值条件 类似于二次插值方法,根据插值结点构造(n+1)个拉格朗日插值基函数 每一个基函数都是零点多项式 满足插值条件 拉格朗日插值基函数:拉格朗日插值多项式: 切比雪夫插值:n阶切比雪夫多项式定义为 若令 ,则有 。由余弦函数性质,有 所以有递推关系 ,又有,所以n阶切比雪夫多项式零点为 。 3. Hermite插值 如果f(x)在区间[a,b]上连续可导, 是互异的,那么存在唯一的多项式满足多项式在这些点上的值与函数f(x)的值相等、多项式在这些点的一阶导数值与函数的一阶导数值相等。 这个多项式可以表示为 其中 三、算法MATLAB实现 (1)拉格朗日插值描绘龙格现象,代码如下: function f = Language(x,y,x0) syms t l; if(length(x) == length(y)) n = length(x); else disp(x和y维数不相等); return; end h=sym(0); for (i=1:n) l=sym(y(i)); for(j=1:i-1) l=l*(t-x(j))/(x(i)-x(j)); end; for(j=i+1:n) l=l*(t-x(j))/(x(i)-x(j)); end; h=h+l; end simplify(h); if(nargin == 3) f = subs (h,t,x0); else f=collect(h); f = vpa(f,6); end 主程序 x1=-5:1:5; x2=-5:2:5; x3=-5:2/3:5; y11=1./(1+x1.^2);%10次拉格朗日插值 y12=1./(1+x2.^2);%5次拉格朗日插值 y13=1./(1+x3.^2);%15次拉格朗日插值 x0=-5:0.001:5; %调用拉格朗日函数 y1=Language(x1,y11,x0); y2=Language(x2,y12,x0); y3=Language(x3,y13,x0); y0=1./(1+x0.^2); plot(x0,y0); hold on plot(x0,y2,r); hold on plot(x0,y1,k); hold on plot(x0,y3,g); hold on xlabel(x); ylabel(y); title(原函数f(x)=1/(1+x^2) 等距拉格朗日插值); legend(原函数,5次拉格朗日插值,10次拉格朗日插值,15次拉格朗日插值); grid on 插值效果如下: 图1 等距拉格朗日插值 图1分别进行5次、10次、15次拉格朗日插值,可以看出5次插值拟合效果不是很好,10次插值在插值区间的边界处出现很大波动,明显偏离原函数,15次插值看到波动情况加强,故得出结论:拉格朗日插值次数不宜过高。 高次插值边界出现这种波动现象叫做龙格现象。 为避免上述现象,分别采用切比雪夫插值,埃米特插值和样条插值来避免龙格现象 (2)切比雪夫插值:用切比雪夫多项式零点代替等距结点,其他基本不变 x1=-5:1:5; y11=1./(1+x1.^2); x0=-5:0.001:5; y1=Language(x1,y11,x0); y0=1./(1+x0.^2); k=0:1:10; xx=5*cos((2*k+1)*pi/22); % 用切比雪夫多项式零点代替等距结点 yy=1./(1+xx.^2); y4=Language(xx,yy,x0); plot(x0,y0,k); hold on plot(x0,y1,r); hold on plot(x0,y4,b,xx,yy,ob); 插值效果如下: 图2 切比雪夫插值 由图2可以看出10次切比雪夫插值很好的和原函数拟合,并且波动较小,说明伪振荡现象得到控制。 (3)样条插值:样条插值直接采用MATLAB插值函数spline(),代码如下: x=-5:1:5; y=1./(1+x.^2); xx=-

文档评论(0)

wuyuetian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档