华工数学实验-作业3-迭代与分形

上传人:pu****.1 文档编号:430990652 上传时间:2023-04-09 格式:DOC 页数:16 大小:197.01KB
返回 下载 相关 举报
华工数学实验-作业3-迭代与分形_第1页
第1页 / 共16页
华工数学实验-作业3-迭代与分形_第2页
第2页 / 共16页
华工数学实验-作业3-迭代与分形_第3页
第3页 / 共16页
华工数学实验-作业3-迭代与分形_第4页
第4页 / 共16页
华工数学实验-作业3-迭代与分形_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《华工数学实验-作业3-迭代与分形》由会员分享,可在线阅读,更多相关《华工数学实验-作业3-迭代与分形(16页珍藏版)》请在金锄头文库上搜索。

1、 数学实验报告 学 院: 电子与信息学院 专业班级: 通信工程4班 学 号: 201130301443 姓 名: 李腾辉 实验名称: 迭代与分形 实验日期: 第三次实验1 实验内容1.对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称为Koch雪花。编制程序绘制出它的图形,并计算Koch雪花的面积,以及它的分形维数。2 实验过程方法一仿照Koch曲线代码对三角形的每条边进行Koch曲线化,函数的输入参数有三角形的边长R和迭代次数k,输出Koch雪花图形以及雪花所围面积S.KochSnow面积推导如下所示:迭代次数k 面积S0: S=1: S=R2+ (R)2*32: S=R

2、2+ (R)2*3 + ()2R)2*323: S=R2+ (R)2*3 + ()2R)2*32 + ()3R)2*33N: S=R2+ (R)2*3 + ()2R)2*32 + ()3R)2*33+()nR)2*3n 如此相加下去,当N无穷时,S将为无穷大源代码如下:function kochsnow(R,k) %R为正三角形边长,k为迭代次数p01=0,0;p02=R/2,sqrt(3)*R/2;p03=R,0; %3个起始点S = 0; % S为面积,开始设为0for line=0:2 %依次对3条边进行Koch曲线运算 if line=0; p=p01;p02; elseif line

3、=1; p=p02;p03; else line=2; p=p03;p01; 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+

