试验二 迭代与分形.doc_第1页
试验二 迭代与分形.doc_第2页
试验二 迭代与分形.doc_第3页
试验二 迭代与分形.doc_第4页
试验二 迭代与分形.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

试验二 迭代与分形一、 实验目的与要求1 了解分形几何的基本情况;2 了解通过迭代方式,产生分形图的方法;3 了解matlab软件中简单的程序结构;4 掌握matlab软件中plot, fill等函数的基本用法;二、 问题描述几何学研究的对象是客观世界中物体的形状。传统欧氏几何学的研究对象,都是规则并且光滑的,比如:直线、曲线、曲面等。但客观世界中物体的形状,并不完全具有规则光滑等性质,因此只能近似当作欧氏几何的对象,比如:将凹凸不平的地球表面近似为椭球面。虽然多数情况下通过这样的近似处理后,能够得到符合实际情况的结果,但是对于极不规则的形态,比如:云朵、烟雾、树木等,传统的几何学就无能为力了。如何描述这些复杂的自然形态?如何分析其内在的机理?这些就是分形几何学所面对和解决的问题。三、 问题分析在我们的世界上,存在着许多极不规则的复杂现象,比如:弯弯曲曲的海岸线、变化的云朵、宇宙中星系的分布、金融市场上价格的起伏图等,为了获得解释这些极端复杂现象的数学模型,我们需要认识其中蕴涵的特性,构造出相应的数学规则。曼德尔布罗特(Mandelbrot)在研究英国的海岸线形状等问题时,总结出自然界中很多现象从标度变换角度表现出对称性,他将这类集合称作自相似集,他发现维数是尺度变换下的不变量,主张用维数来刻划这类集合。Mandelbrot将这类几何形体称为分形(fractal),意思就是不规则的、分数的、支离破碎的,并对它们进行了系统的研究,创立了分形几何这一新的数学分支。Mandelbrot认为海岸、山峦、云彩和其他很多自然现象都具有分形的特性,因此可以说:分形是大自然的几何学。分形几何体一般来说都具有无限精细的自相似的层次结构,即局部与整体的相似性,图形的每一个局部都可以被看作是整体图形的一个缩小的复本。早在19世纪就已经出现了一些具有自相似特性的分形图形,比如:瑞典数学家科赫(von Koch)设计的类似雪花和岛屿边缘的一类曲线,即Koch曲线;英国植物学家布朗通过观察悬浮在水中的花粉的运动轨迹,提出来的布朗运动轨迹。分形几何把自然形态看作是具有无限嵌套的层次结构,并且在不同尺度下保持某种相似的属性,于是,简单的迭代过程,就是描述复杂的自然形态的有效方法。(Koch曲线)(布朗运动轨迹)四、 背景知识介绍1 分形几何的形成。分形几何的概念是美籍法国数学家曼德尔布罗特(Mandelbrot)于1975年首先提出的,但最早的工作可追朔到1875年,德国数学家维尔斯特拉斯(Weierestrass)构造了处处连续但处处不可微的函数,集合论创始人康托尔(Cantor,德国数学家)构造了有许多奇异性质的康托尔三分集。1890年,意大利数学家皮亚诺(Peano)构造了填充空间的曲线。1904年,瑞典数学家科赫(Koch)设计出类似雪花和岛屿边缘的一类曲线。1915年,波兰数学家谢尔宾斯基(Sierpinski)设计了象地毯和海绵一样的几何图形。这些都是为解决分析与拓朴学中的问题而提出的反例,但它们正是分形几何思想的源泉。2 分形几何体的维数。通常的几何体具有整数维,比如:一维的线段、二维的正方形、三维的立方体,维数就是几何体在“尺度”上的特征。对于分形中的几何对象,通常意义下的维数已经没有意义,比如Koch曲线(长度是无穷大,面积是零),用一维的“线段”去量,得数无穷大,“尺子”太小;用二维的“正方形”去量,得数为零,“尺子”又太大,因此需要定义分形自己的维数(分数维)。分形的维数目前有多种定义,我们这里介绍相似维数。设分形F是自相似的,即F由m个子集构成,每个子集放大c倍后同F一样,则定义F的维数为:,即。对于通常的几何对象,采用这种方式计算出来的维数,与传统的维数是一致的,比如对正方形,将它边长m等份,则相似形个数m2,每边长放大m倍后与原长相同,即c=m,显然d=2。人类肺的构造,从气管尖端成倍地反复分叉,是一种典型的分形,其分维数大约是2.17。3 什么是迭代。迭代法是常用的一种数学方法,就是将一种规则反复作用在某个对象上,它可以产生非常复杂的行为。我们这里介绍图形迭代和函数迭代两种方式。(1)图形迭代。给定初始图形F0,以及一个替换规则R,将R反复作用在初始图形F0上,产生一个图形序列:R(F0)F1,R(F1)F2,R(F2)F3,(2)函数迭代。给定初始值x0,以及一个函数f(x),将f(x)反复作用在初始值x0上,产生一个数列:f(x0)x1,f(x1)x2,f(x2)x3,4 plot函数介绍。plot是最重要最基本的二维曲线绘图指令,基本功能是画折线和曲线。基本调用格式如下:(1) plot(Y, LineSpec)。其中,Y一般是数组;而LineSpec是用来指定线型、色彩等的选项字符串,可省略。本功能是以数组Y作为竖坐标,以数组元素的下标为横坐标,画出一条折线。当数组元素很多时,就出现连续曲线的效果。(2) plot(X,Y,s)。其中,X、Y一般是相同长度的数组。本功能是以数组Y作为竖坐标,以数组X为横坐标,画出一条折线。当数组元素很多时,就出现连续曲线的效果。例1 x=-pi:pi/10:pi; y=tan(sin(x)-sin(tan(x); plot(x,y)5 Fill函数介绍。Fill的作用是颜色填满一个多边形区域,基本调用格式如下:fill(X,Y, ColorSpec),其中X是围成多边形区域的横坐标,Y是竖坐标,通过ColorSpec指定颜色。在使用时注意:要保证绘图数据首尾重合,使得多边形封闭。另外,可以依靠图柄设置其它属性。例2 t=(1/16:1/8:1)*2*pi; x = sin(t); y = cos(t); fill(x,y,r)五、 实验过程本试验以迭代的方式,来体验生成分形图形的基本方法,并感受美丽的分形图案,从而对分形几何有一个直观的了解。1 科赫(Koch)曲线。Koch曲线是通过图形迭代的方式产生的,其迭代规则是:对一条线段,首先将它分成三等份,然后将中间的一份替换成以此为底边的等边三角形的另外两条边。无限次迭代下去,最终形成的曲线就是Koch曲线。具体的实现如下:图1 迭代1次 图2 迭代2次 图3 迭代5次下面计算Koch曲线的长度。初始线段长:1;迭代一次后共有4段,每段长:,增加的长:,总长:;以后每次迭代,总长度增加,即总长度是原来的倍;故经过n次迭代后,总长:。因此,Koch曲线的总长度是:无穷大。下面计算Koch曲线的维数。根据迭代的规律得到:相似形个数:m=4,边长放大倍数:c=3,故维数d=1.2619。因此,Koch曲线的维数介于1与2之间。具体计算如下:在Matlab中,可以编制一段代码来绘制Koch曲线的图形。以下的代码是绘制迭代k次的Koch曲线图形的一个函数,调用方式:plotkoch (2),图像为图2;调用方式:plotkoch (5),图像为图3。具体代码如下:function plotkoch(k) %显示迭代k次后的Koch曲线图p=0 0;10 0; %存放结点坐标,每行一个点,初始值为两结点的坐标n=1; %存放线段的数量,初始值为1A=cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3); %用于计算新的结点for s=1:k %实现迭代过程,计算所有的结点的坐标 j=0; %以下根据线段两个结点的坐标,计算迭代后它们之间增加的三个%结点的坐标,并且将这些点的坐标按次序存暂时放到r中 for i=1:n %每条边计算一次 q1=p(i,:); %目前线段的起点坐标 q2=p(i+1,:); %目前线段的终点坐标 d=(q2-q1)/3; % j=j+1;r(j,:)=q1; %原起点存入r j=j+1;r(j,:)=q1+d; %新1点存入r j=j+1;r(j,:)=q1+d+d*A; %新2点存入r j=j+1;r(j,:)=q1+2*d; %新3点存入r end %原终点作为下条线段的起点,在迭代下条线段时存入r n=4*n; %全部线段迭代一次后,线段数量乘4clear p %清空p ,注意:最后一个终点q2不在r中 p=r;q2; %重新装载本次迭代后的全部结点end%plot(p(:,1),p(:,2) %显示各结点的连线图axis equal %各坐标轴同比例2 谢尔宾斯基(Sierpinski)地毯。Sierpinski地毯也是通过图形迭代的方式产生的,其迭代规则是:对一个正方形,首先将它分成九个小正方形,然后挖调中间的一个。无限次迭代下去,最终形成的图形就是Sierpinski地毯。具体的实现如下:图4 迭代1次 图5 迭代2次 图6 迭代4次下面计算Sierpinski地毯的面积。初始面积:1;迭代一次后减少的面积:,剩余;以后每次迭代,面积减少,剩余面积是原来的倍;故经过n次迭代后,剩余面积:。故Sierpinski地毯面积是:零。下面计算Sierpinski地毯的维数。根据迭代的规律得到:相似形个数:m=8,边长放大倍数:c=3,故维数d=1.8928。因此,Sierpinski地毯的维数介于1与2之间。具体计算如下:在Matlab中,可以编制一段代码来绘制Sierpinski地毯的图形。以下的代码是绘制迭代n次的Sierpinski地毯图形的一个函数,调用方式:plotSierpinski(2),图像为图5;调用方式:plotSierpinski(4),图像为图6。具体代码如下:function plotSierpinski(x,y,d,n); % x 为正方形的顶点的横坐标,可取0 (一个顶点代表一个小正方形)% y 为正方形的顶点的纵坐标,可取0% d 为初始正方形边长,可取1% n为迭代次数,可取4for p=1:n; %实现迭代过程,计算所有的顶点坐标 a1=; %保存迭代后所有顶点的x坐标 b1=; %保存迭代后所有顶点的y坐标%根据小正方形的顶点坐标,%计算迭代后形成的8个新的小正方形的顶点坐标 for q=1:length(x); %每个小正方形计算一次 x1=x(q)+0,d/3,2*d/3,0,2*d/3,0,d/3,2*d/3; %新的x坐标 y1=y(q)+0,0,0,d/3,d/3,2*d/3,2*d/3,2*d/3; %新的y坐标 a1=a1,x1; %所有顶点x坐标存入a1 b1=b1,y1; %所有顶点y坐标存入b1 end d=d/3; %迭代一次,边长缩小 x=a1; %全部的x坐标重新放入x y=b1; %全部的y坐标重新放入yend hold on %在同一个图形窗口显示for q=1:length(x); %用蓝色注满多边形区域 fill(x(q)+0,d,d,0,0,y(q)+0,0,d,d,0,b) %end hold off %axis off %不要坐标轴axis equal %各坐标轴同比例%不显示这些正方形的边界set(findobj(gcf,type,patch),edgecolor,none) 3 分形树木。分形树木是为了模拟自然界中树木花草的形状,其迭代方式与前面两个问题不同,主要原理是设定基本的绘图规则,然后让计算机根据这些规则进行反复跌代,最终生成分形图。下面介绍一种迭代规则:对一条线段,在它顶端左右两侧各画一条小线段。无限次迭代下去,最终形成的图形就象一棵树。具体的实现如下:在Matlab中,可以编制一段代码来绘制这个图形。以下代码可以采用调用方式:plottree(0,pi/2,1)。具体代码如下:function z,A= plottree(z,A,n); N=6; % 迭代次数 s=0.7; % scale Br=pi/10;-pi/10; % 偏转角 if nN % 超出迭代次数returnend k=1; if n=1; % 第1次,画主干 plot(z,z+exp(i*A),linewidth,3/N*(N-n+1); hold on z=z+exp(i*A); z,A= plottree(z,A,n+1); % 第2次,画分支 else while k3 % k1画左支,k=2画又支 A=A+Br(k); leng=s(n-1); plot(z,z+leng*exp(i*A),linewidth,3/N*(N-n+1); z=z+leng*exp(i*A); z,A= plottree(z,A,n+1); % 第n+1次,画分支 A=A+pi; z=z+leng*exp(i*A); A=A+pi-Br(k); k=k+1; end end 六、 结论与应用在以上的试验中,我们体验了通过图形迭代方式产生分形图的过程,迭代的规则非常简单,产生的结果却异常奇妙,并且这些图形很好地反映出了分形所具有的自相似的层次结构。下面再简单介绍其它分形图以及分形的应用。1 函数迭代。针对由函数迭代产生的序列:它的有界性与既C有关,也与初始值Z0有关。固定Z0,考虑使得迭代序列有界的所有C的集合。为了分析C的分布,将此集在复平面上画出来,Mandelbrot发现它是一种分形图,称为Mandelbrot集。再固定C,考虑使得迭代序列有界的所有Z0的集合,其图形也是分形图,称为Julia集。Mandelbrot集) (Julia集)2 L系统。L系统由美国科学家Lin

温馨提示

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

评论

0/150

提交评论