《MATLAB程序设计》实验报告
2640
6、数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如:
2?1
3?10?5?16?8?4?2?1 6?3?10?5?16?8?4?2?1
建立命令M文件,完成上述功能,要求显示数字处理过程。 源程序及实验结果: 15-10-26
function f=tt(x) temp=x; f=x; fla=true; if temp==1 fla=false; end
while fla
if rem(temp,2)==0 temp=temp/2; else
temp=temp*3+1; end f=[f,temp]; if temp==1 fla=false; end end
>> tt(2) ans =
2 1
共64 页,第 36页
《MATLAB程序设计》实验报告
>> tt(3) ans =
3 10 5 16 8 4 2 1 >> tt(6) ans =
6 3 10 5 16 8 4 2 1
7、设计一个学生身高的管理系统,输出身高的基本分为5等:很高、较高、中等、较矮、矮,其中190cm以上为“很高”,[180cm,190cm)区间为“较高”,[170cm,180cm)为“中等”,[160cm,170cm)为“较矮”,160cm以下为“矮”,要求分别用if语句和switch语句实现
源程序及实验结果: 15-11-2 height.m
function f=height(x) if x>190
disp('if语句实现 很高') elseif x>=180
disp('if语句实现 较高') elseif x>170
disp('if语句实现 中等') elseif x>160
disp('if语句实现 较矮') else
disp('if语句实现 矮') end switch x case x<160
disp('switch语句实现 矮'); case num2cell(160:170)
disp('switch语句实现 较矮'); case num2cell(170:179)
disp('switch语句实现 中等');
共64 页,第 37页
《MATLAB程序设计》实验报告
case num2cell(180:190)
disp('switch语句实现 较高'); otherwise disp('switch语句实现 很高'); end
>> height(187)
if语句实现 较高 switch语句实现 较高
8、Fibonacci数组的元素满足Fibonacci规则:
ak+2=ak+ak+1,(k=1,2,3,?);且a1= a2=1。
请设计一段程序,求出该数组中第一个大于10000的元素 源程序及实验结果:
15-10-26
x=[1,1];%前两个元素的值为1,1 n=2;%n表示当前数组中元素的个数 y=1;%y为数组中最大的一个数 while y<10000 n=n+1;
y=x(n-1)+x(n-2); x=[x,y]; end
disp(['i=',num2str(n)]) disp(['a(i)=',num2str(y)])
显示的结果为: >> test8 i=21 a(i)=10946
9、编写一个函数文件and.m,用于求两个输入矩阵的乘积和点乘,然后在命令行窗口中调用该函数,要求:
源程序及实验结果: and.m程序:
15-10-30
X=input('inputX');
共64 页,第 38页
《MATLAB程序设计》实验报告
Y=input('inputY');
mx=size(X,1);%得到X矩阵的行数,存入mx nx=size(X,2);%得到X矩阵的列数,存入nx [my,ny]=size(Y);%Y矩阵的行数在my,列数在ny if mx==nx && my==ny%如果X、Y都是方阵 if(nx==my) %如果方阵X、Y大小一样 disp('x*y='); f1=X*Y %矩阵相乘 disp('x.*y='); f2=X.*Y %矩阵点乘 end
elseif nx==my %X、Y不都是方阵 disp('x*y=');
f=X*Y %只做矩阵相乘的运算 else
disp('cannot muitiple(X,Y)'); end
(1) 当两矩阵是尺寸相同的方阵时,返回它们的乘积和点乘。 >> and inputX[1,2;3,4] inputY[2,3;4,5] x*y= f1 =
10 13 22 29 x.*y= f2 =
2 6 12 20
共64 页,第 39页
《MATLAB程序设计》实验报告
(2) 当两矩阵不是尺寸相同的方阵时,则根据它们的尺寸,分别进行乘积或点乘 >> and inputX[1,2;3,4] inputY[2;3] x*y= f = 8 18
(3) 当两矩阵的尺寸不能满足乘积或点乘的要求时,则提示“这两个矩阵不能乘” >> and inputX[1,2;3,4] inputY[3;4;5] cannot muitiple(X,Y)
10、编写一个阶乘函数factorial.m,然后在如下程序中调用该函数, “分别使用for和while语句找出最小的n值,使得n!>10100,并求出n!” 源程序及实验结果:
%for语句找出最小的n,满足n!>10100 15-11-2 m2=1; j=1;
while m2<10100 j=j+1; m2=m2*j; end
disp(['n=',num2str(j)]);
disp([num2str(j),'!=',num2str(m2)]); disp(' ');
%for语句找出最小的n,满足n!>10100
共64 页,第 40页