分形之Julia集及其算法实现

合集下载

Julia集的分形特征及可视化

Julia集的分形特征及可视化

Julia集的分形特征及可视化分形是一种数学概念,指在自相似的基础上具有无限细节的形态。

而Julia集则是分形中的一种形式,以其美丽而复杂的图形而著称。

本文将介绍Julia集的分形特征以及如何进行可视化。

1. Julia集的定义和数学原理Julia集是由法国数学家Gaston Julia于20世纪初提出的,它属于复变函数的一种特殊表现形式。

对于复变函数f(z) = z^2 + c,其中z是复平面上的数值,c是一个常数。

Julia集就是将平面上的每个点代入该函数后,根据函数的迭代公式进行迭代。

如果点在迭代过程中趋于无穷大,则该点不属于Julia集;如果点在迭代过程中保持有限,则该点属于Julia集。

2. Julia集的分形特征Julia集的分形特征主要体现在其图形形态上。

对于不同的常数c,Julia集呈现出各种各样的形状,常常具有分支、层次分明的特点。

具体来说,Julia集的边界是由无数个自相似的小部分组成的,即边界上的任意一小段都可能与整个边界相似。

这种无限细节的结构使得Julia 集的形态异常复杂,充满了美感。

3. Julia集的可视化方法为了更好地理解和欣赏Julia集的分形特征,我们可以通过可视化方法将其呈现出来。

以下是两种常用的Julia集可视化方法:a. 色彩填充法:通过对Julia集中的每个点进行迭代计算,根据迭代的结果来为每个点上色。

根据迭代的次数,可以确定每个点的颜色深浅,从而呈现出Julia集图像的细节。

同时可以通过调整常数c的值来观察Julia集形态的变化。

b. 迭代绘制法:从画布的左上角开始,按照一定的步长遍历整个画布,对每个点进行迭代计算并绘制。

通过较小的步长和足够的迭代次数,可以绘制出更加精细的Julia集图像。

同时可以通过调整常数c的值来观察Julia集形态的变化。

4. Julia集的应用领域Julia集作为一种迷人的分形形式,已经在多个领域得到了广泛的应用和研究。

其中,数学、物理、计算机图形学等领域是主要的应用领域。

Julia集在分形压缩编码中的应用

Julia集在分形压缩编码中的应用

Julia集在分形压缩编码中的应用赵德平;杨迁;许占利【期刊名称】《沈阳建筑大学学报(自然科学版)》【年(卷),期】2005(021)006【摘要】目的构建一固定的压缩字典.改变传统的一副图像对应一个压缩字典的分形图像压缩方法.提出了分形图在分形图像压缩算法中的应用.方法采用.f(z)=z2+C,对不同的C,有不同的曲线.用灰度值量化规则进行量化,得到一幅图像.这样可以得到丰富的压缩字典.将量化后的4×4 Julia量化曲线与原图的4×4图像块进行比较,选取豪斯多夫度量最小的Julia量化曲线.解码过程读取压缩字典,重建原图像.结果通过与传统的分形图像压缩算法比较,该算法编码过程生成丰富的压缩字典,所以解码图像质量高.并且比传统分形图像压缩算法的压缩比高,解码速度快.结论用固定分形图像压缩编码字典替代变化的分形图像压缩编码字典,使得压缩字典和要处理的图像不再一一对应.将父类进行简单的分类,减少了搜索时间.实验证明本算法实现简单、可行.图像压缩理想,效果很好.【总页数】4页(P736-739)【作者】赵德平;杨迁;许占利【作者单位】沈阳建筑大学图书馆,辽宁,沈阳,110168;沈阳建筑大学信息与控制工程学院,辽宁,沈阳,110168;沈阳建筑大学组织部,辽宁,沈阳,110168【正文语种】中文【中图分类】TP391【相关文献】1.基于Julia集分形图形在服装图案设计中的应用 [J], 蔡燕燕;宋晓霞2.M集在分形图像压缩编码中的应用 [J], 赵德平;彭鹏;魏志勇;姜迎3.Logistic映射和Julia集在分形图像编码中的应用 [J], 赵德平;郑莹;孙燮华4.固定压缩字典在分形图像压缩编码中的应用 [J], 刘天波;赵德平;许景科5.基因表达式编程在分形图像压缩编码中的应用 [J], 李文敬;刘之家;廖伟志因版权原因,仅展示原文概要,查看原文内容请购买。