4、1;r(j,:)=q1+2*d; %新3点存入r end n=4*n; %全部线段迭代一次后,线段数量乘4 clear p %清空p ,注意:最后一个终点q2不在r中 p=r;q2; %一条边的全部结点 clear r end if line=0; %把第一条边的全部结点放在a a=p; elseif line=1; %把第二条边的全部结点放在b b=p; else line=2; %把第三条边的全部结点放在c c=p; end endall=a;b;c; %三条边全部结点放入allplot(all(:,1),all(:,2) %连接各个结点fill(all(:,1),all(:,2),g)%

5、填充所围区域for i=0:k %计算KochSnow的面积 S = S + (3(0.5-i)*0.25*(R2);endSaxis equalKoch雪花图形 输入 半径R=2K=0时 是正三角形 此时面积为 1.7321K=1时 是正六边形 此时面积为 2.3094K=2时 的koch雪花 此时面积为 2.5019K=3时 的Koch雪花 此时面积为 2.5660K=4时 的Koch雪花 此时面积为 2.5874分形维数:根据迭代的规律得到:相似形个数:m=6 边长放大倍数:c=3,1.631方法2只生成一次Koch曲线,然后对生成的Koch曲线进行旋转变换,旋转3次即可得到所需图形。代

6、码略去。图形如下第二题1.实验内容自己构造生成元(要有创意),按照图形迭代的方式产生分形图,用计算机编制程序绘制出它的图形,并计算其分形维数。2.实验过程 在原来Koch曲线的基础上修改旋转矩阵,并对一个图形进行旋转,得到如下的一些图形图形1:飞镖代码如下function myPicture(k) % k取4的效果p=0 0;10 0; %P为初始两个点的坐标,第一列为x坐标,第二列为y坐标n=2; %n为结点数A1=cos(pi/3),-sin(pi/3);sin(pi/3),cos(pi/3);A2=cos(pi/4),-sin(pi/4);sin(pi/4),cos(pi/4);A=0

7、-1;1 0; %旋转矩阵for i=1:k d=diff(p)/3; %diff计算相邻两个点的坐标之差,得到相邻两点确定的向量 %则d就计算出每个向量长度的三分之一,与题中将线段三等分对应 m=5*n-4; %迭代公式 q=p(1:n-1,:); %以原点为起点,前n-1个点的坐标为终点形成向量 p(6:5:m,:)=p(2:n,:); %迭代后处于5k+1位置上的点的坐标为迭代前的相应坐标 p(2:5:m,:)=q+d; %用向量方法计算迭代后处于5k+2位置上的点的坐标 p(3:5:m,:)=q+d+1*d*A; %用向量方法计算迭代后处于5k+3位置上的点的坐标 p(4:5:m,:)

8、=q+2*d+1*d*A; %用向量方法计算迭代后处于5k+4位置上的点的坐标 p(5:5:m,:)=q+2*d; %用向量方法计算迭代后处于5k位置上的点的坐标 n=m; %迭代后新的结点数目endfor i=1:8p=p;p*A2;endplot(p(:,1),p(:,2),b) %绘出每相邻两个点的连线axis equal图形2:叶子代码:function kochfeibiao(R,k)p01=0,0;p02=0,R;p03=R,R;p04=R,0;S = 0;%A1=cos(pi/4),-sin(pi/4);sin(pi/4),cos(pi/4);for line=0:3 if li

9、ne=0; p=p01;p02; elseif line=1; p=p02;p03; elseif line=2; p=p03;p04; elseif line=3; p=p04;p01; end n=2; %n为结点数 A=0 -1;1 0; %旋转矩阵 for i=1:k d=diff(p)/3; %diff计算相邻两个点的坐标之差,得到相邻两点确定的向量 %则d就计算出每个向量长度的三分之一,与题中将线段三等分对应 m=5*n-4; %迭代公式 q=p(1:n-1,:); %以原点为起点,前n-1个点的坐标为终点形成向量 p(6:5:m,:)=p(2:n,:); %迭代后处于5k+1位置

10、上的点的坐标为迭代前的相应坐标 p(2:5:m,:)=q+d; %用向量方法计算迭代后处于5k+2位置上的点的坐标 p(3:5:m,:)=q+d+0.5*d*A; %用向量方法计算迭代后处于5k+3位置上的点的坐标 p(4:5:m,:)=q+2*d+0.5*d*A; %用向量方法计算迭代后处于5k+4位置上的点的坐标 p(5:5:m,:)=q+2*d; %用向量方法计算迭代后处于5k位置上的点的坐标 n=m; %迭代后新的结点数目 end if line=0; a=p; elseif line=1; b=p; elseif line=2; c=p; elseif line=3; d=p; en

11、d endall=a;b;c;d;%all=all*A1;plot(all(:,1),all(:,2),b)fill(all(:,1),all(:,2),g)hold onx0=1;y0=1; %画一个圆放置在叶子中间r=0.1;theta=0:pi/100:2*pi;x=x0+r*cos(theta);y=y0+r*sin(theta);plot(x,y,k);fill(x,y,w);axis square; axis equal图形三:地毯在上面叶子的基础上改变了某些参数得出的代码如下function kochfeibiao(R,k)%R = 2; %半径设为2,面积好计算p01=0,0;p02=0,R;p03=R,R;p04=R,0;S = 0;%A1=cos(pi/4),-sin(pi/4);sin(pi/4),cos(pi/4);for line=0:3 if line=0; p=p01;p02; elseif line=1; p=p02;p03; elseif line=2; p=p03;p04; elseif line=3; p=p04;p01

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题 > 初中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号