Koch分形曲线200812219

合集下载

Koch类方波曲线的解析表达式的开题报告

Koch类方波曲线的解析表达式的开题报告

Koch类方波曲线的解析表达式的开题报告开题报告:题目:Koch类方波曲线的解析表达式研究背景:Koch曲线是由瑞典数学家Helge von Koch于1904年首次提出的。

Koch曲线是一种分形曲线,它可以通过每次迭代将直线的每个线段替换为一系列更小的线段来生成。

Koch曲线的变形还有Koch雪花,是一种结构简单但却充满美感的曲线,很受数学爱好者的喜爱。

Koch类方波曲线是一类特殊的Koch曲线,它是由一条直线分别向左和向右延伸形成的折线,并且其每一段线段的长度都相等。

与其他Koch曲线不同,Koch类方波曲线的曲线形状更加接近方波,具有更加显著的周期性和对称性,因此在信号处理、图像处理以及计算机图形学等领域都有很广泛的应用。

研究目的:本文旨在研究Koch类方波曲线的解析表达式,通过推导该曲线的解析表达式,可以更加直观地描述其特征和性质,并且为进一步的应用研究提供理论上的基础。

研究方法:本文将采用数学分析、计算机模拟等方法来研究Koch类方波曲线的解析表达式。

具体地,通过对Koch类方波曲线进行多次迭代,得到其逐渐逼近方波的形状,并且通过数学分析和计算机模拟的方法,得到该曲线的解析表达式。

研究意义:研究Koch类方波曲线的解析表达式,不仅可以帮助我们了解这种特殊类型的Koch曲线的特点和性质,还可以为信号处理、图像处理以及计算机图形学等领域的应用提供理论上的支持和参考。

此外,在数学教学中,Koch类方波曲线也是一种非常好的教学资源,可以帮助学生更加深入地理解分形几何的概念和原理,提高学生的数学素养和创新思维能力。

预期成果:本文预期能够推导出Koch类方波曲线的解析表达式,并且通过计算机模拟和图像处理的方法来验证其正确性和可靠性。

同时,本文还将探讨Koch类方波曲线的一些特征和性质,并且对其应用研究进行简要介绍,为相关领域的研究提供理论支持和参考。

研究计划:第一步:收集和整理Koch类方波曲线的相关研究资料,包括历史沿革、数学原理、应用研究等方面的内容。

分形曲线与面积计算-精品

分形曲线与面积计算-精品

sinx1 cos x2
cos sin
Asin
cos

(1, 0)
1

0


cos sin


(0, 1)

0 sin

1

cos

5/11
MATLAB代码
function koch0(P,N)
end
plot(P(:,1),P(:,2)),axis off axis image
6/11
Kn的边数: Kn的周长:
Sn 4n
Ln

1 3n
4n
L0
Kn的维数: Dnln4/ln31.2618
Dn

lnN
/
ln
1

相邻两次的边数比和边长比
参考资料: 分形论——奇异 性探索,作者:林鸿溢
第 k 条边: x y((tt)) ((1 1 tt))x yk k ttyx kk 11,t(0,1)
1
L kyd 0 x [1 ( t)yk tk y 1](x k 1x k)dt
1 2(xk1xk)(ykyk1)
x L k
9/11
面积计算的数学实验报告(三选一,或题材自选)
一、 Koch分形雪花 1.算法描述Koch分形雪花
2.证明Koch分形雪花图 Kn 的边数为
Ln 34n1
3.求Koch分形雪花图 Kn 的面积
ln im Are(aKn)
10/11
二、竞赛题的实验设 (第一届全国大学生数学夏令营第6题 )
课外作业:完成面积计算的 数学实验报告(电子文档)

科赫曲线python代码

科赫曲线python代码

科赫曲线python代码科赫曲线是一种分形图形,它由一条线段不断地被三等分并替换成一个等边三角形的两个边构成。

在这个过程中,每个边都会被替换成另外两条边,形成越来越复杂的图形。

在Python中,我们可以使用递归函数来绘制科赫曲线。

下面是一个实现科赫曲线的Python代码:## 导入绘图库import turtle## 定义一个递归函数,绘制科赫曲线def koch(t, order, size):if order == 0:t.forward(size)else:for angle in [60, -120, 60, 0]:koch(t, order-1, size/3)t.left(angle)## 设置画布大小和背景颜色turtle.setup(width=800,height=600) turtle.bgcolor("white")## 创建海龟对象t = turtle.Turtle()## 设置海龟初始位置和朝向t.penup()t.goto(-300,-100)t.pendown()t.left(60)## 绘制第一层科赫曲线koch(t, 4, 600)## 隐藏海龟对象t.hideturtle()## 等待用户关闭窗口turtle.done()代码解析:1. 导入绘图库:使用import语句导入turtle库。

2. 定义递归函数:使用def语句定义一个名为koch的函数,该函数接受三个参数:海龟对象t、曲线阶数order和线段长度size。

3. 绘制基本线段:如果曲线阶数为0,直接向前画一条长度为size的直线段;否则,执行下一步。

4. 递归绘制科赫曲线:对于每个角度(60度、-120度、60度、0度),递归地绘制下一层科赫曲线。

其中,左转60度和右转-120度分别对应着等边三角形的两条边,左转0度用于连接两个三角形。

5. 设置画布和海龟对象:使用turtle.setup()函数设置画布大小和背景颜色,并创建一个海龟对象t。

koch分形维数

koch分形维数

koch分形维数
Koch分形是一种经典的几何分形,它的构造过程是一种递归的过程。

在Koch 分形的构造中,我们可以看到随着递归层次的增加,分形的形状会变得越来越复杂,但同时它的面积却没有增加太多。

这是因为Koch分形是一种自相似结构,它的每一个小部分都与整体相似,但规模更小。

要计算Koch分形的维数,我们可以使用盒计数法。

盒计数法是一种通过将分形填充到一系列的盒子中,然后计算所需的最少盒子数来估计分形维数的方法。

