经典的分形算法 (1)
分形的计算方法

分形的计算方法
分形有多种计算方法,以下为您介绍Hurst指数法和箱计数法:
Hurst指数法是最早用于计算分形维数的方法之一,其基本思想是通过计算时间序列的长程相关性来反映其分形特性。
具体步骤如下:
1. 对原始时间序列进行标准化处理。
2. 将序列分解成多个子序列,每个子序列的长度为N。
3. 计算每个子序列的标准差与平均值之间的关系,即计算序列的自相关函数。
4. 对自相关函数进行拟合,得到一个幂律关系,其幂指数就是Hurst指数,即分形维数D=2-H。
箱计数法是一种较为简单的计算分形维数的方法,其基本思想是将时间序列分为多个箱子,然后计算每个箱子内的数据点数与箱子尺寸之间的关系。
具体步骤如下:
1. 将原始时间序列分为多个子段,每个子段的长度为k。
2. 对于每个子段,将其分为多个等长的小区间,将每个小区间的数据点分配到对应的箱子中。
3. 计算每个箱子中数据点的个数,记作N(l)。
4. 对于不同的箱子尺寸l,计算N(l)与l的关系,即N(l)∝l-D,其中D即为分形维数。
此外,还有如Cantor三分集的递归算法等分形计算方法,每种方法有其特点和适用范围。
如果需要更多关于分形计算的信息,可以阅读分形相关的专业书籍或文献,以获得更全面的理解和认识。
牛顿迭代分形

牛顿迭代分形牛顿迭代分形,也被称为牛顿分形或牛顿法则,是一种基于数学原理的图像生成算法。
它利用牛顿迭代的思想和复数运算,通过不断迭代计算,可以生成一幅幅美丽而神奇的分形图形。
牛顿迭代分形的生成过程可以简单描述如下:首先,选择一个复数作为初始值,然后通过不断迭代计算来寻找该复数的根。
根据牛顿迭代法的原理,我们可以得到下一个近似根的值,然后再将该值作为新的初始值进行迭代计算,直到达到预设的迭代次数或者满足停止条件。
最终,我们可以将迭代过程中的所有值映射到一个二维平面上,从而生成一张牛顿迭代分形图。
牛顿迭代分形的生成过程中,不同的初始值会产生不同的分形图形。
在分形图中,我们可以看到许多迭代过程中的轨迹,这些轨迹形成了分形的结构。
分形通常具有自相似性,即无论观察整个图像还是它的一部分,都会发现相似的形态或图案。
牛顿迭代分形在数学研究、计算机图形学、艺术创作等领域都有广泛的应用。
它不仅可以帮助我们理解复数和迭代的概念,还可以产生出许多美丽而复杂的图像。
这些图像不仅能够为我们提供视觉上的享受,还可以激发我们对数学和艺术的兴趣。
通过牛顿迭代分形的创作过程,我们可以感受到数学的魅力和无穷的可能性。
每一次的迭代计算,都是在数学的世界中进行探索和发现。
而每一张生成的分形图像,都是对数学美的一次呈现和诠释。
当我们深入探索牛顿迭代分形时,我们会发现其中隐藏着无限的奥秘和惊喜。
这些分形图像不仅令人惊叹,还能够启发我们对数学和艺术的思考。
通过创作和欣赏牛顿迭代分形,我们可以感受到数学的美妙和艺术的魅力,同时也能够培养我们的创造力和思维能力。
牛顿迭代分形是一种令人着迷的图像生成算法。
它不仅展示了数学的美丽和复杂性,还激发了我们对数学和艺术的兴趣。
通过创作和欣赏牛顿迭代分形,我们可以感受到数学的魅力和艺术的魔力,同时也能够培养我们的创造力和思维能力。
让我们一起沉浸在牛顿迭代分形的世界中,探索数学与艺术的交汇之处!。
分形维数计算

