分形之Julia集及其算法实现

2020-05-08 10:14

《智能信息处理概论》结课论文

成绩: 课程名称:智能信息处理概论

分形之Julia集及其算法实现

摘要:本文从自然界的几何现象引出分形的概念,再从其定义、几何特征和分形维的计算这三个方面来加以介绍。以Julia集和Mandelbort集为例来具体描述分形。本文主要从Julia集的特点和算法实现来描述分形以及其实现的方法。

关键词:分形、分数维、Julia集、Mandelbort集、算法实现

引言

大自然是个很伟大的造物者,它留给我们一大笔美丽景观:蜿蜒曲折的海岸线、起伏不定的山脉,变幻无常的浮云,粗糙不堪的断面,袅袅上升的烟柱,九曲回肠的河流,纵横交错的血管,令人眼花缭乱的满天繁星……那么,我们又能从这些美妙的自然现象中得到什么有趣的结论呢?

正文

分形概述

分形的英文单词为fractal,是由美籍法国数学家曼德勃罗(Benoit Mandelbrot)创造出来的。其取自拉丁文词frangere(破碎、产生无规则碎片)之头,撷英文之尾所合成,本意是不规则的、破碎的、分数的。他曾说:分形就是通过将光滑的形状弄成多个小块,反复的碎弄。1975年,曼德勃罗出版了他的法文专著

【1】

《分形对象:形、机遇与维数》,标志着分形理论正式诞生。

两种定义

其一:具有自相似性结构的叫做分形; 其二:数学定义:豪斯道夫维Df>=拓扑维Dt。

若一有界集合,包含N个不相重叠的子集,当其放大或缩小r倍后,仍与原集合叠合,则称为自相似集合。自相似集合是分形集。具有相似性的系统叫做分形。

当放大或缩小的倍数r不是一个常数,而必须是r(r1,r2,….)的各种不同放大倍数去放大或缩小各

【2】 子集,才能与原集合重合时,称为自仿射集合。具有自仿射性的系统叫做分形。

特征

1. 自相似性:局部与整体的相似,是局部到整体在各个方向上的等比例变换的结果; 2. 自仿射性:是自相似性的一种拓展,是局部到整体在不同方向上的不等比例变换的结果; 3. 精细结构:即使对该分形图放大无穷多倍,还是能看到与整体相似的结构,表现出无休止的重复; 4. 分形集无法用传统几何语言来描述,它不是某些简单方程的解集,也不是满足某些条件的点的轨迹;

5. 分形集一般可以用简单的方法定义和产生,如递归、迭代;分形其实是由一些简单的图形,经过递归或者迭代产生的复杂、精细的结构;

【3】6. 无确定的标度且具有分数维数。

1

《智能信息处理概论》结课论文

分数维

拓扑维:又称橡皮几何学。研究几何图形在一对一的双方连续变换下不变的性质,称为拓扑性质。 豪斯道夫维数:1919年提出连续空间的定义:即空间维数不是跃变的,而是可以连续变化的,既可以是整数,也可以是分数,通过具体计算来确定维数。——分数性质

豪斯道夫维数有三种求解方法:

1.放大求解:豪斯道夫维的几何对象,每个棱边长度放大L倍,几何对象对应放大K倍。那么,由,可推导出

2.缩小求解:豪斯道夫维的几何对象,等分成N个小的几何图形,则每个小图形每维缩小为原来的

r维。而N个小图形的总和应为。那么,分维为。

3.测量学求解:对一个体积为A,分维为的几何对象,要用半径为r的小球去测度,则所需小球数

目为

哥诺夫容量维。

定义容量维为

。其中,C为结构因子。所以分维为。 这里的分维也称为科尔莫

,且其与相一致。

各棱边放大L倍,相应的几何对象体积放大K倍,则所需小球数目应为 。

若小球半径r缩小L倍,而A保持不变,则所需小球数目仍应为N’。那么所需小球数目的表达式应为

由上述两个式子可得

【4】

。即可得到结论容量维与豪斯道夫维相一致。

分形举例——Julia集

Julia 集是由法国数学家 Gaston Julia 和 Pierre Faton 在发展了复变函数迭代的基础理论后获得的。其也是一个典型的分形,只是在表达上相当复杂,难以用古典的数学方法描述。 Julia集与Mandelbort集来自于复数非线性映射

。通过给定的不同初始值,经过无穷次的

迭代产生的分形图集。当C给定初始值,而Z值作为一个变量,通过无数次迭代产生的分形图集称为Julia集; 当Z给定初始值,而C值作为一个变量,通过无数次迭代产生的分形图集称为Mandelbort集。

特点

对于映射

而言,若

,

, 则有二维映射

例如取C=0+0i,则有以下情况发生:

2

《智能信息处理概论》结课论文

如果如果如果然而,当

,则在复Z平面上迭代结果,则在复Z平面上迭代结果,则

;那么,零是;那么,无穷是

的吸引子。复平面上所有与该吸的吸引子。复平面上所有与零

引子相距小于1的点,都产生趋向吸引子的序列。 点的距离超过1的点,都产生趋向无穷的序列。