对于Koch分形,随着递归层次的增加,每个盒子中的“点”数量会增加,因此所需的最少盒子数也会增加。

具体来说,我们可以将Koch分形划分为一系列边长为1的正方形,然后计算每个正方形中的“点”数量。

随着递归层次的增加,每个正方形中的“点”数量会增加,因此所需的最少盒子数也会增加。

当递归层次趋于无穷时,所需的最少盒子数会趋于一个常数,这个常数就是Koch分形的盒维数。

通过计算我们可以得到,当递归层次趋于无穷时,所需的最少盒子数为4/3^n,其中n是递归层次。

因此,Koch分形的盒维数为log(4)/log(3)约等于1.26185。

除了盒维数之外,Koch分形还有其他的维数,如填充维数和Hausdorff维数等。

其中Hausdorff维数是描述分形结构精细程度的重要参数,也是描述分形复杂性的重要指标之一。

总之,Koch分形是一种具有自相似结构的经典几何分形,其维数的计算方法有多种,其中盒计数法是一种常用的方法。

通过计算我们可以得到Koch分形的盒维数约为1.26185,这也是Koch分形的一个重要特征。

Koch分形雪花图的面积计算

Koch分形雪花图的面积计算

Koch 分形雪花图的面积计算一、问题叙述分形几何图形最基本的特征是自相似性,这种自相似性是指局部与整体在形态、功能、信息、时间、空间等方面具有统计意义上的相似。

在具有自相似性的图形中,图形局部只是整体的缩影,而整体图形则是局部的放大。

而本文我们要分析的是Koch 分形雪花图,包含以下三个问题:1.描述Koch 分形雪花2.证明Koch 分形雪花图K n 的边数为n 1L 34n -=⨯3.求Koch 分形雪花图的面积(数据),求n n lim Area(K )→∞二、问题分析在分析Koch 分形雪花图之前,我们首先介绍Koch 分形曲线。

Koch 分形曲线的绘制原理是:从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的两边代替,形成四条线段的折线,如图2.1所示:图2.1 对一条线段进行第一次Koch 分形然后,对形成的四条直线段的每一条的中间的三分之一部分用等边三角形的两边代替,形成十六条线段的折线。

这种迭代继续进行下去可以形成Koch 分形曲线。

在迭代过程中,图形中的点数将越来越多,而曲线的最终显示细节的多少将取决于迭代次数和显示系统的分辨率。

设P1和P2分别是原始的两个端点,现在需要在直线段的中间依次插入点Q1,Q2,Q3以产生第一次迭代图形。

显然,Q1位于P1右端直线段的三分之一处,Q3位于P1点右端直线段的三分之二处,而Q2点的位置可以看作由Q3绕Q1逆时针旋转60度而得到的,故可以处理Q Q 13经过正交变换而得到Q Q 12。

算法如下:(1)Q1P1+P P Q P1+P P /3;←←(2-1)/3;32(2-1)(2)T Q2Q1+Q3-Q A ←⨯(1); (3)P5P2P2Q1P3Q P Q3←←←←;;2;4。

在算法中,用正交矩阵A 构造正交变换,其功能作用是对向量作旋转,使之成为长度不变的另一向量。

在绘制Koch 曲线的过程中,取旋转的角度为3π,则正交矩阵A 应取为:cos()sin()33A=sin()cos()33ππππ⎛⎫- ⎪⎪ ⎪ ⎪⎝⎭ 1.Koch 分形雪花的描述Koch 分形雪花的原始图形是等边三角形,它是由三条相等的线段围成的三角形。

koch曲线 迭代函数

koch曲线 迭代函数

Koch曲线是一种经典的分形图形,由瑞典数学家Helge von Koch于1904年提出。

科赫曲线的生成过程是一个递归的过程,可以由以下步骤描述:首先取一条长度为1的线段,然后将其等分为三段,中间那段用等边三角形替换,之后对每个小线段进行同样的操作。

具体来说,迭代步骤如下:
1. 取一条长度为1的线段;
2. 将线段等分为三等分,中间的那一段不变,其余两段分别替换为两个等边三角形;
3. 对新得到的每一段(包括两个等边三角形和中间的线段)进行相同的操作。

这个过程会一直重复进行,直到线段的长度变为0为止。

这样,我们就可以得到一条科赫曲线。

初始线的起点和终点可以是任意的,例如[0,0]和[1,0]。

此外,我们也可以通过编程来绘制科赫曲线。

例如在Python中,我们可以使用turtle库来实现;在MATLAB中,也有专门的函数用于绘制科赫曲线。

分形几何中一些经典图形的Matlab画法+[文档在线提供]

分形几何中一些经典图形的Matlab画法+[文档在线提供]

分形几何中一些经典图形的Matlab画法(1)Koch曲线程序koch.mfunction koch(a1,b1,a2,b2,n)%koch(0,0,9,0,3)%a1,b1,a2,b2为初始线段两端点坐标,n为迭代次数a1=0;b1=0;a2=9;b2=0;n=3;%第i-1次迭代时由各条线段产生的新四条线段的五点横、纵坐标存储在数组A、B中[A,B]=sub_koch1(a1,b1,a2,b2);for i=1:nfor j=1:length(A)/5;w=sub_koch2(A(1+5*(j-1):5*j),B(1+5*(j-1):5*j));for k=1:4[AA(5*4*(j-1)+5*(k-1)+1:5*4*(j-1)+5*(k-1)+5),BB(5*4*(j-1)+5*(k-1)+1:5*4*(j-1)+5*(k-1)+5)] =sub_koch1(w(k,1),w(k,2),w(k,3),w(k,4));endendA=AA;B=BB;endplot(A,B)hold onaxis equal%由以(ax,ay),(bx,by)为端点的线段生成新的中间三点坐标并把这五点横、纵坐标依次分别存%储在数组A,B中function [A,B]=sub_koch1(ax,ay,bx,by)cx=ax+(bx-ax)/3;cy=ay+(by-ay)/3;ex=bx-(bx-ax)/3;ey=by-(by-ay)/3;L=sqrt((ex-cx).^2+(ey-cy).^2);alpha=atan((ey-cy)./(ex-cx));if (ex-cx)<0alpha=alpha+pi;enddx=cx+cos(alpha+pi/3)*L;dy=cy+sin(alpha+pi/3)*L;A=[ax,cx,dx,ex,bx];B=[ay,cy,dy,ey,by];%把由函数sub_koch1生成的五点横、纵坐标A,B顺次划分为四组,分别对应四条折线段中%每条线段两端点的坐标,并依次分别存储在4*4阶矩阵k中,k中第i(i=1,2,3,4)行数字代表第%i条线段两端点的坐标function w=sub_koch2(A,B)a11=A(1);b11=B(1);a12=A(2);b12=B(2);a21=A(2);b21=B(2);a22=A(3);b22=B(3);a31=A(3);b31=B(3);a32=A(4);b32=B(4);a41=A(4);b41=B(4);a42=A(5);b42=B(5);w=[a11,b11,a12,b12;a21,b21,a22,b22;a31,b31,a32,b32;a41,b41,a42,b42];图1 V on Koch曲线(2)Levy 曲线程序levy.mfunction levy(n)% levy(16),n为levy曲线迭代次数%x1,y1,x2,y2为初始线段两端点坐标,nn为迭代次数n=16;x1=0;y1=0;x2=1;y2=0;%第i-1次迭代时由各条线段产生的新两条线段的三端点横、纵坐标存储在数组X、Y中[X,Y]=levy1(x1,y1,x2,y2);for i=1:nfor j=1:length(X)/3w=levy2(X(1+3*(j-1):3*j),Y(1+3*(j-1):3*j));[XX(3*2*(j-1)+1:3*2*(j-1)+3),YY(3*2*(j-1)+1:3*2*(j-1)+3)]=levy1(w(1,1),w(1,2),w(1,3),w(1,4) );[XX(3*2*(j-1)+3+1:3*2*(j-1)+3+3),YY(3*2*(j-1)+3+1:3*2*(j-1)+3+3)]=levy1(w(2,1),w(2,2),w( 2,3),w(2,4));endX=XX;Y=YY;endplot(X,Y)hold onaxis equal%由以(x1,y1),(x2,y2)为端点的线段生成新的中间点坐标并把(x1,y1),(x2,y2)连同新点横、纵坐%标依次分别存储在数组X,Y中function [X,Y]=levy1(x1,y1,x2,y2)x3=1/2*(x1+x2+y1-y2);y3=1/2*(-x1+x2+y1+y2);X=[x1,x3,x2];Y=[y1,y3,y2];%把由函数levy1生成的三点横、纵坐标X,Y顺次划分为两组,分别对应两条折线段中每条线%段两端点的坐标,并依次分别存储在2*4阶矩阵w中,w中第i(i=1,2)行数字代表第i条线段%两端点的坐标function w=levy2(X,Y)a11=X(1);b11=Y(1);a12=X(2);b12=Y(2);a21=X(2);b21=Y(2);a22=X(3);b22=Y(3);w=[a11,b11,a12,b12;a21,b21,a22,b22];图2 Levy 曲线(3)分形树程序tree.hfunction tree(n,a,b)% tree(8,pi/8,pi/8),n为分形树迭代次数%a,b为分枝与竖直方向夹角%x1,y1,x2,y2为初始线段两端点坐标,nn为迭代次数n=8;a=pi/8;b=pi/8;x1=0;y1=0;x2=0;y2=1;plot([x1,x2],[y1,y2])hold on[X,Y]=tree1(x1,y1,x2,y2,a,b);hold onW=tree2(X,Y);w1=W(:,1:4);w2=W(:,5:8);% w为2^k*4维矩阵,存储第k次迭代产生的分枝两端点的坐标, % w的第i(i=1,2,…,2^k)行数字对应第i个分枝两端点的坐标w=[w1;w2];for k=1:nfor i=1:2^k[X,Y]=tree1(w(i,1),w(i,2),w(i,3),w(i,4),a,b);W(i,:)=tree2(X,Y);endw1=W(:,1:4);w2=W(:,5:8);w=[w1;w2];end%由每个分枝两端点坐标(x1,y1),(x2,y2)产生两新点的坐标(x3,y3),(x4,y4),画两分枝图形,并把%(x2,y2)连同新点横、纵坐标分别存储在数组X,Y中function [X,Y]=tree1(x1,y1,x2,y2,a,b)L=sqrt((x2-x1)^2+(y2-y1)^2);if (x2-x1)==0a=pi/2;else if (x2-x1)<0a=pi+atan((y2-y1)/(x2-x1));elsea=atan((y2-y1)/(x2-x1));endendx3=x2+L*2/3*cos(a+b);y3=y2+L*2/3*sin(a+b);x4=x2+L*2/3*cos(a-b);y4=y2+L*2/3*sin(a-b);a=[x3,x2,x4];b=[y3,y2,y4];plot(a,b)axis equalhold onX=[x2,x3,x4];Y=[y2,y3,y4];%把由函数tree1生成的X,Y顺次划分为两组,分别对应两分枝两个端点的坐标,并存储在一维%数组w中function w=tree2(X,Y)a1=X(1);b1=Y(1);a2=X(2);b2=Y(2);a3=X(1);b3=Y(1);a4=X(3);b4=Y(3);w=[a1,b1,a2,b2,a3,b3,a4,b4];图3 分形树(4)IFS算法画Sierpinski三角形程序sierpinski_ifs.hfunction sierpinski_ifs(n,w1,w2,w3)%sierpinski_ifs(10000,1/3,1/3,1/3)%w1,w2,w3出现频率n=10000;w1=1/3;w2=1/3;w3=1/3;M1=[0.5 0 0 0 0.5 0];M2=[0.5 0 0.5 0 0.5 0];M3=[0.5 0 0.25 0 0.5 0.5];x=0;y=0;% r为[0,1]区间内产生的n维随机数组r=rand(1,n);B=zeros(2,n);k=1;% 当0<r(i)<1/3时,进行M1对应的压缩映射;% 当1/3=<r(i)<2/3时,进行M2对应的压缩映射;% 当2/3=<r(i)<1时,进行M3对应的压缩映射;for i=1:nif r(i)<w1a=M1(1);b=M1(2);e=M1(3);c=M1(4);d=M1(5);f=M1(6);else if r(i)<w1+w2a=M2(1);b=M2(2);e=M2(3);c=M2(4);d=M2(5);f=M2(6);else if r(i)<w1+w2+w3a=M3(1);b=M3(2);e=M3(3);c=M3(4);d=M3(5);f=M3(6);endendendx=a*x+b*y+e;y=c*x+d*y+f;B(1,k)=x;B(2,k)=y;k=k+1;endplot(B(1,:),B(2,:),'.','markersize',0.1)图4 Sierpinski三角形(5)IFS算法画Julia集程序julia_ifs.hfunction julia_ifs(n,cx,cy)% julia_ifs(100000,-0.77,0.08)% f(z)=z^2+c,cx=real(c);cy=image(c);n=10000;cx=-0.77;cy=0.08;% z^2+c=z0,x=real(z0);y=image(z0);x=1;y=1;B=zeros(2,n);k=1;% A为产生的服从标准正态分布的n维随机数组A=randn(1,n);for i=1:nwx=x-cx;wy=y-cy;if wx>0alpha=atan(wy/wx);endif wx<0alpha=pi+atan(wy/wx);endif wx==0alpha=pi/2;endalpha=alpha/2;r=sqrt(wx^2+wy^2);if A(i)<0r=-sqrt(r);elser=sqrt(r);endx=r*cos(alpha);y=r*sin(alpha);B(1,k)=x;B(2,k)=y;k=k+1;endplot(B(1,:),B(2,:),'.','markersize',0.1)图5 Julia 集(6)逃逸时间算法画Sierpinski垫片程序sierpinski.hfunction sierpinski(a,b,c,d,n,m,r)%sierpinski(0,0,1,1,12,200,200)%(a,b),(c,d)收敛区域左上角和右下角坐标,m为分辨率% n为逃逸时间,需要反复试探,r逃逸半径a=0;b=0;c=1;d=1;n=12;m=200;r=200;B=zeros(2,m*m);w=1;for i=1:mx0=a+(c-a)*(i-1)/m;for j=1:my0=b+(d-b)*(j-1)/m;x=x0;y=y0;for k=1:nif y>0.5x=2*x;y=2*y-1;else if x>=0.5x=2*x-1;y=2*y;elsex=2*x;y=2*y;endif x^2+y^2>rbreak;endendif k==nB(1,w)=i;B(2,w)=j;w=w+1;endendendplot(B(1,:),B(2,:),'.','markersize',0.1)图6 Sierpinski三角形垫片(7)元胞自动机算法画Sierpinski三角形程序一维元胞自动机sierpinski_ca1.hfunction sierpinski_ca1(m,n)%sierpinski_ca1(1000,3000)m=1000;n=3000;x=1;y=1;t=1;w=zeros(2,m*n);s=zeros(m,n);s(1,fix(n/3))=1;for i=1:m-1for j=2:n-1if (s(i,j-1)==1&s(i,j)==0&s(i,j+1)==0)|(s(i,j-1)==0&s(i,j)==0&s(i,j+1)==1) s(i+1,j)=1;w(1,t)=x+3+3*j;w(2,t)=y+5*i;t=t+1;endendendplot(w(1,:),w(2,:),'.','markersize',1)图7.1 一维元胞自动机画Sierpinski三角形二维元胞自动机sierpinski_ca2.hfunction sierpinski_ca2(m,n)%sierpinski_ca2(400,400)m=400;n=400;t=1;w=zeros(2,m*n);s=zeros(m,n);s(m/2,n/2)=1;for i=[m/2:-1:2,m/2:m-1]for j=[n/2:-1:2,n/2:n-1]ifmod(s(i-1,j-1)+s(i,j-1)+s(i+1,j-1)+s(i-1,j)+s(i+1,j)+s(i-1,j+1)+s(i,j+1)+s(i+1,j+1),2)==1 s(i,j)=1;w(1,t)=i;w(2,t)=j;t=t+1;endendendplot(w(1,:),w(2,:),'.','markersize',0.1)图7.2 二维元胞自动机画Sierpinski三角形(8)IFS算法画Helix曲线程序helix_ifs.hfunction helix_ifs(n,w1,w2,w3)%helix_ifs(20000,0.9,0.05,0.05)%w1,w2,w3为出现频率n=20000;w1=0.9;w2=0.05;w3=0.05;M1=[0.787879 -0.424242 1.758647 0.242424 0.859848 1.408065];M2=[-0.121212 0.257576 -6.721654 0.05303 0.05303 1.377236];M3=[0.181818 -0.136364 6.086107 0.090909 0.181818 1.568035];x=0;y=0;% r为[0,1]区间内产生的n维随机数组r=rand(1,n);B=zeros(2,n);k=1;% 当0<r(i)<1/3时,进行M1对应的压缩映射;% 当1/3=<r(i)<2/3时,进行M2对应的压缩映射;% 当2/3=<r(i)<1时,进行M3对应的压缩映射;for i=1:nif r(i)<w1a=M1(1);b=M1(2);e=M1(3);c=M1(4);d=M1(5);f=M1(6);else if r(i)<w1+w2a=M2(1);b=M2(2);e=M2(3);c=M2(4);d=M2(5);f=M2(6);else if r(i)<w1+w2+w3a=M3(1);b=M3(2);e=M3(3);c=M3(4);d=M3(5);f=M3(6);endendendx=a*x+b*y+e;y=c*x+d*y+f;B(1,k)=x;B(2,k)=y;k=k+1;endplot(B(1,:),B(2,:),'.','markersize',0.1)图8 Helix曲线。