分形维数计算分形维数是一种衡量不规则形状复杂度的数学工具,它可以用来描述分形图像的复杂程度。
分形维数通常使用数学方法来计算,这种方法称为维数计算。
维数计算的基本思路是:对于分形图像中的每个区域,测量它周围区域内像素的数量。
随着区域的大小减小,周围像素的数量也会随之减小。
如果这种减小是按照某种规律发生的,那么这个分形图像就具有规律性,并且可以使用维数来描述它的复杂程度。
具体来说,分形维数可以通过如下公式计算:D = log(N) / log(1/r)其中,D是分形维数,N是每个区域周围像素的数量,r是区域的相对大小。
通常情况下,r 是一个小于1的常数,表示区域的相对大小减小的速率。
分形维数的值可以在0和无限大之间取值。
数值越大,分形图像的复杂程度就越高。
例如,一个线段的分形维数为1,而一个平面的分形维数为2。
分形维数的应用非常广泛,它可以用来描述各种不规则形分维数的应用非常广泛,它可以用来描述各种不规则形状的复杂程度,如自然景观、生物形态、社会网络等。
它也可以用来研究物理系统中的结构和动态变化,如气流、地震波传播、经济趋势等。
分形维数还可以用来衡量数据集的复杂程度,这在数据挖掘和机器学习中非常有用。
例如,在文本分类任务中,分形维数可以用来评估不同文本数据集的复杂程度,从而选择合适的分类算法。
维数计算的具体实现方式有很多种,其中常用的方法包括扩展的分维数计算法、信息熵算法、盒子数算法、结构函数算法等。
这些方法在不同的应用场景下各有优劣,需要根据具体情况进行选择。
总之,分形维数是一种非常有用的工具,可以用来描述各种不规则形状的复杂程度,并且在数据挖掘和机器学习中有着广泛的应用。
分形公式大全

分形公式大全分形公式是一种表示分形特征的数学公式,它可以描述自相似、无限细节和复杂的结构。
下面是一些常见的分形公式及其相关参考内容。
1. Mandelbrot集公式:Mandelbrot集是分形几何中最著名的一个例子,它由下面的公式定义:Z(n+1) = Z(n)² + C其中,Z(n)是一个复数,C是一个常数。
这个公式对于不同的C值会产生不同的形状,形成了Mandelbrot集的分形特征。
关于Mandelbrot集的更多内容,可以参考书籍《The Fractal Geometry of Nature》 by Benoit B. Mandelbrot。
2. Julia集公式:Julia集是类似于Mandelbrot集的分形图形,它由下面的公式定义:Z(n+1) = Z(n)² + C其中,Z(n)和C都是复数。
当给定不同的C值时,Julia集的形状也会有所不同。
关于Julia集的更多内容,可以参考书籍《The Science of Fractal Images》by Heinz-Otto Peitgen和Dietmar Saupe。
3. 分岔图公式:分岔图是描述非线性动力系统中稳定性变化的一种分形图形。
它由下面的公式定义:f(x) = r * x * (1-x)其中,r是参数,x是状态变量。
当r的值在一定范围内变化时,分岔图会展现出分形的特征。
关于分岔图的更多内容,可以参考书籍《Chaos: Making a New Science》by James Gleick。
4. 树形分形公式:树形分形是一种描述树状结构的分形图形,它由下面的公式定义:x(n+1) = r * x(n) * cos(theta) - y(n) * sin(theta)y(n+1) = r * x(n) * sin(theta) + y(n) * cos(theta)其中,x(n)和y(n)是当前点的坐标,x(n+1)和y(n+1)是下一个点的坐标,r是缩放参数,theta是旋转角度。
分形维数算法范文

