第二章节插值法课堂演示实验.docVIP

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 插值法_课堂演示实验 问题: 分别以函数和为例,在区间上,取 为节点,用本章所学的Lagrange、Newton、Hermite插值法以及分段线性、分段三次Hermite插值法、Spline插值法作插值计算.具体要求如下: 1.取,通过在同一坐标系中作出被插函数与插值函数的图形的方法,来观察插值函数的图象与被插函数的位置关系,并给出观察到的的结论. 2.通过计算时的插值误差,结合前面得到的直观结论,试对各种插值方法的应用作出述评. 解答: 一、各种插值方法的算法公式及MATLAB通用程序 设已知函数表为且当时. 1.Lagrange插值法 算法公式?: , 其中 余项为 , 有关. 通用程序1(此程序用得较多)?: function yy=lagr1(x,y,xx) %用途:拉格朗日插值法求插值点xx(可以是多个)处的插值yy %格式:yy=lagr(x,y,xx), x是节点向量,y是节点对应的函数值向量, % xx是插值点(可以是多个),yy返回插值结果 m=length(x);n=length(y); if m~=n, error(向量x与y的长度必须一致);end s=0; for i=1:n t=ones(1,length(xx)); for j=1:n if j~=i t=t.*(xx-x(j))/(x(i)-x(j)); end end s=s+t*y(i); end yy=s; 通用程序2?: function [L ,C, l ,L1]= lagr2(X,Y) %输入的量:n+1个节点(xi,yi)的横坐标向量X,纵坐标向量Y; %输出的量:n次拉格朗日插值多项式L及其系数向量C,基函数l及其系数矩阵L1 m=length(X); L=ones(m,m); for k=1: m V=1; for i=1:m if k~=i V=conv(V,poly(X(i)))/(X(k)-X(i)); end end L1(k,:)=V; l(k,:)=poly2sym (V); end C=Y*L1; L=Y*l; l=vpa(l,4); L=vpa(L,4); 通用程序3?: function [y,R]=lagr3(X,Y,x,M) %输入的量:X 是n+1个节点的横坐标向量,Y是纵坐标向量, x是以向量形式输入的m个插值点,M是被插函数在[a,b]区间上的n+1阶导数的最大值. %输出的量:y为m个插值构成的向量,R是误差限. n=length(X); m=length(x); for i=1:m z=x(i);s=0.0; for k=1:n p=1.0; q1=1.0; c1=1.0; for j=1:n if j~=k p=p*(z-X(j))/(X(k)-X(j)); end q1=abs(q1*(z-X(j)));c1=c1*j; end s=p*Y(k)+s; end y(i)=s; end R=M*q1/c1; 2.Newton插值法 算法公式?: 余项为 其中 有关.??: function s=newton1(x,y,x0,nn) %Newton插值,x与y为已知的插值点及其函数值 %x0为需要求的插值点向是,s返回插对应插值 %nn为newton插值多项式的次数,即nn次newton插值多项式 nx=length(x); ny=length(y); if nx~=ny warning(向量x与y的长度应该相同) return; end m=length(x0); %按照公式,对需要求的插值点x0的每个元素进行计算 for i=1:m t=0.0; %j=1; yy=y; kk=1; %求各级均差 while(kk=nn) kk=kk+1; for k=kk:nx yy(k)=(yy(k)-yy(kk-1))/(x(k)-x(kk-1)); end end %求插值结果 t=yy(1); for k=2:nx u=1.0; jj=1; while(jjk) u=u*(x0(i)-x(jj)); jj=jj+1; end

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档