Newton插值和三次样条插值的程序代码.docVIP

Newton插值和三次样条插值的程序代码.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Newton插值的程序代码: %求Newton插值多项式 function new=newton(m,y) n=length(m); b=1;new=[zeros(1,n-1),y(1)]; for i=2:n y(i:n)=(y(i:n)-y(i-1:n-1))./(m(i:n)-m(1:n-i+1)); %求差商 b=conv(b,[1,-m(i-1)]); a=[zeros(1,n-length(b)),b]; new=new+y(i)*a; end 三次样条插值的程序代码: %求三次样条插值多项式 function s=myspline(m,y) syms x; n=length(m); M=y; M(2:n)=(M(2:n)-M(1:n-1))./(m(2:n)-m(1:n-1)); M(3:n)=(M(3:n)-M(2:n-1))./(m(3:n)-m(1:n-2)); M=[0,M(3:n),0]; h=m(2:n)-m(1:n-1); c=h(2:n-1)./(h(2:n-1)+h(1:n-2)); a=1-c;b=2+zeros(1,n);M=6*M; c=[0,c];a=[a,0]; M=chase(a,b,c,M); %用追赶法解方程组 for i=1:n-1 %分区间计算插值多项式 s(i)=M(i)*(m(i+1)-x)^3+M(i+1)*(x-m(i))^3+(6*y(i)-M(i)*h(i)^2)*(m(i+1)-x)+(6*y(i+1)-M(i+1)*h(i)^2)*(x-m(i)); s(i)=s(i)/(6*h(i)); end 主程序为: clear;clc; n=5; %指定n的值 syms x %符号数x f=1./(1+25*x^2); %定义函数f(x) i=0:n;m=-1+2*i/n; y=subs(f,m); %计算函数值f(x) disp([When n=,num2str(n),,the values of f(x) at the points of x(i) are:]); disp(y); %求Newton插值多项式 new=newton(m,y);new=round(10000*new)/10000; nout=poly2sym(new);nout=vpa(nout,4); %整理多项式并输出 disp([When n=,num2str(n),,N(x)=]);disp(nout); %求三次样条插值多项式 s=myspline(m,y); for i=1:n %分区间计算插值多项式 a=sym2poly(s(i));b=poly2sym(a);b=vpa(b,4); %整理多项式并输出 disp([In the range of [,num2str(m(i)),,,num2str(m(i+1)),],S(x)=]); disp(b); end k=0:100;xk=-1+0.02*k; %计算xk的值 ll1=subs(f,xk);ll2=polyval(new,xk); %计算f(xk),N(xk) for i=1:length(xk) r=find(m(2:n+1)=xk(i),1,first); ll3(i)=subs(s(r),xk(i)); %计算S(xk) end en=max(abs(ll1-ll2));es=max(abs(ll1-ll3)); %计算E(Nn),E(Sn),并输出 disp([E(Nn)=,num2str(en)]);disp([E(Sn)=,num2str(es)]); plot(xk,ll1,xk,ll2,r,xk,ll3,g);axis([-1,1,-0.1,1.1]); title(Interpolation);legend(Original function,Newton Interpolation,Spline) grid; %将原函数,Newton插值函数,三次样条插值函数画成图形

文档评论(0)

137****6622 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档