- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)