数学2用MATLAB绘制二维三维图形(lq).

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

用matlab绘制二维、三维图形2.1二维图形的绘制2.1.1二维绘图的基本命令matlab中,最常用的二维绘图命令是plot。使用该命令,软件将开辟一个图形窗口,并画出连接坐标面上一系列点的连线。格式:plot(x,y,'颜色+线型+点型',...)1)当(x,y)是一坐标点时,则在相应位置画出一个点,用法:plot(x,y,'r*')%在(x,y)处画一个红色的*点。2)当(x,y)为一点列时(x1,y1),(x2,y2),...,(xn,yn)时,则画出顺次连接这些点的曲线。用法:plot(x,y)%画出连接点列的蓝色实心线(默认)plot(x,y,'r--')%画出连接点列的红色虚线。其中,点线的颜色代码与线型代码表2-1颜色代码表表2-2点型和线型代码3)使用subplot(m,n,k)实现一个区域中显示m×n个子图形窗口,并指定在第k个子窗口绘图;此时可以对该窗口进行个性描述,如对坐标重置、对线条加粗、加说明等。4)使用holdon命令实现同一窗口中多次绘制图形,用holdoff取消。例2-1在子图形窗口中画出[0,2π]上正弦曲线和余弦曲线。x=0:0.1*pi:2*pi;y=sin(x);z=cos(x);subplot(2,1,1)plot(x,y,x,z)subplot(2,1,2)plot(x,y,'k:',x,z,'r-')holdon%在第二个子图上二次绘图。plot(x,y,'bo',x,z,'k+')holdoff2.1.2图形的标识与修饰使用grid命令对图形窗口加坐标网格使用linewidth和markersize命令实现图形中线宽和点型大小的设置。格式:plot(x,y,'b*-',x,y,'linewidth',5,'markersize',10)其中,数值5和10分别为线型和点型的大小,默认值为1.使用axis命令实现坐标轴的重新设置格式:axis([xminxmaxyminymax])使用titlexlabelylabelzlabeltext实现对文字的说明。以上命令在绘图是经常用到的,参看以下实验。例2-2画出[0,2pi]上正弦、余弦曲线对线型加粗、点型加大,重新设定坐标系以及加注相关说明和注释。x=0:0.1*pi:2*pi;y=sin(x);z=cos(x);plot(x,y,'b-',x,z,'k.-','linewidth',3,'markersize',15)axis([-0.2*pi2.2*pi-1.21.2])%重置坐标范围gridxlabel('variable\it{x}')%标记横坐标,\it{x}表示x斜体ylabel('variable\it{y}')%标记纵坐标轴title('sineandcosinecruves')%标记图名text(2.5,0.7,'sin(x)')%在(2.5,0.7)的位置标记曲线名称text(1.5,0.1,'cos(x)')%在(1.5,0.1)的位置标记曲线名称现在要在坐标系中画出连接[0,0]到[2pi,0]的直线且用红色,作为x轴。则输入如下命令:holdon%图形保持,在同一图形窗口中叠加图形plot([0,2*pi],[0,0],'r-.','linewidth',5)%叠加一条红色点化线,作为x轴holdoff%图形保持取消,再画图时将另辟窗口fill命令和polar命令使用fill(x,y)命令实现对闭合图形的填充;使用polar(theta,rho)命令进行极坐标绘图例2-3在图形窗口画出填充一个正方形h1=figure;%打开第一个图形窗口,返回其图标识号(句柄)h1x=[01100];%闭合图形的顶点横坐标y=[00110];%闭合图形的顶点纵坐标fill(x,y,'y')%填充闭合图形(用黄色)axis([-12-12])%重新设置坐标例:在图形窗口极坐标方程r=2sin2θ*cos2θ的图形h2=figure;%打开第二个图形窗口theta=linspace(0,2*pi);%linspace()函数等分角,默认100等分rho=sin(2*theta).*cos(2*theta);%生成相应极坐标方程的极径rho向量polar(theta,rho,‘r’)%绘制相应的极坐标方程图形title(‘polarplot’)%添加标题如果想对第二个图形加粗的话,可以用如下命令set(h2,'linewidth',3)bar命令和stairs命令使用bar(x,y)命令实现绘制直方图;使用stairs(x,y)命令实现绘制阶梯图。例2-4在[-2.5,2.5]上画出函数y=e-x^2的直方图和阶梯图。x=linspace(-2.5,2.5,20);y=exp(-x.*x);h1=subplot(1,2,1);%分图形窗口并在第一个子窗口中绘图,返回其句柄h1bar(x,y)%画直方图title('barcharofabellcurve')h2=subplot(1,2,2);%分图形窗口并在第二个子窗口中绘图,返回其句柄h2stairs(x,y)%画阶梯图title('stairplotofabellcurve')例2-5采用不同形式(直角坐标、参数、极坐标),画出单位圆x2+y2=1的图形。分析:对于直角坐标系方程,y=,对于参数方程x=cost,y=sint,t,利用plot(x,y)命令可以实现。而在极坐标系中单位圆为r=1(1+0t),利用polar(t,r)命令实现。21x]2,0[pi1)直角坐标系x=-1:0.01:1;y1=sqrt(1-x.^2);y2=-y1;plot(x,y1,x,y2)axisequal%让坐标系中两坐标轴相同1)直角坐标系x=-1:0.01:1;y1=sqrt(1-x.^2);y2=-y1;plot(x,y1,’r’,x,y2,’r’)axisequal%让坐标系中两坐标轴相同2)参数方程t=linspace(0,2*pi)x=cos(t);y=sin(t);plot(x,y);axisequal3)极坐标系t=linspace(0,2*pi);r=1+0*t;或r=ones(1,100)%不可写成r=1,因为必须是向量才行。polar(t,r)2.2.1三维曲线的绘制(plot3命令)plot3是二维绘图命令plot的推广,其使用方法和功能基本相同。格式:plot3(x,y,z,'颜色+线型+点型',...)当(x,y,z)是一个坐标时,则在空间相应位置画出一个点。用法:plot3(x,y,z,'r*')当(x,y,z)是点列时,则画出依次连接这些点的曲线。用法:plot3(x,y,z,'r--')%红色实线其中,曲线的颜色和线型取值同前表。例2-6画出螺旋线,x=sin(t),y=cos(t),z=t,t,上的一段曲线。t=0:pi/50:10*pi;x=sin(t);y=cos(t);z=t;plot3(x,y,z,'g-','linewidth',3)grid]10,0[pi2.2.2三维曲面的绘制(mesh、surf命令)对于二元函数z=f(x,y),设其定义域为[a,b]×[c,d],则其几何图形为空间坐标系中一片曲面,该曲面的投影域即为函数的定义域,使用mesh、surf等命令可以绘制出相应曲面。格式:mesh(x,y,z)%绘制网格曲面surf(x,y,z)%绘制光滑曲面其中,x、y分别为投影域上网格划分节点处对应的横坐标矩阵和纵坐标矩阵,可由meshgrid命令生成;z为与投影域上网格划分节点(x,y)对应的函数值(坐标z)矩阵。具体步骤:1)对投影域进行划分:x=a:p1:by=c:p2:d2)按上述划分生成投影域上全部网格节点的坐标矩阵。[X,Y]=meshgrid(x,y)3)根据函数表达式生成全部网格节点出对应的函数值矩阵z:z=f(X,Y)4)顺序连接已经产生的空间点(x,y,z)绘制相应曲面:mesh(X,Y,Z)surf(X,Y,Z)shadingflat%去除网格线。例2-7画出矩形域[-1,1]×[-1,1]旋转抛物面:z=x2+y2.x=linspace(-1,1,100);y=x;[X,Y]=meshgrid(x,y);%生成矩形区[-1,1]×[-1,1]的网格坐标矩阵Z=X.^2+Y.^2;subplot(1,2,1)mesh(X,Y,Z);subplot(1,2,2)surf(X,Y,Z);shadingflat;%对曲面z=x2+y2平滑并除去网格未进行ShadingflatShadingFlat之后2.8在圆形域x2+y2≦1上绘制旋转抛物面:z=x2+y2.x=linspace(-1,1,300);y=x;[X,Y]=meshgrid(x,y);%生成矩形域[-1,1]×[-1,1]网格节点坐标矩阵Z=X.^2+Y.^2;i=find(Z1);%找出圆域x2+y2≦1之外的函数值坐标点iZ(i)=NaN;%对圆域x2+y2≦1之外的坐标点i处函数值进行“赋空”subplot(1,2,1)mesh(X,Y,Z);%网格曲面subplot(1,2,2)surf(X,Y,Z);%光滑曲面shadingflat;注:find的用方法find(A)返回矩阵A中非零元素所在位置A=[104-300086];X=find(A)X=13489find(A5)返回矩阵A中大于5的元素所在位置find(A5)ans=89[i,j,v]=find(A)返回矩阵A中非零元素所在的行i,列j,和元素的值v(按所在位置先后顺序输出)A=[320;-507;001];[i,j,v]=find(A)i=12123j=11233v=3-52712.2.3特殊图形和简易绘图命令1.几个特殊的空间曲面:peaks(山峰),sphere,cylinder,它们的使用方法及结果如下:1).[x,y,z]=peaks;surf(x,y,z)2).[x,y,z]=sphere;surf(x,y,z)3).[x,y,z]=cylinder;surf(x,y,z)-1-0.500.51-1-0.500.5100.20.40.60.812、对于给定的符号函数f(x)或表达式F(x,y),可方便地利用ezplot命令画出f(x)的曲线图以及用方程F(x,y)确定的隐函数y=y(x)的图形。格式如下:ezplot('x*exp(-x^2)',[-1,1])%在[-1,1]上画z=xe-x2的图形ezplot('x^2/9+y^2-1',[-4,4,-4,4])%在正方形区域上画椭圆的图形。应用举例例如2-9画出在上的图形。x=-7.5:0.5:7.5;y=x;[X,Y]=meshgrid(x,y);u=sqrt(X.^2+Y.^2)+eps;%加eps使得u不等于0。Z=sin(u)./u;surf(X,Y,Z)2222sinyxyxz5.7||,5.7||yxeps在matalab中叫做“浮点零”,也叫是matalab中的零值。用特殊的MATLAB数eps来代替在一个数组中的零元素,eps近似为2.2e-16。不是最小的数,而是系统能准确表示的浮点数的精度。更准确的说,就是浮点数1.0和相邻的下一个系统能表示出的浮点数之间的差。小节1.plot函数主要功能是用于绘制显式y=f(x)与参数式x=x(t),y=y(t)平面曲线。2.ezplot函数主要功能是用于绘制隐式函数的f(x,y)=0曲

1 / 52
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功