实验三MATLAB的图形功能于分形_第1页
实验三MATLAB的图形功能于分形_第2页
实验三MATLAB的图形功能于分形_第3页
实验三MATLAB的图形功能于分形_第4页
实验三MATLAB的图形功能于分形_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验三 MATLAB的图形功能与分形MATLAB图形窗口二维绘图命令介绍三维绘图命令介绍函数的迭代、混沌与分形一、实验目的熟悉MATLAB软件中关于图形的基本命令,掌握利用MATLAB软件进行函数图形绘制的方法。 在微积分中,我们曾经讨论过一元函数的作图,在空间解析几何中,我们讨论过二次曲面的图形,现在我们尝试用MATLAB软件来解决函数的绘图问题。MATLAB 的图形窗口 MATLAB 的图形窗口专门用于图形显示. 绘图命令将把图形输出到当前窗口,若在命令执行前,当前窗口已经存在图形,则原图形将被新图象覆盖掉。如果想保存原图形和输出新图形,必须创建新的图形窗口。创建图形窗口命令为: figu

2、refigure :按创建的先后顺序命名图形窗口, 如:figure No.1,figure No.2figure(n):创建图形窗口为 figure No.n。 如:figure(100),创建图形窗口 figure No.100Plot(X,Y) 最基本的二维图形命令plot命令自动打开一个图形窗口Figure1原理: 用直线连接相邻两数据点来绘制图形 根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上使用方法:(1) X, Y都是向量,且它们的长度相等;(2)如果X和Y都是维数相同矩阵,按列与列对应绘图例1. x=0:0.1:2*pi; y=cos(x); plot

3、(y) figure, plot(x,y)plot(y): 以y的值为纵坐标,y的下标为横坐标。plot(x,y): 以x为横坐标,以y为纵坐标例2. 绘制函数 y = sin t sin 9t 的图形.t1=(0:11)/11*pi; y1=sin(t1).*sin(9*t1);t2=(0:100)/100*pi; y2=sin(t2).*sin(9*t2);plot(t1,y1,t1,y1,o), figure,plot(t2,y2)同时绘制多条曲线 plot(x1,y1,x2,y2,)例3. 衰减振荡曲线函数: y=e -0.5x sin 5x图形.x=0:0.1:4*pi; y= ex

4、p(-0.5*x) ;y1=y .*sin(5*x);plot(x,y1,x,y,-r,x,-y,-r)plot命令中线型和颜色的使用 格式:plot(x,y,s) 实线(默认值) 虚线. 点划线 : 点连线符号 线型 r 红 g 绿 b 蓝 k 黑c 青 y 黄w 白 m 洋红符 色 符 色其中 s为类型说明参数,它是由线型、颜色或顶点标记组合成的字符串(用单引号括起)绘散点图用顶点标记fplot(function,limits,LineSpec) 在limits指定的范围内绘制function函数的图形. limits是一个矢量, 指定x轴上的范围xmin, xmax, 或者x轴和y轴上的

