MATLAB复习题.docx
《MATLAB复习题.docx》由会员分享,可在线阅读,更多相关《MATLAB复习题.docx(11页珍藏版)》请在冰豆网上搜索。
MATLAB复习题
第一章MATLA概述
1、标点符号(;)可使命令行不显示运算结果,(%)用来表示该行是注释行。
(常用标点符号的功能见P9)
2、用“format”命令设置数据输出形式,(formatlong)将pi显示为3.14159265358979,(formatshorte)将pi显示3.1416e+000。
(format对于数值显示格式的控制见P11)
3、历史命令窗有何功能?
(P12)
4、在命令窗中使用命令显示当前目录(cd),并将当前目录设置为“A:
\exe”。
(cdA:
\exe)
、12
5、输入变量a=5.3,b,使用save命令将变量存入A:
\exe0101.mat文件。
34
>>a=5.3;
>>b=[12;34];
>>saveA:
\exe0101.matab
&将A:
\exe加入搜索路径中addpathA:
\exe
7、clear,clc,clf的功能
clear从内存中清除变量和函数;
clc清除命令窗口
clf清除当前图形窗口
8、下面说法正确吗?
MATLAB勺数值表达精度与其指令窗中的数据显示精度相同;MATLA指令窗中显示数值有效位不超过7位。
(P10)
数值的显示精度并不是数值的存储精度;有效位数可达16位。
第二章数值计算
1、下列变量名中_A__是合法变量。
变量的命名规则P31
A.char_1,i,j
B.x*y,a.1
C.x\y,a1234
D.end,1bcx
2、已知x为1个向量,计算其正弦函数的运算为。
A.SIN(X)
B.SIN(x)
C.sin(x)
D.sinx
3、已知x为1个向量,计算ln(x)的运算为B。
A.ln(x)
B.log(x)
C.Ln(x)
D.log10(x)
4、当a=2.4,使用取整函数得出3,则该取整函数名为__ceil__。
关于数组的基本函数P50
A.fix
B.round
C.ceil
D.floor
5、已知a=0:
4,b=1:
5,
下面的运算表达式出错的为_
D。
A.a+b
B.a./b
C.a'*b
D.a*b
1
2
3
&输入矩阵a
4
5
6.使用全下标方式a(1,3)
取出兀素3、使用单下标方式a(6)
7
8
9
取出元素“8”,用a([2,3],:
)取出后两行子矩阵块。
7、输入A为3*3的魔方阵,B为3*3的单位阵,由小矩阵构成3*6的大矩阵C和6*3的大矩阵D,将D矩阵的最后一行构成小矩阵E。
A=magic(3);B=eye(3);C=[AB];D=[A;B];E=D(end,:
)特殊矩阵的产生P34
8、求矩阵A的转置矩阵,逆矩阵,矩阵的秩,矩阵的行列式值,矩阵的三次幕,矩阵的特征值和特征向量。
A'inv(A);rank(A);det(A);AA3;[v,d]=eig(A)常用矩阵运算函数P44
9、求解方程组
2xi3x2x32x48
Xi3x2x6
XiX2X38x47
7x1x22x32x45
>>A=[2-312;1304;1-118;71-22];
>>b=[8;6;7;5];
>>x=A\b
矩阵运算分为左除和右除,各表示什么含义,见P47。
10、2个多项式为ax5x44x33x22x1,bx3x21,计算cxaxbx,并计算c(x)的根。
当x=2时,计算c(x)的值,将b(x)/a(x)进行部分分式展开。
>>a=[54321];b=[301];
>>c=conv(a,b)
>>roots(c)
>>polyval(c,2)
>>[r,p,k]=residue(b,a)关于多项式的常用函数参见P62-66
11、x在[0,20]范围内,计算多项式y5x44x33x22x1的值,并根据x和y进行二阶、三阶和四阶拟合。
>>x=0:
0.5:
20;
>>p=[54321];
>>y=polyval(p,x)
>>p1=polyfit(x,y,2)
>.p2=polyfit(x,y,3)
>.p3=polyfit(x,y,4)
第三章符号计算
1/(sin(t)+cos(w*t))w2*a+thetatheta2*i+a*jjz*exp(j*theta)z
2、已知表达式:
f1sin2x,g2x1,计算当x=1时f的值,计算f与g的复合函数,g的逆函数
>>f=sym('1-sin(xF2');g=sym(‘2*x+1')
>>subs(f,1)
>>pose(f,g)
>>finverse(g)
3、计算1*2+2*3+……+n*(n+1)的前3项的和符号级数P103symsum(k*(k+1),1,3)
4、符号函数:
fxy,分别对x进行定积分,y进行不定积分,对y定积分区间为(0,1).符号积分P102
>>f=sym(‘xA(-y)');
>>int(f)
>>int(f,'y',0,1)
5、求dyytanxcosx的通解。
符号常微分方程P109
dx
>>dsolve(‘Dy+y*tan(x)=cos(x)','x')
6利用符号绘图函数绘制图形fxsinxx,范围为[1,10]。
符号函数绘图指令P110
>>f=sym(‘sin(x)/x');
>>ezplot(f,[1,10])
第四章MATLA时算的可视化和GUI设计
1、常用的二维、三维绘图函数
2、图形句柄的概念,查询和设置的方法
3、GUI设计过程,以及常用的控件名称和含义。
22
4、zxexy,当x和y的取值范围均为-2到2时,用建立子窗口的方法在同一个图形窗口中绘制出三维线图、网线图、表面图和带渲染效果的表面图。
>>[x,y]=meshgrid([-2:
.2:
2]);
>>z=x.*exp(-x.A2-y.A2);
>>mesh(x,y,z)
>>subplot(2,2,1),plot3(x,y,z)
>>title('plot3(x,y,z)')
>>subplot(2,2,2),mesh(x,y,z)
>>title('mesh(x,y,z)')
>>subplot(2,2,3),surf(x,y,z)
>>title('surf(x,y,z)')
>>subplot(2,2,4),surf(x,y,z),shadinginterp
>>title('surf(x,y,z),shadinginterp')
5、建立三个输入窗口的输入对话框,如图所示
prompt={'输入姓名','输入年龄','输入职业'};title='信息登记';
lines=[111]';
def={'张平','30','教师'};
answer=inputdlg(prompt,title,lines,def);
第五章MATLABS序设计
1、命令文件和函数文件的区别。
2、输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出
c=input('请输入一个字符','s');
ifc>='A'&c<='Z'disp(setstr(abs(c)+abs('a')-abs('A')));elseifc>='a'&c<='z'disp(setstr(abs(c)-abs('a')+abs('A')));
elseifc>='0'&c<='9'disp(abs(c)-abs('0'));
else
disp(c);
end
3、某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price<200没有折扣
20050010002500Wprice<500010%折扣
5000Wprice14%折扣
输入所售商品的价格,求其实际销售价格price=input('请输入商品价格');
switchfix(price/100)
case{0,1}%价格小于200
rate=0;
case{2,3,4}%价格大于等于200但小于500
rate=3/100;
casenum2cell(5:
9)%价格大于等于500但小于1000
rate=5/100;
casenum2cell(10:
24)%价格大于等于1000但小于2500
rate=8/100;
casenum2cell(25:
49)%价格大于等于2500但小于5000
rate=10/100;
otherwise%价格大于等于5000
rate=14/100;
end
price=price*(1-rate)%输出商品实际销售价格
4、一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。
输出全部水仙花数form=100:
999
m仁fix(m/100);%求m的百位数字
59
m2=rem(fix(m/10),10);%求m的十位数字
m3=rem(m,10);%求m的个位数字
ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3
disp(m)
end
end
5、从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和sum=0;
cnt=0;
val=input('Enteranumber(endin0):
');
while(val~=0)
sum=sum+val;
cnt=cnt+1;
val=input('Enteranumber(endin0):
');
end
if(cnt>0)
sum
mean=sum/cnt
end
6、求[100,200]之间第一个能被21整除的整数
forn=100:
200
ifrem(n,21)~=0
continue
end
break
end
n
7、若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。
求[1,500]之间的全部完数
form=1:
500
s=0;
fork=1:
m/2
ifrem(m,k)==0
s=s+k;
end
endifm==sdisp(m);
end
end
8、利用函数的递归调用,求n!
functionf=exam5_14(n)ifn<=1f=1;
elsef=exam5_14(n-1)*n;%递归调用求(n-1)!
end
9、nargin用法示例函数文件examp.m:
functionfout=charray(a,b,c)ifnargin==1fout=a;
elseifnargin==2fout=a+b;
elseifnargin==3fout=(a*b*c)/2;
end
命令文件exam5_15.m:
x=[1:
3];
y=[1;2;3];examp(x)examp(x,y')examp(x,y,3)
10
10、编写M却本,分别使用for和while循环语句计算sumi1的程序
i1sum=0;
forn=1:
10
sum=n5+sum;
end
sumn=1;sum=0;whilen<=10
sum=n5+sum;n=n+1;
end
11、编制一个解数论问题的函数文件:
取任意整数,若是偶数,则除以2,否则乘3加1,
重复此过程,直到整数变为1。
functionc=collatz(n)
%Collatz
%Classic"3n+1"Plobremfromnumbertheory
c=n;
whilen>1
ifrem(n,2)==0
n=n/2;
else
n=3*n+1;
end
c=[cn];
end
12、编写M脚本文件,要求从键盘逐个输入数值(input),然后判断输入的数是大于0还是
小于0,并输出提示(disp)是正数,还是负数,同时记录输入的正数、负数的个数。
当输入0时,中止M文件的运行;当输入第10个数字时,显示记录的正、负个数并终止程序。
n=1;n1=0;n2=0;
whilen<=10
a=input('请输入数据');
ifa>0
disp('正数')
n1=n1+1;
elseifa<0
disp('负数')
n2=n2+1;
else
break;
end
end
n=n+1;enddisp('正数')n1disp('负数')n2
13、编写M函数文件,实现分段绘制曲面,绘制每个曲线为1个子函数
0.75y23.75x21.5x
0.5457exy1
22
zx,y0.7575ey6x1xy1
0.75y23.75x21.5x
0.5457exy1
functionex0306()x=-2:
0.1:
2;
y=-2:
0.1:
2;
[xx,yy]=meshgrid(x,y);
[n1,m1]=size(xx);
z=zeros(n1,m1);
forn=1:
n1
form=1:
m1
ifxx(n,m)+yy(n,m)>1
z(n,m)=z1(xx(n,m),yy(n,m));
elseif(xx(n,m)+yy(n,m)>-1)&(xx(n,m)+yy(n,m)<1)z(n,m)=z2(xx(n,m),yy(n,m));
elseifxx(n,m)+yy(n,m)<-1
z(n,m)=z3(xx(n,m),yy(n,m));
end
end
endsurf(xx,yy,z)functionz=z1(x,y)
z=0.5457*exp(-0.75*yA2-3.75*xA2-1.5*x);functionz=z2(x,y)
z=0.7575*exp(-yA2-6*xA2);
functionz=z3(x,y)
z=0.5457*exp(-0.75*yA2-3.75*xA2+1.5*x);
14、根据输入参数个数实现当没有输入参数时,显示信息;当有一个参数时,则以该参数为边长绘制正方形;当有两个参数时,以2个参数为长和宽绘制矩形。
functionex0307(varargin)ifnargin==0
disp('无输入参数');
elseifnargin==1
r=varargin{1};
x=[00rr];
y=[0rr0];
plot(x,y)
elseifnargin==2
r1=varargin{1};
r2=varargin{2};x=[00r1r1];
y=[0r2r20];
plot(x,y)end