几个分形的matlab 实现
摘要:给出几个分形的实例,并用matlab 编程实现方便更好的理解分形,欣赏其带来的
数学美感
关键字:Koch 曲线 实验 图像
一、问题描述:
从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的两边代替,形成山丘形图形如下
图1
在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的两条边代替,再次形成新的图形如此迭代,形成Koch 分形曲线。 二、算法分析:
考虑由直线段(2个点)产生第一个图形(5个点)的过程。图1中,设1P 和5P 分别为原始直线段的两个端点,现需要在直线段的中间依次插入三个点2P ,3P ,4P 。显然2P 位于线段三分之一处,4P 位于线段三分之二处,3P 点的位置可看成是由4P 点以2P 点为轴心,逆时针旋转600
而得。旋转由正交矩阵
?
???
?
?
?
?
-=)3cos()3sin()3sin(
)
3cos(ππππA 实现。
算法根据初始数据(1P 和5P 点的坐标),产生图1中5个结点的坐标。结点的坐标数组形成一个25?矩阵,矩阵的第一行为1P 的坐标,第二行为2P 的坐标……,第五行为5P 的坐标。矩阵的第一列元素分别为5个结点的x 坐标,第二列元素分别为5个结点的y 坐标。
进一步考虑Koch 曲线形成过程中结点数目的变化规律。设第k 次迭代产生的结点数为
k n ,第1+k 次迭代产生的结点数为1+k n ,则k n 和1+k n 中间的递推关系为341-=+k k n n 。
三、实验程序及注释: