MATLAB习题.docx
《MATLAB习题.docx》由会员分享,可在线阅读,更多相关《MATLAB习题.docx(22页珍藏版)》请在冰豆网上搜索。
MATLAB习题
习题一
1、通常情况下,MATLAB的工作界面主要由有哪几种窗口构成?
答:
指令窗口、历史指令窗口、工作空间浏览器、当前目录浏览器等窗口构成。
2、在MATLAB窗口中,可以键入各种指令、函数,并显示运行结果的窗口为【A】
A、指令窗口B、当前目录浏览器C、工作空间浏览器D、历史指令窗口
3、在MATLAB窗口中,可以对内存变量直接进行操作的窗口为【C】
A、指令窗口B、当前目录浏览器C、工作空间浏览器D、历史指令窗口
4、在MATLAB窗口中,记录在MATLAB命令窗口执行过的指令操作的窗口为【D】
A、指令窗口B、当前目录浏览器C、工作空间浏览器D、历史指令窗口
5、在MATLAB窗口中,用于搜索、查看和改变MATLAB路径和文件的窗口为【B】
A、指令窗口B、当前目录浏览器C、工作空间浏览器D、历史指令窗口
6、在MATLAB语言中,如果一个命令行很长,可以在物理行之后如下续行符【B】
A、“,”B、“…”C、“、、、”D、“,”
7、在MATLAB语言中,提示其后语句为输入指令的行提示符为【D】
A、“;”B、“:
”C、“,”D、“>>”
8、在MATLAB语言中,在指令窗口运行过的指令再次调出运行的按键为【B】
A、“;”B、“↑”或“↓”C、“,”D、“>>”
9、在MATLAB语言中,若希望结果不被显示,可在语句之后加上符号【A】
A、“;”B、“:
”C、“,”D、“>>”
10、在MATLAB语言中,下列常用操作命令解释错误的是【BE】
A、dir为显示当前目录下的文件B、clc为清除工作区中的变量
C、path为显示搜索目录D、clf为清空当前图形窗口
E、clear为清除命令窗口中的内容F、path为显示搜索路径
11、若只知要搜索函数的前两个字母,可用lookfor命令搜索此关键字的帮助信息。
12、在MATLAB语言中,可采用Tab键进行模糊查询。
习题二
1、采用MATLAB语言计算
2、下列MATLAB命令中,求矩阵A的行列式的命令是【B】
A、rank(A)B、det(A)C、trace(A)D、eig(A)
3、下列MATLAB命令中,求矩阵A的特征值的命令是【D】
A、rank(A)B、det(A)C、trace(A)D、eig(A)
4、下列MATLAB命令中,求矩阵A的秩的命令是【A】
A、rank(A)B、det(A)C、trace(A)D、eig(A)
5、在MATLAB语言中,下列哪个命令是求矩阵A的正交分解【B】
A、[L,U]=lu(A)B、[Q,R]=qr(A)C、[V,D]=eig(A)D、[U,S,V]=SVD(A)
6、在MATLAB语言中,下列哪个命令是求矩阵A的三角分解【A】
A、[L,U]=lu(A)B、[Q,R]=qr(A)C、[V,D]=eig(A)D、[U,S,V]=SVD(A)
7、求多项式的根
p=[4,-2,5,-6];roots(p)。
8、求多项式在x=3处的值。
习题三
1、已知三阶魔术矩阵B,写出求矩阵的最大值、平均值、元素排序的程序语言;
2、已知函数y=x3+x2+5,求其一阶导数的程序语言为:
diff(‘y=x^3+x^2+5’,x)
3、已知矩阵F,求其行与列方向的数值梯度的程序语言为:
[fx,fy]=gradient(F)
4、MATLAB语言中,通常用两种方式表示函数表达式:
函数文件、内联函数
5、采用函数绘图命令绘制x2+y2=1:
ezplot(‘x.^2+y.^2=1’)
6、低阶数值积分函数quad求解的命令为:
y=quad('sin(x)',-1,1)
7、求微分方程解析解的常用函数为:
dsolve
习题四
⏹1、Simulink的仿真模型主要由输入模块、状态模块、输出模块三个部分构成。
⏹2、建立仿真模型的过程主要由模型结构分析、模块的复制、模块连接、参数设置(模块参数及仿真参数)、运行仿真五个步骤完成。
实验一
【例1】求
的算术运算结果。
>>(sin(pi/3)+(2+i)*sqrt(9))/exp
(2)
【例2】解线性方程组:
。
>>a=[2,1,-5,1;1,-3,0,-6;0,2,-1,2;1,4,-7,6];b=[8;9;-5;0];
>>x=a\b
【例3】计算三重定积分
,其中Ω为三个坐标面及平面
所围成的闭区域。
>>symsxyz
int(int(int(x,x,0,1-2*y-z),y,0,(1-z)/2),z,0,1)
【例4】画出衰减振荡曲线
及其它的包络线
,
。
x的取值范围是[0,4π]。
x=linspace(0,4*pi);
y=exp(-x).*sin(3*x);
y1=exp(-x);
y2=-exp(-x);
plot(x,y,x,y1,x,y2)
xlabel('x')
ylabel('y')
title('衰减振荡曲线')
【例5】采用surf函数画出
所表示的三维曲面。
x,y的取值范围是[-8,8]。
x=linspace(-8,8,50);
y=linspace(-8,8,50);
[x,y]=meshgrid(x,y);
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);
surf(x,y,z)
【例7】根据课件第一章例7,尝试模拟电流与电容电压之间的关系曲线图。
functionxdot=RLC(t,x)
Vs=10;R=14;L=0.2;C=0.47e-6;
xdot=[x
(2)/C;1/L*(Vs-x
(1)-R*x
(2))];
clear;clc;closeall;
t0=0;tfinal=0.15;x0=[0.5;0];
[t,x]=ode45('RLC',t0,tfinal,x0);
figure
subplot(2,1,1)
plot(t,x(:
1))
title('电容电压')
xlabel('时间')
subplot(2,1,2)
plot(t,x(:
2))
title('电感电流')
xlabel('时间')
【例8】了解GUI图形用户界面的构成,根据所给程序文件,试图运行,并观察仿真结果。
I=imread('linshuhao.bmp');
J=rgb2gray(I);
subplot(1,2,1);
imshow(I)
subplot(1,2,2);
imshow(J)
【例1】采用两种方式生成等差向量,且向量元素范围为-20~20,步长为2、元素个数为21。
>>vec=(-20:
2:
20)
>>vec=linspace(-20,20,21)
【例2】创建一个4阶魔术矩阵A与单位矩阵B,并分别计算两矩阵之和、矩阵相乘、矩阵点乘、A矩阵乘方、A矩阵装置。
>>A=magic(4)>>B=eye(4)>>C=A+B>>D=A*B>>E=A.*B>>F=A^2>>G=A'
【例3】计算下列表达式的值0.33-0.5+0.17、0.33+0.17-0.5、0.17-0.5+0.33、浮点相对误差限eps
>>0.33-0.5+0.17
ans=2.7756e-017
>>eps
ans=2.2204e-016
>>0.33+0.17-0.5
ans=0
>>eps
ans=2.2204e-016
>>0.17-0.5+0.33
ans=5.5511e-017
>>eps
ans=2.2204e-016
【例4】生成下列字符串,并采用double函数查询下列每一个字符的ASCII码。
>>strl='hello2'
strl=
hello2
>>double(strl)
ans=10410110810811150
>>str2='matlab'
str2=matlab
>>double(str2)
ans=109971161089798
【例5】创建一个结构型变量,用于对某学生情况进行统计,包括学生性别、年龄、民族、入学成绩(包括数学、英语、专业)、身高和体重信息。
然后使用该结构型变量对该学生的入学成绩、身高进行查询
>>student.name='shenyang';
>>student.sex='女';
>>student.nation='汉';
>>student.text=[908991];
>>student.height=1.68;
>>student.weight=57;
>>student
student=
name:
'shenyang'sex:
'女'nation:
'汉'text:
[908991]height:
1.6800weight:
57
【例6】判断下面MATLAB7.0语句的结果:
8<98<=98==98>08<=8‘A’<‘b’
>>8<9ans=1
>>8<=9ans=1
>>8==9ans=0
>>'A'<'b'ans=1
【例7】设矩阵a、b、c和d的定义如下,试对它们进行如下操作。
(1)~(a>b)
(2)a>c&(b>c)(3)c<=d
>>a=[2];
>>b=[2,1;1,4]
>>c=[2,11;2,0]
>>d=[1,1;0,9]
~(a>b)
a>c&(b>c)
【例8】设a、b、c和d的定义如下,a=-2,b=-5,c=150,d=0,试分析下面等式的运算步骤并得出最终结果。
(1)a*b^2>a*c
(2)d|b>a(3)(d|b)>a
a=-2;b=-5;c=150;d=0;
>>a*b^2>a*cans=1
>>d|b>aans=0
>>(d|b)>aans=1
【例1】计算
>>sin(pi/6)+exp(-1)*cos(pi/2)+atan
(1)+log10(100)+16^(1/4)+2^4
ans=21.2854
【例2】设A为4阶魔术矩阵,分别对A进行如下操作:
求矩阵A的逆;求矩阵A的行列式;求矩阵A的秩;求矩阵A的迹;
>>A=magic(4)>>B=inv(A)>>C=det(A)>>D=rank(A)>>E=trace(A)
【例3】设对称实矩阵
,求其特征值和特征向量。
>>a=[2,4,9;4,2,4;9,4,18]
>>eig(a)
ans=-3.0645
1.7042
23.3603
【例4】X为3阶随机矩阵,分别对X进行如下操作:
求X的三角分解;求X的正交分解;求X的特征值分解;求X的奇异值分解;
>>X=rand(3)
>>[L,U]=lu(X)
>>[Q,R]=qr(X)
>>[V,D]=eig(X)
>>[U,S,V]=svd(X)
【例5】设方程的根
求它们对应的多项式。
>>A=[-3,-5,-8,-9];
>>B=poly(A)
B=1252238311080
>>poly2str(B,'X')
ans=X^4+25X^3+223X^2+831X+1080
【例6】创建多项式
。
>>P=[8,2,2,0,6,1,0];
>>poly2sym(P)
ans=8*x^6+2*x^5+2*x^4+6*x^2+x
【例7】求代数方程
的根。
>>P=[3,4,7,2,9,12];
>>r=roots(P)
r=-0.8612+1.4377i
-0.8612-1.4377i
0.6737+1.0159i
0.6737-1.0159i
-0.9583
【例8】求解在x=8时多项式
的值。
>>P=[1,-10,35,-50,24];
>>X=[8];
>>Y=polyvalm(P,X)
Y=840
【例9】求解多项式
对x的微分。
>>P=[1,-10,35,-50,24];
>>k=polyder(P)
k=4-3070-50
【例1】绘制函数
的图形,把区间分为250点,且在x轴上标注“Time”,y轴上标注“Amplitude”,图形的标题为“DecayingOscillatingExponential”。
x=0:
4*pi/250:
4*pi;y=cos(x).*[0.5+(3.*sin(x))./(1+x.^2)];
figure
(1);plot(x,y,'k-');
gridon;
xlabel('Time');
ylabel('Amplitude');
title('DecayingOscillatingExponential')
【例2】分别绘制下列函数图形:
条形图:
y=[3696;6774;7323;4252;2487;8744];分组形式bar(y)和堆叠形式bar(y,’stack’)极坐标图形:
饼图:
x=[6649715638],并将第五个切块分离出来
y=[3696;6774;7323;4252;2487;8744];
bar(y)
bar(y,'stack')
>>t=0:
0.01:
4*pi;
>>r=3*(1-cos(t));
>>polar(t,r)
>>figure
(1);
x=[66,49,71,56,38];
y=[0,0,0,0,1];
pie(x,y)
【例3】在同一绘图窗口中绘制下列两条曲线(
):
,
要求:
用红色、加号、点划线表示
;用蓝色、菱形、虚线表示
;
给坐标图加网格;对两图形添加注解,分别为y1、y2;
x=0:
1:
25;
y1=2.*exp(-0.5.*x).*cos(0.5.*x)+1;
plot(x,y1,'r+-.');
holdon;
y2=cos(3.*x)+sin(x);
plot(x,y2,'bd--')
gridon;
legend('y1=2.*exp(-0.5.*x).*cos(0.5.*x)+1','y2=cos(3.*x)+sin(x)')
【例4】设
,要求在
区间内画出x,y,z三维曲线。
z=-45:
45;
x=z.*sin(z);
y=z.*cos(3*z);
plot3(x,y,z)
【例5】设
,当x和y的取值范围均为-2到2时,在同一图形窗口建立4个子窗口,分别绘制三维网格线图、三维表面图、带渲染效果的表面图、部分裁剪的表面图。
x=-2:
0.2:
2;
y=x;
[X,Y]=meshgrid(x,y);
gridon;
Z=X.^2.*exp(-(X.^2+Y.^2));
subplot(2,2,1);
mesh(X,Y,Z);
title('1.三维网格线图');
subplot(2,2,2);
surf(X,Y,Z);
title('2.三维表面图');
subplot(2,2,3);
surf(X,Y,Z);
shadinginterp;
title('3.带渲染效果的表面图');
subplot(2,2,4);
p=find(X<1&Y<0);
Z(p)=NaN;
surf(X,Y,Z);
title('4.部分裁剪的表面图');
实验五【例1】求一元二次方程
的根。
采用input函数提示分别输入方程系数a、b、c的值,令
,则方程的根
,
。
采用disp函数显示两根的值。
命令文件:
%求二元一次方程a*x^2+b*x+c=0的根
a=input('a=');
b=input('b=');
c=input('c=');
d=b*b-4*a*c;
x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]
disp(['x1=',num2str(x
(1)),',x2=',num2str(x
(2))])
%num2str表示数字化为字符串。
【例2】将一个三位数分别拆成分别个位,十位,百位。
然后交换顺序输出。
命令文件:
%一个三位数交换顺序输出
a=input('请输入一个三位数字:
');
x=mod(a,10);
y=mod(a,100)-x;
z=a-y-x;
e=100*x+y+z/100;
disp(e)
【例3】定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。
函数文件:
文件名:
convert
程序:
function[z,d,s,c]=convert(a,b)
z=exp(a+b*i);
d=log(a+b*i);
s=sin(a+b*i);
c=cos(a+b*i);
函数调用:
程序:
clear
x=input('请输入复数实部的值');
y=input('请输入复数虚部的值');
[a,b,c,d]=convert(x,y);
disp(['复数',num2str(x),'+',num2str(y),'i的指数为:
',num2str(a),',对数为:
',num2str(b),',正弦为:
',num2str(c),',余弦为:
',num2str(d)])
【例4】利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。
已知极坐标的矢径、极角分别为:
,
函数文件:
文件名:
transform
程序:
function[r,theta]=transform(x,y)
r=sqrt(x*x+y*y);
theta=atan(y/x);
函数调用:
程序:
x=input('Pleaseinputx=:
');
y=input('Pleaseinputy=:
');
[r,theta]=transform(x,y);
disp(['矢径r为:
',num2str(r),'','极角theta为:
',num2str(theta)])
【例5】if语句有几种表现形式?
(1)if表达式
语句组A
end
(2)if表达式
语句组A
else
语句组B
end
(3)if表达式1
语句组A
elseif表达式2
语句组B
else
语句组C
end【例6】求下列分段函数的值:
要求:
用if语句实现,分别输出x=-5,-3,1,2,2.5,3,10,20时的y值。
程序:
x=input('请输入x的值')
ifx<0&x~=-3
y=x^2+x-6;
elseifx>=0&x<10&x~=2&x~=3
y=x^2-5*x+6;
else
y=x^2-x-1;
end【例7】输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。
其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:
1、采用if语句实现。
2、输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出错误信息。
程序:
x=input('请输入成绩')
ifx>=90&x<=100
disp('等级为A')
elseifx>=80&x<=89
disp('等级为B')
elseifx>=70&x<=79
disp('等级为C')
elseifx>=60&x<=69
disp('等级为D')
elseifx>=0&x<=59
disp('等级为E')
else
disp('成绩有误')
end
【例8】输入一个数,判断该数是否能被5整除?
要求:
采用switch语句实现。
程序:
clear;clc;
n=input('请输入一个数字n=');
switchmod(n,5)
case0
fprintf('%d是5的倍数\n',n)
otherwise
fprintf('%d不是5的倍数\n',n)
end
【例9】已知
,当n=100时,求y的值。
令s0=0,则对于任意i,有si=si-1+1/(i*i),i=1,2,…,n。
要求:
采用for循环语句实现。
程序:
y=0;n=100;
fori=1:
n
y=y+1/i^2;
end
y
【例10】假设
,采用for循环语句求
提示:
每一个小曲边梯形的面积和为定积分的值,步长h=(3*pi-0)/1000。
程序:
a=0;b=3*pi;
n=1000;
h=(b-a)/n;
x=a;s=0;
f0=exp(-0.5*x)*sin(x+pi/6);
fori=1:
n
x=x+h;
f1=exp(-0.5*x)*sin(x+pi/6);
s=s+(f0+f1)*h/2;
f0=f1;
end
s
【例11】设x,y,z均为正整数,求下列不定方程组共有多少组解。
提示:
此类方程的个数少于未知数的个数的方程称为不定方程,一般没有唯一解,而有多组解。
对于这类问题,可采用穷举法,即将所有可能的取值一个一个地去试,看是否满足方程,如满足即是方程的解。
首先确定3个变量的可取值,x、y、z均为正整数,所以3个数的最小值是1,而其和为20,所以3者的最大值是18。
要求:
采用for循环嵌套语句实现。
程序:
n=0;
a=[];
forx=1:
18
fory=1:
18
z=20-x-y;
if25*x+20*y+16*z==400
a=[a;x,y,z];
n=n+1;
end
end
end
disp(['方程组共有',num2str(n),'组解']);
disp(a)
【例12】从键盘输入若干个数,当输入0时结束输入,求这些数的和以及平均值。
提示:
设输入的数存放在x中,sum表示和,n表示读入数的个数,则求若干个数的和,就是对x进行累加,即sum=sum+x,其中sum的初值为0。
如果读入个数n大于0,则输出sum、sum/n。
要求:
采用while与if结构语句实现。
程序:
sum=0;n=0;
x=input('Enteranumber(endin0):
');
whilex~=0
sum=sum+x;
n=n+1;
x=input('Enteranumber(endin0):
');
end
ifn>0
sum
mean=sum/n
end
实验六
【例1】一元分段函数为
,创建名为piece_x的函数文件,并绘制该分段函数的图形。
functionf=piece_x(x)
f=x.^2.*(x>=0&x<1)+cos(pi*(x-1)).*(x>=1&x<2)+(-x.^2)./(x+2).*(2<=x&x<=4