- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)