MATLAB教程a第5章习题解答张志涌.docx
- 文档编号:24279078
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:19
- 大小:482.29KB
MATLAB教程a第5章习题解答张志涌.docx
《MATLAB教程a第5章习题解答张志涌.docx》由会员分享,可在线阅读,更多相关《MATLAB教程a第5章习题解答张志涌.docx(19页珍藏版)》请在冰豆网上搜索。
MATLAB教程a第5章习题解答张志涌
第5章数据和函数的可视化
习题5及解答
11已知椭圆的长、短轴
,用“小红点线”画椭圆
。
(参见图p5-1)
●
〖解答〗
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
12根据表达式
绘制如图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
13A,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
〖目的〗
●借助MATLAB的帮助系统,学习直方图指令polar的使用。
●bar指令常用格式之一:
bar(x,Y,'style')。
x是自变量列向量;Y是与x行数相同的矩阵,Y的每一行被作为“一组”数据;style取stacked时,同一组数据中每个元素对应的直方条被相互层叠。
●在本例中,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
14二阶线性系统的归一化(即令
)冲激响应可表示为:
,
其中
,
为阻尼系数。
(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
15用绿实线绘制
,
,
的三维曲线,曲线如图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
〖解答〗
●不管是平面曲线,还是三维立体曲线,它们的描述函数中只有一个自由变量。
16在区域
,绘制
的如图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
17在
区间里,根据表达式
,绘制如图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
18试用图解法回答:
(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
19制作如文件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
110在
区间内,根据
,通过图形曲线表现“行波”。
做题前,请先运行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
111利用影片动画法,据函数
制作驻波动画。
在做题前,先运行prob511.p产生的演示动画。
图p5-11
functionprob511
HF=figure
(1);clf
set(gca,'Visible','off')
x=(0:
pi/12:
3*pi)';
ax=sin(x);
N=30;
t=linspace(0,2*pi,N);
nt=length(t);
bt=sin(t);
f=ax*bt;
x0=[0,pi,2*pi,3*pi];
y0=zeros(size(x0));
axis([-0.5,3*pi+0.5,-1.2,1.2])%横坐标向两侧外置,是为了使固定点“抓拍”得完整
axisoff
fork=1:
nt
ifk==1
h1=line(x,f(:
k),'Color','b','Linewidth',3,'EraseMode','background');
h2=line(x0,y0,'Color','r','LineStyle','none','Marker','.','Markersize',40,'EraseMode','background');
else
set(h1,'xdata',x,'ydata',f(:
k))
set(h2,'xdata',x0,'ydata',y0)
end
F(:
k)=getframe;%getframe一定使当前图形窗可视
set(HF,'visible','off')%强迫不可视
pause(0.01)%延长不可视时间,使制作过程闪烁
end
close%完全关闭图形窗。
目的是给人以“阶段感”
axis([0,3*pi,-1.2,1.2]),axisoff
movie(F,10,N)
112编写使红色小球沿三叶线
运动的程序。
具体参见演示程序prob512.p的运行实况。
〖解答〗
%prob_solve512.m
clear,clf
theta=0:
pi/500:
2*pi;
rho=sin(3*theta);
x=rho.*cos(theta);
y=rho.*sin(theta);
shg,axisoffequal
line('xdata',x,'ydata',y,'Color',[0.7,0.7,0.7],'LineWidth',2.5);
h=line('xdata',x
(1),'ydata',y
(1),'Color',[1,0,0],'Marker','.','MarkerSize',40,'EraseMode','xor');
N=length(x);
k=2;
while1
set(h,'xdata',x(k),'ydata',y(k))
pause(0.01)
k=k+1;
ifk>N
break
end
end
图p5-12
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 教程 习题 解答 张志涌