matlab实验指导答案详解(非常详细正确).doc
《matlab实验指导答案详解(非常详细正确).doc》由会员分享,可在线阅读,更多相关《matlab实验指导答案详解(非常详细正确).doc(23页珍藏版)》请在冰豆网上搜索。
实验一MATLAB工作环境熟悉及简单命令的执行
一、实验目的:
熟悉MATLAB的工作环境,学会使用MATLAB进行一些简单的运算。
二、实验内容:
MATLAB的启动和退出,熟悉MATLAB的桌面(Desktop),包括菜单(Menu)、工具条(Toolbar)、命令窗口(CommandWindow)、历史命令窗口、工作空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。
三、实验步骤:
1、启动MATLAB,熟悉MATLAB的桌面。
2、在命令窗口执行命令完成以下运算,观察workspace的变化,记录运算结果。
(1)(365-52´2-70)¸3
>>(365-52*2-70)/3
ans=63.6667
(2)>>area=pi*2.5^2
area=19.6350
(3)已知x=3,y=4,在MATLAB中求z:
>>x=3
>>y=4
>>z=x^2*y^3/(x-y)^2
z=576
(4)将下面的矩阵赋值给变量m1,在workspace中察看m1在内存中占用的字节数。
m1=
执行以下命令
>>m1=[162313;511108;97612;414151]
>>m1(2,3)
ans=10
>>m1(11)
ans=6
>>m1(:
3)
ans=3
10
6
15
>>m1(2:
3,1:
3)
ans=51110
976
>>m1(1,4)+m1(2,3)+m1(3,2)+m1(4,1)
ans=34
(5)执行命令>>helpabs
查看函数abs的用法及用途,计算abs(3+4i)
(6)执行命令
>>x=0:
0.1:
6*pi;
>>y=5*sin(x);
>>plot(x,y)
(6)运行MATLAB的演示程序,>>demo,以便对MATLAB有一个总体了解。
四、思考题
1、以下变量名是否合法?
为什么?
(1)x2合法
(2)3col不合法,首字符是数字
(3)_row不合法,首字符必须是字母
(4)for不合法,for为MATLAB的保留关键字
2、求以下变量的值,并在MATLAB中验证。
(1)a=1:
2:
5;
a=135
(2)b=[a'a'a'];
b=111
333
555
(3)c=a+b(2,:
)
c=468
实验二MATLAB语言矩阵运算
一、实验目的:
掌握基本的矩阵运算及常用的函数。
二、实验内容:
1、下列运算是否合法,为什么?
如合法,结果是多少?
(1)result1=a'
(2)result2=a*b
不合法,两矩阵的内阶不相等。
(3)result3=a+b
(4)result4=b*d
(5)result5=[b;c']*d
(6)result6=a.*b
(7)result7=a./b
(8)result8=a.*c
不合法,两矩阵的维数不相等,点乘相求两矩阵的维数相同。
(9)result9=a.\b
(10)result10=a.^2
(11)result11=a^2
不合法,a矩阵不是方阵,方阵才能取平方。
(12)result12=2.^a
以上运算的关键不是结果是多少,而是结果怎么得来的,比如result5=[b;c']*d,要学会将其分解后去理解,可在命令窗口输入以下语句:
>>c'
>>t=[b;c']
>>r5=t*d
2、用MATLAB求下面的的方程组。
(1)
A=[7,2,1,-2;9,15,3,-2;-2,-2,11,5;1,3,2,13]
b=[4;7;-1;0]
x=A\b
x=0.4979
0.1445
0.0629
-0.0813
(2)
A=[1,1,1,0;1,2,1,-1;2,-1,0,-3;3,3,5,-6]
b=[1;8;3;5]
xyzw=inv(A)*b
xyzw=1.0000
5.0000
-5.0000
-2.0000
3、已知
A=[7,2,1,-2;9,15,3,-2;-2,-2,11,5;1,3,2,13]
(1)求矩阵A的秩(rank)
>>rank(A)
(2)求矩阵A的行列式(determinant)
>>det(A)
(3)求矩阵A的逆(inverse)
>>inv(A)
(4)求矩阵A的特征值及特征向量(eigenvalueandeigenvector)
>>[v,d]=eig(A)
该题目要求大家学会使用MATLAT的帮助系统,一是知道函数名,怎样查函数用法,二是不知道函数名,怎样查函数名及其用法。
4、关系运算与逻辑运算
已知a=20,b=-2,c=0,d=1
(1)r1=a>b
(2)r2=a>b&c>d
(3)r3=a==b*(-10)
(4)r4=~b|c
r1=1,r2=0,r3=1,r4=0
三、思考题
求y=?
(用formatlongg查看y的值)
方法一:
n=-10:
1:
10
formatlongg
x=2.^n
y=sum(x)
方法二:
y=0;
fort=-10:
10
y=y+2^t;
end
y
方法三
y=0;t=-10
whilet<=10
y=y+2^t;
t=t+1;
end
y
实验三选择结构程序设计及调试
一、实验目的:
掌握利用if、switch语句编写选择结构程序,学会MATLAB程序编辑、运行及调试方法。
二、实验内容:
1、求分段函数的值。
用if语句实现,算出下列表中x对应的y值。
X
-5
0
2
5
8
y
14
6
0
19
55
clc
clear
x=-5%x=input('请输入x的值')
ifx<0
y=x^2+x-6;
elseifx>=0&x<5
y=x^2-5*x+6;
else
y=x^2-x-1;
end
y
2、分别用if和swith语句实现,将百分制成绩转换为成绩等级A、B、C、D、E。
其中[90~100]分为A,[80~90)分为B,[70~80)分为C,[60~70)分为D,60分以下为E。
对超出百分制范围的成绩,给出错误提示信息。
clc
clear
s=input('请输入百分制成绩:
');
ifs<0|s>100
g='ERROR';
elseifs>=90&s<=100
g='A';
elseifs>=80&s<90
g='B';
elseifs>=70&s<80
g='C';
elseifs>=60&s<70
g='D';
else
g='E';
end
g
clc
clear
s=input('请输入百分制成绩:
');
switchfloor(s/10)
case9
g='A';
case8
g='B';
case7
g='C';
case6
g='D';
casenum2cell(0:
5)
g='E';
otherwise
ifs==100
g='A';
else
g='ERROR';
end
end
g
3、程序的调试(参考P77):
在以上编写的程序中设置断点,控制程序单步运行,观察程序的执行及变量值的变化情况。
三、思考题
设计程序,产生两个两位随机整数,再输入一个运算符号,完成成两位数的加、减、乘、除四则运算,并显示相应的结果。
clc
clear
x1=10+floor(90*rand
(1))
x2=10+floor(90*rand
(1))
p=input('输入+-*/运算符:
','s');
switchp
case'+'
y=x1+x2;
case'-'
y=x1-x2;
case'*'
y=x1*x2;
case'/'
y=x1/x2;
otherwise
y='error';
end
y
实验四循环结构程序设计及调试
一、实验目的:
掌握MATLAB程序编辑、运行及调试方法。
二、实验内容:
1、启动MATLAB后,点击File|New|M-File,启动MATLAB的程序编辑及调试器(Editor/Debugger),编辑以下程序,点击File|Save保存程序,注意文件名最好用英文字符。
点击Debug|Run运行程序,在命令窗口查看运行结果,程序如有错误则改正。
注:
数论中一个有趣的题目:
任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。
重复此过程,最终得到的结果为1。
如:
2®1
3®10®5®16®8®4®2®1
6®3®10®5®16®8®4®2®1
运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。
%classic"3n+1"problemfromnumbertheory.
n=1%n等于1,2,3,5,7等数
a=n;
whilen>1
ifrem(n,2)==0
n=n/2;
else
n=3*n+1;
end
a=[a,n];
end
a
2、根据,当n分别取100、1000、10000时,求x的值分别是多少?
clc
clear
y=0;
n=100
fork=1:
n
y=y+1/k^2;
end
x=sqrt(6*y)
3、编程求满足的最小m值。
以下是三种方法及结果验证方法。
clc
clear
sum_x=0;
n=0;
whilesum_x<=1e4
n=n+1;
x=2^n;
sum_x=sum_x+x;
end
re1=n
sum_x=0;
n=1;
whilesum_x<=1e4
x=2^n;
sum_x=sum_x+x;
n=n+1;
end
re2=n-