MATLAB 课程设计
题目: cantor 三分集
日期:
用 matlab 画 cantor 三分集
摘要:
本文介绍了分形几何中的 cantor 三分集 ,并且给出了 MATLAB
程序以及运行结果,分形作为双曲迭代函数系统的吸引子。根据程序
中的迭代将分形模拟确为迭代法。
关键词:
分形几何、cantor 三分集、程序 、分法细密
一、 简介
分形是指没有特征长度(特征长度是指所考虑的集合对象所含有
的各种长度的代表者);但具有一定意义下的自相似图形和结构的总
称。典型的分形集一般具有如下几个特征:无论用什么尺度衡量,其
复杂性不消失,即具有无穷精细的结构;分型是不规则的,以至于不
能用传统的几何语言来描述;部分与整体是相似的,即具有自相似性;
可以通过递归、迭代等简单的方式产生;其分维数大于拓扑维数,分
形的特点也可以概括为两点,就是自相似性和无限细分。分型体系的
局部与整体是相似的。
任何一个分形,都具有无穷多个分形元,对整体的无限细分,所
形成的无数分形元,构成了分形图形的整体。通常分形都是极度对称
的,对称到了完美的地步。但生成这种图形却不需要非常复杂的程序。
因为他们具有无限的细节表面,就可以使用递归算法来实现。Cantor
三分集是分形里面的一个小分支,根据迭代的次数不同,可以画出不
同的分法细密度。
二、算法
Cantor 三分集的构造如下图所示,一条线段 ab 被均分为三段,保
留其两边的两段,中间一段去掉,然后把得到的每一段再继续进行划
分,如此反复。
根据它生成的原理,可以设计算法如下:
Cantor 三分集的绘制十分简单,是一种最简单的分形实例,它的算法
如下:
cx = ax + ( bx – ax )/3
cy = ay – h
dx = bx – ( bx – ax )/3
dy = by – h
ay = ay – h
by = by – h
其中 h 为两层之间的距离。如此循环下去,画出每个阶段的图形就可
以得到 cantot 三分行的图形。因为 cantor 集的生成是无穷的的,在这
里我能就规定当线段的距离小于规定的数时,循环就停止。在这里以
C 表示。
三、 程序
程序清单为:
function f=cantor(ax,ay,bx,by) %定义一个函数 cantor
c=0.005;d=0.005; %C 为画出的 最小的 的 线段的 最小长度,d 为
两条线段之间的距离。
if (bx-ax)>c
%如果线段的长度大于 C,就继续画曲线。
x=[ax,bx];y=[ay,by];hold on;%画图的 范围
plot(x,y,'LineWidth',2);hold off; %用 X ,Y 画直线,刷新图形界面
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 函数
cantor(dx,dy,bx,by); %再次调用 cantor 函数
end
四、结果及分析
给定初始坐标:ax=0,ay=5.bx=5,by=5
程序的运行结果为:
程序的运行结果不仅与 ax,ay,bx,by 的取值有关,而且与程
序中 c 和 d 的取值有关,因此,不同取值会画出不同分法细密度的
Cantor 三分集
五、总结
使用 MATLAB 可以编制简练,灵活的分形模拟程序。通过调节
每个程序第一行中常数,可以获得不同外观形状的图形。程序中均有
一个控精度的量(循环次数),取值越大,模拟精度越高。只要机器
运算速度允许,模拟图与对应分形之间可任意接近。
程序均用到了循环语句进行抚今迭代,绘图数据收集在一个两行
的矩阵中,绘图命令用到了 plot 函数。在确定迭代法中,迭代出的点
的总数随循环次数以指数速度增长,故循环次数以选取较小时就得到
了理想的图形。在随机迭代法中,一次循环只增加一个数据点,故循
环次数要取的较大。
MATLAB 提供了一系列求解数学问题的命令和绘图命令。利用
数学命令可以求解函数的导数、积分等等。利用绘图命令可以绘出各
式各样的二维图形、三维图形。MATLAB 可以进行编程运算,对一
些复杂问题的计算或复杂图形的绘制,可以编程实现。因此 MATLBA
的功能是很强大的。