分形图Koch
初中数学分形课件

混沌一开, 乾坤乃定。 历经无数分叉路, 柳暗花明见新村。 教育立国, 科技兴邦, 两个强劲吸引子, 交织出一幅美丽分形。 万众协同, 应变持恒。 依凭超循环作用, 借助蝴蝶效应, 向着同宿点, 奋起马蹄奔前程。
(付新楚(1961- )《混沌寄情》)
现科学之美, 探复杂之谜, 映射突变, 分形遇与混沌帝。 马蹄迭代驱寂寞, 落霞覆涟漪, 斑图指进临境, 连络廿一世纪。 (刘华杰)
谢 谢 欣 赏 !
分形的应用领域
数学中的动力系统等;
物理中的布朗运动,流体力学中的湍流等; 化学中酶的构造等;
生物中细胞的生长等;
地质学中的地质构造等;
天文学中土星光环的模拟等;
其它:计算机,经济学,社会学,艺术等
—连接在一起的三段Koch曲线构成一个雪花曲线
随机Koch曲线 ——对海岸线的模拟
分形树叶
分形树叶(续1)分形树Fra bibliotek(续2)分形树叶(续3)
花草树木(L 系统)的一个例子
一些分形图片:
(
Z n1 Z c
2 n
(
z 和 c 都是复数)
蝴蝶函数: 花函数:
洛伦兹吸引子
函数图形(天鹅)是帮加莱截面映射
图形(稻草)是描述植物生长的PL规则图案
/
与分形有关的诗
幻境风云起,人间纷扰多。 醉弄光影躯,轻舞自婀娜。 (宋爽)
分念成形窥色相,共灵显迹化虚无。 出有入无成妙道,分形露体共真源。 (摘自《慧命经· 化身图释词》)
第一步
Sierpinsk垫片的生成过程 —第2步
Sierpinsk垫片的生成过程 —第3步
Sierpinsk垫片的生成过程 —第4步
Koch曲线
计算机图形学实验报告(分形图)

实验六:分形图的生成班级11信计2班学号20110502078 姓名刘昱丞分数一、实验目的理解分形图生成的基本原理,掌握几种常见的分形图生成算法,利用TurboC实现Koch 曲线和可以无穷放大的Mandelbrot Set (曼德布洛特集)生成算法。
二、实验内容1.、利用Koch 曲线生成规则,在屏幕上生成一段Koch 曲线。
2/、利用Mandelbrot Set 生成规则,在屏幕上生成可以无穷放大的Mandelbrot Set (曼德布洛特集)三、实验步骤(1)预习教材关于Koch 曲线和可以无穷放大的Mandelbrot Set (曼德布洛特集)的生成原理。
(2)仿照教材关于Koch 曲线和可以无穷放大的Mandelbrot Set (曼德布洛特集)生成算法生成算法,使用TurboC实现该算法。
(3)调试、编译、运行程序。
四、实验要求在下次实验时提交本次试验的实验报告(实验报告包括实验目的、实验内容、实验实现过程、源程序、实验结果、实验体会)。
五、实验过程( 1 ) Koch 曲线的生成规则它的构造是:迭代初始把原线段去掉中间的三分之一,代之以底边在被去线段上的等边三角形的两腰;以后每一步的迭代都是这样的重复。
从以上过程可以清楚地看出,Koch曲线(其它分形集也是如此)可以由简单的图,称为生成元,迭代产生。
在这里,Koch曲线的生成元是:六、实验代码1/、Koch曲线源程序:#include <stdio.h>#include <stdlib.h>#include <math.h>#include <conio.h>#include <graphics.h>#define rad 0.0174532925#define NUMBER 24koch(ax,ay,bx,by)int ax,ay,bx,by;{ float cx,cy,ex,ey,dx,dy,arf,le,c;c=1000; /*30000,20000,10000,5000,1000 tiao jie ci shu */if ((bx-ax)*(bx-ax)+(by-ay)*(by-ay)<c)line(ax,ay,bx,by);else{cx=ax+(bx-ax)/3;cy=ay+(by-ay)/3;ex=bx-(bx-ax)/3;ey=by-(by-ay)/3;koch((int)(ax),(int)(ay),(int)(cx),(int)(cy)); /* koch(ax,ay,cx,cy); */ koch((int)(ex),(int)(ey),(int)(bx),(int)(by));le=sqrt((ex-cx)*(ex-cx)+(ey-cy)*(ey-cy)); /* koch(ex,ey,bx,by); */ arf=atan((ey-cy)/(ex-cx));if((arf>=0 &&(ex-cx)<0)||(arf<=0 &&(ex-cx)<0))arf=arf+3.1415;dy=cy+sin(arf+3.1415/3)*le;dx=cx+cos(arf+3.1415/3)*le;koch((int)(cx),(int)(cy),(int)(dx),(int)(dy)); /*koch(cx,cy,dx,dy);*/ koch((int)(dx),(int)(dy),(int)(ex),(int)(ey)); /* koch(dx,dy,ex,ey); */ }}main(){float xa1,xb1,ya1,yb1;float xa,xb,ya,yb;float dex,dey,dx,dy;float x,y,s1,s2;int steps,k;int gdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"C:\\JMSOFT\\DRV");cleardevice();setbkcolor(BLUE);/* line(400,400,600.4,540.6); */settextstyle(1,0,3);outtextxy(100,100,"Shijiazhuang University");/* koch(340,150,100,150) ; */koch(100,300,500,300) ;getch();closegraph();return 0;}输出结果为:2.、可以无穷放大的Mandelbrot Set (曼德布洛特集)源程序:#include <graphics.h>#include <conio.h>// 定义常量#define ITERATIONS 1000 // 迭代次数,越高,图像越精细#define MAXCOLOR 64 // 颜色数/////////////////////////////////////////////////// 定义复数及乘、加运算/////////////////////////////////////////////////// 定义复数struct COMPLEX{double re;double im;};// 定义复数“乘”运算COMPLEX operator * (COMPLEX a, COMPLEX b){COMPLEX c;c.re = a.re * b.re - a.im * b.im;c.im = a.im * b.re + a.re * b.im;return c;}// 定义复数“加”运算COMPLEX operator + (COMPLEX a, COMPLEX b){COMPLEX c;c.re = a.re + b.re;c.im = a.im + b.im;return c;}/////////////////////////////////////////////////// 定义颜色及初始化颜色/////////////////////////////////////////////////// 定义颜色int Color[MAXCOLOR];// 初始化颜色void InitColor(){// 使用HSL 颜色模式产生角度h1 到h2 的渐变色int h1 = 240, h2 = 30;for(int i=0; i<MAXCOLOR/2; i++){Color[i] = HSLtoRGB((float)h1, 1.0f, i * 2.0f / MAXCOLOR);Color[MAXCOLOR-1-i] = HSLtoRGB((float)h2, 1.0f, i * 2.0f / MAXCOLOR);}}/////////////////////////////////////////////////// 绘制Mandelbrot Set (曼德布洛特集)/////////////////////////////////////////////////void Draw(double fromx, double fromy, double tox, double toy){COMPLEX z, c;int x, y, k; // 定义循环变量for(x = 0; x < 640; x++){c.re = fromx + (tox - fromx) * (x / 640.0);for(y = 0; y < 480; y++){c.im = fromy + (toy - fromy) * (y / 480.0);z.re = z.im = 0;for(k = 0; k < ITERA TIONS; k++){if ( z.re * z.re + z.im * z.im > 4.0 ) break;z = z * z + c;}putpixel(x, y, (k >= ITERA TIONS) ? 0 : Color[k % MAXCOLOR]);}}}/////////////////////////////////////////////////// 主函数/////////////////////////////////////////////////void main(){// 初始化绘图窗口及颜色initgraph(640, 480);InitColor();// 初始化Mandelbrot Set(曼德布洛特集)坐标系double fromx, fromy, tox, toy;fromx = -2.1; tox = 1.1;fromy = -1.2; toy = 1.2;Draw(fromx, fromy, tox, toy);// 捕获鼠标操作,实现放大鼠标选中区域MOUSEMSG m;bool isLDown = false;int selfx, selfy, seltx, selty; // 定义选区while(!kbhit()){m = GetMouseMsg(); // 获取一条鼠标消息switch(m.uMsg){// 按鼠标中键恢复原图形坐标系case WM_MBUTTONUP:fromx = -2.1; tox = 1.1;fromy = -1.2; toy = 1.2;Draw(fromx, fromy, tox, toy);break;// 按鼠标左键并拖动,选择区域case WM_MOUSEMOVE:if (isLDown){rectangle(selfx, selfy, seltx, selty);seltx = m.x;selty = m.y;rectangle(selfx, selfy, seltx, selty);}break;// 按鼠标左键并拖动,选择区域case WM_LBUTTONDOWN:setcolor(WHITE);setwritemode(R2_XORPEN);isLDown = true;selfx = seltx = m.x;selfy = selty = m.y;rectangle(selfx, selfy, seltx, selty);// 按鼠标左键并拖动,选择区域case WM_LBUTTONUP:rectangle(selfx, selfy, seltx, selty);setwritemode(R2_COPYPEN);isLDown = false;seltx = m.x;selty = m.y;if (selfx == seltx || selfy == selty) break;// 修正选区为4:3int tmp;if (selfx > seltx) {tmp = selfx; selfx = seltx; seltx = tmp;} if (selfy > selty) {tmp = selfy; selfy = selty; selty = tmp;}if ( (seltx - selfx) * 0.75 < (selty - selfy) ){selty += (3 - (selty - selfy) % 3);selfx -= (selty - selfy) / 3 * 4 / 2 - (seltx - selfx) / 2;seltx = selfx + (selty - selfy) / 3 * 4;}else{seltx += (4 - (seltx - selfx) % 4);selfy -= (seltx - selfx) * 3 / 4 / 2 - (selty - selfy ) / 2;selty = selfy + (seltx - selfx ) * 3 / 4;}// 更新坐标系double f, t;f = fromx + (tox - fromx) * selfx / 640;t = fromx + (tox - fromx) * seltx / 640;fromx = f;tox = t;f = fromy + (toy - fromy) * selfy / 480;t = fromy + (toy - fromy) * selty / 480;fromy = f;toy = t;// 画图形Draw(fromx, fromy, tox, toy);}}getch();closegraph(); }输出结果为:。
计算机图形学_Koch雪花的分形算法实现

Koch雪花的分形算法实现1.内容介绍分形指具有多重自相似的对象,它可以是自然存在的,也可以是人造的,树木、山川、云朵、脑电图、材料断口等都是典型的分形。
分形是图形学中一门重要的理论,是最近20多年发展起来的新学科,其中Koch雪花则是分形曲线的典型代表。
本文通过对Koch雪花算法实现的详细论述与具体代码,进而分析分形的基本思想、实现方法以及实际应用等。
2.设计思想Koch雪花的实际结构为三条Koch曲线的拼接,这三条Koch曲线分别构成正三角形的三条边即可。
因此,在此详细论述Koch曲线的设计思想。
首先绘制一条线段,假设线段长度为L,则在线段L/3处至2L/3处以L/3为边长做一个正三角形,并去掉底边。
此时该图形变为四条线段,同理对每条线段继续上述步骤即可绘制出Koch曲线。
设计中的难点在于每条线段的端点坐标较难确定,根据已知的初始线段两个端点坐标,我们通过几何三角计算出每次迭代的端点坐标并进行递归即可。
如图1所示,每点的迭代算式为(x1,y1) (x3,y3)(x5,y5)(x4,y4)(x2,y2) α60°第 1 页共9 页图1 端点坐标推导计算32113211533321215333212111()()331c o s (60)31(c o s 60c o s s in 60s in )31[())]61c o s (60)31(s in 60c o s c o s 60s in )31)()]6x x x x y y y y x x L x L x x x y y y y L y L y x x y y αααααα=-+=-+=+︒+=+︒-︒=+---=+︒+=+︒+︒=+-+-在推导出每点的坐标计算后,即可通过编程实现Koch 雪花。
在程序中,首先通过初始化定义正三角形底边的两个端点坐标,然后通过计算得出顶点坐标。
对每一条边进行Koch 曲线递归绘制,最终就可以得到Koch 雪花。
趣味数学--分形艺术