Koch曲线

Koch曲线

一、问题提出:画出Koch 曲线,计算它的第n 级分形的周长L n 。

第一步:先以10cm 为边长,以原点为中心画出正三角形,计算周长L 0。

第二步:将每一边长三等分,在中间段向外突出作小一级正三角形,擦去中间段,计算周长L 1。

第n 步:重复第二步至n=10,50,100,计算周长L n 至极限。

演示过程。

二、研究过程:用Matlab 软件画出第一个图形Γ0和第二个图形Γ1。

如图1与图2所示。

图1 图2通过观察,从第一个图形Γ0到第二个图形Γ1时,显然每条边经过变换变成四条边,Γ1的每条边为Γ0每条边的31。

同时Γ0的每条边生成了一个“突起”,这个突起为正三角形,它与Γ0的边数个数一致,边长和Γ1相同。

下面用几何画板画出一个“突起”。

如图3所示。

图3由图3可以看出:AE 为原来的边,取它的三分点B 、D ,在由BD 为边做出△BCD 。

C 点可以看成D 绕B 点逆时针旋转60°得到,此时B 、C 、D 确定。

设A (x 1,y ), E (x 2,y ),则B ⎪⎭⎫ ⎝⎛-+,y x x x 3121;D ⎪⎭⎫ ⎝⎛--,y x x x 3122;设()00,y x BC =→,而⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡-⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡-⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡032123232103cos sin sin cos 121200x x x x θθθθy x , 得到()⎪⎪⎩⎪⎪⎨⎧-=-=636120120x x y x x x ,即()⎪⎪⎭⎫ ⎝⎛--=→63,61212x x x x BC 。