基于广义Julia集的剪纸图案生成方法

基于广义Julia集的剪纸图案生成方法

基于广义Julia集的剪纸图案生成方法本文根据剪纸的构图特征与分形图形的相似性,对剪纸艺术与分形理论的结合的可能性进行初步探讨。

并以分形中的Julia集为例,用逃逸时间算法来实现Julia集图形的生成,利用计算机图形技术对生成的图形进行处理。

标签:分形;Julia集;剪纸;时间算法分形的概念是在1975年被正式提出,自那以后它被广泛运用在诸多领域。

随着文化强国战略的开展,分形理论在我国传统文化剪纸艺术的设计有很大的应用潜力。

传统剪纸艺术是纯手工的设计,它的设计受限于人工巧匠的个人技艺。

将分形理论与剪纸艺术相结合,不仅能解决传统剪纸艺术传播的局限性,还能大大丰富剪纸艺术的内容,扩大剪纸的应用范围,也为中华传统剪纸的传承提供一种数字化的设计方法。

一.广义Julia集生成原理Julia集是法国科学家Gaston Julia发现的一种分形集合。

本文主要用逃逸时间算法和java编程在计算机上生成广义Julia集分形图形,与剪纸的构图特征相结合,实现以Julia集图形作为剪纸图案生成的一个元素。

分形的主要生成算法有:文法构图算法(LS)、递归算法、逃逸时间算法、演化算法、迭代函数系统算法(IFS)。

本文的Julia集图形主要是利用逃逸时间算法来生成的。

逃逸时间算法,假设有一个充分大的整数N,当未逃逸区域M中的初始点a经过小于N次迭代就达到未逃逸区域M的边界,甚至超出了边界,我们就认为点a逃逸出去了;而如果经过N次迭代后a的轨迹仍未达到M的边界,我们就认为a是A上的点。

用这样的方法绘制出A的边界图形,这便是逃逸时间算法的基本思想。

二.剪纸图案设计由于颜色和构图共同组成了剪纸,所以剪纸的图案设计主要考虑这两个方面。

由于传统文化剪纸艺术的技艺的局限,一般来说,剪纸的颜色主单调统一,大多为紅色。

本文根据剪纸的特点来设计时主要考虑图案的构图特征。

剪纸的平面构图大部分是对称的结构。

我国最早的剪纸作品是团花剪纸,如图2(1),它就是典型的对称作品。

混沌分形之朱利亚集(JuliaSet)-电脑资料

混沌分形之朱利亚集(JuliaSet)-电脑资料

混沌分形之朱利亚集(JuliaSet)-电脑资料朱利亚集合是一个在复平面上形成分形的点的集合,。

以法国数学家加斯顿·朱利亚(Gaston Julia)的名字命名。

我想任何一个有关分形的资料都不会放过曼德勃罗集和朱利亚集。

这里将以点集的方式生成出朱利亚集的图形。

关于基类FractalEquation的定义及相关软件见:混沌与分形复制代码class JuliaSet : public FractalEquation{public:JuliaSet(){m_StartX = 0.0f;m_StartY = 0.0f;m_StartZ = 0.0f;m_ParamA = -0.75f;m_ParamB = 0.01f;}void IterateValue(float x, float y, float z, float& outX, float& outY, float& outZ) const{float wx, wy;float r;float theta;float rnd = yf_rand_real(1.0f);wx = x-m_ParamA;wy = y-m_ParamB;if(wx == 0)theta = PI/2;if(wx > 0)theta = atanf(wy/wx);if(wx < 0)theta = PI-atanf(wy/wx);theta = theta/2;r = sqrtf(wx*wx+wy*wy);if(rnd < 0.5f)r = sqrt(r);elser = -sqrt(r);utX = r*cos(theta);utY = r*sin(theta);utZ = z;}bool IsValidParamA() const {return true;} bool IsValidParamB() const {return true;} };。

经典的分形算法

经典的分形算法

经典的分形算法分形(Fractal)是一种数学概念,也是一种美丽而神秘的几何图形。

