Koch分形雪花图的面积计算
发布时间:2015-04-18 11:01:03
发布时间:2015-04-18 11:01:03
Koch分形雪花图的面积计算
一、问题叙述
分形几何图形最基本的特征是自相似性,这种自相似性是指局部与整体在形态、功能、信息、时间、空间等方面具有统计意义上的相似。在具有自相似性的图形中,图形局部只是整体的缩影,而整体图形则是局部的放大。而本文我们要分析的是Koch分形雪花图,包含以下三个问题:
1.描述Koch分形雪花
2.证明Koch分形雪花图的边数为
3.求Koch分形雪花图的面积(数据),求
二、问题分析
在分析Koch分形雪花图之前,我们首先介绍Koch分形曲线。Koch分形曲线的绘制原理是:从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的两边代替,形成四条线段的折线,如图2.1所示:
图2.1 对一条线段进行第一次Koch分形
然后,对形成的四条直线段的每一条的中间的三分之一部分用等边三角形的两边代替,形成十六条线段的折线。这种迭代继续进行下去可以形成Koch分形曲线。在迭代过程中,图形中的点数将越来越多,而曲线的最终显示细节的多少将取决于迭代次数和显示系统的分辨率。
设P1和P2分别是原始的两个端点,现在需要在直线段的中间依次插入点Q1,Q2,Q3以产生第一次迭代图形。显然,Q1位于P1右端直线段的三分之一处,Q3位于P1点右端直线段的三分之二处,而Q2点的位置可以看作由Q3绕Q1逆时针旋转60度而得到的,故可以处理经过正交变换而得到。算法如下:
(1)
(2);
(3)。
在算法中,用正交矩阵A构造正交变换,其功能作用是对向量作旋转,使之成为长度不变的另一向量。在绘制Koch曲线的过程中,取旋转的角度为,则正交矩阵A应取为:
1.Koch分形雪花的描述
Koch分形雪花的原始图形是等边三角形,它是由三条相等的线段围成的三角形。根据前面介绍的一条线段的Koch分形的原理可知,Koch分形雪花的形成是对等边三角形的三条边进行Koch分形,随着迭代次数的增加,即可形成Koch分形雪花图。
2.证明Koch分形雪花图的边数为
证:对于一条线段,第1次迭代生成的图形包含4条线段,第2次迭代后生成的共有16条线段,第3次迭代后共有64条线段,以此类推,第n次迭代后共有条线段。所以,第n个图形(即第n-1次迭代)共有条线段。对于该等边三角形,三条线段都进行Koch分形,进行n-1次迭代 ,生成的雪花图的的直线段数为,也即雪花图边数为:
。
3.求Koch分形雪花图的面积
(1)递推法
首先,假设要进行分形的正三角形的边长为a,面积为S,则。设第一个图形为,面积为,则=S;第二个图形为,面积为,则;第三个图形为,面积为,则,以此类推,第n个图形为,面积为,则
,依次迭代,将最终表示成的形式为:
括号内的和式为等比数列,首项为,公比为,一共(n-1)项,所以
=
=
因此,
= 其中。
所以,当迭代次数趋于无穷大时,
== (其中,a是正三角形的边长)
结论:当时,Koch分形雪花图的面积为初始正三角形面积的1.6倍。
(2)格林公式法计算多边形面积法
多边形面积算法:
令可得区域D的面积计算公式为:
,其中是围绕多边形D的逆时针方向的闭合曲线。
对进行划分, (j=1,2,…,n)
参数方程:
=
=
所以,多边形面积公式为:
顶点按逆时针排列,且。
根据上述原理,我们用MATLAB首先编写Koch分形雪花图形生成程序的编写,然后将生成的所有的点的横纵坐标放在一个数组中(第一列代表点的横坐标,第二列代表点的纵坐标),应用多边形面积算法求解Koch分形雪花的面积。最后验证随着迭代次数的增加,Koch分形雪花的面积是否收敛于1.6S(S代表原始正三角形的面积)。
三、MATLAB实验程序及注释
程序一:
%Koch函数实现一条线段Koch分形
function [p1 h1]=Koch(a,b,c,f,h)
%(a,b),(c,f)表示初始线段的两个端点;h表示迭代次数
%p1表示迭代h次后,所有点的坐标;h1表示迭代h次后节点的个数
p=[a b;c f];
n=2;
%与x轴平行的那一条线段顺时针转转60度,其他两条逆时针旋转60度
if (a==0)&&(c==10)
A=[cos(pi/3) sin(pi/3);-sin(pi/3) cos(pi/3)];
else
A=[cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3)];
end
for k=1:h%对指定线段的进行h次迭代
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
p1=p;
h1=m;
plot(p(:,1),p(:,2),'b');
hold on
程序二:
%Koch分形雪花图的生成程序
function [s,s1,s3,t,h0]=tol(n)
%s表示迭代次数趋于无穷大时,Koch分形雪花图的面积
%s1表示用格林公式求多边形的面积法,求得n次迭代后,Koch分形雪花图的面积
%s3表示用迭代法,求得n次迭代后,Koch分形雪花图的面积
%t表示s-s1的面积差值
%h0表示第n次迭代后,Koch分形雪花图的节点个数
%对正三角形的三边进行Koch分形
[p1 h1]=Koch(0,0,10,0,n);
[p2 h2]=Koch(5,5*sqrt(3),10,0,n);
[p3 h3]=Koch(0,0,5,5*sqrt(3),n);
%构造数组p,表示迭代n次后,所有节点点的坐标;
p=p1;
p(h2+1:1:2*h2-1,:)=p2(h2-1:-1:1,:);
p(2*h3:1:3*h3-2,:)=p3(h3-1:-1:1,:);
plot(p(:,1),p(:,2),'b');
fill(p(:,1),p(:,2),'b');
s1=0;
%格林公式求Koch分形雪花图的面积法
for j=1:3*h1-3
s2=p(j,1)*p(j+1,2)-p(j+1,1)*p(j,2);
s1=s1+s2;
end
s1=s1/2;
s=1.6*(1.0/4)*sqrt(3)*100;
s4=(1.0/4)*sqrt(3)*100;
t1=1-(4.0/9)^n;
s3=(1+3*t1/5)*s4;%用迭代法求Koch分形雪花图的面积法
t=s-s1;%计算随着迭代次数的增加,Koch分形雪花图的面积距离极限的逼近程度
h0=3*h1-3;%计算n次迭代后,Koch分形雪花图的节点个数
四、实验图形及数据
在本次实验中,我们采用由三个点构成的正三角形作为Koch分形雪花图的原始图形,该正三角形的边长为10。
1.Koch分形雪花图
第0次迭代 第1次迭代
第2次迭代 第3次迭代
第4次迭代 第5次迭代
第6次迭代 第7次迭代
第8次迭代 第9次迭代
经过9次迭代,Koch分形的雪花图的绘制基本完成。
2.实验数据结果及分析
用上述编写的MATLAB程序,算出第n次迭代后,用迭代法和格林公式法计算多边形面积法计算出此时图形的面积,并和迭代次数趋于无穷大时的面积比较,比较结果如下表所示。
n | s1 | s3 | s | t | h0 | s1/s |
0 | 43.3013 | 43.3013 | 69.2820 | 25.9808 | 3 | 0.6250 |
1 | 57.7350 | 57.7350 | 69.2820 | 11.5470 | 12 | 0.8333 |
2 | 64.1500 | 64.1500 | 69.2820 | 5.1320 | 48 | 0.9259 |
3 | 67.0011 | 67.0011 | 69.2820 | 2.2809 | 192 | 0.9671 |
4 | 68.2683 | 68.2683 | 69.2820 | 1.0137 | 768 | 0.9854 |
5 | 68.8315 | 68.8315 | 69.2820 | 0.4505 | 3072 | 0.9935 |
6 | 69.0818 | 69.0818 | 69.2820 | 0.2002 | 12288 | 0.9971 |
7 | 69.1930 | 69.1930 | 69.2820 | 0.0890 | 49152 | 0.9987 |
8 | 69.2425 | 69.2425 | 69.2820 | 0.0396 | 196608 | 0.9994 |
9 | 69.2645 | 69.2645 | 69.2820 | 0.0176 | 786432 | 0.9997 |
10 | 69.2742 | 69.2742 | 69.2820 | 0.0078 | 3145728 | 0.9999 |
其中,n为迭代次数;s1是用格林公式求多边形的面积法,求得的n次迭代后Koch分形雪花图的面积;s3表示用迭代法,求得n次迭代后,Koch分形雪花图的面积;s表示迭代次数趋于无穷大时,Koch分形雪花图的面积;t是s-s1的差,表示n次迭代后,Koch分形雪花图对它的极限面积的逼近程度;h0是n迭代后Koch,分形雪花的节点数。下图为n次迭代后,Koch分形雪花图对它的极限面积的逼近程度。
对以上表格分析可得,用迭代法和格林函数法求得的Koch分形雪花图的面积是一致。迭代到第10次时,Koch分形雪花图已经达到极限面积的99.99%,求得的面积已非常接近极限条件下的面积。