故用Matlab 演示过程时,在正三角形三边均取两个三分点,然后通过转轴变换移动D 至C 点,最后连接BC 、CD 即可得到图像。

同理可得,从Γn-1到Γn 的过程中,每条边经过变换变成四条边,Γn 的每条边为Γn-1每条边的31。

同时Γn-1的每条边生成了一个正三角形,它与Γn-1的边数个数一致,边长和Γn 相同。

Koch曲线

Koch曲线

Koch 分形曲线1.1 分形原理这是一类复杂的平面曲线,可用算法描述。

从一条直线段开始,将线段中间三分之一部分用等边三角形的两条边代替,形成具有5个结点的图形(图1);在新的图形中,又将图中每一直线段中间的三分之一部分都用一等边三角形的两条边代替,再次形成新的图形(图2),这时,图形中共有17个结点。

这种迭代继续进行下去可以形成Koch 分形曲线。

在迭代过程中,图形中的点将越来越多,而曲线最终显示细节的多少将取决于迭代次数和显示系统的分辩率。

1.2 算法分析算法分析:考虑由直线段(2个点)产生第一个图形(5个点)的过程。

设1P 和5P 分别为原始直线段的两个端点。

现在需要在直线段的中间依次插入三个点234,,P P P 产生第一次迭代的图形(图1)。

显然,2P位于1P 点右端直线段的三分之一处, 4P 位于1P 点右端直线段的三分之二处;而3P 点的位置可以看成是由4P 点绕2P 旋转60度(逆时针方向)而得到的,故可以处理为向量24P P 经正交变换而得到向量23P P 。

算法如下:(1) 2151()/3P P P P =+-;(2) 41512()/3P P P P =+-;(3) 3242()T P P P P A =+-⨯;图2 第二次迭代图1 第一次迭代在(3)中, A 为正交矩阵:c o s s i n 33sin cos 33A ππππ⎡⎤-⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦算法根据初始数据(1P 和5P 点的坐标),产生图1中5个结点的坐标。

结点的坐标数组形成一个5×2矩阵,矩阵的第一行为1P 的坐标,第二行为2P 的坐标,……,第五行为5P 的坐标。

矩阵的第一列元素分别为5个结点的X 坐标,第二列元素分别为5个结点的Y 坐标。

进一步考虑Koch 曲线形成过程中结点数目的变化规律。

设第k 次迭代产生结点数为k n ,第k+1次迭代产生结点数为1k n +,则k n 和1k n +之间的递推关系式为143k k n n +=-。

科勒雪花 分形维度

科勒雪花 分形维度

科勒雪花是一种分形图形,也被称为科赫曲线或科赫雪花曲线。

它是由瑞典数学家海尔曼·冯·科赫于1904年提出的。

科勒雪花的分形维度是多少呢?分形维度是用来描述分形图形复杂程度的一个数值。

对于科勒雪花曲线,它的分形维度是1.2618。

为了计算科勒雪花的分形维度,可以使用分形维度的计算方法之一——盒计数法。

这种方法涉及将图形覆盖在一个网格中,并计算所需的网格数量来完全覆盖图形。

然后,通过缩小网格的大小,可以计算出分形维度。

科勒雪花的分形维度为1.2618说明它具有一定的复杂性和自相似性,即无论如何放大或缩小,都可以看到相似的结构。

这也是分形图形的一个特征。

Koch曲线

Koch曲线

Koch曲线
koch曲线
科赫曲线(de:Koch-Kurve)
Koch曲线是一个数学曲线,同时也是早期被描述的一种分形曲线。

它由瑞典数学家Helge von Koch在1904年发表的一篇题为“从初等几何构造的一条没有切线的连续曲线”(原来的法文题目:"Sur une courbe continue sans tangente, obtenue par une construction géométrique élémentaire")的论文中提出。

有一种Koch曲线是象雪花一样,被称为Koch雪花(或Koch星),它是由三条Koch曲线围成的等边三角形。

设想从一个线段开始,根据下列规则构造一个Koch曲线:
1.三等分一条线段;
2.用一个等边三角形替代第一步划分三等分的中间部分;
3.在每一条直线上,重复第二步。

Koch曲线是以上步骤地无限重复的极限结果。

Koch曲线的长度为无穷大,因为以上的变换都是一条线段变四条线段,每一条线段的长度是上一级的1/3,因此操作n步的总长度是(4/3)n:若n→∞,则总长度趋于无穷。

