实验三MATLAB程序设计Word格式文档下载.docx
《实验三MATLAB程序设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验三MATLAB程序设计Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
Columns1through9
248163264128256512
Column10
1024
k=
10
(4)按上述步骤,在在编辑器中输入如下函数文件:
functionf=tt(n)
%求小于任何正整数且为2的整数次幂的正整数。
%c=n(n)
%n可取任意正整数。
%2004年8月。
f
(1)=2;
ceil(n/2)%ceil函数取最近的正整数
f
调试后,将其以test2.m形式保存在D:
(5)进入命令窗口,键入test2(9),观察程序运行结果。
>
test2(9)
248
ans=
2、编写一个函数M文件,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。
选择一些数据测试编写的函数。
源程序:
function[y]=myfun(x)
ifx<
=0
y=sin(x);
elseifx>
3
y=-x+6;
else
y=x;
end
运行结果:
test(0)
ans=
0
test
(2)
2
test(5)
1
3、编写一个函数M文件,返回向量x中元素的和、平均值、最大值、最小值、均方根值。
其中方均根值(RootMeanSquare)的计算公式为:
并用下面数据测试你写的函数:
(1)x=sin(0:
0.01:
6*pi)
(2)x=rand(1,200),得到的x为200个(0,1)之间均匀分布的随机数。
源程序:
function[sum_x,m_x,max_x,min_x,rsm_x]=myfun7(x)
sum_x=0;
a=x;
fork=a;
sum_x=sum_x+k;
n=length(x);
fori=1:
n
m_x=sum_x/n;
min_x=x
(1);
fort=1:
ifmin_x>
x(t)
min_x=x(t);
max_x=x
(1);
ifmax_x<
max_x=x(t);
sum_x1=0;
sum_x1=sum_x1+x(t).^2;
rms_x=sqrt(sum_x1/n);
sum_x
m_x
max_x
min_x
rms_x
(1)
x=sin(0:
6*pi);
myfun7(x)
sum_x=
-2.1218e-004
m_x=
-1.1256e-007
max_x=
1.0000
min_x=
-1.0000
rms_x=
0.7071
2)
x=rand(1,200);
99.5448
0.4977
0.9961
0.0046
0.5778
4、编写一个函数M文件,若给出一个向量
,函数返回如下范德蒙矩阵。
例如在命令窗口输入>
v=myvander([2345]),得
,同时生成一些数据测函数。
function[v]=myvander(x)
v=ones(n,n);
forj=1:
fori=1:
v(i,j)=x(j)^(i-1);
x=([2345]);
test(x)
1111
2345
491625
82764125
x=([123]);
111
123
149
5、分别使用while和for编写命令文件,用循环语句编程计算s值:
同时对编写的文件设置断点,观察变量取值的变化情况。
(1)For循环:
function[]=test()
s=0;
forn=2:
1:
10
s=s+(n^3-n^2);
disp(s)
test()
2640
(2)While循环:
n=2;
whilen<
=10
n=n+1;
运行结果:
6、数论中一个有趣的题目:
任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。
重复此过程,最终得到的结果为1。
如:
21
3105168421
63105168421
建立命令M文件,完成上述功能,要求显示数字处理过程。
functionX=test()
n=input('
请输入一个正整数'
);
X
(1)=n;
i=2;
whilen~=1
ifrem(n,2)==0
n=n/2;
elseifrem(n,2)==1
n=n*3+1;
X(i)=n;
i=i+1;
请输入一个正整数2
21
请输入一个正整数3
3105168421
请输入一个正整数12
1263105168421
7、设计一个学生身高的管理系统,输出身高的基本分为5等:
很高、较高、中等、较矮、矮,其中190cm以上为“很高”,[180cm,190cm)区间为“较高”,[170cm,180cm)为“中等”,[1160cm,170cm)为“较矮”,160cm以下为“矮”,要求分别用if语句和switch语句实现
(1)for语句:
n=100;
fori=1:
a=input('
请输入身高'
ifa>
1.90
disp('
很高'
)
elseifa>
=1.80&
&
a<
较高'
=1.70&
1.80
中等'
=1.60&
1.70
较矮'
elseifa<
1.60
矮'
end
请输入身高1.95
很高
请输入身高1.85
较高
请输入身高1.75
中等
请输入身高1.65
较矮
请输入身高1.55
矮
switch语句:
x=input('
身高为:
'
n=(x-100)/10;
switchfloor(n)
case{10,9}
case{8}
case{7}
case{6}
case{5,4,3,2,1,0}
195
185
175
165
155
8、Fibonacci数组的元素满足Fibonacci规则:
ak+2=ak+ak+1,(k=1,2,3,…);
且a1=a2=1。
请设计一段程序,求出该数组中第一个大于10000的元素
要求显示的结果为:
i=21
a(i)=10946
或者
a(21)=10946
a
(1)=1;
a
(2)=1;
whilea(i)<
=10000
a(i+1)=a(i-1)+a(i);
i=i+1;
end;
i,a(i)
i=
21
10946
a
(2)=1
fori=3:
n
a(i)=a(i-1)+a(i-2);
ifa(i)>
a(i),
break;
i
a=
Columns1through12
1123581321345589144
Columns13through21
233377610987159725844181676510946
9、编写一个函数文件and.m,用于求两个输入矩阵的乘积和点乘,然后在命令行窗口中调用该函数,要求:
(1)当两矩阵是尺寸相同的方阵时,返回它们的乘积和点乘。
(2)当两矩阵不是尺寸相同的方阵时,则根据它们的尺寸,分别进行乘积或点乘
(3)当两矩阵的尺寸不能满足乘积或点乘的要求时,则提示“这两个矩阵不能乘”
function[]=test(x,y)
[m,n]=size(x);
[i,j]=size(y);
ifm==n&
i==j&
m==i
z1=x*y;
z2=x.*y;
disp(z1);
disp(z2);
elseifn==i
elseifm==i&
n==j
elseifn~=i
这两个矩阵不能相乘'
1)
x=[123;
456;
789];
y=[123;
test(x,y)
303642
668196
102126150
162536
496481
456];
3)
x=[122;
233;
344];
这两个矩阵不能相乘
10、编写一个阶乘函数factorial.m,然后在如下程序中调用该函数,
“分别使用for和while语句找出最小的n值,使得n!
10100,并求出n!
”
(1)For语句:
Function[]=factorial()
n=1;
s=1;
forn=1:
10000
s=s*n;
if(s>
10100)
break;
disp(n);
1
2
4
5
6
7
(2)While语句:
function[]=factorial()
whiles<
=10100
disp(n);
factorial()
8
11、下列程序用来判断一个人的体温是否处于危险状态。
调试程序是否正确,如果程序错误指出错误在哪里?
并写出正确答案。
temp=input(‘请输入体温:
temp=’);
iftemp<
36.5
disp(‘体温偏低’);
elseiftemp>
disp(‘体温正常’);
38.0
disp(‘偏高!
’;
39
disp(‘温高!
!
’)
错误:
没有范围
temp=input('
请输入体温:
temp='
disp('
体温偏低'
=36.5&
temp<
=38
体温正常'
38.0&
=39
偏高!
温高!
temp=35
体温偏低
temp=37
体温正常
temp=38.5
temp=40
12、使用嵌套for循环命令创建下列矩阵:
function[]=test()
a=zeros(5);
a(i,i)=5;
forj=1:
ifi==j+1||j==i+1
a(i,j)=1;
disp(a);
51000
15100
01510
00151
00015