- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3次样条插值函数
侯创 142136
注:曹老师,我前面的三份作业,在第三份作业里面做了两道题,这个word文件是第四次作业,做的题已经是第五道题了,特此注明一下。
1.程序使用matlab语言编写,代码如下
n = 10;
x = zeros(1,11);
miu = zeros(1,9);
lan = zeros(1,9);
threed = zeros(1,9);
for i = 0:10
x(i+1) = i;
end
y = [2.51 3.30 4.04 4.70 5.22 5.54...
5.78 5.40 5.57 5.70 5.80];
dy0 = 0.8;
dy10 = 0.2;
for i=1:9
miu(i) = 0.5;
lan(i) = 0.5;
threed(i) = 3*(y(i+2)+y(i)-2*y(i+1));
end
C = zeros(11);
for i = 1:11
C(i,i) = 2;
end
for i = 2:10
C(i,i-1) = miu(i-1);
C(i,i+1) = lan(i-1);
end
C(1,2) = 1;
C(n+1,n) = 1;
d10 = (y(1+1)-y(0+1))/(x(1+1)-x(0+1));
d00 = dy0;
d100 = (d10 - d00)/(x(1+1)-x(0+1));
d0 = 6*d100;
dNn = (y(n+1)-y(n-1+1))/(x(n+1)-x(n-1+1));
dNN = dy10;
dNNn = (dNN - dNn)/(x(n+1)-x(n-1+1));
dn = 6*dNNn;
d = [d0 threed dn];
M = C^-1*d;
fxixJ = zeros(1,10);
S = zeros(1,10);
for i = 1:10
fxixJ(i) = (y(i+1)-y(i))/(x(i+1)-x(i));
end
for i = 1:10
S(i) = y(i) + (fxixJ(i)-(M(i)/3+M(i+1))/6)*0.5...
+0.5*M(i)*0.25+1/6*(M(i+1)-M(i))*0.5^3;
end
S
2.结果与心得体会
输出的结果为
2.90815148706460
3.67092092871871
4.37024813139390
4.97391987903901
5.33490568578339
5.76479071116075
5.41176480290694
5.60273341054482
5.60938488824711
5.72764370313340
这次程序书写虽然是以书本上作业题为主要数据,但是程序编写注意使用了各种变量与参数,整体的通用性较高。最初因为matlab的数组下标开始数据为1的缘故,打算使用C++编写,后考虑到需要用C++解矩阵,还是专用matlab语言编写。
原创力文档


文档评论(0)