Koch曲线的分形维数是log 4/log 3 ≈ 1.26,其维数大于线的维数(1),小于Peano填充曲线的维数(2)。

Koch曲线是连续的,但是处处不可导的。

Koch雪花的面积是2* √3 * s&sup2;/5 ,这里的s是最初三角形的边长,Koc h雪花的面积是原三角形面积的8/5,它成为一条无限长的边界围绕着一个有限的面积的几何对象。

Koch分形曲线

Koch分形曲线

在新的图形中,有将没一直线段中间的三 分之一部分都用一个等边三角形的另两边 代替,得到15个结点的图形
• 每迭代一次,曲线的长度增加4/3。 • 下面是迭代5次的图形。
算法的程序设计见下页的M-文件
p=[0,0;10,0]; a=[cos(pi/3),-sin(pi/3);sin(pi/3),cos(pi/3)];
练习
• 以正三角形为基础图形,在每一个边上 构造Koch曲线,得到Koch雪花。
结点 p(4:4:4*n-4,:)=q+2*d; end plot(p(:,1),p(:,2)) %插入第三组结点
算法的设计
(1) Q 1 P 1 ( p 2 P 1) / 3 ( 2 ) Q 3 P 1 2 ( P 2 P 1) / 3 ( 3 ) Q 2 Q 1 ( Q 3 Q 1) A ' ( 4 ) P 5 P 2 ; P 2 Q 1; P 3 Q 2 ; P 4 Q 3;
Koch分形曲线
一、分形的概念
• 把形态、功能和信息方面具有自相似性的对象 称为分形(fractal)。 • Koch曲线是最简单的分形曲线,从一条直线段 开始,将中间的三分之一部分用一个等边三角 形的另两条边代替,得到5个结点的图形
( 0, 0),( 3.3333, 0),(5.0000, 2.8868),(6.6667,0),(10.0000,0)
• 在第三步中的矩阵A为
cos A sin

3
Байду номын сангаас
sin
3
3 cos 3

• 由上面的程序,从{P1,P2}得到一个新的5 个顶点的数组{P1,P2,P3,P4,P5},就是我们 的生成元,然后对每一个线段{Pi,Pi+1} 再依次进行新的生成过程,得到一个17 个顶点的数组,第n步得到4n-3个顶 点……直至无限,就得到Koch曲线。

vonkoch曲线与皇冠分形曲线分形树枝法度模范(含注释)[总结]

vonkoch曲线与皇冠分形曲线分形树枝法度模范(含注释)[总结]

1 V on Koch 曲线与皇冠分形曲线的构造和算法1.V on Koch 曲线xuehua[x_List]:=Module[{a={},n=Length[x],i},For[i=1,i<n,i++,a=Join [a,{x[[i]],x[[i]]2/3+x[[i+1]]1/3,(x[[i]]2/3+x[[i+1]]1/3)+{{Cos[-2Pi/3],Sin[-2Pi/3]},{-Sin[-2Pi/3],Cos[-2Pi/3]}}.(x[[i]]-x[[i+1]])1/3,x[[i+1]]2/3+x[[i]]1/3,x[[i+1]]}]];a]Show[Graphics[Line[Nest[xuehua,{{0,0},{1,0}},4]]],AspectRatio->Automatic];Show[Graphics[Line[Nest[xuehua,{{0,0},{1,0},{1/2,3^(1/2)/2},{0,0}},4]]],AspectRatio->Automatic]运行可得图chap10.1中level 4和雪花所示的图形.图1 V on Koch 曲线令E 0为单位长度的直线段,称为初始元,将E 0三等分,把中间一等份挖掉,代之以无底的等边三角形,得到E 1 (如图chap10.1中level 1所示的部分,E 1 称为V on Koch 曲线的主型),即得到由4条线段构成的折线,然后对折线的每一段重复以上过程,重复次后,将得到由4n 条线段组成的折线E n ,当+∞→n 时,4n一致收敛于平面上的一条连续但处处不光滑的曲线E ,这条曲线E 就称为V on Koch 曲线.它的相似维为:=s D ln4/ln3.如果把3条同样的V on Koch 曲线连接起来,就得到雪花曲线(如图chap10.1所示).有趣的是,雪花曲线有无限的边长,但包围有限的面积.据V on Koch 曲线的生成过程,用Nest[ ]函数作迭代运算,再用Line[ ]函数作出相应的折线。

神奇的分形艺术

神奇的分形艺术

神奇的分形艺术神奇的分形艺术(一):无限长的曲线可能围住一块有限的面积Brain Storm | 2007-07-05 9:45| 21 Comments | 本文内容遵从CC版权协议转载请注明出自很多东西都是吹神了的,其中麦田圈之谜相当引人注目。

上个世纪里人们时不时能听见某个农民早晨醒了到麦田地一看立马吓得屁滚尿流的故事。

上面这幅图就是97年在英国Silbury山上发现的麦田圈,看上去大致上是一个雪花形状。

你或许会觉得这个图形很好看。

看了下面的文字后,你会发现这个图形远远不是“好看”可以概括的,它的背后还有很多东西。

在说明什么是分形艺术前,我们先按照下面的方法构造一个图形。

看下图,首先画一个线段,然后把它平分成三段,去掉中间那一段并用两条等长的线段代替。

这样,原来的一条线段就变成了四条小的线段。

用相同的方法把每一条小的线段的中间三分之一替换为等边三角形的两边,得到了16条更小的线段。

然后继续对16条线段进行相同的操作,并无限地迭代下去。

下图是这个图形前五次迭代的过程,可以看到这样的分辨率下已经不能显示出第五次迭代后图形的所有细节了。

这样的图形可以用Logo语言很轻松地画出来。

你可能注意到一个有趣的事实:整个线条的长度每一次都变成了原来的4/3。

如果最初的线段长为一个单位,那么第一次操作后总长度变成了4/3,第二次操作后总长增加到16/9,第n次操作后长度为(4/3)^n。

毫无疑问,操作无限进行下去,这条曲线将达到无限长。