;那么,产生的序列总出现在上面两个吸引区域之间的边界上。此时,边界,就是Julia集。

,而是一个不规则、非光滑

恰为复平面上的单位圆周

时,其吸引子不再是0,而变为一个区域,被吸进去的点会遍历整个区间,这个区域被

称做混沌区。与此同时,分割混沌区和向逃逸的分界线不再是单位圆则和不光滑的。

Julia集的实际例子是求解三次方程或

。上述式子的三个根是1,

的分界线。当C值越来越大时,复平面上甚至会产生几个离散的吸引区域,而每个孤岛的分界线都是不滚

。 三个根的Newton迭代法是: 和

,即该式有三个吸引子。那么,从

复平面上任何地方的初值开始迭代,最终应该滑到其中的一个吸引子。自然而然,我们所得到的三个吸引区的边界也应该是简单,明显的。然而,绘图时发现,三个扇形区域的边界具有一种特别的性质,即上面的每个点都隔开所有三个区域,形成了一种复杂的边界。当我们把这边界放大时,又会形成自相似的结构。因此,Julia集通常被认为具有分数维结构,并且在这个集上的迭代过程是一种混沌运动。

刚刚,Julia集是在复数平面经过无数次迭代产生的使

上考虑的;那么,让我们从复参数平面

【5】【6】

就是Mandelbort集。

上进行。此时取定,

有界的点集

逃逸时间算法

Julia集是复数映有二维映射

,当C为某一固定值时的一个吸引域,其中。

,

, 则

从逃逸时间算法的角度看,Julia集的内部收敛于某一点或某几个点,而Julia集的外部随着逃逸时间t的增加将发散至,其逃逸边界便是Julia集。

我们可以根据点设计思路:

假设绘图窗口的图形分辨率是1.选定参数的循环。

2.令

,

算出

, t=0。

, 计数t=t+1。

, , 对所有的点

,

点,可显示颜色K+1种,以数字0~K表示,且0表示黑色。

, M=100 ; 令

,

,完成如下步骤

逃向的速度决定逃逸区中个点的着色。

3.根据下式的迭代过程从4.计算 如果 如果 如果5.对点程序设计:

, 则选择颜色t,转至步骤5; , 则选择颜色0(黑色),转至步骤5; 且

则转至步骤5。

【7】【8】

着颜色t并转至下一点,再从头做步骤5。

3

《智能信息处理概论》结课论文

CJuliaView: :CJuliaView() {

//TODO: : add construction code here

K=100;//逃逸时间 m=500;//逃逸半径

Mx=800; My=600;//绘图范围

xs= -1.5; x1= 1.5; ys= -1.5; y1= 1.5;

//复平面上C的坐标 p=0.32; q=0.043; }

void CJuliaview: :OnDraw(CDC* pDC) {

CJuliaDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

xb=(x1-xs)/Mx; yb=(y1-ys)/My;

for(nx=0;nx<=Mx;nx++) {

for(ny=0;ny<=My;ny++) {

x0=xs+nx*xb; y0=ys+ny*yb; k=0; loop1:

xk=x0*x0-y0*y0+p; yk=2*x0*y0+q;

k=k+1;

r=xk*xk+yk*yk; x0=xk; y0=yk; if(r>m) { H=k; goto loop2; }

If(k==K) {

H=int(r*10); goto loop2; }

If(r<=m&&k

pDC->SetPixel(nx,ny,H*1000); } } }

在Julia View.h文件夹定义变量如下:public: double x1,xs; double y1,ys; double x0,y0; double xb,yb; double xk,yk; double r; double p,q;

int H,K,k,m; int Mx,My; int nx,ny;

4

《智能信息处理概论》结课论文

c =0.194-0.6557i

c =-1.25

c =0.31+0.04i

c =-0.12+0.74i

复平面上的IFS算法:

相似变换是指在各个方向上变换的比率必须相同的一种比例变换,仿射变换是指在不同方向上变化的比率可以不同的一种比例变换。相似变换可放大或缩小甚至旋转,但不变形;而仿射变换可能会变形。

仿射变换的数学表达式为

其中,代表仿射变换,x和y是变换前图形的坐标值,

和是变换后的图形的坐标值;a, b, c, d, e, f 是仿射变换系数。

对于一个比较复杂的图形,可能需要多个不同的仿射变换来实现,放射变换族

控制着图形的结构

和形状,由于仿射变换的形式是相同的,所以不同的形状取决于仿射变换的系数。另外,仿射变换族中,每一个仿射变换被调用的概率是不一定等同的,也就是说,落入图形各部分中点的数目是不一定相同,这就引入了一个新的量,即仿射变换被调用的概率P。从而,6个仿射变换系数(a, b, c, d, e, f)和一个概率(P)便组成了IFS算法最关键的部分——IFS码。 设计思路:

对于复映射函数,即

则可以将

,设为给定点,我们寻找Z使得 和

, 分别画

看成是一个IFS,然后取概率

,由此给出两个反。具体步骤如下:

5


分形之Julia集及其算法实现.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:计算机组成与系统结构 复习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: