哈工大-计算方法实验-1拉格朗日_第1页
哈工大-计算方法实验-1拉格朗日_第2页
哈工大-计算方法实验-1拉格朗日_第3页
哈工大-计算方法实验-1拉格朗日_第4页
哈工大-计算方法实验-1拉格朗日_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

./实验题目1 Lagrange插值摘要给定平面上n+1个不同的数据点:则满足条件的n次拉格朗日插值多项式是存在唯一的。若,且充分光滑,则当时,有误差估计式前言利用拉格朗日插值多项式求的近似值程序设计流程拉格朗日插值框图拉格朗日插值框图开始结束输入<xi,yi>,ni=0,1,2,…,nL=0i=0xl=1xl=*xlj=0,1,…,i-1,i+1,…,nL=L+xl*i=n?输出y否是i=i+1问题1〔1N=5时,程序运行如下:TestLag<inline<'1./<1+x.^2>'>,-5,5,5,0.75:4.75>;将区间[-5,5]分为了5段计算插值的点xi=0.75001.75002.75003.75004.7500计算出的插值yi=0.90540.52580.0096-0.3568-0.1595插值点处函数值yFact=0.64000.24620.11680.06640.0424计算误差err=-0.2654-0.27960.10720.42320.2020N=10时,程序运行如下:TestLag<inline<'1./<1+x.^2>'>,-5,5,10,0.75:4.75>;将区间[-5,5]分为了10段计算插值的点xi=0.75001.75002.75003.75004.7500计算出的插值yi=0.69070.23300.11220.1084-0.2360插值点处函数值yFact=0.64000.24620.11680.06640.0424计算误差err=-0.05070.01320.0045-0.04200.2785N=20时,程序运行如下:TestLag<inline<'1./<1+x.^2>'>,-5,5,20,0.75:4.75>;将区间[-5,5]分为了20段计算插值的点xi=0.75001.75002.75003.75004.7500计算出的插值yi=0.64130.24910.12820.19036.4150插值点处函数值yFact=0.64000.24620.11680.06640.0424计算误差err=-0.0013-0.0029-0.0114-0.1239-6.3726问题1〔2N=5时,程序运行如下:TestLag<inline<'exp<x>'>,-1,1,5,[-0.95-0.050.050.95]>;将区间[-1,1]分为了5段计算插值的点xi=-0.9500-0.05000.05000.9500计算出的插值yi=0.38630.95131.05122.5863插值点处函数值yFact=0.38670.95121.05132.5857计算误差err=1.0e-003*0.4471-0.10510.1069-0.6129N=10时,程序运行如下:TestLag<inline<'exp<x>'>,-1,1,10,[-0.95-0.050.050.95]>;将区间[-1,1]分为了10段计算插值的点xi=-0.9500-0.05000.05000.9500计算出的插值yi=0.38670.95121.05132.5857插值点处函数值yFact=0.38670.95121.05132.5857计算误差err=1.0e-008*-0.3126-0.0055-0.0055-0.3714N=20时,程序运行如下:TestLag<inline<'exp<x>'>,-1,1,20,[-0.95-0.050.050.95]>;将区间[-1,1]分为了20段计算插值的点xi=-0.9500-0.05000.05000.9500计算出的插值yi=0.38670.95121.05132.5857插值点处函数值yFact=0.38670.95121.05132.5857计算误差err=1.0e-012*0.73390-0.0002-0.5671问题2〔1N=5时,程序运行如下:TestLag<inline<'1./<1+x.^2>'>,-1,1,5,[-0.95-0.050.050.95]>;将区间[-1,1]分为了5段计算插值的点xi=-0.9500-0.05000.05000.9500计算出的插值yi=0.51360.99780.99780.5136插值点处函数值yFact=0.52560.99750.99750.5256计算误差err=0.0121-0.0002-0.00020.0121N=10时,程序运行如下:TestLag<inline<'1./<1+x.^2>'>,-1,1,10,[-0.95-0.050.050.95]>;将区间[-1,1]分为了10段计算插值的点xi=-0.9500-0.05000.05000.9500计算出的插值yi=0.52430.99750.99750.5243插值点处函数值yFact=0.52560.99750.99750.5256计算误差err=0.00140.00000.00000.0014N=20时,程序运行如下:TestLag<inline<'1./<1+x.^2>'>,-1,1,20,[-0.95-0.050.050.95]>;将区间[-1,1]分为了20段计算插值的点xi=-0.9500-0.05000.05000.9500计算出的插值yi=0.52560.99750.99750.5256插值点处函数值yFact=0.52560.99750.99750.5256计算误差err=1.0e-005*-0.70230.00000.0000-0.7023实验2〔2N=5时,程序运行如下:TestLag<inline<'exp<x>'>,-5,5,5,[-4.75-0.250.254.75]>;将区间[-5,5]分为了5段计算插值的点xi=-4.7500-0.25000.25004.7500计算出的插值yi=-1.93211.42750.5882123.7146插值点处函数值yFact=0.00870.77881.2840115.5843计算误差err=1.9408-0.64870.6958-8.1303N=10时,程序运行如下:TestLag<inline<'exp<x>'>,-5,5,10,[-4.75-0.250.254.75]>;将区间[-5,5]分为了10段计算插值的点xi=-4.7500-0.25000.25004.7500计算出的插值yi=0.04250.77961.2848115.6630插值点处函数值yFact=0.00870.77881.2840115.5843计算误差err=-0.0339-0.0008-0.0008-0.0788N=20时,程序运行如下:TestLag<inline<'exp<x>'>,-5,5,20,[-4.75-0.250.254.75]>;将区间[-5,5]分为了20段计算插值的点xi=-4.7500-0.25000.25004.7500计算出的插值yi=0.00870.77881.2840115.5843插值点处函数值yFact=0.00870.77881.2840115.5843计算误差err=1.0e-007*-0.09140.00000.0000-0.1434问题3〔1N=5时,程序运行如下:TestLag2<inline<'1./<1+x.^2>'>,-1,1,5,[-0.95-0.050.050.95]>;将区间[-1,1]分为了5段计算插值的点xi=-0.9500-0.05000.05000.9500计算出的插值yi=0.52540.99780.99780.5254插值点处函数值yFact=0.52560.99750.99750.5256计算误差err=1.0e-003*0.2071-0.3011-0.30110.2071N=10时,程序运行如下:TestLag2<inline<'1./<1+x.^2>'>,-1,1,10,[-0.95-0.050.050.95]>;将区间[-1,1]分为了10段计算插值的点xi=-0.9500-0.05000.05000.9500计算出的插值yi=0.52550.99720.99720.5255插值点处函数值yFact=0.52560.99750.99750.5256计算误差err=1.0e-003*0.15620.26030.26030.1562N=20时,程序运行如下:TestLag2<inline<'1./<1+x.^2>'>,-1,1,20,[-0.95-0.050.050.95]>;将区间[-1,1]分为了20段计算插值的点xi=-0.9500-0.05000.05000.9500计算出的插值yi=0.52560.99750.99750.5256插值点处函数值yFact=0.52560.99750.99750.5256计算误差err=1.0e-007*0.23180.23810.23810.2318问题3〔2N=5时,程序运行如下:TestLag2<inline<'exp<x>'>,-1,1,5,[-0.95-0.050.050.95]>;将区间[-1,1]分为了5段计算插值的点xi=-0.9500-0.05000.05000.9500计算出的插值yi=0.38670.95141.05112.5857插值点处函数值yFact=0.38670.95121.05132.5857计算误差err=1.0e-003*0.0079-0.13170.1339-0.0108N=10时,程序运行如下:TestLag2<inline<'exp<x>'>,-1,1,10,[-0.95-0.050.050.95]>;将区间[-1,1]分为了10段计算插值的点xi=-0.9500-0.05000.05000.9500计算出的插值yi=0.38670.95121.05132.5857插值点处函数值yFact=0.38670.95121.05132.5857计算误差err=1.0e-009*-0.5045-0.4791-0.4835-0.5994N=20时,程序运行如下:TestLag2<inline<'exp<x>'>,-1,1,20,[-0.95-0.050.050.95]>;将区间[-1,1]分为了20段计算插值的点xi=-0.9500-0.05000.05000.9500计算出的插值yi=0.38670.95121.05132.5857插值点处函数值yFact=0.38670.95121.05132.5857计算误差err=1.0e-015*0.16650.3331-0.4441-0.8882问题4程序运行如下:TestLag3<[149],[550115185]>计算插值的点xi=550115185计算出的插值yi=2.2667-20.2333-171.9000-492.7333插值点处函数值yFact=2.23617.071110.723813.6015计算误差err=-0.030627.3044182.6238506.3348程序运行如下:TestLag3<[364964],[550115185]>计算插值的点xi=550115185计算出的插值yi=3.11587.071810.167010.0388插值点处函数值yFact=2.23617.071110.723813.6015计算误差err=-0.8797-0.00070.55683.5626程序运行如下:TestLag3<[100121144],[550115185]>计算插值的点xi=550115185计算出的插值yi=4.43917.285010.722813.5357插值点处函数值yFact=2.23617.071110.723813.6015计算误差err=-2.2030-0.21390.00100.0658程序运行如下:TestLag3<[169196225],[550115185]>计算插值的点xi=550115185计算出的插值yi=5.49727.800110.800513.6006插值点处函数值yFact=2.23617.071110.723813.6015计算误差err=-3.2611-0.7291-0.07670.0009实验所用函数functionyh=LagInterp<x,y,xh>%LagInterp计算拉格朗日插值%%Synopsis:yh=LagInterp<x,y,xh>%%Input:x=一维向量,将要做插值x的值%y=一维向量,将要做插值y的值%xh=数值或一维向量,计算插值的位置,支持计算一列xh的值%%Output:yh=数值或一维向量,通过计算插值的位置算出的插值ifmin<size<x>>>1|min<size<y>>>1 %判断x,y是否为一维向量error<'x,ymustbevectors!'>;elseiflength<x>~=length<y> %判断x,y是否有同样多的元素error<'xandymustagree!'>;endyh=zeros<size<xh>>;L=zeros<length<x>-1>;forj=1:length<xh>fori=1:length<x>xCal=x;xCal<i>=[];%prod<xh<j>-xCal>/prod<x<i>-xCal>为拉格朗日基函数L<i>=prod<xh<j>-xCal>/prod<x<i>-xCal>;yh<j>=yh<j>+L<i>*y<i>;%yh=sum<L<i>*y<i>>endendfunctionTestLag<fx,a,b,n,xi>%TestLag实验题目11,2%%Synopsis:TestLag<fun,a,b,n,xi>%%Input:fx=用来验证插值计算准确率的函数%a,b=节点选取上下限%n=多项式次数,固定区间[-a,b]分段数%xi=要计算插值的点x=linspace<a,b,n>;y=feval<fx,x>;yi=LagInterp<x,y,xi>;yFact=feval<fx,xi>;err=yFact-yi;fprintf<'将区间[%d,%d]分为了%d段\n',a,b,n>;fprintf<'计算插值的点xi=\n'>;disp<xi>;fprintf<'计算出的插值yi=\n'>;disp<yi>;fprintf<'插值点处函数值yFact=\n'>;disp<yFact>;fprintf<'计算误差err=\n'>;disp<err>;functionTestLag2<fx,a,b,n,xi>%TestLag2实验题目13%%Synopsis:TestLag2<fun,a,b,n,xi>%%Input:fx=用来验证插值计算准确率的函数%a,b=节点选取上下限%n=多项式次数,固定区间[-a,b]分段数%xi=要计算插值的点x=zeros<1,n>;fork=1:nx<k>=cos<<2*k-1>*pi/<2*n>>;%构造非等距节点endy=feval<fx,x>;yi=LagInterp<x,y,xi>;yFact=feval<fx,xi>;err=yFact-yi;fprintf<'将区间[%d,%d]分为了%d段\n',a,b,n>;fprintf<'计算插值的点xi=\n'>;disp<xi>;

温馨提示

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

评论

0/150

提交评论