难以置信的是这条无限长的曲线却“始终只有那么大”。

当把三条这样的曲线头尾相接组成一个封闭图形时,有趣的事情发生了。

这个雪花一样的图形有着无限长的边界,但是它的总面积却是有限的。

换句话说,无限长的曲线围住了一块有限的面积。

有人可能会问为什么面积是有限的。

虽然从上面的图上看结论很显然,但这里我们还是要给出一个简单的证明。

三条曲线中每一条的第n次迭代前有4^(n-1)个长为(1/3)^(n-1)的线段,迭代后多出的面积为4^(n-1)个边长为(1/3)^n的等边三角形。

科赫雪花原理的应用模型

科赫雪花原理的应用模型

科赫雪花原理的应用模型1. 简介科赫曲线,又称科赫雪花,是数学中的一种分形曲线。

它的特点是无论如何增加其边长,总是会生成一个雪花形状的曲线。

科赫雪花原理是一种非常有趣且重要的数学现象,它不仅具有美学价值,还有许多实际应用。

本文将介绍科赫雪花原理的应用模型。

2. 应用模型2.1. 基于科赫雪花的图像压缩算法科赫雪花原理可以应用于图像压缩算法中。

传统的图像压缩算法通常采用离散余弦变换(DCT)等方法,但这些方法无法充分利用图像的自相似性。

而基于科赫雪花的图像压缩算法则可以通过分解图像为多个连续放大的雪花形状来实现高效的压缩。

具体操作是将图像分割为若干个小块,然后每个小块都进行科赫变换,生成雪花形状,最后将所有小块拼接起来。

这样可以在保持图像质量的同时,大大减小图像文件的大小。

2.2. 基于科赫雪花的电路布线设计科赫雪花原理在电路布线设计中也有广泛应用。

传统的电路布线设计通常采用网格布线方法,但这种方法在处理复杂电路布线时效率较低。

而基于科赫雪花的电路布线设计可以通过模拟雪花的分形结构来提高电路布线的效率。

具体操作是将电路分解为多个雪花形状的子电路,然后将这些子电路按照一定的规则进行排列和连接。

这样可以在保持电路性能的同时,减小布线的复杂度,提高布线效率。

2.3. 基于科赫雪花的城市规划模型科赫雪花原理可以应用于城市规划中的道路设计。

传统的道路设计通常采用网格布局或环形布局,但这些布局方式在处理道路交叉口等复杂情况时存在一定的缺陷。

而基于科赫雪花的城市规划模型则可以通过模拟雪花的分形结构来提高道路布局的效果。

具体操作是将城市区域分解为多个雪花形状的区块,然后根据道路交通的需求进行排列和连接。

这样可以在保持交通流畅性的同时,提高城市规划的灵活性和美观性。

2.4. 基于科赫雪花的自然灾害模拟科赫雪花原理可以应用于自然灾害模拟中的地震模拟。

地震是一种具有复杂空间分布的自然灾害,传统的地震模拟方法通常是通过有限元法等方法进行分析,但这些方法在处理地震波的传播过程时存在一定的局限性。

Silverlight画分形(Koch曲线) -电脑资料.

Silverlight画分形(Koch曲线) -电脑资料.

Silverlight画分形(Koch曲线) -电脑资料2019-01-01Koch曲线是一类平面曲线:从一条线段中间三分之一的部分用等边三角形的两条边代替,形成的图形有四条边,五个节点,。

再依次组成边的每条线段做相同的处理。

迭代如图:稍微变换一下,画成六边形的,凸起方向向两边,用随机颜色,画完后为雪花状。

