分形插值算法和MATLAB实验 - 图文

更新时间:2023-10-25 01:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一,分形插值算法

——分形图的递归算法

1,分形的定义

分形(Fractal)一词,是法国人B.B.Mandelbrot 创造出来的,其原意包含了不规则、支离破碎等意思。Mandelbrot 基于对不规则的几何对象长期地、系统地研究,于1973 年提出了分维数和分形几何的设想。分形几何是一门以非规则几何形状为研究对象的几何学,用以描述自然界中普遍存在着的不规则对象。分形几何有其显明的特征,一是自相似性;分形作为一个数学集合, 其内部具有精细结构, 即在所有比例尺度上其组成部分应包含整体, 而且彼此是相似的。其定义有如下两种描述:

定义 1 如果一个集合在欧式空间中的 Hausdorff 维数H D 恒大于其拓扑维数

r D ,则称该集合为分形集,简称分形。

定义 2 组成部分以某种方式与整体相似的形体叫分形。

对于定义 1 的理解需要一定的数学基础, 不仅要知道什么是Hausdorff 维 数,而且要知道什么是拓扑维数,看起来很抽象,也不容易推广。定义 2 比较 笼统的说明了自然界中的物质只要局部和局部或者局部和整体之间存在自相似 性,那么这个物质就是分形。正是这一比较“模糊”的概念被人们普遍接受,同 时也促进了分形的发展。

根据自相似性的程度,分形可分为有规分形和无规分形。有规分形是指具有严格的自相似的分形,比如,三分康托集,Koch 曲线。无规分形是指具有统计意义上的自相似性的分形,比如,曲折的海岸线,漂浮的云等。本文主要研究有规分形。

2. 分形图的递归算法

2.1 三分康托集

1883 年,德国数学家康托(G.Cantor)提出了如今广为人知的三分康托集。三分康托集是很容易构造的,然而,它却显示出许多最典型的分形特征。它是从单位区间出发,再由这个区间不断地去掉部分子区间的过程构造出来的(如图2.1)。

其详细构造过程是:第一步,把闭区间[0,1]平均分为三段,去掉中间的 1/3 部分段,则只剩下两个闭区间[0,1/3]和[2/3,1]。第二步,再将剩下的两个闭 区间各自平均分为三段,同样去掉中间的区间段,这时剩下四段闭区间:[0,1/9], [2/9,1/3],[2/3,7/9]和[8/9,1]。第三步,重复删除每个小区间中间的 1/3 段。如此不断的分割下去, 最后剩下的各个小区间段就构成了三分康托集。三 分康托集的 Hausdorff 维数是0.6309。

图2.2 三分康托集的构造过程

2.2 Koch 曲线

1904 年,瑞典数学家柯赫构造了“Koch 曲线”几何图形。Koch 曲线大于一维,具有无限的长度,但是又小于二维,并且生成的图形的面积为零。它和三分康托集一样,是一个典型的分形。根据分形的次数不同,生成的Koch 曲线也有很多种,比如三次 Koch 曲线,四次 Koch 曲线等。下面以三次 Koch 曲线为例,介绍 Koch 曲线的构造方法,其它的可依此类推。

三次Koch 曲线的构造过程主要分为三大步骤:第一步,给定一个初始图形一条线段;第二步,将这条线段中间的 1/3 处向外折起;第三步,按照第二步的方法不断的把各段线段中间的 1/3 处向外折起。这样无限的进行下去,最后即可构造出Koch 曲线。其图例构造过程如下图2.2所示(迭代了 6 次的图形)。

图 2.2 Koch曲线生成过程

2.3 Sierpinski 垫片的递归算法

在 Cantor 集与Koch 集的基础上继续讨论Sierpinski 垫片的生成算法,同样先建立模型如下图2.3,同时展示生成后的图形。

图2.3 Sierpinski 垫片模型

其中先设定正三角形中心点坐标为(x, y),边长为L,迭代深度为n,三角形顶点分别为( xi,yi ),i= 1,2,3。且下一层正三角形的中心坐标为(xi,yi),i=01,02,03。

2.4 分支结构分形递归算法

研究如下图(图 2.4)的分支结构图的递归算法。

图 2.4分支结构分形图

细分此分支结构,建立模型如下,其中取 A 为起点,且记 A 点坐标为(x,y),B 点坐标为(x1,x2),线段AB = L, 2 .3BC = BD = L 且设定 AB 与水平面的夹角为alpha, 递归深度为n。

3 基于MATLAB的各种递归算法实例

3.1 三分康托集的MATLAB实例

Cantor 三分集的递归算法设计为构造一个函数为Cantor(ax,ay,bx,by), 其中(ax,ay)和(bx,by)分别代表初始位置端点的坐标。取 err 为递归终止的极小量,取 h 为不同层次线段之间的距离,且设出(cx,cy)和(dx,dy)如图3.1

图 3.1 建立Cantor 三分集模型

(1),MATLAB程序 Cantor(ax,ay,bx,by)

{ plot([ax,bx],[ay,by]); %画出每个层次上的图形

本文来源:https://www.bwwdw.com/article/hg92.html

Top