神奇的分形艺术:无限长的曲线可能围住一块有限的面积很多东西都是吹神了的,其中麦田圈之谜相当引人注目。
上个世纪里人们时不时能听见某个农民早晨醒了到麦田地一看立马吓得屁滚尿流的故事。
上面这幅图就是97年在英国Silbury山上发现的麦田圈,看上去大致上是一个雪花形状。
你或许会觉得这个图形很好看。
看了下面的文字后,你会发现这个图形远远不是“好看”可以概括的,它的背后还有很多东西。
在说明什么是分形艺术前,我们先按照下面的方法构造一个图形。
看下图,首先画一个线段,然后把它平分成三段,去掉中间那一段并用两条等长的线段代替。
这样,原来的一条线段就变成了四条小的线段。
用相同的方法把每一条小的线段的中间三分之一替换为等边三角形的两边,得到了16条更小的线段。
然后继续对16条线段进行相同的操作,并无限地迭代下去。
下图是这个图形前五次迭代的过程,可以看到这样的分辨率下已经不能显示出第五次迭代后图形的所有细节了。
当把三条这样的曲线头尾相接组成一个封闭图形时,有趣的事情发生了。
这个雪花一样的图形有着无限长的边界,但是它的总面积却是有限的。
这个神奇的雪花图形叫做Koch雪花,其中那条无限长的曲线就叫做Koch曲线。
他是由瑞典数学家Helge von Koch最先提出来的。
麦田圈图形显然是想描绘Koch雪花。
Koch曲线于1904年提出,是最早提出的分形图形之一。
下面我们来看Koch雪花的面积与周长,如下图周长为次分叉图第4n设图1三角形周长为31=P ,面积为431=A ; 第一次分叉图2;913,3411212A A A P P ⋅⋅+==面积为周长为第二次分叉图3…面积为 1121211)91(43)91(43913A A A A n n --⋅⋅++⋅⋅+⋅+=Λ ]})94(31)94(31)94(3131[1{221-+++++=n A Λ Λ,3,2=n雪花曲线令惊异的性质是:无限长的曲线可能围住一块有限的面积。
koch雪花的自相似维数

koch雪花的自相似维数
Koch雪花是一种基于分形几何学的图形,具有自相似性。
自相似性是指图形的部分与整体相似,即缩放后可以得到相似的图形。
而自相似维数则是用于描述自相似性的一个数学概念。
Koch雪花的自相似维数可以通过计算其分形维数来得到。
分形维数是一种用于描述分形对象大小的指标,它可以帮助我们理解自相似图形的特征。
在计算Koch雪花的自相似维数时,我们可以先将其分解成一系列相似的子图形,然后通过计算每个子图形被缩小的比例来得到分形维数。
具体计算方法为:
1. 将Koch雪花分解成四个相似的子雪花;
2. 计算每个子雪花相对于原始图形的缩放比例,即为1/3;
3. 用公式D=log(N)/log(r)来计算分形维数,其中N为子雪花的数量,r为缩放比例;
4. 将四个子雪花的分形维数加起来并除以4,即为Koch雪花的自相似维数。
通过计算,我们可以得到Koch雪花的自相似维数为log(4)/log(3),即约为1.2619。
这意味着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²/5 ,这里的s是最初三角形的边长,Koc h雪花的面积是原三角形面积的8/5,它成为一条无限长的边界围绕着一个有限的面积的几何对象。
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)雪花科赫曲线是⼀种分形。
其形态似雪花,⼜称科赫雪花、雪花曲线.瑞典⼈科赫于1904年提出了著名的“雪花”曲线,这种曲线的作法是,从⼀个正三⾓形开始,把每条边分成三等份,然后以各边的中间长度为底边。
分别向外作正三⾓形,再把“底边”线段抹掉,这样就得到⼀个六⾓形,它共有12条边。
再把每条边三等份,以各中间部分的长度为底边,向外作正三⾓形后,抹掉底边线段。
反复进⾏这⼀过程,就会得到⼀个“雪花”样⼦的曲线。
这曲线叫做科赫曲线或雪花曲线。
给定线段AB,科赫曲线可以由以下步骤⽣成:(1)将线段分成三等份(AC,CD,DB)(2)以CD为底,向外(内外随意)画⼀个等边三⾓形DMC(3)将线段CD移去(4)分别对AC,CM,MD,DB重复1~3。
反复进⾏这⼀作图过程,得到的曲线越来越精细。
科赫曲线有着极不寻常的特性,不但它的周长为⽆限⼤,⽽且曲线上任两点之间的距离也是⽆限⼤。
该曲线长度⽆限,却包围着有限的⾯积。
很神奇的⼀个曲线,他说明了⼀个悖论:“⽆限长度包围着有限⾯积。
”程序中实现了0~8级的科赫雪花分形.程序设计时,将这9级曲线的顶点数据全部放置在⼀个内存中.并使⽤如下结构体进⾏设置:struct SnowLevel{Yuint vertexStart;Yuint verticesCount;};SnowLevel m_snowLevels[SNOW_LEVELS_COUNT];Yuint m_currentLevel;分形图形的顶点⽣成算法代码如下:static void Zhe(const Vector3& vStart, const Vector3& vEnd, Vector3* pVertices){Vector3 vSub = vEnd - vStart;pVertices[0] = vStart;pVertices[1] = vStart + vSub/3;pVertices[3] = vStart + vSub*2/3;pVertices[4] = vEnd;Yreal alfa = atan2f(vSub.y, vSub.x);alfa += YD_REAL_PI/3;Yreal l = D3DXVec3Length(&vSub)/3;pVertices[2].x = pVertices[1].x + cosf(alfa)*l;pVertices[2].y = pVertices[1].y + sinf(alfa)*l;pVertices[2].z = 0.0f;}void CFractalSnowEntity::Fractal(Vector3* pVertices){pVertices[0].x = 0.0f;pVertices[0].y = YD_SNOW_RADIUS;pVertices[0].z = 0.0f;pVertices[1].x = YD_SNOW_RADIUS*sinf(YD_REAL_PI/3);pVertices[1].y = -YD_SNOW_RADIUS*sinf(YD_REAL_PI/6);pVertices[1].z = 0.0f;pVertices[2].x = -pVertices[1].x;pVertices[2].y = pVertices[1].y;pVertices[2].z = 0.0f;for (Yuint i = 1; i < SNOW_LEVELS_COUNT; i++){const Vector3* pSrc = pVertices + m_snowLevels[i - 1].vertexStart;Vector3* pDest = pVertices + m_snowLevels[i].vertexStart;Yuint c = m_snowLevels[i - 1].verticesCount;for (Yuint j = 0; j < c; j++){Zhe(pSrc[j], pSrc[(j + 1)%c], pDest);pDest += 4;}}}下载地址:科赫雪花第0级科赫雪花第1级科赫雪花第2级科赫雪花第3级科赫雪花第4级科赫雪花第5级科赫雪花第6级科赫雪花第7级科赫雪花第8级软件使⽤说明键盘0~8,分别设置第0级到第8级分形.这是个3D程序,⿏标右键的拖动可以改变视⾓.键盘X⽤于恢复为默认视⾓.键盘F11⽤于全屏切换.。
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 +=-。
数学拓展课——分形图

分维的概念我们可以从两方面建立起来:一方面,
我们首先画一个线段、正方形和立方体,它们的 边长都是1。将它们的边长二等分,此时,原图的 线度缩小为原来的1/2,而将原图等分为若干个相 似的图形。其线段、正方形、立方体分别被等分 为2^1、2^2和2^3个相似的子图形,其中的指数1、 2、3,正好等于与图形相应的经验维数。一般说 来,如果某图形是由把原图缩小为1/a的相似的b 个图形所组成,有:a^D=b的关系成立,则指数D 称为相似性维数,从这个角度来看,D应该是整 数。
图3中的阴影部分的面积的变化有什么规律?
图4中的图形的周长的变化有什么规律?
分形图的特点
1.从整体上看,分形几何图形是处处不规则的。例如 海岸线,从远距离观察,其形状是极不规则的。 2.在不同尺度上,图形的规则性又是相同的。从近距 离观察海岸线,其局部形状又和整体形态相似,它们 从整体到局部,都是自相似的。当然,也有一些分形 几何图形,它们并不完全是自相似的。
这是Koch曲线,它可以从一 个等边三角形开始来画:把一个 等边三角形的每边分成相同的 三段,再在每边中间一段上向外 画出一个等边三角形,这样一来 就做成了一个六角星.然后在六 角星的各边上用同样的方法向 外画出更小的等边三角形,出现 了一个有关18个尖角的图形.如 此继续下去,就能得到分支越来 越多的曲线.继续重复上面的过 程,图形的外边界逐渐变得越来 越曲折、越来越长、图案变得 越来越细致,越来越像ห้องสมุดไป่ตู้花、越 来越美丽了。
分形动画演示
分维
在欧氏空间中,人们习惯把空间看成三维的, 平面看成二维,而把直线或曲线看成一维。也 可以稍加推广,认为点是零维的,还可以引入 高维空间,但通常人们习惯于整数的维数。分 形理论把维数视为分数,这类维数是物理学家 在研究混沌吸引子等理论时需要引入的重要概 念。为了定量地描述客观事物的“非规则”程 度,1919年,数学家从测度的角度引入了维 数概念,将维数从整数扩大到分数,从而突破 了一般拓扑集维数为整数的界限。
分形几何概述1

n
ln 4 1.26186 ln 3
英国海岸线的维数为D=1.25 (Mandelbrot)
Koch曲线:(㏑4)/ (㏑3)=1.2618 Cantor集: (㏑2)/ (㏑3)=0.6309 Sierpinski集: 垫片: (㏑3)/ (㏑2)=1.5850 地毯: (㏑8)/ (㏑3)=1.8927 海绵: (㏑20)/ (㏑3)=2.7268
Koch曲线的生成过程 —第0步、第1步
Koch曲线的生成过程 —第2步、第3步
Koch 曲线
Koch 曲线(续)
Koch曲线曾经在数学界成为一个魔鬼。 同样的道理:长度无限、面积为零、而曲 线还有“界”。 另外,有一个特点:当取其中的一部分 展开,与整体有完全的自相似性,似乎是一 个什么东西的无数次的自我复制。
定义1 如果一个集合在欧式空间中的 Hausdorff维数DH恒大于其拓扑维数DT,则 称该集合为分形集,简称分形。
由Mandelbrot在1982年提出,四年后, 他又提出了一个更是实用的定义: 定义2 组成部分以某种方式与整体相似的形 体叫分形。
分形的概念
分形看作具有如下所列性质的集合F:
F具有精细结构,即在任意小的比例尺度内包含整体。 F是不规则的,以致于不能用传统的几何语言来描述。 F通常具有某种自相似性,或许是近似的或许是统计 意义下的。 F在某种方式下定义的“分维数”通常大于F的扑维数。 F的定义常常是非常简单的,或许是递归的。
分形几何概述
海岸线长度问题
二十世纪七十年代,法国数学家曼德尔勃罗特在他的著 作中讨论英国海岸线的长度。他发现,这个问题取决于测量 所使用的尺度。采用公里做单位,一些几米和几十米的曲折 会被忽略,如果采用米做单位,测得的长度会增加,但厘米 以下的量仍然无法反映,测量单位的缩小使测得的长度增加, 由于在自然尺度之间有许多个数量级,这种增加不会停止, 海岸线的长度会趋于无限长。也就是说,长度不是海岸线的 定量特征。
科勒雪花 分形维度

科勒雪花分形维度(实用版)目录一、科勒雪花的概念二、科勒雪花与分形维度的关系三、科勒雪花的应用四、总结正文一、科勒雪花的概念科勒雪花(Koch curve)是一种分形图形,由瑞典数学家科克(Helge von Koch)在 1904 年首次描述。
它是一种不论由直段还是由曲段组成的始终保持连通的线。
科勒雪花可以通过以下方法生成:从一个边长为 1 的等边三角形开始,取每边中间的三分之一,接上去一个形状完全相似但边长为其三分之一的三角形,结果是一个六角形。
接着取六角形的每个边做同样的变换,即在中间三分之一接上更小的三角形,以此重复,直至无穷。
最终,外界的变得原来越细微曲折,形状接近理想化的雪花。
二、科勒雪花与分形维度的关系科勒雪花是一种典型的分形图形,它具有分形维度(fractal dimension)。
分形维度是用来描述分形图形复杂程度的一个概念。
对于科勒雪花,其分形维度大约为 1.2618,这意味着它的长度是无穷大,而面积是有限的。
分形维度的计算公式为:D = log(A)/log(r),其中 A 是图形的面积,r 是图形的半径。
三、科勒雪花的应用科勒雪花在许多领域都有广泛的应用,例如数学、物理、化学、生物学、地理学等。
在数学领域,科勒雪花被用来研究分形理论、迭代函数系统和非线性动力学;在物理学领域,科勒雪花可以用来描述晶体结构和粒子加速器的设计;在生物学领域,科勒雪花可以用来模拟细胞生长和扩散过程。
此外,科勒雪花还具有很高的艺术价值,被广泛应用于建筑、装饰和艺术设计等领域。
四、总结科勒雪花是一种具有分形维度的分形图形,由瑞典数学家科克在1904 年首次描述。
电子科技大学数学实验实验报告(含详细程序和实验数据)-Koch分形雪花,计算瑞典国土,计算我国海岸线长度

Koch 分形雪花面积计算的数学实验报告2012年4月6日绘制Koch 分形雪花,分析其边数及面积规律实验内容取周长为10的正三角形为初始元。
第一步(N=1):将边长三等分,并以中间的一份为底边构造正三角形,去掉该三角形的底边,将两腰与剩下的两份相连,得到生成元。
原三角形每条边都用生成元替换,得到具有6个凸顶点的12边形。
第二步(N=2):对第1步得到的图形,同样将其边长三等分,并以中间的一份构造正三角形,去掉该三角形的底边,将两腰与两边的两份相连,得到生成元。
原12边形的每条边都用生成元替换,得到24个凸顶点的48边形。
如此方法,一直做下去,当∞→N 时便得到了Koch 分形雪花。
实验目的1.算法描述Koch 分形雪花2.证明Koch 分形雪花图Kn 的边数为143-⨯=n n L3.求Koch 分形雪花图Kn 的面积)(lim n N K area ∞→实验原理1. Koch 分形雪花的绘制过程与Koch 曲线的构造过程类似。
事实上,Koch 分形雪花是由三条三次Koch 曲线组成的。
Koch 曲线的构造:由一条线段产生四条线段,由n 条线段迭代一次后将产生4n 条线段,算法针对每一条线段逐步进行,将计算新的三个点。
第一个点位于线段的三分之一处,第三个点位于线段的三分之二处,第二个点以第一个点为轴心,将第一和第三个点形成的向量正向旋转ο60而得,正向旋转由正交矩阵⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧-3cos 3sin 3sin3cos ππππ完成。
三条三条三次Koch 曲线由初始向量P 构造。
流程图如下:⑴)/3P -2(P + P ←Q )/3;P -(P + P ← Q 121 31211 ⑵;A ×)Q -(Q + Q ← Q T1312 ⑶.Q ← P ;Q ← P ;Q ← P ;P ← P 342312252.由于Koch分形雪花是封闭的凸多边形,所以边数=顶点数=P矩阵的行数-1。
分形几何的典型范例 -回复

分形几何的典型范例-回复什么是分形几何?分形几何是一种数学分支,研究自相似或自缩放行为的几何图形。
与传统几何学关注于规则、对称和完美形状不同,分形几何则关注于不规则、复杂及不完美的形状。
分形几何的概念由法国数学家Benoit Mandelbrot 于20世纪70年代提出,并在之后的几十年里得到了广泛的发展和应用。
典型范例分形几何的典型范例有很多,下面将就其中几个典型例子进行介绍。
1. 科赫曲线(Koch Curve)科赫曲线是分形几何中最经典也是最容易理解的例子之一。
它是通过将一个线段分成三等分,并在中间一等分上增加一个等边三角形,然后不断重复这个过程而构造出来的。
每次重复都会使曲线的长度增加,但是总长度趋于无穷。
科赫曲线具有自相似的特性,即无论放大多少倍,形状都会与整体一致。
这种特性使得科赫曲线展现出了无限的细节和复杂性。
2. 曼德勃罗集合(Mandelbrot Set)曼德勃罗集合是分形几何中最著名的例子之一,它由复平面上一组复数所组成。
对于每个复数c,通过迭代计算公式Z_{n+1} = Z_n^2 + c,可以得到一系列结果。
如果这个序列在迭代过程中趋于无限,则认为c属于曼德勃罗集合。
曼德勃罗集合以其无限细节和复杂性而著称,它的边界形状自相似且分形性质显著。
3. 蒙迪安斯螺旋(Möbius Strip)蒙迪安斯螺旋是一种具有非常有趣特性的立体形状。
它是由在一个长方形带上进行特殊的旋转和粘合所产生的。
蒙迪安斯螺旋只有一个面和一个边界,这意味着当你沿着边界行走时,可以回到起点而不需要抬起笔。
这种特殊的几何形状给人一种无限展开的感觉,类似于分形几何中的无限延伸特性。
通过以上几个典型范例的介绍,我们可以看到分形几何的独特之处。
它们展示了自相似性、无限细节和复杂性等特征,与传统几何学中的规则和完美形状形成鲜明对比。
分形几何的重要性不仅在于其美学价值,还在于其对自然界的广泛应用。
例如,分形几何可以用来描述云朵、山脉、海岸线的形状,揭示其中的复杂性和统计规律。
科赫曲线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。
1904年科克(koch)曲线是这样的

科克(koch)曲线的
相似性维数
可以看出,科克曲线是把一条边 的3等份变成4个一样长的小线 段.因此设其维数为D,那么 4=3D
于是
D=log4/log3≈1.2618…
是一个非整数值.实际上,说科 克曲线的维数是1有点太简单, 说它是2维又嫌太简单,那么 1.2618维可能正合适.
ห้องสมุดไป่ตู้
一正三角形每边长为1现在每边正之间13处再凸出一个小正三角形使原三角形变为六边形再在六边形的12条边上重复进行中间13处凸出一正三角形过程得到41248边形
1904年科克(koch)曲线是 这样的:
一正三角形,每边长为1,现 在每边正之间1/3处再凸出 一个小正三角形,使原三角 形变为六边形,再在六边形 的12条边上重复进行中间 1/3处凸出一正三角形过程, 得到4×12 =48边形;每边的 正中间还可以再在1/3处凸 出一正三角形,如此一致无 穷.其边缘的构造越来越精 细,好象一片理想的雪花.
科克(koch)曲线一个特征:
它是一条闭合曲线,自身不 交.它所包围的总面积有限 永远小于第一个正三角形外 接圆的面积.但其长度是无 限的:因为每次变换后的长 度都是原来的4/3,所以n次 后的曲线长度是
(4/3)n→∞
在有限空间里有无限长的 曲线,的确令人惊讶!
科克(koch)曲线另一个特征:
1904年科克(koch)曲线是 这样的:
一正三角形,每边长为1,现 在每边正之间1/3处再凸出 一个小正三角形,使原三角 形变为六边形,再在六边形 的12条边上重复进行中间 1/3处凸出一正三角形过程, 得到4×12 =48边形;每边的 正中间还可以再在1/3处凸 出一正三角形,如此一致无 穷.其边缘的构造越来越精 细,好象一片理想的雪花.
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曲线的生成元。
koch曲线 迭代函数

Koch曲线是一种经典的分形图形,由瑞典数学家Helge von Koch于1904年提出。
科赫曲线的生成过程是一个递归的过程,可以由以下步骤描述:首先取一条长度为1的线段,然后将其等分为三段,中间那段用等边三角形替换,之后对每个小线段进行同样的操作。
具体来说,迭代步骤如下:
1. 取一条长度为1的线段;
2. 将线段等分为三等分,中间的那一段不变,其余两段分别替换为两个等边三角形;
3. 对新得到的每一段(包括两个等边三角形和中间的线段)进行相同的操作。
这个过程会一直重复进行,直到线段的长度变为0为止。
这样,我们就可以得到一条科赫曲线。
初始线的起点和终点可以是任意的,例如[0,0]和[1,0]。
此外,我们也可以通过编程来绘制科赫曲线。
例如在Python中,我们可以使用turtle库来实现;在MATLAB中,也有专门的函数用于绘制科赫曲线。
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曲线。
克鲁霍夫曲线

克鲁霍夫曲线
克鲁霍夫曲线(Koch curve)是一个分形曲线,由瑞典数学家海尔曼·冯·赫尔曼·冯·克鲁霍夫(Helge von Koch)于1904年引入。
该曲线的形状是一个无限连续的闭合线段,通过反复替换过程构建起来。
构建克鲁霍夫曲线的过程如下:
1. 先取一条直线段,将其等分为三等份。
2. 在中间线段的上方构建一个等边三角形,然后将底边替换为三等份,得到一个小的等边三角形。
3. 重复以上过程,对每个新生成的线段进行相同的替换操作,直到无限次迭代。
随着迭代次数的增加,克鲁霍夫曲线的长度不断增加,并且形状变得越来越复杂。
克鲁霍夫曲线展示了分形的特征,即自相似性,即无论在任何尺度上观察,都可以发现相似的形状。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 +=-。
1.4 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
程序运行后,可得如下分形曲线图形:
图1所示的简单图形被称为是koch 曲线的生成元。
下面给出其它几种生成元及对应曲线:
图3 第五次迭代图形
图4 树形生成元及对应曲线
图5 第二种树形生成元及对应曲线
(a) 矩形生成元
(b) 第一种生成方式
(c) 第二种生成方式
图6 矩形生成元及两种对应曲线1.5 附源程序
第一种树形源程序:
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)];
for k=1:4
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
●矩形生成元第一种曲线
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;
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。