MATLAB教程2012a第5章习题解答-张志涌.doc
《MATLAB教程2012a第5章习题解答-张志涌.doc》由会员分享,可在线阅读,更多相关《MATLAB教程2012a第5章习题解答-张志涌.doc(13页珍藏版)》请在冰豆网上搜索。
第5章数据和函数的可视化
习题5及解答
1已知椭圆的长、短轴,用“小红点线”画椭圆。
(参见图p5-1)
l
〖解答〗
clf
a=4;b=2;
t=0:
pi/80:
2*pi;
x=a*cos(t);
y=b*sin(t);
plot(x,y,'r.','MarkerSize',15)
axisequal
xlabel('x')
ylabel('y')
shg
图p5-1
2根据表达式绘制如图p5-2的心脏线。
(提示:
采用极坐标绘线指令polar)
〖解答〗
clf
theta=0:
pi/50:
2*pi;
rho=1-cos(theta);
h=polar(theta,rho,'-r'); %极坐标绘线指令。
h是所画线的图柄。
set(h,'LineWidth',4) %利用set设置h图形对象的“线宽”
axissquare %保证坐标的圆整性
title('\rho=1-cos\theta') %采用特殊字符映射
图p5-2
3A,B,C三个城市上半年每个月的国民生产总值如见表p5.1。
试画出如图p5-3所示的三城市上半年每月生产总值的累计直方图。
表p5.1各城市生产总值数据(单位:
亿元)
城市
1月
2月
3月
4月
5月
6月
A
170
120
180
200
190
220
B
120
100
110
180
170
180
C
70
50
80
100
95
120
〖目的〗
l借助MATLAB的帮助系统,学习直方图指令polar的使用。
lbar指令常用格式之一:
bar(x,Y,'style')。
x是自变量列向量;Y是与x行数相同的矩阵,Y的每一行被作为“一组”数据;style取stacked时,同一组数据中每个元素对应的直方条被相互层叠。
l在本例中,Y中的一列代表一个城市。
绘图时,各列的颜色,取自“色图”;图形窗的默认色图是jet。
〖解答〗
x=(1:
6)';
Y=[170,120,180,200,190,220;120,100,110,180,170,180;70,50,80,100,95,120]';
%以下两条指令是为了让读者看清x,Y中对应数据关系而写的。
它们不影响画图。
disp([blanks(5),'x',blanks(4),'YA',blanks(4),'YB',blanks(4),'YC'])
disp([x,Y])
%
bar(x,Y,'stacked'); %层叠直方条
colormap(cool); %采用cool色图
legend('A','B','C',2); %该指令的第4个输入量,用来控制图例的位置。
axis([0,7,0,600])
shg
xYAYBYC
117012070
212010050
318011080
4200180100
519017095
6220180120
图p5-3
4二阶线性系统的归一化(即令)冲激响应可表示为:
,
其中,为阻尼系数。
(1)希望在同一张图上,绘制区间内不同取值时的各条曲线(参见图p5-4)。
在此图上,的各条曲线为细蓝线;为粗黑线;为细红线;并且对最上方及最下方的两条曲线给出和的醒目标志。
(2)读者运行题下程序exmp504.m,可以发现该程序画出的曲线中没有“粗黑线”。
你能讲出原因吗?
如何对exmp504.m作最少的修改(比如只改一条指令),就可画出所需图形。
(提示:
该题深层次地暴露数值计算可能存在的隐患。
)
〖解答〗
clc,clf,clear;
t=(0:
0.05:
18)';N=length(t);
zeta=0.2:
0.2:
1.4;%可能画不出黑线。
<3>
%zeta=linspace(0.2,1.4,7);
L=length(zeta);
y=zeros(N,L);
holdon
fork=1:
L
zk=zeta(k);
beta=sqrt(abs(1-zk^2));
ifzk<1
y=1/beta*exp(-zk*t).*sin(beta*t);
plot(t,y,'b')
ifzk<0.4
text(2.2,0.63,'\zeta=0.2')
end
elseifzk==1
y=t.*exp(-t);
plot(t,y,'k','LineWidth',2)
else
y=(exp(-(zk-beta)*t)-exp(-(zk+beta)*t))/(2*beta);
plot(t,y,'r')
ifzk>1.2
text(0.3,0.14,'\zeta=1.4')
end
end
end
text(10,0.7,'\Delta\zeta=0.2')
axis([0,18,-0.4,0.8])
holdoff
boxon
gridon
图p5-4
5用绿实线绘制,,的三维曲线,曲线如图p5-5所示。
(提示:
使用plot3指令)
〖解答〗
t=(0:
0.01:
4)*pi;
x=sin(t);
y=cos(t);
z=t;
plot3(x,y,z,'-b.','linewidth',3)
boxon
图p5-5
〖解答〗
l不管是平面曲线,还是三维立体曲线,它们的描述函数中只有一个自由变量。
6在区域,绘制的如图p5-6的三维(透视)网格曲面。
〖解答〗
x=-3:
0.1:
3;
y=x;
[X,Y]=meshgrid(x,y);
Z=4*X.*exp(-X.^2-Y.^2);
mesh(X,Y,Z)
hiddenoff
axis([-3,3,-3,3,-2,2])
图p5-6
7在区间里,根据表达式,绘制如图p5-7所示的曲面。
〖解答〗
x=-4*pi:
pi/10:
4*pi;
y=x;
[X,Y]=meshgrid(x,y);
Q=X+Y;
Q=Q+(Q==0)*eps; %这保证:
Q中不包含NaN,图形不产生裂缝
Z=sin(Q)./Q;
surf(X,Y,Z)
shadinginterp
view([27,30]) %视角控制
xlabel('x'),ylabel('y'),zlabel('z')
title('z=sin(x+y)/(x+y)')
图p5.7
8试用图解法回答:
(1)方程组有多少个实数解?
(2)求出离最近、且满足该方程组的一个近似解。
〖解答一〗
若记,那么使用ezplot可以先后绘制出和的曲线,而这两个函数对应曲线的交点就是方程组的解。
(1)绘制曲线
clf
ezplot('y/(1+x^2+y^2)-0.1',[-2*pi,2*pi,-pi/2,7/2*pi])
holdon
ezplot('sin(x+cos(y))',[-2*pi,2*pi,-pi/2,7/2*pi])
title('CRROS-POINTSOF''y/(1+x^2+y^2)-0.1''AND''sin(x+cos(y))''')
holdoff
gridon
图p5-8-1
由图可知:
方程组有6个实数解。
(2)对图形(x=0,y=0)附近局部放大,然后找交点位置。
[x0,y0]=ginput(4)
x0=
-0.9801
-0.9801
-0.9801
-0.9801
y0=
0.2005
0.2005
0.2005
0.2005
图p5-8-2
(3)取平均,得近似解
x00=mean(x0)
y00=mean(y0)
x00=
-0.9801
y00=
0.2005
(4)验算
y00/(1+x00^2+y00^2)
ans=
0.1002
sin(x00+cos(y00))
ans=
-1.4841e-004
9制作如文件prob509.p运行时那样的色图变幻。
〖解答〗
functionprob_solve509
clearall
clf
[X,Y,Z]=sphere(40);
colormap(jet)
surf(X,Y,Z)
axisoff
axisequal
shadinginterp
light('position',[0-101.5],'style','infinite')
lightingphong
materialshiny
light;
lightingflat
set(gcf,'Color','w')
view([-160,30])
shg
C=jet;
CC=[C;flipud(C)];
colormap(CC)
disp('按任意键,观察色图变幻。
')
pause
spinmap(40,8)
图p5-9
10在区间内,根据,通过图形曲线表现“行波”。
做题前,请先运行prob510.p文件,观察演示。
图p5-10
〖解答〗
functionprob510
%prob510.m
clearall
clf,shg
d=0.05; %控制运动速度(0.01——0.5)
n=200;
x=[0:
pi/30:
4*pi]; %供画曲线用的横坐标
axis([-0.2,4*pi,-1,1]),axisoff,
pause(0.1) %足够迟延似乎不可缺。
否则可能图形有误。
fortt=0:
n %决定画曲线的时刻
a=tt*pi/24-x; %小于0的元素,表示“波”尚未传到
an=find(a<0);
y=exp(-0.2.*x).*sin(tt*pi/24-x);
y(1,an)=0; %尚未受“波”影响处置零
iftt==0
h1=line('Xdata',x
(1),'Ydata',y
(1),'Marker','d','Color','b','Markersize',20,'MarkerFaceColor','b','EraseMode','xor');
h2=line(x,y,'linewidth',3,'EraseMode','xor');
else
set(h1,'xdata',x
(1),'ydata',y
(1))
set(h2,'xdata',x,'ydata',y)
end
pause(d)
end
11利用影片动画法,据函数制作驻波动画。
在做题前,先运行prob511.p产生的演示动画。
图p5-11
f