华工数学实验实验三迭代与分形

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

华工数学实验实验三迭代与分形

华工数学实验实验三迭代与分形

实验三迭代与分形

一、实验目的与要求

(了解分形几何的基本情况; 1

2(了解通过迭代方式产生分形图的方法; 3(了解matlab软件中简单的程序结构;

4(掌握matlab软件中plot, fill等函数的基本用法;

1

二、实验内容

1(对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称为Koch雪花。编制程序绘制出它的图形,并计算Koch雪花的面积,

以及它的分形维数。

2(自己构造生成元(要有创意),按照图形迭代的方式产生分形图,用计

算机编制程序绘制出它的图形,并计算其分形维数。

三、实验过程

1.问题分析

Koch曲线是通过图形迭代的方式产生的,其迭代规则是:对一条线段,首先将它分成三等份,然后将中间的一份替换成以此为底边的等边三角形的另外两条边。无限次迭代下去,最终形成的曲线就是Koch曲线。在本次实验当中,以等边三角形为基本单元进行迭代,从而形成Koch曲线。

在这个实验中,可借助一条线段迭代的代码进行修改,让它对一个等边三角形的每条边都按照Koch曲线的方式进行迭代,产生的分形图就为Koch雪花。编制程序绘制出它的图形时,我们要先规定等边三角形的三个顶点的坐标分别为(0,0)、(20,0)、(10,20*sin(pi/3)). 绘制出它的图形后计算Koch雪花的面积,以及它的分形维数。

2.编程实现

Koch雪花图形编制程序的具体代码如下,程序截图如图1所示

function plotkoch (k) % 显示迭代k次后的Koch曲线图

p=[0,0; 10,20*sin(pi/3); 20,0;0,0]; % 存放等边三角形3个结点坐标初始值 n=3; % 存放线段的数量,初始值为3

A=[cos(pi/3),-sin(pi/3);sin(pi/3),cos(pi/3)]; % 用于计算新的结点 for s=1:k % 实现迭代过程,计算所有的结点的坐标

j=0;

% 以下根据线段两个结点的坐标,计算迭代后它们之间增加的三个

% 结点的坐标,并且将这些点的坐标按次序存暂时放到r中

for i=1:n % 每条边计算一次

q1=p (i,:); % 目前线段的起点坐标

q2=p (i+1,:); % 目前线段的终点坐标

2

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 % 原终点作为下条线段的起点,在迭代下条线段时存入r

n=4*n; % 全部线段迭代一次后,线段数量乘4

clear p % 清空p ,注意:最后一个终点q2不在r中

p=[r;q2]; % 重新装载本次迭代后的全部结点 end

figure

plot (p (:,1),p (:,2)) % 显示各结点的连线图 title('Koch雪花') % 显示标题

axis equal % 各坐标轴同比例 xlabel('x'),ylabel('y')

图1.程序截图

这个函数的调用方法是在命令窗口键入plotkoch (5)然后按回车键,结果显示如图2所示。我们也可以通过取不同n值观察对应的迭代图形,如图3-6所示。

3

图2迭代次数k=5的图形

不同k值对应的迭代图形:

K=1

K=3

4

K=5 K=7

3.面积计算

32r4k=0时 S=

3322rr412k=1时 S=+

333222rrr41227k=2时 S=++ 333432222rrrr41227243k=3时 S=++ +

33r33r332(1)2n,2(1)12n,,22r*4*()r*4*()rrnn,14124343k=n时S=++ …++ 1

3每一次迭加,所产生的新三角形的边长变为上一次的,数量为上一次的4倍.

3311122222rr()()()2n(1)n,443334S=+*(3*+12*+……+3**)

n1(1)2i,33[3*4*()]22,irr3i,144=+*

由上式可知,当k取无限大的时候,Koch雪花的曲线总面积趋于无穷大。

5

4.分形维数计算

由迭代规则可知:在Koch雪花中,相似形个数为12,边长放大倍数是3,所以

m=12,c=3,则Koch雪花的分形维度为:d=ln(m)/ln(c)?2.26。

6

第二部分:第二题

一(实验内容

自己构造生成元(要有创意),按照图形迭代的方式产生分形图,用计算机编制

程序绘制出它的图形,并计算其分形维数。

二(实验过程

1.图形构思

经过阅读许多参考资料,以及自己几天的思考,感觉以一个大圆,上下左右各

有四个小圆的组合(其中大圆经过四个小圆的圆心)为初始图案比较简单,也比较好看。

2.编程实现

主要思想是先画一个大圆,接着按照比例及相对位置画出四个小圆,然后以四

个小圆为基准,再画出每个小圆各自对应的四个小圆,以此类推,就可以按照给定的迭代次数画出想要的图形。

具体程序如下:

function cycle(px,py,r,n) %px,py和r分别是大圆圆心坐标和半径,n是迭

代次数 t=linspace(-pi,pi);

plot(r*cos(t)+px,r*sin(t)+py) %以px,py为圆心坐标,r为半径画圆

theta=2*pi/4*(0:3); %每个小圆间隔角度为2π/4

newr=r*3/(3+2*sqrt(3)); %经过计算,小圆的半径为大圆的3/(3+2*3?(1/2)) newpx=px+2*newr*cos(theta); %新的圆心横坐标

newpy=py+2*newr*sin(theta); %新的圆心竖坐标

if n>=0

s=n+2; %开始图形是一个大圆上下左右各有一个小圆,作为迭代的初始图案for i=1:4 %每个大圆都有小圆四个

hold on;cycle3(newpx(i),newpy(i),newr,s-1);

end

end

axis equal %各坐标轴同比例

7

程序运行截图如图1所示:

相关文档
最新文档