分形的核心思想是通过不断重复某个基本形状或规则,形成一个无限细节的自相似图案。

分形广泛应用于数学、物理、生物学、计算机图形等领域。

以下是几个经典的分形算法。

1. Mandelbrot集合算法:曼德勃罗集合是分形中的一个重要例子,其图像通常被称为“自由自似的”或“奇异的”。

该算法通过对复平面上的每个点进行迭代计算,并判断其是否属于Mandelbrot集合。

最终根据计算结果着色绘制出Mandelbrot集合的图像。

2. Julia集合算法:类似于Mandelbrot集合,Julia集合也是通过对复平面上的点进行迭代计算得到的,但不同的是,在计算过程中使用了一个常数参数c。

不同的c值可以得到不同形状的Julia集合,因此可以通过改变c值来生成不同的图像。

3. Barnsley蕨叶算法:Barnsley蕨叶算法是一种基于概率的分形生成算法,其原理是通过对基本形状进行变换和重复应用来生成蕨叶形状。

该算法通过设置一组变换矩阵和对应的概率权重来控制生成过程,不断的迭代应用这些变换,最终得到类似于蕨叶的图像。

4. L系统算法:L系统(L-system)是一种用于描述植物生长、细胞自动机和分形树等自然系统的形式语言。

L系统在分形生成中起到了重要的作用,通过迭代地应用规则替代字符,可以生成各种自然形态的图像,如树枝、蕨叶等。

5. Lorenz吸引子算法:Lorenz吸引子是混沌力学中的经典模型,描述了一个三维空间中的非线性动力学系统。

通过模拟Lorenz方程的演化过程,可以绘制出Lorenz吸引子的图像,该图像呈现出分形的特点。

这些分形算法不仅仅是数学上的抽象概念,也可以通过计算机图形来实现。

通过使用适当的迭代计算方法和图像渲染技术,可以生成出令人印象深刻的分形图像。

这些分形图像不仅具有美学价值,还具有哲学、科学和工程等领域的应用价值,例如在数据压缩、图像压缩、信号处理和模拟等方面。

基于广义Julia集f(z,c)=(z α+c) β+C分形图的设计与实现

基于广义Julia集f(z,c)=(z α+c) β+C分形图的设计与实现

