- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
插值数值分析作业1
根据下面数表
xi 0 1 2 3 yi 0 0.5 2 1.5 求自然样条
求自然样条,
在matlab中输入如下程序:
X0=0;
Y0=0;
X=[1,2,3];
Y=[0.5,2,1.5];
n=length(X);
u=ones(n-1,1);
b=2*ones(n-1,1);
lanbuda=ones(n-1,1);
d=zeros(n-1,1);
h0=X(1)-X0;
h=zeros(n-1,1);
for i= 1:n-1
h(i)=X(i+1)-X(i);
end
u(1)=h0/(h0+h(1));
lanbuda(1)=1-u(1);
for i=2:n-1
u(i)=h(i-1)/(h(i-1)+h(i));
end
for i=2:n-1
lanbuda(i)=1-u(i);
end
d(1)=((Y(2)-Y0)/(X(2)-X0)-(Y(1)-Y0)/h0)/h(1);
d(n)=(Y(n)-Y(n-1))/h(n-1);
for i=2:n-1
d(i)=(((Y(i+1)-Y(i-1))/(X(i+1)-X(i-1)))-((Y(i)-Y(i-1))/h(i-1)))/h(i);
end
for i=1:n-1
d1(i)=6*d(i);
end
m=tridiag(u,b,lanbuda,d1)
M0=0;
Mn=0;
m;
M=[M0;m;Mn];
s01=(M(2)-M(1))/(6*h0);
s02=M(1)/2;
s03=(Y(1)-Y0)/(X(1)-X0)-((2*M(1)+M(2))/6)*h0;
s04=Y0;
for i=1:n-1
s(i,1)=(M(i+2)-M(i+1))/(6*h(i));
s(i,2)=M(i+1)/2;
s(i,3)=(Y(i+1)-Y(i))/(h(i))-((2*M(i+1)+M(i+2))/6)*(h(i));
s(i,4)=Y(i);
End
s=[s01,s02,s03,s04;s(1:n-1,1:4)]
XX=[X0,X];
YY=[Y0,Y];
p=mkpp(XX,s)
%结果如下:
m =
2.4000 -3.6000
s =
0.4000 0 0.1000 0
-1.0000 1.2000 1.3000 0.5000
0.6000 -1.8000 0.7000 2.0000
p =
form: pp
breaks: [0 1 2 3]
coefs: [3x4 double]
pieces: 3
order: 4
dim: 1
%对x赋值
x=linspace(0,3,100);
y=ppval(p,x)
plot(x,y)
%样条曲线如下图所示:
由S(0)=0.2,S(3)=-1,求固定样条,
在matlab中输入如下程序:
y1a=0.2;
y1b=-1;
X0=0;
Y0=0;
X=[1,2,3];
Y=[0.5,2,1.5];
n=length(X);
u=ones(n-1,1);
b=2*ones(n+1,1);
lanbuda=ones(n-1,1);
d=zeros(n+1,1);
h0=X(1)-X0;
h=zeros(n-1,1);
for i= 1:n-1
h(i)=X(i+1)-X(i);
end
u(1)=h0/(h0+h(1));
lanbuda(1)=1-u(1);
for i=2:n-1
u(i)=h(i-1)/(h(i-1)+h(i));
end
newu=[u(1:n-1);1];
for i=2:n-1
lanbuda(i)=1-u(i);
end
newlanbuda=[1;lanbuda(1:n-1)];
d0=(Y(1)-Y0)/h0;
d(1)=((Y(2)-Y0)/(X(2)-X0)-(Y(1)-Y0)/h0)/h(1);
d(n)=(Y(n)-Y(n-1))/h(n-1);
for i=2:n-1
d(i)=(((Y(i+1)-Y(i-1))/(X(i+1)-X(i-1)))-((Y(i)-Y(i-1))/h(i-1)))/h(i);
end
for i=1:n-1
d1(i)=6*d(i);
end
d1;
d20=(6*(d0-y1a))/h0;
d2n=(6*(y1b-d(n)))/h(n-1);
newd=[d20;d1;d2n];
m=tridiag(newu,b,newlanbu
文档评论(0)