matlab结课作业.docx

上传人:b****1 文档编号:13823832 上传时间:2023-06-17 格式:DOCX 页数:12 大小:204.55KB
下载 相关 举报
matlab结课作业.docx_第1页
第1页 / 共12页
matlab结课作业.docx_第2页
第2页 / 共12页
matlab结课作业.docx_第3页
第3页 / 共12页
matlab结课作业.docx_第4页
第4页 / 共12页
matlab结课作业.docx_第5页
第5页 / 共12页
matlab结课作业.docx_第6页
第6页 / 共12页
matlab结课作业.docx_第7页
第7页 / 共12页
matlab结课作业.docx_第8页
第8页 / 共12页
matlab结课作业.docx_第9页
第9页 / 共12页
matlab结课作业.docx_第10页
第10页 / 共12页
matlab结课作业.docx_第11页
第11页 / 共12页
matlab结课作业.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

matlab结课作业.docx

《matlab结课作业.docx》由会员分享,可在线阅读,更多相关《matlab结课作业.docx(12页珍藏版)》请在冰点文库上搜索。

matlab结课作业.docx

matlab结课作业

北京林业大学全校公共选修课课程作业

 

MATLAB程序应用

 

2013年12月21

一、已知符号函数

,求

(1)程序代码

%%从第1、2、3题中选做1题

%%2、已知符号函数f(x,y)=(x^2+y^2)sin(1/sqrt(x^2+y^2)),求对x求导,对y求导等

clear;

clc;

symsxy;

f=(x^2+y^2)*sin(1/sqrt(x^2+y^2));

Dx=diff(f,x)%对x求导

Dy=diff(f,y)%对y求导

Dxx=diff(f,x,2)%对x2求导

Dyy=diff(f,y,2)%对y2求导

Dxy=diff(Dx,y)%先对x求导在对y求导

(2)运行结果

 

二、学研大厦一楼到二楼台阶分为2个部分各有13级台阶,男同学可以每步1,2,3级台阶,女同学可以每步1,2级台阶。

请分别编程计算男女同学各有多少种方法从一楼到二楼;假如第一部分的第8级台阶坏了不能通行,再进行以上计算;

(1)程序代码

%%从第4、5、6题中选做1题

%%5、走台阶方法

clear;

clc;

%

(1)男同学走法

m=13;

a=[];

a

(1)=1;

a

(2)=2;

a(3)=4;

a(4)=7;

forn=4:

m;

a(n)=a(n-1)+a(n-2)+a(n-3);

end

boy1=(a(n))^2

%

(1)女同学走法

m=13;

a=[];

a

(1)=1;

a

(2)=2;

a(3)=4;

forn=4:

m;

a(n)=a(n-1)+a(n-2);

end

girl1=(a(n))^2

%第八阶坏了

%(3)男同学走法

m=7;

k=5;

a=[];

b=[];

a

(1)=1;

b

(1)=1;

a

(2)=2;

b

(2)=2;

a(3)=4;

b(3)=4;

a(4)=7;

b(4)=7;

%前7阶走法

forn=4:

m;

a(n)=a(n-1)+a(n-2)+a(n-3);

end

%后5阶走法

forn=4:

k;

b(n)=b(n-1)+b(n-2)+b(n-3);

end

boy2=(a(n)*b(n))*sqrt(boy1)

%(4)女同学走法

m=7;

k=5;

a=[];

b=[];

a

(1)=1;

b

(1)=1;

a

(2)=2;

b

(2)=2;

a(3)=4;

b(3)=4;

%前7阶走法

forn=4:

m;

a(n)=a(n-1)+a(n-2);

end

%后5阶走法

forn=4:

k;

b(n)=b(n-1)+b(n-2);

end

girl2=(a(n)*b(n))*sqrt(girl1)

(2)运行结果

 

三、绘制函数z=((x1./y1).^2+(y1./x1).^2)./(x1./y1+y1./x1)

的三维网格图形

(1)程序代码

%%第三题自选题

clearall;

clc;

x=linspace(-2,2,100);

y=linspace(-2,2,100);

z=linspace(-2,2,100);

[x1,y1]=meshgrid(x,y);

z=((x1./y1).^2+(y1./x1).^2)./(x1./y1+y1./x1);

mesh(x1,y1,z);

title('z=((x1./y1).^2+(y1./x1).^2)./(x1./y1+y1./x1)')

xlabel('x')

ylabel('y')

zlabel('z')

(2)运行结果

点数100

 

点数500

 

四、有3根柱子:

A,B,C,现有n个大小不一的碟子依半径的大小,从下而上套在柱子A上,最大的碟子放在柱子A的最下面。

现要将所有的碟子从柱子A移动到C柱子上,每次只允许从一根柱子转移到另一根柱子上,且在转移过程中不允许出现大碟子放在小碟子上。

B为可以利用的柱子,每次只允许移动一个碟子,请问要转移多少次才能将柱子A上的碟子全部转移柱子C上?

【问题描述】

假设只有一个碟子,则直接从A移动到C

但碟子大于1时,则需先将n-1个碟子从A经过C移动到B,再将第n个碟子从A移动到C,然后将n-1个碟子从B经过A移动到C……重复直到所有碟子移动完

因此本题可以转化利用matlab求解函数递归调用的问题

【建模方法】

主程序调用

inputn%输入n

定义i,统计移动次数

声明move(n,'A','B','C')移动碟子函数

functionmove(n,'A','B','C')函数实现

判断碟子个数,选择执行

碟子个数大于等于2,递归调用move函数,并输出移动步骤,累计移动次数

转移完成,输出移动次数

【程序代码】

functionhannoi(n)

clear;

clc;

i=0;

n=input('inputn:

');

move(n,'A','B','C');

%将n个碟子从a经过b移动到c

functionmove(n,a,b,c)

i=i+1;

%如果是一个碟子,直接从a移动到c

ifn==1

fprintf('将1号碟子从%s--->%s\n',a,c);

else

%否则,先将n-1个碟子从A经过C移动到B

move(n-1,a,c,b);

%将第n个碟子从A移动到C

fprintf('将%d号碟子从%s--->%s\n',n,a,c);

%将n-1个碟子从B经过A移动到C

move(n-1,b,a,c);

end

end

fprintf('\n一共转移%d次\n',i);

end

【运行结果】

【结果分析】

 

(1)从结果分析可以基本得出结论,碟子移动的次数i和碟子个数n之间有一下关系i=2n-1

五、意见和建议

心得体会:

matlab这门课程非常实用,有时候用来给函数作图解决问题也觉得很有趣。

让对矩阵的运算、多项式预算、微积分等平时看起来计算比较繁琐的工作变得非常简单;图形化使运算结果很直观;所使用的语言同我们计算机专业所学的C语言等高级语言相比,没太大的差异,操作起来很方便。

在学习matlab的过程中,该多注意实际操作并且复习下高等数学、线性代数等课程,这样学起来会更容易进步更快;还有就是要自己多查多看才能掌握的更多。

总之学习matlab是很实用也很有趣的,今后应该继续深入的学习。

建议:

本门课程因为课程本身内容难度不太小略显枯燥,但老师授课条理清晰,循序渐进,幽默风趣而不失严谨,使课程变得轻松许多。

如果老师能在讲课中不时地进行实际操作演练,我觉得可以使学生更容易接受理解

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2