分形维数算法范文分形维数是一种用来描述分形结构复杂度的数学工具。
它可以帮助我们理解分形的形状和特征,以及它们的生成规律。
在计算机图形学、图像处理和自然科学等领域,分形维数的应用非常广泛。
分形维数的计算方法有多种,包括几何维数、信息维数和相关维数等。
在下面,我将介绍其中两种常见的计算方法:盒维数和分块法。
1.盒维数:盒维数是最常见的一种分形维数计算方法。
它基于分形对象的尺度空间分解原理,通过计算不同尺度下覆盖分形对象的盒子数量来估计分形维数。
具体的计算步骤如下:1)将分形对象包围在一个边长为L的正方形中;2)将正方形等分为N*N个小正方形盒子,其中N是一个正整数;3)通过改变盒子边长L,计算覆盖分形对象的盒子数量N(L),并记录下N(L)与L的关系;4)根据记录的数据点,使用线性回归等方法拟合出N(L)与L的函数关系y=a*L^D,其中D就是分形维数。
2.分块法:分块法是用于计算自相似分形的分形维数的一种方法。
自相似分形是指分形对象的各个部分具有相似的形状和结构特征。
分块法通过将分形对象划分为不同尺度的子块,并计算不同尺度下子块的数量来估计分形维数。
具体的计算步骤如下:1)将分形对象划分为M*M个相等尺寸的子块,其中M是一个正整数;2)计算不同尺度下子块的数量N(M),并记录下N(M)与M的关系;3)根据记录的数据点,使用线性回归等方法拟合出N(M)与M的函数关系y=a*M^D,其中D就是分形维数。
以上是两种常见的分形维数计算方法,在实际应用中可以根据具体的问题选择适合的方法。
分形维数的计算对于理解分形结构的特征、模拟自然界的形态和生成分形图像等都具有重要的意义。
经典的分形算法

