实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
08级班级:物理学(2)班课程:中教法实验姓名:彭发强学号:120081001244 日期:11-04-18 实验项目:MA TLAB程序设计
实验目的:
1、掌握利用if语句、switch语句实现选择结构的方法。
2、掌握利用for语句、while语句实现循环结构的方法。
3、掌握利用向量运算来代替循环操作的方法并理解MA TLAB程序设计的特点。
4、掌握定义和调用MA TLAB函数的方法
实验内容:
1、从键盘输入一个3位整数,将它反向输出。
如输入639,
输出为936。
解:
x=input('enter x:','s');
j=length(x);
for i=1:1:j
y(j-i+1)=x(i);
end
disp(y);
2、输入一个百分制成绩,要求输出成绩等级A、B、C、D、
E。
其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:
(1)分别用if语句和switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
解:
If语句
x=input(' Please enter your results:');
if x<0|x>100
disp(' Your input is not valid');
elseif x>=90&x<=100
disp('A');
elseif x>=80&x<90
disp('B');
elseif x>=70&x<80
disp('C');
elseif x>=60&x<70
disp('D');
else disp('E')
end
Switch语句
x=input(' Please enter your results:');
if x<0|x>100
disp(' Your input is not valid');
else
switch x
case num2cell(0:59)
y='E';
case num2cell (60:69)
y='D';
case num2cell (70:79)
y='C';
case num2cell (80:89)
y='B'
otherwise
y='A';
end
disp(y);
end
3、输入20个数,求其中最大数和最小数。
要求分别用循环
结构和调用MA TLAB的max函数、min函数实现。
解:循环结构
x=input('Enter the number 20:');
minx=x(1);
maxx=x(1);
for i=2:length(x)
if minx>x(i)
minx=x(i);
end
if maxx<x(i)
maxx=x(i);
end
end
disp('The minmum is:');
disp(minx);
disp('The maxmum is:');
disp(maxx);
调用MA TLAB的max函数、min函数
=input(' Enter the number 20:');
minx=min(x(1:length(x)));
maxx=max(x(1:length(x)));
disp('The minmum is:');
disp(minx);
disp('The maxmum is:'); disp(maxx);
4、
2
3.0ln
)3.0sin(2
3.03.0a
a e
e
y a
a
+++-=
-,当a 取-3.0、-2.9、-2.8、…、2.8、2.9、3.0时,求各点的函数值。
要求分别用顺序结构和循环结构实现。
解:顺序结构 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) 循环结构 for a=-3.0:0.1:3.0
f=(exp(0.3*a)-exp(-0.3*a))/2*sin(a+0.3)+log((0.3+a)/2) end
5、 当n 分别取100,1000,10000时,求下列各式的值:
(1))6
(13121112
2
222π=++++n
(2)()()()())2(121222756653443122π=⎪⎪⎭
⎫ ⎝⎛+-⎪⎭
⎫ ⎝⎛⨯⨯⎪⎭⎫ ⎝⎛⨯⨯⎪⎭⎫ ⎝⎛⨯⨯ n n n n
要求分别用循环结构和向量运算(使用sum 函数)来实现。
循环结构 n=100;
while n~=100000 sum=0; for i=1:n
sum=sum+1/i^2; end disp(sum); n=n*10; end 向量运算
n=[100,1000,10000]; sum=[0,0,0]; for i=1:length(n) for j=1:n(i)
sum(i)=sum(i)+1/j^2; end end disp(sum); 循环结构 n=100;
while n~=100000 sum=1; for i=1:n
sum=sum*((2*i)*(2*i))/((2*i-1)*(2*i+1)); end disp(sum);
n=n*10; end 向量运算
n=[100,1000,10000]; sum=[1,1,1]; for i=1:length(n) for j=1:n(i)
sum(i)=sum(i)*(2*j)^2/((2*j-1)*(2*j+1)); end end disp(sum);
6、 建立65⨯矩阵,要求输出矩阵第n 行元素。
当n 的值超
过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。
解:switch 语句 x=rand(5,6)
n=input('please input a number:'); switch n case {1} x(1,:) case {2} x(2,:) case {3} x(3,:) case {4} x(4,:) case {5} x(5,:) otherwise x(end,:)
disp('n is out of range'); end if 语句 x=rand(5,6)
n=input('please input a number:'); if n>=1&n<=5 x(n,:) else x(end,:)
disp('n is out of range'); end 7、 已知
)
20()30()
40(f f f y +=
(1) 当)5ln(10)(2++=n n n f 时,y 的值是多少。
(2) 当
)
1(433221)(+⨯++⨯+⨯+⨯=n n n f
时,y 的值是多少。
解:(1)写一个函数命名为f1.m 内容如下: function f1 = f1( n ) f1=n+10*log(n^2+5); end
再在命令窗口输入:y=f1(40)/(f1(20)+f1(30)) (1) 写一个函数命名为f2.m 内容如下: function f2= f2( n ) con=0; for i=1:n con=con+i*(i+1); end f2=con; end
再在命令窗口输入:y=f2(40)/(f2(20)+f3(30)) 8先用函数的递归调用定义一个函数文件求
∑=n
i m
i
1
,然后调用
该函数文件求
∑
∑∑===++10
1
50
1
2
1001
1
k k k k k k 解:写一个函数文件命名为leijia.m 内容如下: function l = leijia( n ,m) if n>=1
l=leijia(n-1,m)+n^m; else l=0; end end
命令窗口输入:leijia(100,1)+lejia(50,2)+leijia(10,-1)。