成算法与实现 , 并阐述了它的应用价值.
1 分形及 J l ui a集
定义l 设 D是 R 的闭子集 , 若在子集 c o1 , ∈[ ,]对所有的X y , ED有 I z -sy I -y , ) ( )≤cx 则映 s ( I I 射 : —D称为D上的压缩映射. ∈D 若等式成立 , 则 将集变换成几何相似集 . 设 , S…S 是压缩映射,
记为 , 即 J — a f , s F.
2 构 造 广 义 分 形 图 的选 逸 时 间算 法
()已知动 力 系统 { , , 定视窗 W 及逃 逸半径 R 和逃逸 时 间限制 N.2 1 X f)给 ()定义逃 逸 时 间函数 :3 () ㈤ 一
z 1 o(<, I) 一 I z
20 0 6年 9月
基 于广 义 J l ui f( ,) (口 )+C a集 z 一 + 分形 图 的设 计 与 实现
张 民h
( 聊城大学 计算机学院 , ” 山东 聊城 2 2 5 ; 5 0 9 大连 海事大学 航海所 , 辽宁 大连 1 6 2 ) 10 6


以广义 的J l ui 为例 , 述 了J l a集 论 ui 分 形 图设 计 的方 法 与结 果 , 阐述 了J l a集 并 ui 分 形 a集
9 5
用逃 逸时 间算法 用计算 机绘 制 的图
形 : 1 复常 数 C 0 5+ 0 5, 图 为 一 . . i口

4 , + 时广义 J l 集分 形 - : ui a
图 , 一4 时 广义 集类 似 . 主 O - / r 7 个 要 花瓣 组 成 的花 朵 , 沌 区嵌 于稳 混 定 区之 中 ; 白色 代 表稳 定 区 , 色 ( 黑 代 表逃逸 区 ) .

分形之Julia集及其算法实现

分形之Julia集及其算法实现
我们可以根据点 逃向 的速度决定逃逸区中个点的着色。
设பைடு நூலகம்思路:
假设绘图窗口的图形分辨率是 点,可显示颜色K+1种,以数字0~K表示,且0表示黑色。
1.选定参数 , , M=100 ;令 , ,对所有的点 , 及 ,完成如下步骤的循环。
2.令 , , t=0。
3.根据下式的迭代过程从 算出 ,计数t=t+1。
设计思路:
对于复映射 ,设 为给定点,我们寻找Z使得 ,由此给出两个反函数,即 和 。
则可以将 看成是一个IFS,然后取概率 ,分别画 。具体步骤如下:
1.当k=0(k为迭代的次数)时,压栈,画点Z0;
2.从栈顶取一点(Z,k);
3.根据概率 ,分别计算 和 ,画点 ,将 压栈,令 ;
4.重复步骤3直至 ;
摘要:本文从自然界的几何现象引出分形的概念,再从其定义、几何特征和分形维的计算这三个方面来加以介绍。以Julia集和Mandelbort集为例来具体描述分形。本文主要从Julia集的特点和算法实现来描述分形以及其实现的方法。
关键词:分形、分数维、Julia集、Mandelbort集、算法实现
引言
大自然是个很伟大的造物者,它留给我们一大笔美丽景观:蜿蜒曲折的海岸线、起伏不定的山脉,变幻无常的浮云,粗糙不堪的断面,袅袅上升的烟柱,九曲回肠的河流,纵横交错的血管,令人眼花缭乱的满天繁星……那么,我们又能从这些美妙的自然现象中得到什么有趣的结论呢?
分形理论表现出两个重要原则——自相似原则和迭代生成原则。而这两种原则正是分形算法实现的重要依据。
自然界的奥秘是无穷的,它还有许许多多的分形结构等着我们去探索、去发现。我们一定不能放慢脚步,要勇于创新,把大自然留给我们的宝藏发掘出来,为之己用!

Julia分形与Java

Julia分形与Java

齐齐哈尔大学综合实践题目Julia分形及其Java编程学院理学院专业班级信科121班学生姓名指导教师成绩Julia 分形及其Java 编程由于本学期分形学老师所讲分形主要是以MATLAB 为例,所画出的分形图像效果并不理想,尤其经过几次放大后图像就会失真。

而Java 在分形的应用上效果比MATLAB 好很多,因此下文主要介绍Julia 分形图,实例是以Java 为基础。

分形是近几十年发展起来的一门新的数学分支,它涉及的领域非常之广,有物理学、数学、化学、生物学、医学、地震学、地貌学、冶金学、材料学、哲学、经济学、社会学等等.分形的出现正在改变科学家观察自然界的传统方式,目前已对当今数学乃至整个科学界产生了巨大的影响.本文主要对分形几何中的四元数进行研究,运用四元数绘制二维和三维Mandelbrot 集和Julia 集,并用Java 语言编程实现.先后介绍了分形的产生、Mandelbrot 集和Julia 集、四元数分形和用四元数绘制三维Mandelbrot 集和Julia 集的数学理论,关键词:分形,四元数,Julia 集,Java 程序设计一、Mandelbrot 集与Julia 集1、 Mandelbrot 集1980年, Mandelbrot 给世人提供了一幅无与伦比的杰作: Mandelbrot 集.其创作过程如下:令c z z f +=2)(, 其中C c z ∈,,z 是复变量,c 是复常数.对变换f 施行逃逸时间法, 得到如下迭代公式[1]:pq n n c z z +=+21 (1.1)式中)0,0(0=z ,pq c 为计算机荧屏位于),(q p 位置的象素. 于是(1.1)式成了pq pq pq pq pq n c c c c c z z ++++++=+22222201)))))((((( (1.2)给定N 为一个正整数, 比如等于255. 当象素位于),(q p 且N n =时,n z 仍然小于预设的一个阈值K , 则在),(q p 位置着色为1(蓝色), 否则当N n <时, 已有K z n ≥, 则在),(q p 位置描色为n . 如此),(q p 遍历整个荧屏后, 便画出了一幅Mandelbrot 集. 该集合的坐标如图2-1所示.图2-1 Mandelbrot 集的坐标图为什么说Mandelbrot 集是分形呢? 实在是它的层层嵌套中有很多很多的自相似部分.部分经逐级放大后, 又出现了一个Mandelbrot 湖.经典的M-集是由映射c z +2得来, 人们自然会采用更多的函数, 从而得到各种各样的M-集, 又称广义M-集.c z z n n +=+cos 1;c e z z c n n ++=+)arcsin(21; c c z z n n ++=+)cosh arctan(81.2、 Julia 集Gaston Julia(1893-1978),法国数学家.1919年,他在第一次世界大战时受了伤,住院期间他潜心研究了迭代保角变换c z z n n +=+21. 这种复平面上的变换能生出一系列令人眼花缭乱的图形变化. 当时没有电子计算机,不能像现在那样把如此美妙绝论的图案奉献于世. 因此他的工作并不为世人重视.虽然产生Julia 集和Mandelbrot 集的变换都是3,2,1,0,21=+=+n c z z n n (1.3)但这里的常数c 却是任意复数, 变元0z 是计算机荧屏上的每个象素. 当0z 遍历象素),(q p 的所有点且对公式(1.3)运用逃逸时间法后, 便得到一幅Julia 集c J 了.令c= -0.65175; 0.41850;便得到 图2.2图2-2Julia 集(c= -0.65175; 0.41850;)由于Mandelbrot 集(有时简称其为M-集)和Julia 集都源于同一个变换, 因此它们之间必定有非常复杂的关系. 由于每一个常数 c 都对应一个c J , 而M-集上的每个点都是一个c , 所以M-集合的所有点就对应着数以万计的c J . 图2-3正显示了它们两者之间的这种关系. 看得出, 相近的c 值, 对应的c J 也就较为相似.图2-3 Mandelbrot 集和Julia 集从图2.3可以看出, 凡是M-集的边界点, 其对应的c J 就显有分枝状. 这里面有太多的奥妙.由于一幅Julia 集完全依赖于常数c , 所以我们常常把它简记为c J .图2-4 c 不同的Julia 集与M-集一样, Julia 集也有其广义集. 图2.4的四幅图分别对应于函数:1. )sin(cos sin 2z z c z =2. )cos(πz c z ⋅=3. πc z z z +⋅=cos )log(cosh4. πc z z z +⋅=cos )tanh(cos.二维Julia 集,用牛顿迭代算法方法进行图形绘制,绘制范围:5.1~5.1:-x 0.2~0.2:-yC= (0.67,0.48)绘制结果如图2-5所示:图2-5 二维Julia 集之二二、四元数分形与四元数Mandelbrot 集和Julia 集1、 四元数基本理论我们都熟悉平面上复数z , 其中bi a z +=, 而1-=i . 无疑, 十八世纪以前创立的复数是数学史上的一件大事. 那末是否有高维的复数呢? 所谓的超复数(hypercomplex 或supercomplex)是这样定义的:令ck bj ai w z +++=, 其中i 和k j ,都是虚数, 它们满足下述运算要求:11=-====-=-==-=-==ijk kk jj ii j ik i kj k ji j ki i jk k ij看得出, 它们的乘法满足交换律.两个超复数的乘法公式是:令 k z j y i x w h 11111+++=和k z j y i x w h 22222+++=.则+---=)(2121212121z z y y x x w w h h +--+i z y y z x w w x )(21212121 +-+-j z x y w x z w y )(21212121 kz w y x x y w z )(21212121+++其它运算法则就不再赘述.1843年, 爱尔兰数学家William R. Hamilton(哈密尔顿)发明了四元数(quaternion). 一个四元数q 的定义是这样的:zk yj xi w q +++= (2.1)其中z y x w ,,,是实数,k j i ,,是虚数, 且有1222-====ijk k j i (2.2)q 的模2222z y x w q +++=. (2.3)一个四元数Q 可以由平面上的两个复数v u ,来表示:⎥⎦⎤⎢⎣⎡-+-++=⎥⎦⎤⎢⎣⎡-=bi a di c di c bi a u v v u Q (2.4) 其中d c b a ,,,是实数.v u ,分别是复数v u ,的共轭.一个四元数也能用[]w z y x q ,,,= (2.5)来表示.一个平面上的复数由实部和虚部构成: bi a z +⋅=1, 一个四元数Q 同样也能由若干部分线性组合而成:zK yJ xI wU Q +++= (2.6)其中⎥⎦⎤⎢⎣⎡≡1001U (2.7)⎥⎦⎤⎢⎣⎡-≡i i I 00 (2.8) ⎥⎦⎤⎢⎣⎡-≡0110J (2.9) ⎥⎦⎤⎢⎣⎡≡00i i K (2.10) 于是U K J I -===222 (2.11)也就是说,K J I ,,是矩阵方程 U X -=2的解, 是负单位矩阵的平方根.一个四元数整系数基的线性组合也叫Hamilton 整数. 在4R 空间, 四元数的基是如下四个:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=10000010001000011 (2.12) ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--=0100100000010010i (2.13) ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--=0001001001001000j (2.14) ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--=0010000110000100k (2.15) 与超复数不同, 四元数的三个虚数之间的运算并不遵从乘法交换律, 其运算规则如下:k ji ij =-= (2.16) i kj j =-= (2.17) j ik ki =-= (2.18)看起来很象三维空间直角坐标系中三个单位向量k j i ,,的叉乘关系.设 zk yj xi w q +++=, 则其四元共轭为zk yj xi w q ---=.其加法遵从一般规律:k z z j y y i x x w w q q )()()()(2121212121+++++++=+.设],,,[],,,,[22221111z y x w q z y x w p ==, 其乘法服从)(21212121z z y y x x w w pq ---= i y z z y w x x w )(21212121-+++ j x z w y z x y w )(21212121++-+ kw z x y y x z w )(21212121+-++q 的模仍然遵从一般复数关系.)(q q q q q norm == (2.19)且等于公式(2.3).一个四元数可以写成一个数量加上一个向量).,(v w q=其中向量 [,,]v x y z =. 如此一来, 两个四元数的乘法就变得较为简单:),(),(221121v w v w q q⋅=),(2112212121v v v w v w v v w w⨯++⋅-= 四元数的除法也遵从复数关系qq qp q p p p p p ==-和1 从几何上来讲, 四元数代表着时间加三维空间. 如果固定实数w 为常数, 则这个四元数就是三维空间的一个变量.0)(lim=→qq f q2 四元数Mandelbrot 集和Julia 集记q 和c 为四元数, 按第二章中Mandelbrot 集的迭代法,2,1,0,21=+=+n c q q n n (2.20)就得到一幅3维四元数(把实数w 看作常数, 并认定其为第四维)Mandelbrot 集了.四元数Julia 集是4维空间中的Julia 集,同样使用公式,2,1,0,21=+=+n c q q n n其中),2,1,0( =n q n 和c 都是四元数. 生成四元数Julia 集的方法与普通复数情况类似,只需迭代公式(2.20), 只是c 是一个固定的四元数而已. 迭代时要观察 ||n q 的敛散情况.把第四维看作时间,可以认为我们生成的是一个三维动画片. 实际操作时,一般取第四维为常数,这样我们得到的是静止的三维图像. 程序主体结构与二维情况也类似,我们用多重循环扫描一个三维立方体内部所有的点,就知道该点是否属于Julia 集了. 做法如下: 对每一个y对每一个 x 对每一个z作迭代,2,1,0,21=+=+n c q q n n其中],,,0[n n n n z y x q =. 当M n =时, n q 仍属于集合的话就退出这一层循环我们并不计算z 轴方向上的所有点,那样速度太慢. 对于给定的一组),(y x ,只要沿z 轴方向找到第一个属于Julia 集合的点就够了, 其它的点被挡住,让看不见. 这样,就大大提高程序的运行速度. 也有广义的四元数Julia 集. 不过由于以四元数为自变量的函数计算过于困难, 目前还仅仅处理q 的多项式.结 论在分形几何中,许多重要的分形是由迭代产生的.因为迭代可以使一些看似简单的函数产生惊人的复杂性,Julia 集就是其中一种.由于迭代函数的多样性,Julia 集可以在计算机图形工具的辅助下呈现为色彩斑斓、结构优美的分形图案,因此可广泛应用于纺织印染、广告设计、服装设计、装潢设计以及计算机美术教学等领域.可见,研究Julia 集的生成算法具有重要的理论意义和实际价值.逃逸时间算法是生成Julia 集的经典算法,它具有基本原理简单、绘图精度高、占用内存少等优点附:代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例如取C=0+0i,则有以下情况发生:
如果 ,则在复Z平面上迭代结果 ;那么,零是 的吸引子。复平面上所有与该吸引子相距小于1的点,都产生趋向吸引子的序列。
如果 ,则在复Z平面上迭代结果 ;那么,无穷是 的吸引子。复平面上所有与零点的距离超过1的点,都产生趋向无穷的序列。
如果 ,则 ;那么,产生的序列总出现在上面两个吸引区域之间的边界上。此时,边界恰为复平面上的单位圆周 ,就是Julia集。
pDC->SetPixel(m,n,m_pColor);
wx=x-cx;
wy=y-cy;
if(wx>0)
theta=atan(wy/wx);
if(wx<0)
theta=PI+atan(wy/wx);
if(wx==0)
theta=PI/2;
theta=theta/2;
r=sqrt(wx*wx+wy*wy);
//TODO: add draw code for native data here
float k;
for(i=0;i<32000;i++)
{
m=(int)(2000/15*x+3500/15);
n=(int)(2000/15*y+3000/15);
if(i>10)
//CClientDC pDC(this);
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<K)
goto loop1;
k=(float)rand();
rnd=(float)(k/RAND_MAX);
if(rnd<0.5)
r=sqrt(r);
else
r=-sqrt(r);
x=r*cos(theta);
y=r*sin(theta);
}
///CJULIAView message handlers
void CJULIAView: :OnParamSet()
成绩:课程名称:智能信息处理概论
分形之Julia集及其算法实现
摘要:本文从自然界的几何现象引出分形的概念,再从其定义、几何特征和分形维的计算这三个方面来加以介绍。以Julia集和Mandelbort集为例来具体描述分形。本文主要从Julia集的特点和算法实现来描述分形以及其实现的方法。
关键词:分形、分数维、Julia集、Mandelbort集、算法实现
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;
int H,K,k,m;
int Mx,My;
int nx,ny;
c =0.194-0.6557i
c =0.31+0.04i
c =-1.25
c =-0.12+0.74i
复平面上的IFS算法:
相似变换是指在各个方向上变换的比率必须相同的一种比例变换,仿射变换是指在不同方向上变化的比率可以不同的一种比例变换。相似变换可放大或缩小甚至旋转,但不变形;而仿射变换可能会变形。
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();
{
//TODO: Add your command handler code here
CCsetPara dlg;
cx=dlg.m_cx;
cy=dlg.m_cy;
x=dlg.m_x;
y=dlg.m_y;
}
Invalidate();
}
结论
分形是一种由简单的直线或者方程通过无穷次简单的迭代形式而产生的具有无比精细的结构,这个过程又称之为混沌。其两者是密不可分的。
4.计算 :
如果 ,则选择颜色t,转至步骤5;
如果 ,则选择颜色0(黑色),转至步骤5;
如果 且 则转至步骤5。
5.对点 着颜色t并转至下一点,再从头做步骤5。【7】【8】
程序设计:
CJuliaView: :CJuliaView()
{
//TODO: : add construction code here
然而,当 时,其吸引子不再是0,而变为一个区域,被吸进去的点会遍历整个区间,这个区域被称做混沌区。与此同时,分割混沌区和向 逃逸的分界线不再是单位圆 ,而是一个不规则、非光滑的分界线。当C值越来越大时,复平面上甚至会产生几个离散的吸引区域,而每个孤岛的分界线都是不滚则和不光滑的。
Julia集的实际例子是求解三次方程 。三个根的Newton迭代法是: 或 。上述式子的三个根是1, 和 ,即该式有三个吸引子。那么,从复平面上任何地方的初值 开始迭代,最终应该滑到其中的一个吸引子。自然而然,我们所得到的三个吸引区的边界也应该是简单,明显的。然而,绘图时发现,三个扇形区域的边界具有一种特别的性质,即上面的每个点都隔开所有三个区域,形成了一种复杂的边界。当我们把这边界放大时,又会形成自相似的结构。因此,Julia集通常被认为具有分数维结构,并且在这个集上的迭代过程是一种混沌运动。
我们可以根据点 逃向 的速度决定逃逸区中个点的着色。
设计思路:
假设绘图窗口的图形分辨率是 点,可显示颜色K+1种,以数字0~K表示,且0表示黑色。
1.选定参数 , , M=100 ;令 , ,对所有的点 , 及 ,完成如下步骤的循环。
2.令 , , t=0。
3.根据下式的迭代过程从 算出 ,计数t=t+1。
仿射变换的数学表达式为 其中, 代表仿射变换,x和y是变换前图形的坐标值, 和 是变换后的图形的坐标值;a, b, c, d, e, f是仿射变换系数。
对于一个比较复杂的图形,可能需要多个不同的仿射变换来实现,放射变换族 控制着图形的结构和形状,由于仿射变换的形式是相同的,所以不同的形状取决于仿射变换的系数。另外,仿射变换族 中,每一个仿射变换被调用的概率是不一定等同的,也就是说,落入图形各部分中点的数目是不一定相同,这就引入了一个新的量,即仿射变换 被调用的概率P。从而,6个仿射变换系数(a, b, c, d, e, f)和一个概率(P)便组成了IFS算法最关键的部分——IFS码。
引言
大自然是个很伟大的造物者,它留给我们一大笔美丽景观:蜿蜒曲折的海岸线、起伏不定的山脉,变幻无常的浮云,粗糙不堪的断面,袅袅上升的烟柱,九曲回肠的河流,纵横交错的血管,令人眼花缭乱的满天繁星……那么,我们又能从这些美妙的自然现象中得到什么有趣的结论呢?
正文
分形概述
分形的英文单词为fractal,是由美籍法国数学家曼德勃罗(Benoit Mandelbrot)创造出来的。其取自拉丁文词frangere(破碎、产生无规则碎片)之头,撷英文之尾所合成,本意是不规则的、破碎的、分数的。他曾说:分形就是通过将光滑的形状弄成多个小块,反复的碎弄。1975年,曼德勃罗出版了他的法文专著《分形对象:形、机遇与维数》,标志着分形理论正式诞生。【1】
定义容量维为 ,且其与 相一致。
各棱边放大L倍,相应的几何对象体积放大K倍,则所需小球数目应为 。
若小球半径r缩小L倍,而A保持不变,则所需小球数目仍应为N’。那么所需小球数目的表达式应为 。
由上述两个式子可得 。即可得到结论容量维与豪斯道夫维相一致。【4】
分形举例——Julia集
Julia集是由法国数学家Gaston Julia和Pierre Faton在发展了复变函数迭代的基础理论后获得的。其也是一个典型的分形,只是在表达上相当复杂,难以用古典的数学方法描述。
豪斯道夫维数有三种求解方法:
1.放大求解:豪斯道夫维 的几何对象,每个棱边长度放大L倍,几何对象对应放大K倍。那么,由 ,可推导出 。
2.缩小求解:豪斯道夫维 的几何对象,等分成N个小的几何图形,则每个小图形每维缩小为原来的r维。而N个小图形的总和应为 。那么,分维为 。
3.测量学求解:对一个体积为A,分维为 的几何对象,要用半径为r的小球去测度,则所需小球数目为 。其中,C为结构因子。所以分维为 。这里的分维也称为科尔莫哥诺夫容量维。
Julia集与Mandelbort集来自于复数非线性映射 。通过给定的不同初始值,经过无穷次的迭代产生的分形图集。当C给定初始值,而Z值作为一个变量,通过无数次迭代产生的分形图集称为Julia集;当Z给定初始值,而C值作为一个变量,通过无数次迭代产生的分形图集称为Mandelbort集。
特点
对于映射 而言,若 , ,则有二维映射
两种定义
其一:具有自相似性结构的叫做分形;
其二:数学定义:豪斯道夫维Df>=拓扑维Dt。
若一有界集合,包含N个不相重叠的子集,当其放大或缩小r倍后,仍与原集合叠合,则称为自相似集合。自相似集合是分形集。具有相似性的系统叫做分形。
相关文档
最新文档