分形之Julia集及其算法实现
- 格式:doc
- 大小:1.30 MB
- 文档页数:7
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集在分形压缩编码中的应用赵德平;杨迁;许占利【期刊名称】《沈阳建筑大学学报(自然科学版)》【年(卷),期】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集;剪纸;时间算法分形的概念是在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)-电脑资料朱利亚集合是一个在复平面上形成分形的点的集合,。
以法国数学家加斯顿·朱利亚(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分形及其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 集的经典算法,它具有基本原理简单、绘图精度高、占用内存少等优点附:代码。