第二次上机作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二次上机作业
目的:
运行课本第四章及课堂上讲过的例子,掌握Matlab的流程控制语句、函数及脚本文件的编程、调试方法。
要求:1、本次作业要求全部写M文件;2题目要求未明确要求写脚本文件还是函数文件的,学生自己决定是写脚本文件还是函数文件。只要能够实现要求。
作业:
1.分析脚本M文件及函数M文件的区别。
(1)M脚本文件名不必与函数名相同;(2)M函数文件调用时需要提供函数参数,而M脚本文件只需要提供文件名;(3)M脚本文件创建的每个变量都会保存到Matlab工作区,而M函数文件只有输出结果才保存到Matlab工作区中;(4)文件格式上的一些区别。
2.分别编写脚本文件,实现以下要求:
1)求[100,999]之间能被21整除的个数。
m=0;
for n=100:999
if n/21==round(n/21)
m=m+1;
k(m)=n;
else
end
end
k,m
2)用magic(6)产生一矩阵,用至少两种方法求解其所有元素的和。(提示:1、for循环;2、sum函数)
A=magic(6)
B=sum(A)
sum(B)
q=0
for i=1:36
q=q+A(i);
end
q
3.编写函数文件,实现从键盘输入一个3位整数,将它反向输出。如639,输出为936。并调用该函数,
输入自己的学号后三位数,输出结果。
function f=xuehao(k)
k=input('请输入一个数字');
a=fix(k/100);
b=fix((k-a*100)/10);
c=k-a*100-b*10;
k=c*100+b*10+a
xuehao
请输入一个数字200
k =
2
4. 定义一个函数文件,求∑=n i m i
1,要求在函数文件中包含能够通过help 查询到的说明,说明里面必须有自己的名字学号。然后调用该函数文件求
∑∑∑===++10
1501210011k k k k k k 的值。 function s=sfun(m,n)
%20111200xieyinbin
s=0;
for k=1:n
i=k
s=s+i^m
end qiuhe(1,100)+qiuhe(2,50)+qiuhe(-1,10)
ans =
4.7978e+004
5. 已知)
7.1cos(12
ln
)7.1sin(++++=x x x y π,当x 取-3.0,-2.9,-2.8,…,2.8,2.9,3.0时, 1) 求各点的函数值;
2) 求这些数据的平均值;
function y=mao(x)
s=0,n=0;
for x=-3:0.1:3
y=(sin(x+1.7)*log((pi+x)/2))/(1+cos(x+1.7));
n=n+1;
s=y+s;
end
k=s/n
mao(-3)
s = 0
k = 0.1616
ans =-1.1359
6.求分段函数的值。
222603565231x x x x y x x x x x x x ⎧+-<≠-⎪=-+≤<≠≠⎨⎪--⎩
, 且, 0且及, 其它
用if 语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5时的值。
function y=fu(x)
if x<0&x~=3
y=x^2+x-6
elseif x<5&x>=0&x~=2&x~=3
y=x^2-5*x+6
else
y=x^2-x-1
end
y=fu(0)
y = 6
>> y=fu(-5)
y =14
y =14
>> y=fu(-3)
y = 0
y = 0
>> y=fu(1)
y = 2
y = 2
>> y=fu(2)
y = 1
y = 1
>> y=fu(2.5)
y = -0.2500
y = -0.2500
7、输入一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。其中90分~100分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。
要求:分别用if 语句和switch 语句实现。
switch
m=input('请输入一个数字:')
m=fix(m/10);
switch m
case {9,10}
disp('A')
case 8
disp('B')
case 7
disp('C')
case 6
disp('D')
case {5,4,3,2,1,0}
disp('E')
end
if
m=input('请输入一个数字:') m=fix(m/10);
if m>=9
disp('A')
elseif m>=8&m<9
disp('B')
elseif m>=7&m<8
disp('C')
elseif m>=6&m<7
disp('D')
else
disp('E')
end
8、根据
2
2222
1111
...,
6123n
π
π
=++++求的近似值。当n分别取100、1000、10000时,结果是多少?(要
求:分别用循环结构和向量运算来实现)clear
n=input('请输入n的值');
s=0;
for i=1:n
s=s+1/i^2;
end
y=sqrt(6*s)
请输入n的值1000
y = 3.1406
clear
n=input('请输入n的值');
s=0;
for i=1:n
s=s+1/i^2;
end
y=sqrt(6*s)
请输入n的值10000
y =3.1415