当前位置:文档之家› Koch分形曲线200812219

Koch分形曲线200812219


n=m; end plot(p(:,1),p(:,2),'k') axis equal axis off 矩形生成元第二种曲线 p=[0 0;10 0];n=2; A=[0 -1;1 0]; for k=1:4 d=diff(p/3);m=5*n-4; q=p(1:n-1,:); p(6:5:m,:)=p(2:n,:); p(2:5:m,:)=q+d; p(3:5:m,:)=q+d+.7*d*A'; p(4:5:m,:)=q+2*d+.7*d*A'; p(5:5:m,:)=q+2*d; n=m; end plot(p(:,1),p(:,2),'k') axis equal axis off
A=
cos 3 sin 3
π π
− sin 3 cos 3
π
π
算法根据初始数据(和点的坐标),产生图1中5个结点的坐标。结点的坐标数组 形成一个5× 2矩阵,矩阵的第一行为P1的坐标,第二行为P2的坐标,⋯⋯,第五行为P5 的坐标。矩阵的第一列元素分别为5个结点的X坐标,第二列元素分别为5个结点的Y 坐标。 进一步考虑Koch曲线形成过程中结点数目的变化规律。设第 k次迭代产生结点 数 为 nk , 第 k+1 次 迭 代 产 生 结 点 数 为 nk+1 , 则 nk 和 nk+1 之 间 的 递 推 关 系 式 为
7
6
i=1; for j=1:2:n p1=p(j,:); p2=p(j+1,:); d=(p2-p1)/3; new(i,:)=p1;i=i+1; q1=p1+d; new(i,:)=q1;i=i+1; new(i,:)=q1;i=i+1; new(i,:)=p1+d+e*d*a';i=i+1; new(i,:)=q1;i=i+1; new(i,:)=p1+d+e*d*a;i=i+1; new(i,:)=p1+d;i=i+1; q2=p1+2*d; new(i,:)=q2;i=i+1; new(i,:)=q2;i=i+1; new(i,:)=p1+2*d+d*a;i=i+1; new(i,:)=q2;i=i+1; new(i,:)=p1+2*d+d*a';i=i+1; new(i,:)=p1+2*d;i=i+1; new(i,:)=p2;i=i+1; end n=n*7;p=new; end for m=1:2:n line([p(m,1) p(m+1,1)],[p(m,2) p(m+1,2)],'Color','k'); end axis equal axis off 矩形生成元第一种曲线 p=[0 0;10 0];n=2; A=[0 -1;1 0]; for k=1:4 d=diff(p/3);m=5*n-4; q=p(1:n-1,:); p(6:5:m,:)=p(2:n,:); p(2:5:m,:)=q+d; p(3:5:m,:)=q+d+1*d*A'; p(4:5:m,:)=q+2*d+1*d*A'; p(5:5:m,:)=q+2*d;
3
程序运行后,可得如下分形曲线图形:
图1所示的简单图形被称为是koch曲线的生成元。 下面给出其它几种生成元及对 应曲线:
4
5
1.4 附源程序
第一种树形源程序: p=[0 0;10 10];n=2; line(p(:,1),p(:,2),'Color','k'); A=[cos(pi/6) -sin(pi/6);sin(pi/6) cos(pi/6)]; for k=1:4 i=1; for j=1:2:n p1=p(j,:);p2=p(j+1,:); d=(p2-p1)/3; r(i,:)=p1;i=i+1; q1=p1+d; r(i,:)=q1;i=i+1; r(i,:)=q1;i=i+1; q2=q1+d*A'; r(i,:)=q2;i=i+1; r(i,:)=q1;i=i+1; q3=p1+2*d; r(i,:)=q3;i=i+1; r(i,:)=q3;i=i+1; q4=q3+d*A; r(i,:)=q4;i=i+1; r(i,:)=q3;i=i+1; r(i,:)=p2;i=i+1; xy=[q1;q2]; line(xy(:,1),xy(:,2),'Color','k'); xy=[q3;q4]; line(xy(:,1),xy(:,2),'Color','k'); end p=r; n=5*n; end axis equal axis off 第二种树形源程序 clear p=[0 0;0 15]; b=pi/8;e=1.5; a=[cos(b) -sin(b);sin(b) cos(b)]; n=2; for k=1:4
nk+1=4nk-3。
2
1.3 MATLAB实现
p=[0 0;10 0];n=2; A=[cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3)]; for k=1:5 d=diff(p)/3;m=4*n-3; q=p(1:n-1,:);p(5:4:m,:)=p(2:n,:); p(2:4:m,:)=q+d; p(3:4:m,:)=q+d+d*A'; p(4:4:m,:)=q+2*d; n=m; end plot(p(:,1),p(:,2),'k') axis equal axis off 。
这种迭代继续进行下去可以形成 Koch 分形曲线。在迭代过程中,图形中的点 将越来越多,而曲线最终显示细节的多少将取决于迭代次数和显示系统的分辩率。
1.2 算法分析
算法分析:考虑由直线段(2 个点)产生第一个图形(5 个点)的过程。设P1和P5分 别为原始直线段的两个端点。现在需要在直线段的中间依次插入P2、P3、P4三个点产 生第一次迭代的图形(图1)。显然,P2 位于P1点右端直线段的三分之一处,P4 位于P1 点右端直线段的三分之二处;而P3点的位置可以看成是P4由点绕P2旋转60 度(逆时针 方向)而得到的,故可以处理为向量P2P4经正交变换而得到向量P2P3。算法如下: P2=P1+(P5-P1)/3; P4=P1+2*(P5-P1)/3; P3=P2+(P4-P2)*AT; 在(3)中, A为正交矩阵:
Koch 分形曲线
姓名:赵仓仓 学号:200812219 专业:统计学
注:
摘 要:分形理论是当今世界十分风靡和活跃的新理论、新学科。分形的概念是美籍
数学家曼德布罗特(B.B.Mandelbort)首先提出的。
关键词:分形原理
算法分析
MATLAB实现
源程序
1
Koch 分形曲线
1.1 分ቤተ መጻሕፍቲ ባይዱ原理
这是一类复杂的平面曲线,可用算法描述。从一条直线段开始,将线段中间三 分之一部分用等边三角形的两条边代替,形成具有5 个结点的图形(图1);在新的图 形中,又将图中每一直线段中间的三分之一部分都用一等边三角形的两条边代替, 再次形成新的图形(图2),这时,图形中共有17 个结点。
相关主题