数学实验--matlab-Koch雪花.docVIP

  • 274
  • 0
  • 约3.11千字
  • 约 8页
  • 2016-11-29 发布于重庆
  • 举报
数学实验--matlab-Koch雪花

《数学实验》报告3 分形实例 电气二班 陆展辉 201430222325(51) 问题描述 对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称为Koch雪花。编制程序绘制出它的图形,并计算Koch雪花的面积,以及它的分形维数。 2、对一条横向线段,先将其等分成4段,然后再将第二段向上移,将第三段向下移,再将第四段的相邻端点连接起来,迭代一次后变成图3-21.继续迭代得到的分形图,称为Minkowski香肠。编制程序绘制出它的图形,并计算它的分形维数。 图3-21 Minkowski香肠一次迭代 问题分析与实验过程 实验过程: 1.仿照Koch曲线代码对三角形的每条边进行Koch曲线化,函数的输入参数有三角形的边长R和迭代次数k,输出Koch雪花图形以及雪花所围面积S. (1)代码如下: function xuehua(k) % k为迭代次数 for j=0:2 %依次对3条边进行Koch曲线运算 if j==0; p=[0,0;10,0]; elseif j==1; p=[5,-5*sqrt(3);0,0]; else j==2; p=[10,0;5,-5*sqrt(3)]; end n=1; %存放线段的数量,初始值为1 A=[cos(pi/3),-sin(pi/3);sin(pi/3),cos(pi/3)]; %用于计算新的结点 for s=1:k j=0; % j为行数 for i=1:n q1=p(i,:); %目前线段的起点坐标 q2=p(i+1,:); %目前线段的终点坐标 d=(q2-q1)/3; j=j+1;r(j,:)=q1; %原起点存入r j=j+1;r(j,:)=q1+d; %新1点存入r j=j+1;r(j,:)=q1+d+d*A; %新2点存入r j=j+1;r(j,:)=q1+2*d; %新3点存入r end n=4*n; %全部线段迭代一次后,线段数量乘4 clear p %清空p ,注意:最后一个终点q2不在r中 p=[r;q2]; %一条边的全部结点 clear r end plot(p(:,1),p(:,2)) %连接各个结点 hold on; axis equal end 不同k对应不同的图像如下: k=1 k=2 k=3 (2)Koch雪花面积推导如下所示: k=0时 S= k=1时 S=+ k=2时 S=++ k=3时 S=++ + k=n时 S=++ …++ 每一次迭加,所产生的新三角形的边长变为上一次的,数量为上一次的4倍. S=+*(3*+12*+……+3**)=+* 曲线总面积无穷大。 (3)综上所述可得Koch雪花的分形维数为: 根据迭代的规律得到: 相似形个数:m=6 边长放大倍数:c=3, 1.631 2、绘制Minkoski香肠实现迭代的函数 在Matlab中,编制一个函数来绘制Minkoski香肠的图形。具体代码如下: function Minkowski (k) % 显示迭代k次后的Minkowski曲线图 p=[0,0;10,0]; % 存放结点坐标,每行一个点,初始值为两结点的坐标 n=1; % 存放线段的数量,初始值为1 A=[0,1;-1,0]; % 用于计算新的结点 for s=1:k % 实现迭代过程,计算所有的结点的坐标 j=0; for i=1:n; q1=p (i,:); % 目前线段的起点坐标 q2=p (i+1,:); % 目前线段的终点坐标 d=(q2-q1)/4; j=j+1;r (j,:)=q1; % 原起点存入r j=j+1;r (j,:)=q1+d; % 新1点存入r j=j+1;r (j,:)=q1+d+d*A; % 新2点存入r j=j+1;r (j,:)=q1+2*d+d*A

文档评论(0)

1亿VIP精品文档

相关文档