数值实验报告-实验三_第1页
数值实验报告-实验三_第2页
数值实验报告-实验三_第3页
数值实验报告-实验三_第4页
数值实验报告-实验三_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

数值实验报告实验题三数值实验报告实验题三实验3.1多项式插值的振荡现象3.1.1问题提出考虑一个固定区间上用插值逼近一个函数。显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。我们自然关心插值多项式的次数增加时,是否也更加靠近被逼近的函数。龙格(Runge)给出的一个例子是极著名并富有启发性的。设区间[-1,1]上函数 考虑的一个等距划分,分点为 则拉格朗日插值多项式为 其中是次拉格朗日插值基函数。3.1.2实验内容3.1.2.1第一小题选择不断增大的分点数目,画出原函数及插值多项式函数在上的图像,比较并分析实验结果。(1)MATLAB代码程序3.1.1:拉格朗日插值公式函数lag_interp.mfunctionf_n=lag_interp(xn,yn,x0)%LagrangeInterpolation%%Type1:y=lag_interp(xn,yn,x0)%Ifxisinput,thenthefunctionreturnsanumericalvalueLn(x0),which%isequaltovpa(subs(lag_interp(xn,yn),x,x0)).%%Type2:y=lag_interp(xn,yn)%Ifxisnotinput,thethefunctionreturnsansymbolicfunctionLn(x).%Safeguardsforinputarguments[dim1,dim]=size(xn);ifdim1~=1error('xnmustbealinevector.')endifdim<=1error('Theremustbeatleast2points.')end[dim1,dim2]=size(yn);ifdim1~=1error('ynmustbealinevector.')endifdim2~=dimerror('Thedimentionofxnandynmustagree.')end%Langrangeinterpolationsymsx;f_result=0;fori=1:diml=1;forj=1:dimifi~=jl=l*(x-xn(j))/(xn(i)-xn(j));endendf_result=f_result+yn(i)*l;endifnargin==2%Ifxisnotinput,thethefunctionreturnsansymbolicfunctionLn(x).f_n=f_result;elseifnargin==3%Ifxisinput,thenthefunctionreturnsanumericalvalueLn(x0).f_n=vpa(subs(f_result,x,x0));end程序3.1.2:产生n个分点的函数gen_eqpts.mfunctionxn=gen_eqpts(left,right,n)%Returnsann-dimentionallinevectorofequidistantpointsoninterval[left,right]%%Type:xn=gen_eqpts(left,right,n)%%'left'isthelowerboundaryoftheinterval.%'right'isthelowerboundaryoftheinterval.%'n'isthenumberofequidistantpoints.nmustbeanintegergreaterorequalto2.%ThismfileiscodedbySteveZhao.Forreferenceonly.%%Theauthorwillnotberesponsibleforanypotentialconsequencesthatmay%causedbythisfile.%%(c)20163gStudio.Allrightsreserved%Safeguardsforinputargumentsifleft>=righterror('Theupperboundmustbegreaterthanthelowerbound.')endifmod(n,1)~=0error('nmustbeaninteger.')endifn<2error('nmustbeatleast2.')end%Startgeneratingxn=zeros(1,n);xn(1)=left;fori=2:nxn(i)=left+(i-1)/(n-1)*(right-left);end程序3.1.3:第一小题主程序ex311.m%Experiment3.1(1)%ComparisonofLagrangeInterpolationandoriginalfunction%%ThismfileiscodedbySteveZhao.Forreferenceonly.%%Theauthorwillnotberesponsibleforanypotentialconsequencesthatmay%causedbythisfile.%%(c)20163gStudio.Allrightsreservedn=input('Pleaseinputthenumberofequidistantpoints.n=£º');holdonsymsx;f=@(x)1./(1+25*x.^2);x0=linspace(-1,1);y0=f(x0);plot(x0,y0,'-k');xn=gen_eqpts(-1,1,n);yn=f(xn);plot(x0,lag_interp(xn,yn,x0),'--b');(2)问题的探索n=2时,原函数图像(黑色实线)和插值函数图像(蓝色虚线)如图所示n=3时,图像如图所示n=4、5,图像如图所示:n=6、7时,图像如图所示n=8、9时,图像如图所示(3)结论我们可以发现,n为6时,插值函数的走势与实际函数较为接近。然而n越大时,虽然与原函数的值更为接近,但在较远处与函数的误差越来越大。3.1.2.2第二小题的求解选择不断增大的分点数目,画出原函数及插值多项式函数在上的图像,比较并分析实验结果。(1)MATLAB代码程序3.1.4:第二小题主程序ex312.m%Experiment3.1(2)%ComparisonofLagrangeInterpolationandoriginalfunction%%ThismfileiscodedbySteveZhao.Forreferenceonly.%%Theauthorwillnotberesponsibleforanypotentialconsequencesthatmay%causedbythisfile.%%(c)20163gStudio.Allrightsreservedn=input('Pleaseinputthenumberofequidistantpoints.n=');symsx;g=@(x)x./(1+x.^4);h=@(x)atan(x);x0=linspace(-5,5);y01=g(x0);y02=h(x0);xn=gen_eqpts(-5,5,n);yn1=g(xn);yn2=h(xn);subplot(1,2,1),holdon,plot(x0,y01,'-k'),plot(x0,lag_interp(xn,yn1,x0),'--b');subplot(1,2,2),holdon,plot(x0,y02,'-k'),plot(x0,lag_interp(xn,yn2,x0),'--b');(2)问题的探索时,原函数(黑色实线)及其插值函数(蓝色虚线)的图像如图所示:时,图像如图所示、5时,图像如图所示:、7时,图像如图所示:(3)结论我们可以发现Lagrange插值对于趋势变化较大的函数拟合效果不是很好,且次数越高,振荡越明显。3.1.2.3第三小题的求解本小题要求通过构造Chebyshev点替代等距点,检验Lagrange的效果。(1)MATLAB程序程序3.1.5:构造Chebyshev点的函数gen_chpts.mfunctionxn=gen_chpts(left,right,n)%Returnsann-dimentionallinevectorofchebyshevpointsoninterval[left,right]%%Type:xn=gen_chpts(left,right,n)%%'left'isthelowerboundaryoftheinterval.%'right'isthelowerboundaryoftheinterval.%'n'isthenumberofequidistantpoints.nmustbeanintegergreaterorequalto2.%ThismfileiscodedbySteveZhao.Forreferenceonly.%%Theauthorwillnotberesponsibleforanypotentialconsequencesthatmay%causedbythisfile.%%(c)20163gStudio.Allrightsreserved%Safeguardsforinputargumentsifleft>=righterror('Theupperboundmustbegreaterthanthelowerbound.')endifmod(n,1)~=0error('nmustbeaninteger.')endifn<2error('nmustbeatleast2.')end%Startgeneratingxn=zeros(1,n);n=n-1;xn(1)=left;fori=1:(n+1)xn(i)=(right+left)/2+(right-left)/2*cos((2*i-1)*pi/2/(n+1));end程序3.1.6:第三小题主程序ex313.m%Experiment3.1(3)%ComparisonofLagrangeInterpolationandoriginalfunctionusingChebyshevpoints.%%ThismfileiscodedbySteveZhao.Forreferenceonly.%%Theauthorwillnotberesponsibleforanypotentialconsequencesthatmay%causedbythisfile.%%(c)20163gStudio.Allrightsreservedn=input('PleaseinputthenumberofChebyshevpoints.n=');holdonsymsx;f=@(x)1./(1+25*x.^2);x0=linspace(-1,1);y0=f(x0);plot(x0,y0,'-k');xn=gen_chpts(-1,1,n);yn=f(xn);plot(x0,lag_interp(xn,yn,x0),'--b');(2)问题的探究时,原函数(黑色实线)及其插值函数(蓝色虚线)的图像如图所示:时,图像如图所示:、5时,图像如图所示:、7时,图像如图所示:(3)实验结论可以发现,在中,等距点与Chebyshev点的拟合程度差距不明显。实验3.2样条插值的收敛性3.2.1问题的提出在探究完多项式插值后,本实验拟检验样条插值的收敛性。3.2.2实验内容3.2.2.1第一小题的求解随节点个数增加,比较被逼近函数和样条插值函数误差的变化情况。分析所得结果并于Lagrange多项式插值比较。(1)MATLAB程序程序3.2.1:第一小题主程序ex321.m%Experiment3.2(1)%ComparisonamongCubicSplineInterpolation,LagrangeInterpolationand%originalfunction.%%ThismfileiscodedbySteveZhao.Forreferenceonly.%%Theauthorwillnotberesponsibleforanypotentialconsequencesthatmay%causedbythisfile.%%(c)20163gStudio.Allrightsreservedn=input('Pleaseinputthenumberofequidistantpoints.n=');holdonsymsx;f=@(x)1./(1+25*x.^2);x0=linspace(-1,1);y0=f(x0);plot(x0,y0,'-k');xn=gen_eqpts(-1,1,n);yn=f(xn);plot(x0,spline(xn,yn,x0),'-b');plot(x0,lag_interp(xn,yn,x0),'--g');(2)问题的探究当、3、4时,原函数(黑色实线)、样条插值(蓝色实线)与多项式插值(绿色虚线)图像如图所示:时,两拟合图像开始分离,图像如图所示、7时,图像如图所示(3)结论可以发现,样条插值的振荡较多项式插值更小。3.2.2.2第二小题的求解画出给定数据的三次样条插值曲线。(1)MATLAB程序程序3.2.2:第二小题主程序ex322.m%Experiment3.2(2)%Usesplinedatainterpolationwithslopesatbothendings%%ThismfileiscodedbySteveZhao.Forreferenceonly.%%Theauthorwillnotberesponsibleforanypotentialconsequencesthatmay%causedbythisfile.%%(c)20163gStudio.Allrightsreservedx0=0:10;y0=[0.00.791.532.191.713.033.272.893.063.193.29];pp=csape(x0,y0,[0.80.2]);x=linspace(0,10);plot(x,ppval(pp,x),'-b')(2)结果通过MATLAB的csape命令,我们可以轻松画出本题所求的图形:3.3思考题一3.3.1问题的提出在丘陵地带测量高程,和方向每隔100米测一个点,得高程数据。用二维插值函数进行插值,并由此找出最高点和该点的高程。3.3.2问题的求解由于线性插值效果不佳,此处使用二元三次样条插值。(1)MATLAB程序程序3.3:思考题一主程序ex33.m%Exp

温馨提示

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

评论

0/150

提交评论