经典的分形算法分形(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吸引子的图像,该图像呈现出分形的特点。
这些分形算法不仅仅是数学上的抽象概念,也可以通过计算机图形来实现。
通过使用适当的迭代计算方法和图像渲染技术,可以生成出令人印象深刻的分形图像。
这些分形图像不仅具有美学价值,还具有哲学、科学和工程等领域的应用价值,例如在数据压缩、图像压缩、信号处理和模拟等方面。
分形几何的典型范例

分形几何有许多典型的范例,以下是其中一些:
1. 谢尔宾斯基三角形:这是一种自相似的分形图形,通过不断将三角形划分为更小的三角形,最终得到具有无限复杂性的图形。
2. 谢尔宾斯基垫片:这是由谢尔宾斯基三角形进一步演化而来的一种分形图形,由三角形内部的三角形构成,整体呈现出一个自相似的模式。
3. 科赫曲线:又称为科赫雪花或科赫蛇,是一种分形曲线。
通过不断将一段线段分割成等长的两段,然后将每一段线段的中间部分弯曲成等边三角形,最终得到具有无限复杂性的图形。
4. 曼德布罗集:这是由数学家本华·曼德布罗提出的分形图形,通过不断将单位正方形进行切割和填充,最终得到的图形是一个具有无限复杂性的集合。
5. 皮亚诺曲线:这是一种由意大利数学家皮亚诺提出的分形图形,它是一种在平面上的连续曲线,通过不断将线段进行延长和弯曲,最终得到的图形具有无限复杂性和自相似性。
这些只是分形几何中的一些典型范例,实际上还有许多其他的分形图形和结构,如朱利亚集、费根堡姆曲线等。
这些分形图形的特点是具有无限的复杂性和自相似性,并且在许多领域中得到了应用。
wobble分形算法

Wobble分形算法简介Wobble分形算法是一种基于几何变换的分形生成方法,它通过迭代不同尺度的抖动变换来生成具有自相似性的分形图形。
Wobble分形算法源自于数学家Michael Barnsley在1988年提出的分形理论。
通过对图形进行随机的微小扰动,Wobble分形能够生成富有变化和细节的分形图案,具有极高的艺术美感和视觉冲击力。
基本原理Wobble分形算法的基本原理是通过对一幅原始图形进行多次几何变换,每次变换时都对图形进行随机的抖动。
具体步骤如下:1.绘制初始图形:首先绘制一个基本形状的图形,可以是简单的几何图形如矩形、三角形,也可以是复杂的曲线图形。
2.随机抖动:对初始图形进行随机的微小扰动,使每个点的坐标发生细微的变化。
这种扰动可以是平移、旋转、缩放等任意变换,也可以结合多种变换方式。
3.迭代变换:对抖动后的图形再次进行几何变换,重复步骤2,得到一组新的图形。
4.终止条件:迭代变换的次数根据需要设定,在达到指定次数后停止变换,得到最终的分形图案。
算法流程下面是Wobble分形算法的基本流程:1.初始化:选择初始图形和设定迭代次数。
2.迭代变换:1.对初始图形进行随机抖动,得到一组新的图形。
2.对新的图形进行进一步的变换,重复步骤2.1。
3.记录每次变换后的图形,存储为一组分形图案。
4.如果迭代次数达到指定次数,转到步骤3;否则转到步骤2.1。
3.输出分形图案。
算法优化Wobble分形算法可以进行多种优化,以提高生成的分形图案质量和效率。
以下是一些常见的优化技巧:1.随机性控制:通过控制抖动时的随机性,可以调整生成的分形图案的复杂度和形态。
可以使用特定的随机数生成方法,如分布均匀的伪随机数生成器。
2.变换参数控制:调整几何变换的参数,如平移、旋转、缩放的幅度和比例,可以改变生成的分形图案的形态。
通过细致调整变换参数,可以得到更加丰富多样的分形图案。
3.增量绘制:在生成分形图案时,可以采用增量绘制的方式,即每次变换只绘制部分图形,避免重复绘制已经生成的图形。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
经典的分形算法小宇宙2012-08-11 17:46:33小宇宙被誉为大自然的几何学的分形(Fractal)理论,是现代数学的一个新分支,但其本质却是一种新的世界观和方法论。
它与动力系统的混沌理论交叉结合,相辅相成。
它承认世界的局部可能在一定条件下,在某一方面(形态,结构,信息,功能,时间,能量等)表现出与整体的相似性,它承认空间维数的变化既可以是离散的也可以是连续的,因而拓展了视野。
分形几何的概念是美籍法国数学家曼德布罗(B.B.Mandelbrot)1975年首先提出的,但最早的工作可追朔到1875年,德国数学家维尔斯特拉斯(K.Weierestrass)构造了处处连续但处处不可微的函数,集合论创始人康托(G.Cantor,德国数学家)构造了有许多奇异性质的三分康托集。
1890年,意大利数学家皮亚诺(G.Peano)构造了填充空间的曲线。
1904年,瑞典数学家科赫(H.von Koch)设计出类似雪花和岛屿边缘的一类曲线。
1915年,波兰数学家谢尔宾斯基(W.Sierpinski)设计了象地毯和海绵一样的几何图形。
这些都是为解决分析与拓朴学中的问题而提出的反例,但它们正是分形几何思想的源泉。
1910年,德国数学家豪斯道夫(F.Hausdorff)开始了奇异集合性质与量的研究,提出分数维概念。
1928年布利干(G.Bouligand)将闵可夫斯基容度应用于非整数维,由此能将螺线作很好的分类。
1932年庞特里亚金(L.S.Pontryagin)等引入盒维数。
1934年,贝塞考维奇(A.S.Besicovitch)更深刻地提示了豪斯道夫测度的性质和奇异集的分数维,他在豪斯道夫测度及其几何的研究领域中作出了主要贡献,从而产生了豪斯道夫-贝塞考维奇维数概念。
以后,这一领域的研究工作没有引起更多人的注意,先驱们的工作只是作为分析与拓扑学教科书中的反例而流传开来。
真正令大众了解分形是从计算机的普及肇始,而一开始,分形图的计算机绘制也只是停留在二维平面,但这也足以使人们心驰神往。
近来,一个分形体爱好者丹尼尔•怀特(英国一钢琴教师)提出一个大胆的方法,创造出令人称奇的3D分形影像,并将它们命名为芒德球(mandelbulb)。
在芒德球极其繁琐的外表下,这个集合实际上是由一种非常基础的算法得出的。
那是一种利用复数的算法。
就曼德布罗集而言,它是直接由最简单的乘方运算得出的——对复数进行乘方。
但问题在于无法在三维空间恰当地扩展数的概念。
与复数和平面点之间的关系不同,19世纪的数学家们曾证明,立体空间中的点是无法用适宜传统加法和乘法运算的代数工具来表示的。
既然无法定义数字计算,自然也就无法勾画曼德布罗集的三维形象。
解决方案之一是在四维空间中进行计算,然后将结果投射到三维空间中。
四维空间中的每个点都可与“四元数”(quaternion)匹配,对它们可以进行传统算术操作。
尽管四维空间无法用肉眼看到,但利用四元数便能轻而易举地列出与曼德布罗集相对应的算法,之后去掉一个分量,就能使结果显示成三维效果。
但这个方案也令人失望,得到的画面比二维图像好不了多少。
为了避开这个难题,丹尼尔•怀特两年前冒出一个古怪的想法。
彻底摆脱数学的羁绊,他在三维空间的点与点之间凭空构建出一种“伪分形”。
尽管其处理手段算不上中规中矩的乘法,但至少将与曼德布罗集相对应的算法扩展到了三维空间中所有的点。
丹尼尔•怀特对几百万个点进行了计算,之后又追加了光影和纹理以体现立体效果,终于,在他的屏幕上呈现出第一个芒德球,形状与严格的曼德布罗集十分近似。
遗憾的是,这一结果没能满足他的期望:“图形令人惊叹,但我期望的是更精致的细节。
”尝试并未就此止步。
丹尼尔•怀特在互联网上的一个分形体论坛上引起了美国一位年轻计算机专家保罗•尼兰德的注意。
他接手怀特的研究,对算法进行稍事改动,把反复的平方操作换成更高次方(八次方),从而得到了一系列新的芒德球,指数越高,细节就越丰富。
这个芒德球引起了我的极大兴趣,下决心要学学分形体,于是乎决定从最简单的分形算法学起,希望与各位共勉。
以下开始介绍几例最简单的分形算法:一、Cantor三分集的递归算法选取一个欧氏长度的直线段,将该线段三等分,去掉中间一段,剩下两段。
将剩下的两段分别再三等分,各去掉中间一段,剩下四段。
将这样的操作继续下去,直到无穷,则可得到一个离散的点集。
点数趋于无穷多,而欧氏长度趋于零。
经无限操作,达到极限时所得到的离散点集称之为Cantor集。
1.给定初始直线两个端点的坐标(ax,ay)和(bx,by),按Cantor三分集的生成规则计算出个关键点的坐标如下:cx=ax+(bx-ax)/3cy=ay-ddx=bx-(bx-ax)/3dy=by-day=ay-dby=by-d2.利用递归算法,将计算出来的新点分别对应于(ax,ay)和(bx,by),然后利用步骤1的计算关系计算出下一级新点(cx,cy)和(dx,dy),并压入堆栈。
3.给定一个小量c,当(bx,by)<c时,被压入堆栈中的值依次释放完毕,同时绘制直线段(ax,ay)-(bx,by),然后程序结束。
下面给出matlab程序:function f=cantor(ax,ay,bx,by)c=0.005;d=0.005;if (bx-ax)>cx=[ax,bx];y=[ay,by];hold on;plot(x,y,'LineWidth',2);hold off;cx=ax+(bx-ax)/3;cy=ay-d;dx=bx-(bx-ax)/3;dy=by-d;ay=ay-d;by=by-d;cantor(ax,ay,cx,cy);cantor(dx,dy,bx,by);end运行cantor(0,5,5,5),出现图例如下:二、Koch曲线的递归算法在一单位长度的线段上对其三等分,将中间段直线换成一个去掉底边的等边三角形,再在每条直线上重复以上操作,如此进行下去直到无穷,就得到分形曲线Koch曲线。
1.给定初始直线(ax,ay)-(bx,by),按Koch曲线的构成原理计算出各关键点坐标如下:cx=ax+(bx-ax)/3cy=ay+(by-ay)/3ex=bx-(bx-ax)/3ey=by-(by-ay)/3l=sqrt((ex-cx)^2+(ey-cy)^2)alpha=atan((ey-cy)/(ex-cx))dy=cy+sin(alpha+pi/3)*ldx=cx+cos(alpha+pi/3)*l2.利用递归算法,将计算出来的新点分别对应于(ax,ay)和(bx,by),然后利用步骤1中的计算公式计算出下一级新点(cx,cy),(dx,dy),(ex,ey),并压入堆栈。
3.给定一个小量c,当l<c时,被压入堆栈中的值依次释放完毕,同时绘制直线段(ax,ay)-(bx,by),然后结束程序。
下面给出matlab程序:function f=Koch(ax,ay,bx,by,c)if (bx-ax)^2+(by-ay)^2<cx=[ax,bx];y=[ay,by];plot(x,y);hold on;elsecx=ax+(bx-ax)/3; cy=ay+(by-ay)/3;ex=bx-(bx-ax)/3; ey=by-(by-ay)/3;l=sqrt((ex-cx)^2+(ey-cy)^2);alpha=atan((ey-cy)/(ex-cx));if (alpha>=0&(ex-cx)<0)|(alpha<=0&(ex-cx)<0) alpha=alpha+pi;enddy=cy+sin(alpha+pi/3)*l;dx=cx+cos(alpha+pi/3)*l;Koch(ax,ay,cx,cy,c);Koch(ex,ey,bx,by,c);Koch(cx,cy,dx,dy,c);Koch(dx,dy,ex,ey,c);end运行Koch(0,0,100,0,10),出现图例如下:三、生成填充Julia集1.设定参数a,b以及一个最大的迭代步数N。
2.设定一个限界值R,即实数R≧max(2,sqrt(a^2+b^2)。
3.对于平面上以R为半径的圆盘内的每一点进行迭代,如果对于所有的n≦N,都有|x^2+y^2|≦R,那么,在屏幕上绘制出相应的起始点,否则不绘制。
下面给出matlab程序:a=-0.11;b=0.65;r=2;for x0=-1:0.01:1for y0=-1:0.01:1x=x0;y=y0;if x0^2+y0^2<1for n=1:80x1=x*x-y*y+a;y1=2*x*y+b;x=x1;y=y1;endif (x*x+y*y)<rplot(x0,y0);endhold on;endendenda=-0.11,b=0.65a=-0.13,b=0.77a=-0.19,b=0.6557四、牛顿迭代牛顿迭代是在数值求解非线性方程(组)的时候经常使用的方法。
有些牛顿迭代能够绘制出漂亮的图形来,所以现在也常用于设计图形。
Matlab程序如下:首先编写newton函数:function y=newton(z)if (z==0)y=0;return;endfor i=1:1:2000y=z-(z^3-1)/(3*z^2);if (abs(y-z)<1.0e-7)break;endz=y;end接着进入主程序:clear all;clc;A=1;B=0;C=1;for a=-1:0.005:1for b=-1:0.005:1x0=a+b*i;y=newton(x0);if abs(y-A)<1.0e-6plot(a,b,'r');hold on;elseif abs(y-B)<1.0e-6plot(a,b,'g');hold on;elseif abs(y-C)<1.0e-6plot(a,b,'y');hold on;endendend五、迭代函数系IFSIFS是分形的重要分支。
它是分形图像处理中最富生命力而且最具有广阔应用前景的领域之一。
这一工作最早可以追溯到Hutchinson于1981年对自相似集的研究。
美国科学家M.F.Barnsley 于1985年发展了这一分形构型系统,并命名为迭代函数系统(Iterated Function System,IFS),后来又由Stephen Demko等人将其公式化,并引入到图像合成领域中。
IFS将待生成的图像看做是由许多与整体相似的(自相似)或经过一定变换与整体相似的(自仿射)小块拼贴而成。