迭代与分形

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1) 设定图形区域的范围
2) 对给定区域划分网格 3) 针对每个网格,设置一定的色彩
5. Mandelbrot集
复函数迭代:
2 Zn 1 Zn C,
n 0,1,
固定初值 Z0 ,集合(Mandelbrot集): J Z 0 {C | 迭代序列 {Z n } 有界} 观察:参数 C 在复平面上的分布图形 M集是使Julia集为连通的参数C的集合
第四次上机作业
1、对一个等边三角形,每条边按照Koch曲线 的方式进行迭代,产生的分形图称为 Koch 雪花。编制程序绘制出它的图形,并计算 Koch雪花的面积。
2、(选做)自己构造生成元(要有创意), 按照图形迭代的方式产生分形图,用计算 机编制程序绘制出它的图形。
分形几何的创始人: 曼德布罗(Mandelbrot) 分形的原义:
不规则的、分数维的、支离破碎的 分形的形成标志:
《自然界的分形几何》,1977 《分形:形态、偶然性和维》,1982
分形的诞生
五、预备知识
1. 什么是迭代
就是将一种规则反复作用在某个对象上
分形几何把自然形态, 看作是具有无限嵌套的层次结构
美国生物学家Lindenmayer 提出,研究植物形态 与生长的描述方法。
4.Julia集
复函数迭代:
Zn 1 Z C,
2 n
n 0,1,
固定复参数C,集合(Julia集):
J c { Z0 | 迭代序列 {Z n } 有界}
观察:初值 Z 0 在复平面上的分布图形
绘制 Julia 集的大概思路:
p=[0,0;10,0]; %存放结点坐标,每行一个点,初始值为两
结点的坐标 n=1; %存放线段的数量,初始值Hale Waihona Puke Baidu1(思考:n若为结 点数,后续该如何处理 A=[cos(pi/3),-sin(pi/3);sin(pi/3),cos(pi/3)]; %用于计算新的 结点 for s=1:k j=0; %实现迭代过程,计算所有的结点的坐标 % 思考:可否取为1
n=4*n; %全部线段迭代一次后,线段数量乘4 clear p %清空p ,注意:最后一个终点q2不在r 中 p=[r;q2]; %重新装载本次迭代后的全部结点 end figure plot(p(:,1),p(:,2)) %显示各结点的连线图 axis equal %各坐标轴同比例(思考:若 没有这项操作会怎样?)
比如:弯弯曲曲的海岸线、变化的云朵 、 布朗运动的轨迹,等……
如何描述这些复杂的自然形态?
四、问题分析
法国数学家曼德尔布罗特[B.B.Mandelbrot] 1967年 :研究英国的海岸线形状等问题
1.英国的海岸线究竟有多长?
英国的海岸线究竟有多长?
英国的海岸线究竟有多长?
2.如何描述海岸线的结构? 小湾之内有更小的湾,半岛之外有更小的半岛
2. 分形几何体的维数 维数就是几何体在“尺度”上的特征 通常的几何体具有整数维: 一维的线段、二维的正方形、三维的立方体, 分形中,需要自己的维数(分数维) 比如Koch曲线(长度是无穷大,面积是零)
用一维的线段去量,得数无穷大,尺子太小
用二维的正方形去量,得数为零,尺子又太大
Koch曲线的维数:界于1与2之间。
总长度→∞
计算Koch曲线的相似维数 相似形个数:m=4, 边长放大倍数:c=3,
d ln m ln c ln 4 ln3 1.2619
Koch曲线的维数 d=1.2619。 Koch曲线的维数界于 :1与2之间。 (长度为无穷大、面积为零) 查看代码
2. 谢尔宾斯基(Sierpinski)地毯
简单的迭代过程, 就是描述复杂的自然形态的有效方法
(1)图形迭代 给定初始图形F0,以及一个替换规则R, 将R反复作用在初始图形F0上, 产生一个图形序列: R(F0)=F1, R(F1)=F2, R(F2)=F3, … 其极限图形就是分形。(称R为生成元) 。
(2)函数迭代 给定初始值x0,以及一个函数f(x), 将f(x)反复作用在初始值x0上, 产生一个数列: f(x0)=x1, f(x1)=x2, f(x2)=x3, …
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')
特征:自相似性。 每一个局部, 都可以被看作是整体图形的一个缩小的复本
小湾之内有更小的湾,半岛之外有更小的半岛 特征:自相似性。 每一个局部, 都可以被看作是整体图形的一个缩小的复本
(Koch 曲线)
Mandelbrot集合局部放大
3. Mandelbrot将这类几何形体称为分形
具有无限嵌套的层次结构 具有局部与整体的相似性 具有非拓扑维数,且大于对应的拓扑维数 具有随机性 海岸、山峦、云彩等自然现象都具有分形的特性 分形(fractal) ------大自然的几何学
实验四 迭代与分形
一、实验目的
了解分形几何的基本特性
了解通过迭代方式产生分形图的方法 欣赏美妙的分形艺术
二、分形欣赏
美得让人心颤的分形
三、问题描述
欧氏几何研究对象:都是规则并且光滑的 比如:直线、曲线、曲面等
客观世界中物体形状:近似当作欧氏几何的对象
比如:将凹凸不平的地球表面近似为椭球面 极不规则的形态:传统的几何学就无能为力了!
总面积→0
计算Sierpinski地毯的相似维数 相似形个数:m = 8, 边长放大倍数:c = 3,
d ln m ln c ln8 ln3 1.8928
Sierpinski地毯的维数 d = 1.8928 。 Sierpinski地毯的维数界于 :1与2之间。 查看代码
3. 花草树木(L系统)
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坐标重新放入y end figure hold on %在同一个图形窗口显示
function plotSierpinski(x,y,d,n); % x 为正方形的顶点的横坐标,可取0 (一个顶 点代表一个小正方形) % y 为正方形的顶点的纵坐标,可取0 % d 为初始正方形边长,可取1 % n为迭代次数,可取4 for p=1:n %实现迭代过程,计算所有的顶点坐标 a1=[]; %保存迭代后所有顶点的x坐标 b1=[]; %保存迭代后所有顶点的y坐标 %根据小正方形的顶点坐标, %计算迭代后形成的8个新的小正方形的顶点坐标
七、分形的应用领域
1、数学:动力系统; 2、物理:布朗运动,流体力学中的湍流; 3、化学:酶的构造; 4、生物:细胞的生长; 5、地质:地质构造; 6、天文:土星上的光环; 7、其他:计算机,经济,社会,艺术等等。
八、分形欣赏
function plotkoch(k) %显示迭代k次后的Koch曲线图
将一个正方形,
均匀分成九个小正方形 , 然后挖调中间的一个。
计算Sierpinski地毯的面积
1 初始面积1;每迭代一次,面积减少: 9 ,
第一次迭代后,总面积:1 (1 1 ) 9 1 (1 1 ) (1 1 ) 第二次迭代后,总面积: 9 9
n 1 第n次迭代后,总面积: (1 9 )
六、实验过程
本实验以迭代的方式, 来体验生成分形图的过程,
从而对分形几何有一个直观的了解, 并感受美丽的分形图案。
1. 科赫(Koch)曲线 迭代
将一根线段三等份, 并将中间段用以该段为边的 等边三角形的另外两边替代。
计算Koch曲线的长度 初始线段长 1,每迭代一次,长度增加
1 , 3
第一次迭代后,总长:1 (1 1 ) 3 第二次迭代后,总长: 1 (1 1 ) (1 1 ) 3 3 n 1 (1 ) 第n次迭代后,总长: 3
%以下根据线段两个结点的坐标,计算迭代后它 们之间增加的三个 %结点的坐标,并且将这些点的坐标按次序存暂 时放到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
相似维数:
设分形 F 是自相似的, F 由 m 个子集构成, 每个子集放大 c 倍后同 F一样, 则定义 F 的维数为:
ln m d
ln c
, 即: c m
d
采用这种方式计算出来的维数
对于通常的几何对象,与传统的维数是一致的
fill函数: fill的作用是颜色填满一个多边形区域,基本调用 格式如下: fill(X,Y, ColorSpec) 其中X是围成多边形区域的横坐标,Y是竖坐标 ,通过ColorSpec指定颜色。在使用时注意:要保 证绘图数据首尾重合,使得多边形封闭。 例 x=[0 1 1 0 0];y=[0 0 1 1 0];fill(x,y,’b’) t=(1/16:1/8:1)'*2*pi; x = sin(t); y = cos(t); fill(x,y,'r')
相关文档
最新文档