华南理工大学数学实验论文957015842.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数学实验报告 ——迭代与分形 实验目的和意义 了解分形几何的基本理论。 了解通过迭代方式,产生分形图的方法。 了解分形几何的简单应用。 问题描述 对一个等边三角形,每条边按照koch曲线的方式进行迭代,产生的分形图称为koch雪花,编制程序绘制出它的图形,并计算koch雪花的面积,以及他的分形维数。 对一条竖向线段,在其三分之一分点出,向左上方向画一条线段,在其三分之二点出,向右上方向画一条线段,线段长度都是原来的三分之一,夹角都为30度,迭代一次后变成如图所示的分型图,继续迭代得到分形图,可模拟树木花草,编制程序绘制出它的图形。 实验过程 第一个问题 一、模型建立 在本问题中,采用的方法和koch曲线类似,即每条边都按照koch曲线的形成过程来进行变换,对于每一条线段,先将其分成三等分,然后将中间的一份替换成一次变为底边的等边三角形的另外两条边。然后进行无限次的迭代下去。最终形成koch曲线,在本问题中只是将一条Koch曲线变成三条koch曲线而已。 二、方法分析 在MATLAB编程当中,进行的主要思想是首先确定每一条线段的起点和终点,然后以此起点和终点为基准,依次的派生出需要进行下一步迭代的节点,然后将所有的节点进行plot函数连接,不过在形似与三角形的Koch曲线编程当中,需要将最末位的点和最首位的点单独进行声明连接。 三、实现过程 首先对课本中的Koch曲线的程序进行稍微的改动,所要做的改动的地方包括:1,对初始的p矩阵进行的定义,由于三角形是一个封闭的环形,所以需要对矩阵的元素进行一些改动,除了需要将三角形的三个点放入其中之外,还需要将三角形的第一个点放到第四位,这样可以实现连线时的循环;2,初始的n值应当为按照三角形考虑时的3;3,在clear p之后将p矩阵中加一个三角形的初始点的元素,即(0,0)点。 实现该功能的代码如下: function frat(k) A=[cos(pi/3),-sin(pi/3);sin(pi/3),cos(pi/3)]; p=[0,0;5,10*sin(pi/3);10,0;0,0]; n=3; for s=1:k j=0; for i=1:n q1=p(i,:); q2=p(i+1,:); d=(q2-q1)/3; j=j+1;a(j,:)=q1; j=j+1;a(j,:)=q1+d; j=j+1;a(j,:)=q1+d+d*A; j=j+1;a(j,:)=q1+2*d; end n=4*n; clear p p=[a;0 0]; end plot(p(:,1),p(:,2)); axis equal 然后检验该代码的正确性,将代码复制到edit命令窗口中,然后保存为frat.m文件,在命令窗口中输入代码frat(1),得到的结果如图所示: 然后输入frat(2),得到的图像为: 然后输入frat(3),得到的结果如下图所示: 在命令窗口中输入frat(4),可得: 由此可知,该代码正确,因此进行下一步的求解。 接下来进行该图形的面积求解,由于该函数的图像由许多相似的图形组成,所以其面积也具有某种规律,在函数迭代k次之后其面积是k的函数,经过计算,在迭代k次之后,其面积为: s 按照此思想,进行面积的编程的表示: d=25*sqrt(3); s=d; for i=1:k s=s+3*4^(i-1)*d/(9^i); end disp(s) 将此代码加到刚刚进行的代码之后,就可以在输出图形的同时输出面积了。 需要注意的是,该面积是在三角形的边长为10的前提下算出的面积,如果要算出边长为x的三角形的面积,则要进行相似形的面积变换,只需要将算出的面积乘以x的平方再除以100即可。 在命令窗口中输入frat(2),可在命令窗口中看到输出的结果为: 64.1500 在命令窗口中输入frat(3),可在命令窗口中看到输出的结果为: 67.0011 算出的结果与正确的面积相同,因此该代码正确,该实验进行的无误。 最后进行的是该迭代形状的维数计算,根据迭代的规律可得,相似形的个数m=4,边长放大倍数c=3,因此维数为 d=lnm 第二个问题 一、模型建立 在进行树木模型的迭代的时候,需要使用复数的向量这一表示法,这样可以使整个代码较为简洁。大体的一个模型是先通过代码实现树木模型的第一次迭代,然后再分别以每一个树枝为模版,进行函数的递归调用,递归的次数就为分形树木的阶数。 二、方法分析 在树木模型迭代的过程中,需要先通过编程实现初始的数目支架模型,然后再对每一条边(包括主干上通过生成分支之后的小段)实现递归函数的

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档