- 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)