1第5章数据和函数的可视化习题5及解答1已知椭圆的长、短轴2,4ba,用“小红点线”画椭圆tbytaxsincos。(参见图p5-1)〖解答〗clfa=4;b=2;t=0:pi/80:2*pi;x=a*cos(t);y=b*sin(t);plot(x,y,'r.','MarkerSize',15)axisequalxlabel('x')ylabel('y')shg-4-3-2-101234-3-2-10123xy图p5-12根据表达式cos1绘制如图p5-2的心脏线。(提示:采用极坐标绘线指令polar)〖解答〗clftheta=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')%采用特殊字符映射20.511.523021060240902701203001503301800=1-cos图p5-23A,B,C三个城市上半年每个月的国民生产总值如见表p5.1。试画出如图p5-3所示的三城市上半年每月生产总值的累计直方图。表p5.1各城市生产总值数据(单位:亿元)城市1月2月3月4月5月6月A170120180200190220B120100110180170180C70508010095120〖目的〗借助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])shgxYAYBYC1170120702120100503180110804200180100519017095622018012031234560100200300400500600ABC图p5-34二阶线性系统的归一化(即令1n)冲激响应可表示为:111021)sin(1)()()(tttteetetety,其中|1|2,为阻尼系数。(1)希望在同一张图上,绘制]18,0[t区间内4.1:2.0:2.0不同取值时的各条曲线(参见图p5-4)。在此图上,1的各条曲线为细蓝线;1为粗黑线;1为细红线;并且对最上方及最下方的两条曲线给出2.0和4.1的醒目标志。(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);holdonfork=1:Lzk=zeta(k);beta=sqrt(abs(1-zk^2));ifzk1y=1/beta*exp(-zk*t).*sin(beta*t);plot(t,y,'b')ifzk0.4text(2.2,0.63,'\zeta=0.2')endelseifzk==1y=t.*exp(-t);plot(t,y,'k','LineWidth',2)elsey=(exp(-(zk-beta)*t)-exp(-(zk+beta)*t))/(2*beta);4plot(t,y,'r')ifzk1.2text(0.3,0.14,'\zeta=1.4')endendendtext(10,0.7,'\Delta\zeta=0.2')axis([0,18,-0.4,0.8])holdoffboxongridon024681012141618-0.4-0.200.20.40.60.8=0.2=1.4=0.2图p5-45用绿实线绘制)sin(tx,)cos(ty,tz的三维曲线,曲线如图p5-5所示。(提示:使用plot3指令)〖解答〗t=(0:0.01:4)*pi;x=sin(t);y=cos(t);z=t;plot3(x,y,z,'-b.','linewidth',3)boxon5-1-0.500.51-1-0.500.51051015图p5-5〖解答〗不管是平面曲线,还是三维立体曲线,它们的描述函数中只有一个自由变量。6在区域]3,3[,yx,绘制224yxxez的如图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)hiddenoffaxis([-3,3,-3,3,-2,2])6图p5-67在]4,4[,yx区间里,根据表达式yxyxz)sin(,绘制如图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)shadinginterpview([27,30])%视角控制xlabel('x'),ylabel('y'),zlabel('z')title('z=sin(x+y)/(x+y)')7图p5.78试用图解法回答:(1)方程组0))cos(sin(1.0)1(22yxyxy有多少个实数解?(2)求出离0,0yx最近、且满足该方程组的一个近似解。〖解答一〗若记))cos(sin(),(1.0)1(),(2221yxyxfyxyyxf,那么使用ezplot可以先后绘制出0),(1yxf和0),(2yxf的曲线,而这两个函数对应曲线的交点就是方程组的解。(1)绘制曲线clfezplot('y/(1+x^2+y^2)-0.1',[-2*pi,2*pi,-pi/2,7/2*pi])holdonezplot('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))''')holdoffgridon8-6-4-202460246810xyCRROS-POINTSOF'y/(1+x2+y2)-0.1'AND'sin(x+cos(y))'图p5-8-1由图可知:方程组有6个实数解。(2)对图形(x=0,y=0)附近局部放大,然后找交点位置。[x0,y0]=ginput(4)x0=-0.9801-0.9801-0.9801-0.9801y0=0.20050.20050.20050.2005-1.6-1.4-1.2-1-0.8-0.6-0.4-0.20-0.200.20.40.60.8xyCRROS-POINTSOF'y/(1+x2+y2)-0.1'AND'sin(x+cos(y))'9图p5-8-2(3)取平均,得近似解x00=mean(x0)y00=mean(y0)x00=-0.9801y00=0.2005(4)验算y00/(1+x00^2+y00^2)ans=0.1002sin(x00+cos(y00))ans=-1.4841e-0049制作如文件prob509.p运行时那样的色图变幻。〖解答〗functionprob_solve509clearallclf[X,Y,Z]=sphere(40);colormap(jet)surf(X,Y,Z)axisoffaxisequalshadinginterplight('position',[0-101.5],'style','infinite')lightingphongmaterialshinylight;lightingflatset(gcf,'Color','w')view([-160,30])shgC=jet;CC=[C;flipud(C)];colormap(CC)disp('按任意键,观察色图变幻。')pausespinmap(40,8)10图p5-910在]4,0[区间内,根据)24sin(),(2.0xtextyx,通过图形曲线表现“行波”。做题前,请先运行prob510.p文件,观察演示。图p5-10〖解答〗functionprob510%prob510.mclearallclf,shgd=0.05;%控制运动速度(0.01——0.5)n=200;x=[0:pi/30:4*pi];%供画曲线用的横坐标axis([-0.2,4*pi,-1,1]),axisoff,11pause(0.1)%足够迟延似乎不可缺。否则可能图形有误。fortt=0:n%决定画曲线的时刻a=tt*pi/24-x;%小于0的元素,表示“波”尚未传到an=find(a0);y=exp(-0.2.*x).*sin(tt*pi/24-x);y(1,an)=0;%尚未受“波”影响处置零iftt==0h1=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');elseset(h1,'xdata',x(1),'ydata',y(1))set(h2,'xdata',x,'ydata',y)endpause(d)end11利用影片动画法,据函数)sin()sin(),(txtxf制作驻波动画。在做题前,先运行prob511.p产生的演示动画。图p5-11functionprob511HF=figure(1);clfset(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])%横坐标向两侧外置,是为了使固定点“抓拍”得完整axisofffork=1:ntifk==1h1=line(x,f(:,k),'Color','b','Linewidth',3,'EraseMode','background');h2=line(x0,y0,'Color','r','LineStyle','none','Marker','.',