Matlab在分形模拟上的一些应用
(2010-04-02 17:04:44)
标签:
杂谈 |
把在形态、功能和信息等方面具有自相似性的对象称为分形。自相似性是指局部的形态与整体的形 态相似,局部与整体相互依赖。由此可以通过局部认识和推及整体。在自然界中,很多的自然景观就具有自相似性。如云彩、山脉、海岸线、火焰、水波等,只要抽 象出这些自然景观的某些特征,再不断放大,就可以得到整体。计算机分形图形就是利用这一原理实现的。
MATLAB作为一种科学计算软件,具有输入简捷、运算高效、内容丰富、扩展性强等特点,并且它还 可与Word结合起来,使含有MATLAB运行内容的文章的编辑变得非常方便。这些特点使MATLAB深受科技人员,特别是非软件专业的人们的喜爱。分形 在所有尺寸下都有无限的细节,因而完全由计算机不可能产生精确的分形,只能给出近似的描绘,即模拟。而这里给出的程序中均有一个控制精度的量,只要计算机 运算速度和屏幕分辨率允许,精度可任意提高。分形可作为双曲迭代函数系统的吸引子,根据程序中迭代的选取,将分形模拟分为确定迭代法和随机迭代法。
Cantor集
选 取一个欧氏长度的直线段,将该线段三等分,去掉中间一段,剩下两段。将剩下的两段分别再三等分,各去掉中间一段,剩下四段。将这样的操作继续下去,直到无 穷,则可得到一个离散的点集。点数趋于无穷多,而欧氏长度趋于零。经无限操作,达到极限时所得到的离散点集称之为Cantor集。
模拟程序
function f=cantor(ax,ay,bx,by)
c=0.2;d=2;
if (bx-ax)>c
cy=ay-d;
end
Koch(科赫)曲 线
在一单位长度的线段上对其三等分,将中间段直线换成一个去掉底边的等边三角形, 再在每条直线上重复以上操作,如此进行下去直到无穷,就得到分形曲线Koch曲线。
模 拟程序
function f=Koch(ax,ay,bx,by,c)
if (bx-ax)^2+(by-ay)^2<c
else
end
输入:Koch(0,0,120,0,10);
Koch曲线也可以“随机生成”。在构造的每一步,每次去掉区间中间三分之一的部分,而用与去掉部 分构成等边三角形的另两边来代替,再用抛硬币的方法决定新的部分位于被去掉的“上边”或“下边”。经几步以后,得到一个看起来相当不规则的随机Koch曲 线,它仍然保留了Koch曲线的某些特征,如具有精细的结构,但Koch曲线具有的严格子相似性已被它所具有的“统计自相似性”所取代。
模拟程序
将Koch()中 第13、14行改为:
val=rand();
输 入:Koch(0,0,120,0,10);
Koch snowflake(科赫雪花)
科赫雪花也称为科赫岛,她的构造是三条科赫曲线的 合成,在一个三角形的三条边上,按照科赫曲线的构造过程不断分割替代,就形成科赫雪花。
模拟程序
function f=kochsnow(l,c)
ax=0;ay=0;bx=l;by=0;
cx=l/2;
cy=l*sqrt(3)/2;
Koch(ax,ay,cx,cy,c);
Koch(cx,cy,bx,by,c);
Koch(bx,by,ax,ay,c);
输入:kochsnow(120,5);
分形树
下面给出树形分形图的MATLAB模拟程序。该分形树是对称 的,利用画线命令line。
模拟程序
h=10;d=0.6;th=pi/4;n=9;
A=zeros(2,2^(n+1)-2);A(:,2)=[0;h];C=[cos(th) -sin(th);sin(th) cos(th)];D=inv(C);
for i=2:n
end
for i=1:2^n-1
end