数值分析课程设计多项式插值的振荡现象Word格式.docx
- 文档编号:18480571
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:15
- 大小:466.76KB
数值分析课程设计多项式插值的振荡现象Word格式.docx
《数值分析课程设计多项式插值的振荡现象Word格式.docx》由会员分享,可在线阅读,更多相关《数值分析课程设计多项式插值的振荡现象Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
设计要求:
1.选择不断增大的分点数n=2,3,…
*画出原函数f(x)及插值多项式函数Ln(x)在[-1,1]上的图像;
*给出每一次逼近的最大误差;
*比较并分析实验结果。
2.选择其它函数,例如定义在区间[-5,5]上的函数。
重复上述实验看其结果如何。
3.区间[a,b]上切比雪夫(Chebychev)点的定义为
以x1,x2,…,xn+1为插值节点构造上述各函数的Lagrange插值多项式,比较其结果。
设计过程:
已知函数f(x)在n+1个点x0,x1,…,xn处的函数值为y0,y1,…,yn。
求一n次多项式函数Pn(x),使其满足:
Pn(xi)=yi,i=0,1,…,n.
解决此问题的拉格朗日插值多项式公式如下
其中Li(x)为n次多项式:
(1).在MATLAB6.5中输入函数
当取不同的分点数n时,所得图象与原函数图象对比如下:
n=2时;
最大误差为:
Max[L(x)-f(x)]=0.6462
n=3时,max[L(X)-f(X)]=0.7070;
n=6时,max[L(X)-f(X)]=0.6169;
n=8时,max[L(X)-f(X)]=1.0452;
n=10时;
max[L(X)-f(X)]=1.9156;
n=20时,最大误差为:
max[L(X)-f(X)]=58.5855。
图象分析:
从图中可以看出当插值节点很少时,插值的误差很大,插值图象与原图象没有很好重叠在一起,而当随着插值的节点增加,中间能很好的重叠,但是两边出现很大误差,随着n值的增多,总体上分散的越厉害,最大误差也逐渐增加,在n=3时,最大误差为0.6462,但到了n=20时,已经变成了58.5855,这种随着节点数增多依然不能很好的接近被插值函数的现象称为“龙格现象”,亦称为多项式插值的振荡现象。
因此通过增加节点数从而提高插值多项式的次数来逼近被插函数是不可取的。
(2).对于定义在定义在区间[-5,5]上的函数h(x)=x/(1+x^4);
输入函数后取节点数n=4,8,10;
得到图象如下
n=4时,max[L(X)-h(X)]=0.4020;
n=8时,max[L(X)-h(X)]=0.1708;
n=10时,max[L(X)-h(X)]=0.1092。
从图象可以看出随着插值节点数的增加出现异常的摆动,中间能较好的接近原函数,但两边却出现很大的误差。
(3).对定义在(-5,5)上的函数
g(x)=arctanx
在matlab里输入相应的lagrange插值公式,当n取不同的值时,得到相应图象如下:
n=4时,max[L(X)-g(X)]=0.4458;
n=8时,max[L(X)-g(X)]=0.3240;
N=10时,max[L(X)-g(X)]=0.8066。
从图象可以看出随着插值节点数的增加出现异常的摆动,中间能较好的接近原函数,随着插值节点增加有较好的插值重叠,但两边却出现很大的误差。
(3).以上实验是从对区间的等距划分而作出的拉格朗日多项式,也因此产生了龙格振荡现象,现在我们通过用切比雪夫点来对上述各函数的区间进行划分,以此来建立拉格朗日多项式,看这样建立的拉格朗日多项式是否还会出现龙格振荡现象。
还是考虑函数,为了与等距节点进行比较,我们仍然选取节点数不断增多的拉格朗日多项式。
得到不同图象:
n=3时;
n=6时;
n=11时;
n=21时。
可见利用切比雪夫点来构造的拉格朗日多项式比等距节点下的拉格朗日多项式更为有效,随着节点数的增加,逼近程度就越好,它能很好的消除了“龙格现象”。
心得体会:
1)深入了解matlab运行环境和操作环境,初步学会调试程序,运用绘图命令制作函数图象。
2)了解lagrange插值法龙格的异常现象,以及数值分析的解决方案。
3)懂得如何运用已有的知识更进一步了解未知的问题。
4)独立解决和思考问题的能力有了一定的提高。
参考文献:
《数值分析》华中科技大学出版社。
李红著
《matlab从入门到精通》人民邮电出版社求是科技编著
《数值分析》北京理工大学出版社史万明孙新等编著
附录
程序代码1:
functiont_charpt
result=inputdlg({'
请选择实验,若选2.1,请输入1,否则输入2:
'
},'
charpt_2'
1,{'
1'
});
Nb=str2num(char(result));
if(Nb~=1)&
(Nb~=2)errordlg('
实验选择错误!
);
return;
end
promps={'
请选择实验函数,若选f(x),请输入f,若选h(x),请输入h,若选g(x),请输入g:
};
%选择所要运算的函数
titles='
;
result=inputdlg(promps,'
charpt2'
f'
Nb_f=char(result);
if(Nb_f~='
&
Nb_f~='
h'
g'
)errordlg('
实验选择错误!
请输入插值点数N:
10'
Nd=str2num(char(result));
if(Nd<
1)errordlg('
结点输入错误!
switchNb_f
case'
f=inline('
1./(1+25*x.^2)'
a=-1;
b=1;
x./(1+x.^4)'
a=-5;
b=5;
atan(x)'
if(Nb==1)
x0=linspace(a,b,Nd+1);
y0=feval(f,x0);
x=a:
0.1:
b;
y=lagrange(x0,y0,x);
fplot(f,[a,b],'
co'
holdon;
plot(x,y,'
b--'
xlabel('
x'
);
ylabel('
y=f(x)oandy=ln(x)--'
f1=1./(1+25*x.^2);
err=max(abs(y-f1));
xc=-cos(pi*[0:
4]/4);
x=(a+b)*0.5+(b-a)*xc*0.5;
elseif(Nb==2)
cs=spline(x0,y0);
y=ppval(cs,x);
plot(x0,y0,'
o'
k-'
y=f(x)oandy=spline(x)-'
functiony=lagrange(x0,y0,x)
n=length(x0);
m=length(x);
fori=1:
m
z=x(i);
s=0.0;
fork=1:
n
p=1.0;
forj=1:
ifj~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
s=p*y0(k)+s;
y(i)=s;
t1=clock%获得系统时间
程序代码2:
x=[-1:
0.2:
1];
y=1./(1+25.*x.^2);
x0=[-1:
0.01:
y0=lagrange(x,y,x0);
y1=1./(1+25.*x0.^2);
--r'
plot(x0,y1,'
-b'
x2=abs(y0-y1);
max(x2);
程序代码3:
n=3;
fori=1:
x(i)=cos(((2.*i-1).*pi)./(2.*(n+1)));
y(i)=1./(1+25.*x(i).*x(i));
x0=-1:
1;
)
holdon
计算机配置:
AMDathlon(tm)1.73GHz,512MB内存。
CPU时间:
(4.880000-0.020000,4.880000+0.020000)seconds。
运行平台:
MATLAB6.5.1
教师评语:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 课程设计 多项式 振荡 现象