Exp1 Lagrange插值和Newton插值.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  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文档。上传文档
查看更多
Exp1 Lagrange插值和Newton插值

数值计算实验1 Lagrange插值和Newton插值 实验题:用Lagrange插值和Newton插值拟合[0, 2*pi]上的sin函数。 提示:(1)分别编写通用的Lagrange插值和Newton插值的程序; (2)在插值区间上采点; (3)调用程序进行插值计算; (4)必要时请画图。 解:1. Lagrange插值拟合: 用MATLAB实现Lagrang1编程: function [yt,L] = LagInterp1(x,y,xt) % 拉格朗日插值 % x,y:插值条件 % xt:用拉格朗日插值函数要计算的自变量,可以是多个 % yt:用拉格朗日插值函数计算出xt对应的函数值数组 % L: 拉格朗日插值多项式表达式 syms t; n=length(x); ny=length(y); if n~=ny error(插值节点x与函数值y不一致); end L = 0.0; for k = 1:n lk =1; for j = 1:n if j~=k lk = lk*(t-x(j))/(x(k)-x(j)); end end; L = L + y(k)*lk; end simplify(L); % 简化拉格朗日插值多项式表达式 L=collect(L); % 将拉格朗日插值多项式展开 yt = subs(L,t,xt); %计算插值点处的函数值 输入:x=[0:pi/10:2*pi]; y=sin(x); xt=pi; [yt,L] = LagInterp1(x,y,xt); % 画图 z=0:pi/20:2*pi; yz= subs(L,t,z); %计算插值点处的函数值 figure; plot(z,sin(z),--r,z,yz,-b) hold on plot(x,y,marker,+) hold on plot(xt,yt,marker,o) legend(sin(x),Lagrange插值多项式,(x_k,y_k),x=pi) xlabel(x) ylabel(y) 运行结果为: 1. NewtInterp插值拟合: 用MATLAB实现NewtInterp编程: function [yt,N] = NewtInterp(x,y,xt) % 已知数据点的牛顿插值 % x,y:插值条件 % xt:要计算的插值点,可以是多个 % yt:用牛顿插值函数出xt对应的函数值数组 % N: 牛顿插值多项式表达式 syms t; n=length(x); ny=length(y); if n~=ny error(插值节点x与函数值y维数不一致); end a=zeros(1,n); N = y(1); w = 1; for k=1:n-1 yy=zeros(1,n); % 记录差商 for j=k+1:n yy(j) = (y(j)-y(k))/(x(j)-x(k)); end a(k) = yy(k+1); w = w*(t-x(k)); N = N + a(k)*w; y = yy; end yt = subs(N,t,xt); simplify(N); N = collect(N); % 将插值多项式展开 N = vpa(N, 6); % 系数转化为6位精度 输入:x=[0:pi/10:2*pi]; y=sin(x); xt=pi; [yt,N] = NewtInterp(x,y,xt) % 画图 z=0:pi/20:2*pi; yz= subs(N,t,z); %计算插值点处的函数值 figure; plot(z,sin(z),--r,z,yz,-b) hold on plot(x,y,marker,+) hold on plot(xt,yt,marker,o) h=legend($\sin{x}$,Newton,$(x_k,y_k)$,$x=pi$); set(h,Interpreter,latex) xlabel(x) ylabel(y) 运行结果为:yt = -2.0661e-016 N =.670918e-19*t^20+.341935e-17*t^19-.332412e-15*t^18+.785002e-14*t^17-.51643e-13*t^16-.375057e-12*t^15-.22573e-11*t^14+.170875e-9*t^13-.3735e-10*t^12-.249431e-7*t^11-.257e-9*t^10+.275622e-5*t^9-.9806e-9*t

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档