MATLAB教程a第5章习题解答张志涌.docx

上传人:b****5 文档编号:8279980 上传时间:2023-01-30 格式:DOCX 页数:17 大小:478.96KB
下载 相关 举报
MATLAB教程a第5章习题解答张志涌.docx_第1页
第1页 / 共17页
MATLAB教程a第5章习题解答张志涌.docx_第2页
第2页 / 共17页
MATLAB教程a第5章习题解答张志涌.docx_第3页
第3页 / 共17页
MATLAB教程a第5章习题解答张志涌.docx_第4页
第4页 / 共17页
MATLAB教程a第5章习题解答张志涌.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

MATLAB教程a第5章习题解答张志涌.docx

《MATLAB教程a第5章习题解答张志涌.docx》由会员分享,可在线阅读,更多相关《MATLAB教程a第5章习题解答张志涌.docx(17页珍藏版)》请在冰豆网上搜索。

MATLAB教程a第5章习题解答张志涌.docx

MATLAB教程a第5章习题解答张志涌

MATLAB教程2012a第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

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1