5、范围xmin xmax ymin ymax. function必须是M文件函数的名称或句柄, 或者含有变量x的字符串. LineSpec指定属性进行绘图. fplot命令的使用f=inline(x.*sin(1./x)fplot(f,-.5,.5,400)f=inline(exp(-.5*x).*sin(5*x) %构造内联函数对象 fplot(f,0,9,r)例4.创建一个M文件myfun, 返回一个两列矩阵.function Y=myfun(x)Y(:,1)=200*sin(x)/x;Y(:,2)=x2; 创建一个指向myfun的函数句柄. fh=myfun;用下面的语句绘图.fplot(

6、fh,-20,20)生成右下图. 例5.其它常见二维绘图函数集合例6.用pie函数生成饼图. x=1 3 5 7 9;pie(x) figureexplode=0 1 0 0 0;pie(x,explode)例7.在同一幅图中组合线形图和火柴杆图.t=0:pi/20:2*pi;y=exp(sin(t);plotyy(t,y,t,y,plot,stem)yn=randn(10000,1); hist(yn)例8.直方图是一种将数据按区间段分类统计,并将落入各区间数据个数直观表现出来的柱状图.y=randn(10000,3); hist(y)调用格式为:ploar(Theta,Rho,s):The

7、ta为角度,Rho为半径,s是字符串,用来控制图形的线型。极坐标绘图命令ploar例9.阿基米德螺线theta=0:pi/20:6*pi;rho=2.*theta;polar(theta,rho,r)图形窗口的分割subplot命令实现图形窗口分割.在一个图形窗口中显示几幅图象,对几个函数进行比较subplot(m,n,i):把图形窗口分割为m行n列子窗口,并选定第i个窗口为当前窗口。subplot(2,2,1)subplot(2,2,2)subplot(2,2,3)subplot(2,2,4)坐标系的调整Matlab根据要绘制的曲线数据范围自动选择合适的坐标系,但当自动选择的坐标系不太适合时

8、,可以自定义新的坐标系。axis(xmin xmax ymin ymax)设置当前图形窗口的x-轴y-轴的数值坐标数据坐标的最小值必须小于相应的最大值,否则出错V = AXIS返回坐标数据参考命令:axis auto、axis off 、axis on 实验1.抛射体初始速度 v0 =515(米/秒),发射角为 ,对每一确定的发射角 ,抛射线参数方程v0=515;alpha=pi/4;ta=2*v0*sin(alpha)/9.8;t=ta*(0:16)/16;x=v0*cos(alpha)*t;y=v0*sin(alpha)*t-0.5*9.8*t.2;plot(x,y) v0sin t 0.

9、5 g t2 = 0a=.1:.1:pi/2; v0=515;ta=2*v0*sin(a)/9.8;t=ta*(0:16)/16;x=v0*diag(cos(a)*t;y=v0*diag(sin(a)*t-4.9*t.2;plot(x,y,r)用给定数据绘制空间(三维)曲线空间曲线绘制命令plot3和二维绘图命令plot基本相同,其格式为:plot3(x,y,z)plot3(x1,y1,z1,s1,x2,y2,z2,s2)其中x1,y1,z1 分别为第一维至第三维数据,是向量或矩阵,但必须同阶;s1、s2为可选参数,用于设置线型、颜色或数据点标记(用单引号括起来)。例10. 螺旋线t=0:0.

10、1:8*pi;plot3(sin(t),cos(t),t)title(绘制螺旋线)例11. 参数为矩阵时的三维线形图x,y=meshgrid(-2:0.1:2);z=x.*exp(-x.2-y.2);plot3(x,y,z); grid off用给定数据绘制三维曲面在绘图数据已知的情况下, 可以利用mesh, surf和surfl等函数分别绘制网格图, 刻面图和曲面图. 其中刻面图是用不同颜色对网格图中的单元进行填充, 而曲面图是对刻面图的颜色进行了平滑处理.绘制三维曲面图可分为三个过程:生成平面网格点数据;计算三维网格点数据;绘制三维曲面并进行处理Matlab在绘制函数z=f(x, y)的三

11、维图形时,首先将其定义域D分为若干个小矩形(或三角形),然后计算出网格点上的函数值,最后连接相邻的函数值空间数据并构成函数的网格曲面。我们以矩形网格为例。x,y=meshgrid(-8:.5:8);r=sqrt(x.2+y.2)+eps;z=sin(r)./r; mesh(x,y, z)colormap(1 0 0)例12. 巴拿马草帽x 是区间x0,xm上划分点组成的向量;y 是区间y0,yn上划分点组成的向量;X,Y是矩阵,X的行向量都是x,Y的列向量都是y。X = -2 0 2 -2 0 2 -2 0 2 -2 0 2 -2 0 2生成平面网格点命令: X, Y=meshgrid(x,

12、y)例13. X,Y=meshgrid(-2:2:2,-2:1:2)Y = -2 -2 -2 -1 -1 -1 0 0 0 1 1 1 2 2 2三维曲面绘图的三个步骤:生成平面网格、计算三维网格数据和绘制三维网面绘制三维曲面命令mesh: 生成网格曲面.格式: mesh(x,y,z)或mesh(z)例14. X,Y=meshgrid(-2:.2:2,-2:.2:2);Z=X.*exp(-X.2-Y.2);mesh(X,Y,Z)meshc:除了生成网格曲面外,还在x-y平面上生成等高线;例15.X,Y=meshgrid(-2:.2:2,-2:.2:2);Z=X.*exp(-X.2-Y.2);m

13、eshc(Z);meshz:除了生成网格曲面外,还在曲面下面加一长方形台柱。meshz(Z);colormap(0 0 1) %设定色图参数surf: 对网线图的网格块区域着色得到刻画面. surfc: 和meshc类似,在刻面图下方绘上等值线.surfl: 对刻画面中单元颜色进行平滑处理, 得到曲面图, 更接近实体外观.例16. surf(Z) figure surfc(Z) figure surfl(Z) surf(Z)colormap(R G B)figuremesh(Z)colormap(0 0 1)常利用colormap函数对色图参数进行设定来达到所需的视觉效果. 0 0 0 黑色

14、0 0 1 兰色 0 1 0 绿色 0 1 1 浅兰 1 0 0 红色 1 0 1 粉红 1 1 0 黄色 1 1 1 白色0.5 0.5 05 灰色0.5 0 0 暗红色1 0.62 0.4 铜色0.49 1 0.8 浅绿0.49 1 0.83 宝石兰 饱和色 调和色Colormap(CM) CM含义CM含义autumn红黄浓淡jet蓝头红尾bone蓝色调浓淡lines用plot绘线色colorcube浓淡多彩交错pink淡粉红色cool青品红浓淡色prism光谱交错色copper纯铜色调spring青黄浓淡色flag红白蓝黑交错summer绿、黄浓淡色gray灰色调线性浓淡winter蓝、

15、绿浓淡色hot黑红黄白浓淡色white全白色hsv两端为红饱和色函数的曲线和曲面函数的曲线 使用ezplot和ezplot3函数,可以方便的绘制二维和三维参数曲线. ezplot函数调用格式:ezplot(f,xmin,xmax,ymin,ymax)f是一个字符串 ezplot(x,y,tmin,tmax)例. 绘制函数 ezplot3函数调用格式:ezplot3(x,y,z,tmin,tmax)例18.绘制如下参数方程的曲线图 利用ezplot3函数可以绘制该方程曲线图ezplot3(exp(t/10),sin(t)*cos(t),t,0,6*pi)函数的曲面ezmesh绘制函数表示曲面的网

16、格图,也可以利用ezsurf绘制函数表示的曲面ezmesh命令格式:ezmesh(f,domain)ezmesh(x,y,z,smin,smax,tmin,tmax)例19.绘制如下函数的曲面图 ezmesh(y2-3*x*y+x2,-4,4,-4,4)t=-pi:pi/10:pi;x y z=cylinder(1+sin(t);surf(x,y,z)axis square柱面和球面k=5;n=2k-1;theta=pi*(-n:2:n)/n;phi=(pi/2)*(-n:2:n)/n;x=cos(phi)*cos(theta);y=cos(phi)*sin(theta);z=sin(phi)

17、*ones(size(theta);colormap(0 0 0; 1 1 1)C=hadamard(2k);surf(x,y,z,C)axis square绘复变函数图命令cplxmap格式: cplxmap(z,f(z),与网格命令结合使用 cplxgrid.z=cplxgrid(20);plxmap(z,z)figurecplxmap(z,z.2)figurecplxmap(z,z.3)标注坐标轴x,y,z的相应命令为xlabel,ylabel,zlabel.xlabel(text)xlabel(text,Property1,value1,)给图形加标题的命令是titletitle(te

18、xt)title(text,Property1,value1,)text是要添加的文本,Property是该文本的属性,value是相应的属性值,定义所用字体、大小及标注角度等。坐标轴和标题标注x,y=meshgrid(-6:0.2:6);z=x.2-y.2;mesh(x,y,z)colormap(0 0 1)x,y=meshgrid(-8:0.5:8);z=x.2-y.2;ii=find(abs(x)6|abs(y)6);z(ii)=zeros(size(ii);mesh(x,y,z)矩形域上的马鞍面t=0:.1:2*pi;r=0:0.1:2;x=r*cos(t);y=r*sin(t);zz

19、=x.2-y.2;surfc(x,y,zz)figuremesh(x,y,zz)colormap(0 0 1) 圆域上的马鞍面了解有关分形的基本特性以及生成分形图形的基本方法,对分形几何这门学科有一个直观的了解。同时,掌握利用MATLAB软件进行分形图形生成的方法。函数的迭代、混沌与分形早在19世纪末及20世纪初,一些科学家就构造出一些边界形状极不光滑的图形,这类图形的构造方法都有一个共同的特点,即最终图形F都是按照一定的规则R通过对初始图形F不断修改得到的,下面是几个最具代表性的分形图形及其生成方法。例1:Koch曲线及其构造方法给定一条线段F0,将该线段三等分,并将中间一段用以该线段为边的

20、等边三角形的另外两边代替,得到图形F1;然后,再对图形F1中每一小段都按照上述方式修改,直至无穷,则最后得到的极限曲线,即所谓的Koch曲线。 F0 F1 F2 F3 F4 F5 Koch曲线的MATLAB程序如下:function koch(p,q,n)axis equalif (n=0) plot(p(1);q(1), p(2);q(2), LineWidth,1,Color,red); hold on;else c = q-p; c = -c(2); c(1); % 表示与c向量垂直的向量 c = (p+q)/2 + c/sqrt(12); % 求出向左侧翘起 1/3的顶点坐标向量 c

21、a = (2*p+q)/3; % 求出从 p 到 q 的 1/3 处端点坐标向量 a b = (p+2*q)/3; % 求出从 p 到 q 的 2/3 处端点坐标向量 b koch(p, a, n-1); % 对 pa 线段做下一回合 koch(a, c, n-1); % 对 ac 线段做下一回合 koch(c, b, n-1); % 对 cb 线段做下一回合 koch(b, q, n-1); % 对 bq 线段做下一回合end其中参数p与q是起点和终点的坐标,用列向量表示。p=1,1q=10,1n=3Koch(p,q,3)例:Sierpinski三角形及其构造方法这是分形的另一个典型例子。给

22、定一个三角形S0(填成黑色),取各边的中点,连接起来构成一个相似三角形(填成白色),得到图形S1,现在,白色三角形的周围有三个小黑三角形,我们对这三个小黑三角形继续上面的操作以至无穷,最后得到的图形称为Sierpinski三角形。按照上述方法生成Sierpinski三角形的MATLAB函数如下,其中A,B,C表示Sierpinski三角形的三个顶点坐标,用列向量表示,level是使用生成方法的次数。 function sierpinski(A, B, C, level)% SIERPINSKI Recursively generated Sierpinski triangle.% sierpi

23、nski(PA, PB, PC, LVL) generates an approximation to%the Sierpinski triangle, where the 2-vectors PA, PB and PC% define the triangle vertices.% LVL is the level of recursion.if level = 0 % Fill the triangle with vertices A, B, C. fill (A(1), B(1), C(1), A(2), B(2), C(2), 0.0 0.0 0.0); hold onelse % R

24、ecursive calls for the three subtriangles sierpinski(A, (A + B)/2, (A + C)/2, level-1) sierpinski(B, (B + A)/2, (B + C)/2, level-1) sierpinski(C, (C + A)/2, (C + B)/2, level-1)end下图依次是level=0,1,2,3,4,5所得到的图形。 S0 S1 S2 S3 S4 S5 a=1,1b=2,1c=1.5,3 sierpinski(a, b, c, 4)定义 迭代序列给定某个初值,反复作用以同一个函数的过程称为迭代 ,

25、一般形式为它生成了一个序列 ,称为迭代序列迭代序列的收敛性 设函数 满足:(1)对任意 ; 在( )内可导,且存在常数 使得则当初值 时,由 生成的迭代序列收敛问题1:如果迭代序列收敛,收敛点会满足怎样的条件?分式线性函数的迭代例: 先取初值x0=5.5f=inline(25*x-85)/(x+3);%先定义函数syms x;x0=5.5;for i=1:1:30 x0=f(x0); fprintf(%g,%gn,i, x0);end 迭代次数迭代序列迭代次数迭代序列取其它的初值做试验初值收敛性得到收敛点的迭代次数-40000收敛于1716-500收敛于1716-20收敛于17160收敛于17

26、174收敛于17174.9收敛于17195收敛于505.1收敛于17196收敛于171720收敛于1712100收敛于17141000收敛于1714结论:只要初值不取为5,迭代序列都收敛,并且收敛速度较快;只要初值不取为5,迭代序列总收敛于17。易知,f(x)的不动点恰好是17与5。5称为排斥点,17称为吸引点。问题2 为何17是吸引点,5是排斥点?例 用分式函数的迭代法近似计算f=inline(x+2)/(x+1);%先定义函数syms x;x0=5.5;for i=1:1:10 x0=f(x0); fprintf(%g,%gn,i, x0);end 迭代的可视化(蜘蛛网图)f=inline(25*x-85)/(x+3);x=linspace(1,202,202);y=linspace(1,202,202);x(1)=5.5;y(1)=0;x(2)=x(1);y(2)=x(1);for i=1:100 x(1+2*i)=x(2*i); x(2+2*i)=f(x(1+2*i); y(1+2*i)=x(2+2*i); y(2+2*i)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论