数值分析,飞鸟外形,四川大学,研究生作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
现代科学工程计算基础作业
制造科学与工程学院XX 学号:XXXXXXX
24. 构造三次样条曲线s(x)去模拟一只飞鸟外形的上部,测得的数据如下(P89
解:
程序清单:
xk=[0.9,1.3,1.9,2.1,2.6,3.0,3.9,4.4,4.7,5.0,6.0,7.0,8.0,9.2,10.5,11.3,11.6,12.0,12.6,13.0,13.3];
y=[1.3,1.5,1.85,2.1,2.6,2.7,2.4,2.15,2.05,2.1,2.25,2.3,2.25,1.95,1.4,0.9,0.7,0.6,0.5,0.4,0.25];
i=(1:20);
h(i)=xk(i+1)-xk(i);
f1(i)=(y(i+1)-y(i))./h(i);
i=(2:20);
lambda(i-1)=h(i)./(h(i-1)+h(i));
mu(i)=h(i-1)./(h(i-1)+h(i));
i=(2:20);
e(i)=3*(lambda(i-1).*f1(i-1)+mu(i).*f1(i));
e(1)=3*f1(1);
e(21)=3*f1(20);
lambda(20)=1;
mu(1)=1;
A=2*eye(21)+diag(lambda,-1)+diag(mu,1);
e=e';
m=inv(A)*e;
m=m';
fprintf('各个节点处的一阶导数m为\n');
disp(m);
syms t;
for k=1:(length(xk)-1)
x=xk(k):(xk(k+1)-xk(k))/50:xk(k+1);
f=s(xk(k),xk(k+1),y(k),y(k+1),m(k),m(k+1));
plot(x,f,'k');
xlabel('x轴');ylabel('y轴');title('飞鸟外形上部三次插值曲线');
hold on
end
plot(xk,y,xk,y,':ro','MarkerSize',8),grid on;
text(xk(2),y(2),'\fontsize{12}\leftarrow\fontname{宋体}插值点');
%s计算函数值的源代码:
function y=s(xk,xk1,yk,yk1,m,m1)
h=xk1-xk;
x=xk:(xk1-xk)/50:xk1;
for i=1:51
y(i)=((x(i)-xk1).^2)*(h+2*(x(i)-xk))*yk/(h^3)+((x(i)-xk).^2)*(h+2*(xk1-x(i)))*yk1/(h^3)+((x(i)-x k1).^2)*(x(i)-xk)*m/(h^2)+((x(i)-xk).^2)*(x(i)-xk1)*m1/(h^2);
end
程序运行结果:
各个节点处的一阶导数m为
Columns 1 through 9
0.5396 0.4208 1.0868 1.2949 0.5934 -0.0222 -0.5034 -0.4771 -0.0713
Columns 10 through 18
0.2623 0.0808 0.0146 -0.1390 -0.3358 -0.5318 -0.7312 -0.4929 -0.1413
Columns 19 through 21
-0.1789 -0.3928 -0.5536
图1 程序运行结果图
图2 利用Matlab的样条插值函数spline得到的结果图
图3 对比图