程序代码:private void LayoutRoot_Loaded(object sender, RoutedEventArgs ea)<br />{<br /> double sqrt3 = Math.Sqrt(3);<br /> Point a = new Point(50, (float)(100 + 50 * sqrt3));<br /> Point b = newPoint(100, (float)(100 + 100 * sqrt3));<br /> Point c = newPoint(200, (float)(100 + 100 * sqrt3));<br /> Point d = newPoint(250, (float)(100 + 50 * sqrt3));<br /> Point e = newPoint(200, 100);<br /> Point f = new Point(100, 100);<br />line(a, b, 5);<br /> line(b, a, 5);<br /> line(b, c, 5);<br /> line(c, b, 5);<br /> line(c, d, 5);<br /> line(d, c, 5);<br /> line(d, e, 5);<br /> line(e, d, 5);<br /> line(e, f, 5);<br /> line(f, e, 5);<br /> line(f, a, 5);<br /> line(a, f, 5);<br />}<br />private void line(Point a, Point b, int n)<br />{<br />if (n > 0)<br /> {<br /> double r = Math.Atan(Math.Abs(a.Y - b.Y) / Math.Abs(a.X - b.X)); //角度<br /> double v = 0;<br /> Point c = new Point(a.X + (b.X - a.X) / 3, a.Y + (b.Y -a.Y) / 3);<br /> Point d = new Point(a.X + 2 * (b.X - a.X) / 3, a.Y + 2 * (b.Y - a.Y) / 3);<br /> double l = Math.Sqrt((c.X -d.X) * (c.X - d.X) + (c.Y - d.Y) * (c.Y - d.Y));<br /> Point e;<br /> if (b.Y - a.Y >= 0 && b.X - a.X > 0)<br />{<br /> v = r;<br /> }<br /> else if (b.Y - a.Y > 0 && b.X - a.X <= 0)<br /> {<br /> v = Math.PI - r;<br /> }<br /> else if (b.Y - a.Y <= 0 && b.X - a.X < 0)<br /> {<br /> v = Math.PI + r;<br /> }<br /> else if (b.Y - a.Y < 0 && b.X - a.X >= 0)<br /> {<br /> v = 2 * Math.PI - r;<br /> }<br /> e = new Point((float)(l * Math.Cos(v + Math.PI / 3) + c.X),(float)(c.Y + l * Math.Sin(v + Math.PI / 3)));<br /> line(a, c, n - 1);<br /> line(c, e, n - 1);<br /> line(e, d, n - 1);<br /> line(d, b, n - 1);<br /> }<br /> else<br /> {<br /> Line l = new Line();<br /> Random rnd = new Random();<br /> Color c = Color.FromArgb(255,(byte)rnd.Next(255), (byte)rnd.Next(255), (byte)rnd.Next());<br /> l.Stroke = new SolidColorBrush(c);<br /> l.X1 = a.X;<br />l.Y1 = a.Y;<br /> l.X2 = b.X;<br /> l.Y2 = b.Y;<br /> LayoutRoot.Children.Add(l);<br /> }<br />}运行结果如图:Koch曲线的每一部分都由4个跟它自身比例为1:3的形状相同的小曲线组成,那么它的豪斯多夫维数(分维数)为d=log(4)/log(3) =1.26185950714...。

Koch分形曲线

Koch分形曲线

Koch分形曲线1.1分形原理这是一类复杂的平面曲线,可用算法描述。

从一条直线段开始,将线段中间三分之一部分用等边三角形的两条边代替,形成具有5个结点的图形(图1);在新的图形中,又将图中每一直线段中间的三分之一部分都用一等边三角形的两条边代替,再次形成新的图形(图2),这时,图形中共有17个结点。

图1第一次迭代图2第二次迭代这种迭代继续进行下去可以形成Koch分形曲线。

在迭代过程中,图形中的点将越来越多,而曲线最终显示细节的多少将取决于迭代次数和显示系统的分辩率。

1.2算法分析算法分析:考虑由直线段(2个点)产生第一个图形(5个点)的过程。

设P和P 15分别为原始直线段的两个端点。

现在需要在直线段的中间依次插入三个点P,P,P产生第一次迭代的图形(图1)。

显然,P位于P点右端直线段的三分之23421一处,P位于P点右端直线段的三分之二处;而P点的位置可以看成是由P点4134绕P旋转60度(逆时针方向)而得到的,故可以处理为向量PP经正交变换而得224到向量PP。

算法如下:23(1)P=P+(P-P)/3;2151(2)P=P+2(P-P)/3;4151(3)P=P+(P—P)xA T;3242在(3)中,A 为正交矩阵:兀cos- 3算法根据初始数据(P 和P 点的坐标),产生图1中5个结点的坐标。

结点的 15坐标数组形成一个5x2矩阵,矩阵的第一行为P 的坐标,第二行为P 的坐12 标,……,第五行为P 的坐标。

矩阵的第一列元素分别为5个结点的X 坐标, 5第二列元素分别为5个结点的Y 坐标。

进一步考虑Koch 曲线形成过程中结点数目的变化规律。

设第k 次迭代产生 结点数为n ,第k+1次迭代产生结点数为n ,则n 和n 之间的递推关系式为 kk +1kk +1n =4n —3。

k +1k1.4MATLAB 实现p=[00;100];n=2;A=[cos(pi/3)-sin(pi/3);sin(pi/3)cos(pi/3)];fork=1:5d=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;endplot(p(:,1),p(:,2),'k')axisequalaxisoff.兀 sin — 3兀 cos — 3程序运行后,可得如下分形曲线图图3第五次迭代图形图1所示的简单图形被称为是koch曲线的生成元。

分形的科赫曲线和ELLIOT波浪理论一

分形的科赫曲线和ELLIOT波浪理论一

分形的科赫曲线和ELLIOT波浪理论⼀⼀个流动性较强的交易过程(集合),价格的随机波动总是包含某种平均趋势。

这也是传统技术派推崇的道⽒趋势理论的基础。

价格指标曲线的趋势性是国民经济的周期运动所决定的。

曲线的趋势性是指在⼀定时期内价格或指数随机波动运动中总体上包含向⼀个⽅向(向上、向下、横向等)运动的趋势。

在正常的市场经济条件下经济运动的周期性⼤致可以解释成: ⼀个国家或地区的经济因为某些环境、政策等因素的驱动, 使得某些重要⾏业或整个原有的供求平衡关系发⽣了变化, 假如需求开始不断增长, 由此引发⽣产的增长, 由于整个社会经济单元互相关连, 社会需求与社会供给互相推动共同增长(良性循环), 整个经济呈现繁荣景象;随着经济的不断发展, 各种新的⽭盾不断出现, 如果随着时间的推移这些新的⽭盾能在内外因素的影响下合理钝化, 那么整个经济将在更⾼层次的均衡状态下运⾏, 否则⽭盾的激化最终必将破坏良性发展的供求关系, 由相互促进转变为相互抑制, 最终导致经济的(相对)衰退。

由于各类经济活动与相关政策的运作在时间和空间上都有“很难量化的距离”, 经济整体运动的“惯性”很⼤, 所以⼀般经济运⾏的周期是⽐较长的。

反映经济运⾏状态及商品供求关系的价格指数曲线⾃然也会表现出同样的整体运⾏趋势, 只是由于交易的信息化和资⾦化, 经济发展的趋势⼜⾸先从信息及资⾦的供应状况表现出来, 所以指数曲线的⾛势总是超前于经济运⾏的实际状态。

周期性是⾃然界发展变化的基本之⼀,经济发展周期性表现为描述经济发展的数量指标“时好时坏”波浪式变化, 并不是简单的重复;总体上讲⼈类社会的经济发展是波浪式前进的, 历史是不会逆转的。

与经济发展密切相关的证券价格指数的⾛势变化也是如此,传统技术派基本假设之⼀ “历史是会重演的”是不确切的。

⽤分形理论来分析, 价格的随机波动曲线具有“⾃相似性”。

价格波动曲线的分形,与海岸线同类, 都具有1.618(左右)的分形维特性,其分形形态不可能象科赫曲线⼀样表现为精确的⼏何图形,随机性是这种曲线⾛势的基本特征;曲线⾃相似性的意义是突出随机过程中的关联效应, 抽象地谈分形对分析价格曲线的未来⾛势是⽆意义,我将在后⾯专门阐明价格⾛势的分形。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 个结点。
相关文档
最新文档