集美大学MATLAB程序设计与应用期末总复习.docx
《集美大学MATLAB程序设计与应用期末总复习.docx》由会员分享,可在线阅读,更多相关《集美大学MATLAB程序设计与应用期末总复习.docx(25页珍藏版)》请在冰点文库上搜索。
集美大学MATLAB程序设计与应用期末总复习
集美大学MATLAB程序设计与应用期末总复习
一、填空题
1、MATLAB常用操作界面包括命令窗口、工作空间窗口(浏览器)、历史命令窗口、当前目录窗口、内存数组编辑器、M文件编辑/调试器、
帮助导航/浏览器、图形窗口等。
2、MATLAB中Inf或inf表示无穷大、NaN或nan表示不是一个数、nargout表示函数输出变量数目。
3、MATLAB中逗号主要用作要显示计算结果的指令与其后指令的分隔符;
用作输入量与输入量之间的分隔符;用作数组元素分隔符号。
4、工作空间浏览器主要用于内存变量的查阅、保存和编辑。
5、MATLAB实现将全下标转换为单下标的指令为Sub2ind、据单下标换算出全
下标的指令为Ind2sub。
6、二维数组的标识有“全下标”标识、“单下标”标识、“逻辑1”标识。
7、在一个元胞数组A中寻访第2行第3列元胞元素用A(2,3);寻访数组第
2行第3列元胞中的内容用A{2,3}。
8、MATLAB中clf用于清除图形窗、clc用于清除指令窗中显示内容、clear
用于清除MATLAB工作空间中保存的变量。
二、简答题
1、简述MATLAB历史指令窗的主要作用。
答:
历史指令窗记录着用户在MATLAB指令窗中所输入过的所有指令。
历史记录包括:
每次开启MATLAB的时间,每次开启MATLAB后在指令窗中运行过的所有指令。
应用功能有单行或多行指令的复制和运行、生成M文件等。
2、简述空数组的功用。
答:
“空”数组的功用:
在没有“空”数组参与的运算时,计算结果中的“空”可以合理地解释“所得结果的含义”;运用“空”数组对其他非空数组赋值,可以改变数组的大小,但不能改变数组的维数。
3、简述MATLAB函数的基本结构。
答:
典型M函数文件的结构:
函数申明(定义)行(Functiondeclarationline)、H1行(Thefirsthelptextline)、在线帮助文本(Helptext)区、编写和修改记录、函数体(Functionbody)。
4、简述绘制二维图形的一般步骤。
答:
绘制二维图形的一般步骤为:
曲线数据准备、选定图形窗及子图位置、调用二维曲线绘图指令、设置轴的范围、坐标分格线、图形注释、图形的精细操作。
三、编程题
(1)在同一图上分别用红色实线和绿色虚线绘制y1=sin(x)和y2=cos(x)在区间[0,4*pi]的曲线,并用星号*标出两条曲线的交点以及建立图例。
书p123、p126
解:
clf
x=0:
pi/200:
4*pi;
y1=sin(x);
y2=cos(x);
zz=x(find(abs(y1-y2)<0.005))
z=min(zz)
plot(x,y1,'r-',x,y2,'g_')
holdon
plot(zz,sin(zz),'*')
legend('sin','cos')
(2)分别在同一图形窗的不同子图绘制y=sin(t)sin(9t)和y=sin(t)sin(9t)及其包络线。
P121
解:
t=(0:
pi/100:
pi)';
y1=sin(t)*[1,-1];
y2=sin(t).*sin(9*t);
t3=pi*(0:
9)/9;
y3=sin(t3).*sin(9*t3);subplot(1,2,1)
plot(t,y1,'r:
',t,y2,'b',t3,y3,'bo')
subplot(1,2,2)
plot(t,y2,'b')
axis([0,pi,-1,1])
(3)某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price<200没有折扣
200≤price<5003%折扣
500≤price<10005%折扣
1000≤price<25008%折扣
2500≤price<500010%折扣
5000≤price14%折扣
输入所售商品的价格,求其实际销售价格。
P172
解:
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)用符号变量法解如下方程p
解:
eq1=sym(‘x+2*y+z=1’);
eq2=sym(‘2*x+y-2*z=3’);
eq3=sym(‘3*x-4*y+2*z=9’);
[x,y,z]=solve(a,b,c)
(5)将matlab绘图窗口分割为二个区域,在左区域绘出y1曲线,在右区域绘出y2曲线,y1为红色,y2为蓝色,步距0.01.p121
解:
x1=0:
0.01:
5;
y1=x*exp(-2*x);
subplot(1,2,1);
plot(x1,y1,’r’);
x2=-2:
0.01:
2;
y2=5*cos(3*pi*x2);
subplot(1,2,2);
plot(x2,y2,’b’);
(6)某班有50名学生,进行英语考试,考试成绩为:
优秀8人,良好14人,中等20人,及格5人,不及格3人.试绘该班英语考试成绩分布的三维饼图,将优秀块及不及格块分离.p143
解:
x=[8,14,20,5,3];
explode=[1,0,0,0,1];
pie3(x,explode)
四、阅读程序
(1)写出下列指令运行结果。
P51
A=[1,2;3,4];
B=[-1,-2;2,1];
S=3;
A.*B
A*B
S.*A
S*B
解:
ans=
-1-4
64
ans=
30
5-2
ans=
36
912
ans=
-3-6
63
(2)写出下列指令运行结果。
A=zeros(2,4);
A(:
)=1:
8;
s=[235];
A(s)
Sa=[102030]’
A(s)=Sa
解:
ans=
235
Sa=
10
20
30
A=
120307
10468
(3)下面的函数主要完成什么功能?
functionf=factor(n)
ifn<=1
f=1;
else
f=factor(n-1)*n;
end
解:
功能是利用函数的递归调用,求n!
(4)下面的程序完成功能是什么?
t=0:
pi/50:
4*pi;
y0=exp(-t/3);
y=exp(-t/3).*sin(3*t);
plot(t,y,'-r',t,y0,':
b',t,-y0,':
b')
xlabel(‘\bf\itt’);
ylabel(‘\bf\ity’);
gridon;
解:
在同一个图中绘制两个函数,这两个函数分别是:
y=e(-t/3)
y0=e(-t/3)*sin(3t)
其中y是用红色的细实线,而y0是用兰色的虚线绘制,t的区间是(0:
4),
t的步长为/50,t轴和y轴分别用斜粗题指示,图中有网格表示。
(5)写出下列指令运行结果。
ch=‘ABc123d4e56Fg9’;
subch=ch(1:
5)
revch=ch(end:
-1:
1)
k=find(ch>=‘a’&ch<=‘z’);
ch(k)=ch(k)-(‘a’-‘A’);
char(ch)
解:
结果为ABC123D4E56FG9
(6)s1=0;s2=0;n1=0;n2=0
x=[1,-4,-8,3,10,-9,7,-3,10,8,-5,-2,2,0];
m=length(x);
fori=1:
m
ifx(i)<0
s1=s1+x(i);
n1=n1+1;
else
s2=s2+x(i);
n2=n2+1;
end
end
s1,n1,s2,n2,m
s1=-31;n1=6;s2=41;n2=8;m=14.
1与其他计算机语言相比较,MATLAB语言突出的特点是什么?
MATLAB具有功能强大、使用方便、输入简捷、库函数丰富、开放性强等特点。
1.2MATLAB系统由那些部分组成?
MATLAB系统主要由开发环境、MATLAB数学函数库、MATLAB语言、图形功能和应用程序接口五个部分组成。
二、编程题(32分)
4、编写程序实现f(n)=f(n-1)+f(n-2)(f
(1)=1和f
(2)=2)函数。
(6分)
functionf=fab(n)
if(n==1)
f=1;
elseif(n==2)
f=2;
else
f=fab(n-1)+fab(n-2);
end
1,计算
与
的数组乘积。
>>a=[693;275];
>>b=[241;468];
>>a.*b
ans=
12363
84240
2,对于
,如果
,
,求解X。
>>A=[492;764;357];
>>B=[372628]’;
>>X=A\B
X=
-0.5118
4.0427
1.3318
3,已知:
,分别计算a的数组平方和矩阵平方,并观察其结果。
>>a=[123;456;789];
>>a.^2
ans=
149
162536
496481
>>a^2
ans=
303642
668196
102126150
4,角度
,求x的正弦、余弦、正切和余切。
>>x=[304560];
>>x1=x/180*pi;
>>sin(x1)
ans=
0.50000.70710.8660
>>cos(x1)
ans=
0.86600.70710.5000
>>tan(x1)
ans=
0.57741.00001.7321
>>cot(x1)
ans=
1.73211.00000.5774
5,将矩阵
、
和
组合成两个新矩阵:
(1)组合成一个43的矩阵,第一列为按列顺序排列的a矩阵元素,第二列为按列顺序排列的b矩阵元素,第三列为按列顺序排列的c矩阵元素,即
(2)按照a、b、c的列顺序组合成一个行矢量,即
>>a=[42;57];
>>b=[71;83];
>>c=[59;62];
%
(1)
>>d=[a(:
)b(:
)c(:
)]
d=
475
586
219
732
%
(2)
>>e=[a(:
);b(:
);c(:
)]'
e=
452778135692
或利用
(1)中产生的d
>>e=reshape(d,1,12)
ans=
452778135692
6,将(x-6)(x-3)(x-8)展开为系数多项式的形式。
>>a=[638];
>>pa=poly(a);
>>ppa=poly2sym(pa)
ppa=
x^3-17*x^2+90*x-144
7,求解多项式x3-7x2+2x+40的根。
>>r=[1-7240];
>>p=roots(r);
-0.2151
0.4459
0.7949
0.2707
8,求解在x=8时多项式(x-1)(x-2)(x-3)(x-4)的值。
>>p=poly([1234]);
>>polyvalm(p,8)
ans=
840
9,计算多项式
的微分和积分。
>>p=[4–12–145];
>>pder=polyder(p);
>>pders=poly2sym(pder)
>>pint=polyint(p);
>>pints=poly2sym(pint)
pders=
12*x^2-24*x-14
pints=
x^4-4*x^3-7*x^2+5*x
10,解方程组
。
>>a=[290;3411;226];
>>b=[1366]';
>>x=a\b
x=
7.4000
-0.2000
-1.4000
11,求欠定方程组
的最小范数解。
>>a=[2474;9356];
>>b=[85]';
>>x=pinv(a)*b
x=
-0.2151
0.4459
0.7949
0.2707
12,矩阵
,计算a的行列式和逆矩阵。
>>a=[42-6;754;349];
>>ad=det(a)
>>ai=inv(a)
ad=
-64
ai=
-0.45310.6562-0.5937
0.7969-0.84370.9062
-0.20310.1562-0.0937
13y=sin(x),x从0到2,x=0.02,求y的最大值、最小值、均值和标准差。
>>x=0:
0.02*pi:
2*pi;
>>y=sin(x);
>>ymax=max(y)
>>ymin=min(y)
>>ymean=mean(y)
>>ystd=std(y)
ymax=
1
ymin=
-1
ymean=
2.2995e-017
ystd=
0.7071
14,参照课件中例题的方法,计算表达式
的梯度并绘图。
>>v=-2:
0.2:
2;
>>[x,y]=meshgrid(v);
>>z=10*(x.^3-y.^5).*exp(-x.^2-y.^2);
>>[px,py]=gradient(z,.2,.2);
>>contour(x,y,z)
>>holdon
>>quiver(x,y,px,py)
>>holdoff
15,下面三种表示方法有什么不同的含义?
(1)f=3*x^2+5*x+2
(2)f='3*x^2+5*x+2'
(3)x=sym('x')
f=3*x^2+5*x+2
(1)f=3*x^2+5*x+2
表示在给定x时,将3*x^2+5*x+2的数值运算结果赋值给变量f,如果没有给定x则指示错误信息。
(2)f='3*x^2+5*x+2'
表示将字符串'3*x^2+5*x+2'赋值给字符变量f,没有任何计算含义,因此也不对字符串中的内容做任何分析。
(3)x=sym('x')
f=3*x^2+5*x+2
表示x是一个符号变量,因此算式f=3*x^2+5*x+2就具有了符号函数的意义,f也自然成为符号变量了。
16,用符号函数法求解方程at2+b*t+c=0。
>>r=solve('a*t^2+b*t+c=0','t')
r=
[1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[1/2/a*(-b-(b^2-4*a*c)^(1/2))]
17,用符号计算验证三角等式:
(应用syms,simple)
sin
(1)cos
(2)-cos
(1)sin
(2)=sin(1-2)
>>symsphi1phi2;
>>y=simple(sin(phi1)*cos(phi2)-cos(phi1)*sin(phi2))
y=
sin(phi1-phi2)
18,求矩阵
的行列式值、逆和特征根。
>>symsa11a12a21a22;
>>A=[a11,a12;a21,a22]
>>AD=det(A)%行列式
>>AI=inv(A)%逆
>>AE=eig(A)%特征值
A=
[a11,a12]
[a21,a22]
AD=
a11*a22-a12*a21
AI=
[-a22/(-a11*a22+a12*a21),a12/(-a11*a22+a12*a21)]
[a21/(-a11*a22+a12*a21),-a11/(-a11*a22+a12*a21)]
AE=
[1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)]
[1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)]
19,因式分解:
>>symsx;
>>f=x^4-5*x^3+5*x^2+5*x-6;
>>factor(f)
ans=
(x-1)*(x-2)*(x-3)*(x+1)
20,
,用符号微分求df/dx。
(应用syms,diff)
>>symsax;
>>f=[a,x^2,1/x;exp(a*x),log(x),sin(x)];
>>df=diff(f)
df=
[0,2*x,-1/x^2]
[a*exp(a*x),1/x,cos(x)]
26,x=[6649715638],绘制饼图,并将第五个切块分离出来。
>>x=[6649715638];
>>L=[00001];
>>pie(x,L)
28,有一周期为4的正弦波上叠加了方差为0.1的正态分布的随机噪声的信号,用循环结构编制一个三点线性滑动平均的程序。
(提示:
①用0.1*randn(1,n)产生方差为0.1的正态分布的随机噪声;②三点线性滑动平均就是依次取每三个相邻数的平均值作为新的数据,如x1
(2)=(x
(1)+x
(2)+x(3))/3,x1(3)=(x
(2)+x(3)+x(4))/3……)
t=0:
pi/50:
4*pi;
n=length(t);
y=sin(t)+0.1*randn(1,n);
ya
(1)=y
(1);
fori=2:
n-1
ya(i)=sum(y(i-1:
i+1))/3;
end
ya(n)=y(n);
plot(t,y,'c',t,ya,'r','linewidth',2)
29,编制一个解数论问题的函数文件:
取任意整数,若是偶数,则用2除,否则乘3加1,重复此过程,直到整数变为1。
functionc=collatz(n)
%collatz
%Classic“3n+1”Ploblemfromnumbertheory
c=n;
whilen>1
ifrem(n,2)==0
n=n/2;
else
n=3*n+1;
end
c=[cn];
end
3.求下列联立方程的解
>>a=[34-7-12;5-742;108-5;-65-210];
>>b=[4;4;9;4];
>>c=a\b
4.设
,
,求C1=A*B’;C2=A’*B;C3=A.*B,并求上述所有方阵的逆阵。
>>A=[14813;-36-5-9;2-7-12-8];
>>B=[543-2;6-23-8;-13-97];
>>C1=A*B'
>>C2=A'*B
>>C3=A.*B
>>inv(C1)
>>inv(C2)
>>inv(C3)
5.设
,把x=0~2π间分为101点,画出以x为横坐标,y为纵坐标的曲线。
>>x=linspace(0,2*pi,101);
>>y=cos(x)*(0.5+(1+x.^2)\3*sin(x));
>>plot(x,y,'r')
6.产生8×6阶的正态分布随机数矩阵R1,求其各列的平均值和均方差。
并求该矩阵全体数的平均值和均方差。
(meanvar)
a=randn(8,6)
mean(a)
var(a)
k=mean(a)
k1=mean(k)
i=ones(8,6)
i1=i*k1
i2=a-i1
i3=i2.*i2
g=mean(i3)
g2=mean(g)
或者
u=reshape(a,1,48);
p1=mean(u)
p2=var(u)
7.设x=rcost+3t,y=rsint+3,分别令r=2,3,4,画出参数t=0~10区间生成的x~y曲线。
>>t=linspace(0,10);
>>r1=2;
>>x1=(r1*cos(t)+3*t);
>>y1=r1*sin(t)+3;
>>r2=3;
>>x2=(r2*cos(t)+3*t);
>>y2=r2*sin(t)+3;
>>r3=4;
>>x3=(r3*cos(t)+3*t);
>>y3=r3*sin(t)+3;
>>plot(x1,y1,'r',x2,y2,'b',x3,y3,'m')
8.设f(x)=x5-4x4+3x2-2x+6
(1)在x=[-2,8]之间取100个点,画出曲线,看它有几个过零点。
(提示:
用polyval函数)
>>x=linspace(2,8,100);
>>y=polyval([10-43-26],x);
>>plot(x,y,'b',x,0,'y')
(2)用roots函数求此多项式的根。
t=[10-43-26]
p=roots(t)
3、下列变量中的最大数是(C),最小的是(D)
A.epsB.realminC.realmaxD.-pi
4、在MATLAB的若干通用操作指令中,清除内存中的变量的是(A)
A.clearB.claC.clfD.clc
5、下列表示可以作为MATLAB的变量的是(DF)
A.abcd-2B.xyz_2#C.@hD.X_1_aE.forF.for1
6、在Matlab中变量是不区分大小写的(B)
A。
正确,B。
不正确
7、在Matlab中末尾续行的符号是…;注释的符号是%;强行中止Matlab执行的组合键是ctrl+c。
8、x=-2.6,y1=fix(x),y2=floor(x),y3=ceil(x),y4=round(x)中结果分别是多少
y1=-2y2=-3y3=-2y4=-3
2.9、分别建立3×3、3×2和与矩阵A同