matlab上机实验指导书(3)
《MATLAB软件与程序设计》学生上机实验任务书
姓名:许亚文
学号:12540122
班级:信息与计算科学(1)班
指导教师:郭秀婷
兰州理工大学理学院
实验二 MATLAB 程序设计
一、实验目的
1.掌握MATLAB M 文件的基本操作;
2.掌握MATLAB 程序控制结构(for 语句、if 语句、 switch 语句, while 语句);
3.掌握MATLAB 函数文件调用方法。
4.熟悉MATLAB 函数调试的基本方法。 二、实验内容
1. 输入一个百分制成绩,要求输出等级A 、B 、C 、D 、E 。其中90~100分为A ,80~89分为B,70分~79分为C,60分~69分为D,60分以下为E 。 要求:
(1)分别用if 语句和switch 语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
2.输入20个数,求其中最大数和最小数。要求分别用循环结构和调用matlab 的max 函数、min 函数来实现。
3. 2
3.0ln )3.0sin(23.03.0a
a e e y a a +++-=-,当a 取-3.0、-2.9、-2.8、-2.8、···、2.8、2.9、3.0时,求各点的函数值。要求分别用顺序结构和循环结构实现。
4.已知 )
20()30()
40(f f f y +=
(1)当f(n)=n+10ln(n 2+5)时,y 的值是多少。 (2)当f(n)=1*2+2*3+3*4+···+n*(n+1)时,y 的值是多少。
(把f(n)写成函数文件的形式,求y 的值分别用调用函数文件的方法实现)
三、实验步骤 1、编写程序。 2、调试程序。
3、写出程序运行结果。
实验报告
1. 输入一个百分制成绩,要求输出等级A、B、C、D、E。其中90~100分为A,80~89分为B,70分~79分为C,60分~69分为D,60分以下为E。
要求:
(1)分别用if 语句和switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。(1)程序:
function y=chengji(m)
if m>=90&m<=100
disp('A');
elseif m>=80&m<=89
disp('B');
elseif m>=70&m<=79
disp('C');
elseif m>=60&m<=69
disp('D');
elseif m<60&m>0
disp('E');
else
disp('error');
end
end
结果:
>> chengji(-12)
error
>> chengji(88)
B
>> chengji(111)
error
(2)程序:
function y=chengji2(m)
if m>=0&m<=100
switch fix(m/10)
case{9,10}
disp('A');
case{8}
disp('B');
case{7}
disp('C');
case{6}
disp('D');
otherwise
disp('E');
end
disp('error');
end
结果:
>> chengji2(32)
E
>> chengji2(101)
error
>> chengji2(67)
D
>> chengji2(-12)
error
2.输入20个数,求其中最大数和最小数。要求分别用循环结构和调用matlab
的max函数、min函数来实现。
(1)程序:
function [b,c]=qiuzuizhi(a)
b=max(a);
c=min(a);
b=0;
c=0;
for i=1:20
if a(i)>b
b=a(i);
end
if a(i) c=a(i); end end b c 结果:>> a=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] a = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 >> qiuzuizhi(a) b = 20 c = (2)程序: function [b,c]=qiuzuizhi(a) b=a(1); c=a(1); for i=2:20 if a(i)>b end if a(i) 结果: >> a=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] a = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 >> qiuzuizhi(a) b = 20 c = 0 3. 2 3.0ln )3.0sin(23.03.0a a e e y a a +++-=-,当a 取-3.0、-2.9、-2.8、-2.8、···、2.8、2.9、3.0时,求各点的函数值。要求分别用顺序结构和循环结构实现。 (1)程序:>> a=-3.0:0.1:3.0; >> y=((exp(0.3.*a)-exp(-0.3.*a))/2).*sin(a+0.3)+log((0.3+a)/2) 结果: y = Columns 1 through 9 0.7388 + 3.1416i 0.7696 + 3.1416i 0.7871 + 3.1416i 0.7913 + 3.1416i 0.7822 + 3.1416i 0.7602 + 3.1416i 0.7254 + 3.1416i 0.6784 + 3.1416i 0.6196 + 3.1416i Columns 10 through 18 0.5496 + 3.1416i 0.4688 + 3.1416i 0.3780 + 3.1416i 0.2775 + 3.1416i 0.1680 + 3.1416i 0.0497 + 3.1416i -0.0771 + 3.1416i -0.2124 + 3.1416i -0.3566 + 3.1416i Columns 19 through 27 -0.5104 + 3.1416i -0.6752 + 3.1416i -0.8536 + 3.1416i -1.0497 + 3.1416i -1.2701 + 3.1416i -1.5271 + 3.1416i -1.8436 + 3.1416i -2.2727 + 3.1416i -2.9837 + 3.1416i Columns 28 through 36 -37.0245 -3.0017 -2.3085 -1.8971 -1.5978 -1.3575 -1.1531 -0.9723 -0.8083 Columns 37 through 45 -0.6567 -0.5151 -0.3819 -0.2561 -0.1374 -0.0255 0.0792 0.1766 0.2663 0.3478 0.4206 0.4841 0.5379 0.5815 0.6145 0.6366 0.6474 0.6470 Columns 55 through 61 0.6351 0.6119 0.5777 0.5327 0.4774 0.4126 0.3388 (2)程序: function [b,c]=qiuzuizhi(a) b=max(a); c=min(a); b=0; c=0; for i=1:20 if a(i)>b b=a(i); end if a(i) c=a(i); end end b c 结果:>> qiuzhi(a) y = 0.7388 + 3.1416i y = 0.7696 + 3.1416i y = 0.7871 + 3.1416i y = 0.7913 + 3.1416i y = 0.7822 + 3.1416i y = 0.7602 + 3.1416i y = 0.7254 + 3.1416i y = 0.6784 + 3.1416i y = 0.6196 + 3.1416i y = 0.5496 + 3.1416i y = 0.4688 + 3.1416i 0.3780 + 3.1416i y = 0.2775 + 3.1416i y = 0.1680 + 3.1416i y = 0.0497 + 3.1416i y = -0.0771 + 3.1416i y = -0.2124 + 3.1416i y = -0.3566 + 3.1416i y = -0.5104 + 3.1416i y = -0.6752 + 3.1416i y = -0.8536 + 3.1416i y = -1.0497 + 3.1416i y = -1.2701 + 3.1416i y = -1.5271 + 3.1416i y = -1.8436 + 3.1416i y = -2.2727 + 3.1416i y = -2.9837 + 3.1416i y = -37.0245 y = -3.0017 y = -2.3085 y = -1.8971 y = -1.5978 y = -1.3575 y = y = -0.8083 y = -0.6567 y = -0.5151 y = -0.3819 y = -0.2561 y = -0.1374 y = -0.0255 y = 0.0792 y = 0.1766 y = 0.2663 y = 0.3478 y = 0.4206 y = 0.4841 y = 0.5379 y = 0.5815 y = 0.6145 y = 0.6366 y = 0.6474 y = 0.6470 y = 0.6351 y = 0.6119 y = y = 0.4774 y = 0.4126 y = 0.3388 4.已知 ) 20()30() 40(f f f y += (1)当f(n)=n+10ln(n 2+5)时,y 的值是多少。 (2)当f(n)=1*2+2*3+3*4+···+n*(n+1)时,y 的值是多少。 (1)程序: function fun=qiuzhi(n1,n2,n3) fun=f(n1)/(f(n2)+f(n3)); end function f=f(n) f=n+10*log(n^2+5); end 结果: >> qiuzhi(40,30,20) ans = 0.6390 (2)程序: function fun=qiuzhi2(n1,n2,n3) fun=f(n1)/(f(n2)+f(n3)); end function f=f(n) f=0; for i=1:n f=f+i*(i+1); end end 结果: >> qiuzhi2(40,30,20) ans = 1.7662