Matlab分形植物模拟

Matlab分形植物模拟
Matlab分形植物模拟

几个分形的matlab实现

几个分形得matlab实现 摘要:给出几个分形得实例,并用matlab编程实现方便更好得理解分形,欣赏其带来得数学美感 关键字:Koch曲线实验图像 一、问题描述: 从一条直线段开始,将线段中间得三分之一部分用一个等边三角形得两边代替,形成山丘形图形如下 ?图1 在新得图形中,又将图中每一直线段中间得三分之一部分都用一个等边三角形得两条边代替,再次形成新得图形如此迭代,形成Koch分形曲线。 二、算法分析: 考虑由直线段(2个点)产生第一个图形(5个点)得过程。图1中,设与分别为原始直线段得两个端点,现需要在直线段得中间依次插入三个点,,。显然位于线段三分之一处,位于线段三分 之二处,点得位置可瞧成就是由点以点为轴心,逆时针旋转600而得。旋转由正交矩阵 实现。 算法根据初始数据(与点得坐标),产生图1中5个结点得坐标、结点得坐标数组形成一个矩阵,矩阵得第一行为得坐标,第二行为得坐标……,第五行为得坐标。矩阵得第一列元素分别为5个结点得坐标,第二列元素分别为5个结点得坐标。 进一步考虑Koch曲线形成过程中结点数目得变化规律。设第次迭代产生得结点数为,第次迭代产生得结点数为,则与中间得递推关系为。 三、实验程序及注释: p=[0 0;10 0]; %P为初始两个点得坐标,第一列为x坐标,第二列为y坐标 n=2; %n为结点数 A=[cos(pi/3) —sin(pi/3);sin(pi/3) cos(pi/3)]; %旋转矩阵 for k=1:4 d=diff(p)/3; %diff计算相邻两个点得坐标之差,得到相邻两点确定得向量 %则d就计算出每个向量长度得三分之一,与题中将线段三等分对应 m=4*n-3; %迭代公式 q=p(1:n—1,:); %以原点为起点,前n—1个点得坐标为终点形成向量 p(5:4:m,:)=p(2:n,:); %迭代后处于4k+1位置上得点得坐标为迭代前得相应坐标 p(2:4:m,:)=q+d; %用向量方法计算迭代后处于4k+2位置上得点得坐标 p(3:4:m,:)=q+d+d*A'; %用向量方法计算迭代后处于4k+3位置上得点得坐标 p(4:4:m,:)=q+2*d; %用向量方法计算迭代后处于4k位置上得点得坐标 n=m; %迭代后新得结点数目 end plot(p(:,1),p(:,2)) %绘出每相邻两个点得连线 axis([0 10 0 10]) 四、实验数据记录: 由第三部分得程序,可得到如下得Koch分形曲线:

Matlab实验报告:分形迭代

数学实验报告:分形迭代 练习1 1.实验目的:绘制分形图案并分析其特点。 2.实验内容:绘制Koch曲线、Sierpinski三角形和树木花草图形,观察这些图形的局部和原来分形图形的关系。 3.实验思路:利用函数反复调用自己来模拟分形构造时的迭代过程,当迭代指标n为0时运行作图操作,否则继续迭代。 4.实验步骤: (1)Koch曲线 function koch(p,q,n) % p、q分别为koch曲线的始末复坐标,n为迭代次数 if (n==0) plot([real(p);real(q)],[imag(p);imag(q)]); hold on; axis equal else a=(2*p+q)/3; % 求出从p 到q 的1/3 处端点a b=(p+2*q)/3; % 求出从p 到q 的2/3 处端点b c=a+(b-a)*exp(pi*i/3);% koch(p, a, n-1); % 对pa 线段做下一回合 koch(a, c, n-1); % 对ac 线段做下一回合 koch(c, b, n-1); % 对cb 线段做下一回合 koch(b, q, n-1); % 对bq 线段做下一回合 end (2)Sierpinski三角形 function sierpinski(a,b,c,n) % a、b、c为三角形顶点,n为迭代次数 if (n==0) fill([real(a) real(b) real(c)],[imag(a) imag(b) imag(c)],'b');% 填充三角形abc hold on; axis equal else a1=(b+c)/2; b1=(a+c)/2; c1=(a+b)/2; sierpinski(a,b1,c1,n-1); sierpinski(a1,b,c1,n-1); sierpinski(a1,b1,c,n-1); end (3)树木花草 function grasstree(p,q,n) % p、q分别为树木花草始末复坐标,n为迭代次数

3种沙漠植物地上部分形结构与生物量的自相似性

第42卷第5期 2006年5月林业科学SCIE NTI A SI LVAE SI NIC AE V ol 142,N o 15May ,20063种沙漠植物地上部分形结构与生物量的自相似性 李伟成1 盛海燕2 潘伯荣3 常 杰4 (1.国家林业局竹子研究开发中心 杭州310012; 2.杭州环境保护科学研究院 杭州310005; 3.中国科学院新疆生态与地理研究所 乌鲁木齐830011; 4.浙江大学生命科学学院 杭州310029) 摘 要: 应用自相似原理,分别研究极干旱地区塔克拉玛干腹地和吐鲁番盆地地下水浇灌区柽柳、梭梭和沙拐枣植株的地上分形结构与各自地上部生物量的关系。通过分析3种植物的枝长、冠幅和体积与地上部生物量之间的统计自相似性,发现在统计拟合精度上自相似模型不如BP 神经网络模型,但分析植株生长的地域性差异时,缺少像分形维数这样的定量化描述。 关键词: 沙漠植被;地上部生物量;分形;自相似;BP 神经网络模型 中图分类号:Q948;Q949 文献标识码:A 文章编号:1001-7488(2006)05-0011-06 收稿日期:2004-08-05。 基金项目:国家自然科学基金重大研究计划N o.90202019。 Self 2Similarity R elationship betw een Component of Shoot and Biomass of Three H ungriness Plants Li W eicheng 1 Sheng Haiyan 2 Pan Borong 3 Jie 4 (1.China National Bamboo Research Center Hangzhou 310012;2.Hangzhou Environmental Protection Science Institute Hangzhou 310005; 3.Xinjiang Institute o f E cology and G eography ,Chinese Academy o f Sciences Ulmuqi 830011; 4.College o f Life Science ,Zhejiang Univer sity Hangzhou 310029) Abstract : Function y =ax b maybe can disclose the correlation between shoot fractal structure and above 2ground biomass of hungriness plant in T aklamakan Desert com pared with Turpan Basin.Desertification and salinized soil ,the tw o serious environment problems ,annoyed human in willful persecution.Especially ,this phenomenon is m ore obvious in the second largest desert T aklamakan ,which lies in T arim Basin.This research note aims to use the theory of self 2sim ilarity to study the relationship between the shoot fractal structure and each biomass of hungriness plant in T aklamakan Desert ,exert the fractal dimension (FD )to explain the capability of spatial occupation of these three plants.Three hungriness plants (Tamarix spp.,Haloxylon ammodendron and Calligonum mongolicum )are chosen and the statistical self 2sim ilarity (SS M )characters am ong shoot ,branch and above 2ground biomass are analyzed in this study.Based on the close relationship of statistical self 2sim ilarity between the length of branches ,crown width ,external v olume and shoot biomass ,a fractal m odel on calculating shoot biomass is built.When the source data are not uniform ,the results show that the simulative outcomes of SS M w orse than BP neural netw ork m odel (NNM )that the values of χ22test are not up the con fidence interval too.SS M can be used for one method in measuring the biomass with the data of small variance and im ply the capacity of spatial occupancy with the FD.It is practicable that this growth m odel using biomass of some segments of one whole plant to estimate the shoot biomass in the arid and sem iarid regions where vegetation is sparse ,ecosystem is flimsy and building the man 2made vegetation area is difficult.W e em phasize that the ecological scale in this paper is of individual significance. K ey w ords : hungriness plant ;above 2ground biomass ;fractal ;self 2sim ilarity ;BP neural netw ork m odel 目前,荒漠化与盐碱化是人类面临的2个环境问题,在塔里木盆地的塔克拉玛干沙漠表现得尤其突出(陶玲等,2001;李伟成等,2003)。塔克拉玛干地区生态环境恶劣,气候极度干旱,因此一些抗热、抗寒、抗强碱的优良固沙先锋植物在这里就显得尤为重要了(潘伯荣等,1994;陶玲等,2001)。柽柳(Tamarix spp.)作为干旱、半干旱区广泛分布的灌木,具有强大的固定流沙和耐盐碱能力;梭梭(Haloxylon ammodendron )是我国干旱荒漠区的优良固沙植物,是荒漠濒危类3级国家保护植物(陶玲等,2001);而沙拐枣(Calligonum mongolicum )以其独特的生活型、表型特征和薪柴、饲用、固沙、蜜源等经济特点,早就引起了人们的注意。上述3种植物具备了荒漠先锋种的生理、形态特征(潘伯荣等,1994;陶玲等,2001),是西北荒漠生态系统的关键物种。 自从Burrough (1981)将Mandelbort (1979)提出的分形和分维概念应用到自然生态和环境学科领域以来,

水生植物叶片的分形特征研究

收稿日期:2003205223;修订日期:2003209230 基金项目:国家重点基础研究发展规划(973)项目(2002C B412310);国家自然科学基金项目(30070153,39670150);中科院知识创新工程重要 方向项目(K SCX22SW 2111);中科院知识领域前沿项目(220208)和湖北省涝渍灾害与湿地农业重点实验室基金(HNK F J2002A02)资助;福州大学科技发展基金项目(XK J (QD )20134) 作者简介:潘文斌(1973—),男,浙江临安人;博士;主要从事环境工程教学和科研工作,研究方向为水生生物学、流域生态学与流域环境管 理与规划 通讯作者:蔡庆华,E 2mail :qhcai @https://www.360docs.net/doc/1c5348905.html, 水生植物叶片的分形特征研究潘文斌1,2 黎道丰1 唐 涛1 蔡庆华1 (中国科学院水生生物研究所,淡水生态与生物技术国家重点实验室,武汉 430072; 福州大学环境与资源工程系,福州 350002) 摘要:应用分形几何理论对保安湖部分水生植物叶的分形特征进行研究,以寻找其中的自相似性特征,计算其分形维数,并力图了解各个分维的生态学含义。计算得到各物种分维平均值,马来眼子菜为11441(11322-11520,sd = 010547),菹草为11472(11381-11565,sd =010489),大茨藻为11325(11209-11406,sd =010470),轮叶黑藻为11103(11001-11217,sd =010456)。按分维值排序,菹草>金鱼藻>马来眼子菜>茨藻>黑藻。叶片分维的大小,说明了 不同种类水生植物叶片占据空间的程度和利用生态空间的能力有差异。通过对五种植物叶的空间格局的定量化描述,更好地理解水生植物对水环境的适应机理,为进一步对更大尺度下的水生植物空间格局研究提供基础信息。关键词:水生植物;构件;分形特征 中图分类号:Q94818 文献标识码:A 文章编号:100023207(2004)0120023206 构件(M odule )是由单一顶端分生组织,由始至终生长发育形成的,一个独立的,具有与其相连的节、叶片和腋生分生组织的,终止于一顶生花序的轴[1—3]。高等植物是构件生物,是由构件不断重复增加形成的,具体地说,植物是通过其构件一如叶、芽、枝、花、根等的反复形成实现其生长[2]。 构件研究最初的对象主要是一些陆生植物。Prev ost 首次报道了植物构件的研究工作,但是直到20世纪70年代植物学家才对构件的概念引起重 视。英国的著名生态学家Harper 最早将其译作英 文的“M odule ”[4] ,同时他将这个思想应用于植物种群统计学的研究中,极大地推动了植物种群生态学的发展。近年来,构件理论已被广泛接受并运用于 植物种群生态学研究的许多方面[2,3,5,6]。关于植物构件格局的研究一般侧重于枝、叶、花、果、芽的大小、形状、角度及位置等空间分布几何特征方面[7,8]。 在水生植物的形态结构上起着重要作用的构件是叶和枝[9]。叶片是水生植物进行光合作用的主要 器官,叶片的多少、叶面积的大小以及叶片的配置等空间结构特征直接影响着叶片的受光量、光照强度和光谱成分等,进而决定着水生植物的光能利用效率。枝条的主要功能一是作为叶片的支撑体,并决定着叶片的空间分布;二是连接叶片与主茎,并担负着它们之间的水分和营养物质的输送。 虽然水生植物不同等级构件的尺度、结构和空间复杂度存在差异,但其形态结构具有自相似特征,并形成一个等级系列,叶是这个等级系统的最小分辨尺度。水生植物分枝结构是具有自相似性的分形体。由于分形体不存在特征尺度,即分维不依赖于尺度,故可以用分维来刻画分形体各尺度上特征的共性,揭示水生植物构件本质特征。 本文应用分形几何理论对部分水生植物叶的分形特征进行研究。目的是寻找其自相似性特征,计算分形维数,并力图了解各个分维的生态学含义,同时完成对各个构件格局定量化描述,更好地理解水生植物对水环境的适应机理,为进一步对更大尺度下的水生植物空间格局研究提供基础信息。 第28卷 第1期 水生生物学报 V ol.28,N o.12004年1月 ACT A HY DROBI O LOGIC A SI NIC A Jan .,2004

分形树__Matlab

%这是一个生成树的主函数,它的输入分别为每叉树枝的缩短比、树枝的偏角、生长次数. %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %注意:把这些程序全部保存在名为tree的M文件中再运行!!!!!!!! %%小提示:若用做函数,请将虚线框内语句删去。 function f=tree(w,dtheata,NN) %%%--------------------虚线框--------------------%%% clear;clc;clf;w=0.8;dtheata=pi/6;NN=8;%建议生长次数NN不要超过10 %%%--------------------虚线框--------------------%%% n=2^NN;%从主枝算起,共需生成2^NN个树枝 for NNK=1:n x1=0; y1=0; r1=1; theata1=pi/2; dataway=ten2twoN(NNK,NN); %把每一个树枝的编号转化为一个NN位的二进制数 for NNL=1:NN if dataway(NNL)==0 [x2,y2,r2,theata2]=antmoveleft(x1,y1,r1,theata1,w,dtheata);%若路径数组上对应的数字为0,则向左生长 x1=x2; y1=y2; r1=r2; theata1=theata2; hold on %pause(eps) else [x2,y2,r2,theata2]=antmoveright(x1,y1,r1,theata1,w,dtheata);%否则,数字为1,向右生长 x1=x2; y1=y2; r1=r2; theata1=theata2; hold on %pause(eps) end end end hold off %--------------------------------------------------------------------------

分形插值算法和MATLAB实验

一,分形插值算法 ——分形图的递归算法1,分形的定义 分形(Fractal)一词,是法国人B.B.Mandelbrot 创造出来的,其原意包含了不规则、支离破碎等意思。Mandelbrot 基于对不规则的几何对象长期地、系统地研究,于1973 年提出了分维数和分形几何的设想。分形几何是一门以非规则几何形状为研究对象的几何学,用以描述自然界中普遍存在着的不规则对象。分形几何有其显明的特征,一是自相似性;分形作为一个数学集合, 其内部具有精细结构, 即在所有比例尺度上其组成部分应包含整体, 而且彼此是相似的。其定义有如下两种描述: 定义 1如果一个集合在欧式空间中的 Hausdorff 维数H D 恒大于其拓扑维数 r D ,则称该集合为分形集,简称分形。 定义 2组成部分以某种方式与整体相似的形体叫分形。 对于定义 1 的理解需要一定的数学基础,不仅要知道什么是Hausdorff 维数,而且要知道什么是拓扑维数,看起来很抽象,也不容易推广。定义 2 比较笼统的说明了自然界中的物质只要局部和局部或者局部和整体之间存在自相似性,那么这个物质就是分形。正是这一比较“模糊”的概念被人们普遍接受,同时也促进了分形的发展。 根据自相似性的程度,分形可分为有规分形和无规分形。有规分形是指具有严格的自相似的分形,比如,三分康托集,Koch 曲线。无规分形是指具有统计意义上的自相似性的分形,比如,曲折的海岸线,漂浮的云等。本文主要研究有规分形。

2. 分形图的递归算法 2.1 三分康托集 1883 年,德国数学家康托(G.Cantor)提出了如今广为人知的三分康托集。三分康托集是很容易构造的,然而,它却显示出许多最典型的分形特征。它是从单位区间出发,再由这个区间不断地去掉部分子区间的过程构造出来的(如图2.1)。 其详细构造过程是:第一步,把闭区间[0,1]平均分为三段,去掉中间的 1/3 部分段,则只剩下两个闭区间[0,1/3]和[2/3,1]。第二步,再将剩下的两个闭区间各自平均分为三段,同样去掉中间的区间段,这时剩下四段闭区间:[0,1/9],[2/9,1/3],[2/3,7/9]和[8/9,1]。第三步,重复删除每个小区间中间的 1/3 段。如此不断的分割下去,最后剩下的各个小区间段就构成了三分康托集。三分康托集的 Hausdorff 维数是0.6309。 图2.2 三分康托集的构造过程

Newton分形的原理及Matlab实现

龙源期刊网 https://www.360docs.net/doc/1c5348905.html, Newton分形的原理及Matlab实现 作者:张健徐聪全付勇智 来源:《电脑知识与技术》2009年第24期 摘要:详细推导了复平面上Newton迭代法的原理和计算公式,用MATLAB编制程序实现了Newton迭代算法,得到了一些奇异、绚丽的分形图形。对《数学实验》课程有一定的参考价值。 关键词:Newton迭代法;分形;Matlab;数学实验 中图分类号:TP312文献标识码:A文章编号:1009-3044(2009)24-6997-03 The Principles of Newton Fractal and it's Realization Using MATLAB ZHANG Jian, XU Cong-quan, FU Yong-zhi (Department of Basic Courses, Southwest Forestry College, Kunming 650224, China) Abstract: The Principles and formulas of Newton fractal was explained,fractal graphics of Newton iteration was created using Matlab. Key words: newton iteration; fractal; Matlab; mathematical experimental 分形是非线性科学的一个重要分支,应用于自然科学和社会科学的众多领域。其中,分形图形以其奇异、绚丽多彩的特点,广泛应用于纺织印染、广告设计、装潢设计、计算机美术教学 等领域[1]。 很多分形图形都是用迭代的方式实现的,Newton迭代法就是其中的一种。由Newton迭代 法产生的分形图形称为Newton分形[2]。很多文献都对Newton分形进行了介绍,但都没有详细的计算公式和算法说明,读者很难编制相应程序。本文详细介绍了复平面上Newton迭代法的原理和计算公式,设计了相应的实现算法,并用Matlab编制程序实现了Newton分形的绘制,生成了一些奇异、瑰丽的分形图形。

几个分形matlab实现

几个分形的matlab实现 摘要:给出几个分形的实例,并用matlab编程实现方便更好的理解分形,欣赏其带来的数学美感 关键字:Koch曲线实验图像 一、问题描述: 从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的两边代替,形成山丘形图形如下 图1 在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的两条边代替,再次形成新的图形如此迭代,形成Koch分形曲线。 二、算法分析: 考虑由直线段(2个点)产生第一个图形(5个点)的过程。图1中,设 1 P和 5 P分别为 原始直线段的两个端点,现需要在直线段的中间依次插入三个点 2 P, 3 P, 4 P。显然 2 P位 于线段三分之一处, 4 P位于线段三分之二处, 3 P点的位置可看成是由 4 P点以 2 P点为轴心,逆时针旋转600而得。旋转由正交矩阵 ?? ? ? ? ? ? ? - = ) 3 cos( ) 3 sin( ) 3 sin( ) 3 cos( π π π π A 实现。 算法根据初始数据( 1 P和 5 P点的坐标),产生图1中5个结点的坐标。结点的坐标数组形成一个2 5?矩阵,矩阵的第一行为 1 P的坐标,第二行为 2 P的坐标……,第五行为 5 P的坐标。矩阵的第一列元素分别为5个结点的x坐标,第二列元素分别为5个结点的y坐标。 进一步考虑Koch曲线形成过程中结点数目的变化规律。设第k次迭代产生的结点数为k n,第1 + k次迭代产生的结点数为 1+ k n,则 k n和 1+ k n中间的递推关系为3 4 1 - = +k k n n。

三、实验程序及注释: p=[0 0;10 0]; %P为初始两个点的坐标,第一列为x坐标,第二列为y坐标 n=2; %n为结点数 A=[cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3)]; %旋转矩阵 for k=1:4 d=diff(p)/3; %diff计算相邻两个点的坐标之差,得到相邻两点确定的向量 %则d就计算出每个向量长度的三分之一,与题中将线段三等分对应 m=4*n-3; %迭代公式 q=p(1:n-1,:); %以原点为起点,前n-1个点的坐标为终点形成向量 p(5:4:m,:)=p(2:n,:); %迭代后处于4k+1位置上的点的坐标为迭代前的相应坐标 p(2:4:m,:)=q+d; %用向量方法计算迭代后处于4k+2位置上的点的坐标 p(3:4:m,:)=q+d+d*A'; %用向量方法计算迭代后处于4k+3位置上的点的坐标 p(4:4:m,:)=q+2*d; %用向量方法计算迭代后处于4k位置上的点的坐标 n=m; %迭代后新的结点数目 end plot(p(:,1),p(:,2)) %绘出每相邻两个点的连线 axis([0 10 0 10]) 四、实验数据记录: 由第三部分的程序,可得到如下的Koch分形曲线: 图2 五、注记: 1.参照实验方法,可绘制如下生成元的Koch 分形曲线:

几个分形的matlab实现资料

几个分形的matlab 实现 摘要:给出几个分形的实例,并用matlab 编程实现方便更好的理解分形,欣赏其带来的 数学美感 关键字:Koch 曲线 实验 图像 一、问题描述: 从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的两边代替,形成山丘形图形如下 图1 在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的两条边代替,再次形成新的图形如此迭代,形成Koch 分形曲线。 二、算法分析: 考虑由直线段(2个点)产生第一个图形(5个点)的过程。图1中,设1P 和5P 分别为原始直线段的两个端点,现需要在直线段的中间依次插入三个点2P ,3P ,4P 。显然2P 位于线段三分之一处,4P 位于线段三分之二处,3P 点的位置可看成是由4P 点以2P 点为轴心,逆时针旋转600 而得。旋转由正交矩阵 ?????? ? ?-=)3cos()3sin()3sin()3cos(ππππA 实现。 算法根据初始数据(1P 和5P 点的坐标),产生图1中5个结点的坐标。结点的坐标数组形成一个25?矩阵,矩阵的第一行为1P 的坐标,第二行为2P 的坐标……,第五行为5P 的坐标。矩阵的第一列元素分别为5个结点的x 坐标,第二列元素分别为5个结点的y 坐标。 进一步考虑Koch 曲线形成过程中结点数目的变化规律。设第k 次迭代产生的结点数为k n ,第1+k 次迭代产生的结点数为1+k n ,则k n 和1+k n 中间的递推关系为341-=+k k n n 。 三、实验程序及注释:

p=[0 0;10 0]; %P为初始两个点的坐标,第一列为x坐标,第二列为y坐标 n=2; %n为结点数 A=[cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3)]; %旋转矩阵 for k=1:4 d=diff(p)/3; %diff计算相邻两个点的坐标之差,得到相邻两点确定的向量 %则d就计算出每个向量长度的三分之一,与题中将线段三等分对应 m=4*n-3; %迭代公式 q=p(1:n-1,:); %以原点为起点,前n-1个点的坐标为终点形成向量 p(5:4:m,:)=p(2:n,:); %迭代后处于4k+1位置上的点的坐标为迭代前的相应坐标 p(2:4:m,:)=q+d; %用向量方法计算迭代后处于4k+2位置上的点的坐标 p(3:4:m,:)=q+d+d*A'; %用向量方法计算迭代后处于4k+3位置上的点的坐标 p(4:4:m,:)=q+2*d; %用向量方法计算迭代后处于4k位置上的点的坐标 n=m; %迭代后新的结点数目 end plot(p(:,1),p(:,2)) %绘出每相邻两个点的连线 axis([0 10 0 10]) 四、实验数据记录: 由第三部分的程序,可得到如下的Koch分形曲线: 图2 五、注记: 1.参照实验方法,可绘制如下生成元的Koch 分形曲线: 图3

几个分形的matlab实现教学文案

几个分形的m a t l a b 实现

几个分形的matlab实现 摘要:给出几个分形的实例,并用matlab编程实现方便更好的理解分形,欣赏其带来的数学美感 关键字:Koch曲线实验图像 一、问题描述: 从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的两边代替,形成山丘形图形如下 图1 在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的两条边代替,再次形成新的图形如此迭代,形成Koch分形曲线。 二、算法分析: 考虑由直线段(2个点)产生第一个图形(5个点)的过程。图1中,设 1 P和5 P分别为原始直线段的两个端点,现需要在直线段的中间依次插入三个点 2 P,3 P, 4 P。显然 2 P位于线段三分之一处, 4 P位于线段三分之二处, 3 P点的位置可 看成是由 4 P点以 2 P点为轴心,逆时针旋转600而得。旋转由正交矩阵 ?? ? ? ? ? ? ? - = ) 3 cos( ) 3 sin( ) 3 sin( ) 3 cos( π π π π A 实现。

算法根据初始数据(1P 和5P 点的坐标),产生图1中5个结点的坐标。结点的坐标数组形成一个25?矩阵,矩阵的第一行为1P 的坐标,第二行为2P 的坐标……,第五行为5P 的坐标。矩阵的第一列元素分别为5个结点的x 坐标,第二列元素分别为5个结点的y 坐标。 进一步考虑Koch 曲线形成过程中结点数目的变化规律。设第k 次迭代产生的结点数为k n ,第1+k 次迭代产生的结点数为1+k n ,则k n 和1+k n 中间的递推关系为341-=+k k n n 。 三、实验程序及注释: p=[0 0;10 0]; %P 为初始两个点的坐标,第一列为x 坐标,第二列为y 坐标 n=2; %n 为结点数 A=[cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3)]; %旋转矩阵 for k=1:4 d=diff(p)/3; %diff 计算相邻两个点的坐标之差,得到相邻两点确定的向量 %则d 就计算出每个向量长度的三分之一,与题中将线段三等分对应 m=4*n-3; %迭代公式 q=p(1:n-1,:); %以原点为起点,前n-1个点的坐标为终点形成向量 p(5:4:m,:)=p(2:n,:); %迭代后处于4k+1位置上的点的坐标为迭代前的相应坐标 p(2:4:m,:)=q+d; %用向量方法计算迭代后处于4k+2位置上的点的坐标 p(3:4:m,:)=q+d+d*A'; %用向量方法计算迭代后处于4k+3位置上的点的坐标 p(4:4:m,:)=q+2*d; %用向量方法计算迭代后处于4k 位置上的点的坐标 n=m; %迭代后新的结点数目 end plot(p(:,1),p(:,2)) %绘出每相邻两个点的连线 axis([0 10 0 10]) 四、实验数据记录: 由第三部分的程序,可得到如下的Koch 分形曲线:

Mandelbrot集和Julia集的分形图之matlab实现

Mandelbrot集和Julia集的分形图之matlab实现 基于逃逸时间算法 1. Mandelbrot集 function Mandelbrot(res,iter,xc,yc,xoom) %Mandelbrot % res是目标分辨率,iter是循环次数,(xc,yc)是图像中心,xoom是放大倍数 x0=xc-2/xoom;x1=xc+2/xoom; y0=yc-2/xoom;y1=yc+2/xoom; x=linspace(x0,x1,res); y=linspace(y0,y1,res); [xx,yy]=meshgrid(x,y); z=xx+yy*1i; C=z; N=zeros(res,res); %初始化N,最终根据N,对各点进行染色 tic %显示tic和toc间的程序运行时间 for k=1:iter z=z.^2+C; %对空间上每点都进行迭代 N(abs(z)>4)=k; %逃逸半径为4,诺某点逃逸,记录逃逸时间k,未逃逸则时间为0 z(abs(z)>4)=0; C(abs(z)>4)=0; end imshow(N,[]); toc end >>Mandelbrot(512,100,0,0,1)

>>Mandelbrot(512,128,-1.478,0,300) 2.Julia集 function Julia(c,res,iter,xc,yc,xoom) %Julia集 %c为参数, res是目标分辨率,iter是循环次数,(xc,yc)是图像中心,xoom是放大倍数x0=xc-2/xoom;x1=xc+2/xoom; y0=yc-2/xoom;y1=yc+2/xoom; x=linspace(x0,x1,res); y=linspace(y0,y1,res); [xx,yy]=meshgrid(x,y); z=xx+yy*1i; N=zeros(res,res); C=c*ones(res,res); for k=1:iter z=z.^2+C; N(abs(z)>2)=k; C(abs(z)>2)=0;

各种有趣的分形

各种有趣的分形 我们看到正方形,圆,球等物体时,不仅头脑里会迅速反映出它是什么,同时,只要我们有足够的数学知识,我们头脑中也反映出它的数学概念,如正方形是每边长度相等的四边形,圆是平面上与某一点距离相等的点的集合,等等。 但是,当我们看到一个山的形状时,我们会想到什么?"这是山",没错,山是如此的不同于其他景象,以至于你如果绘画水平不高,根本画不出象山的东西。可是,山到底是什么?它既不是三角形,也不是球,我们甚至不能说明山具有怎样的几何轮廓,但为什么我们却有如此直观而又强烈的山的印象?分形的创始人是曼德布洛特思考了这个问题。让

分维及分形的定义 分维概念的提出 对于欧几里得几何所描述的整形来说,可以由长度、面积、体积来测度。但用这种办法对分形的层层细节做出测定是不可能的。曼德尔布罗特放弃了这些测定而转向了维数概念。分形的主要几何特征是关于它的结构的不规则性和复杂性,主要特征量应该是关于它的不规则性和复杂性程度的度量,这可用“维数”来表征。维数是几何形体的一种重要性质,有其丰富的内涵。整形几何学描述的都是有整数维的对象:点是零维的,线是一维的,面是二维的,体是三维的。这种几何对象即使做拉伸、压缩、折叠、扭曲等变换,它们的维数也是不变的;这种维数称为“拓扑维”,记为d。例如当把一张地图卷成筒,它仍然是一个二维信息载体;一根绳子团成团,仍然是一维结构。但曼德尔布罗特认为,在分形世界里,维数却不一定是整数的。特别是由于分形几何对象更为不规则,更为粗糙,更为破碎,所以它的分数维(简称“分维”,记为D)不小于它的拓扑维,即D≥d。 维数和测量有密切关系。如为了测一平面图形的面积,就要用一个边长为l、面积为l2的标准面元去覆盖它,所得的数目就是所测的面积。

Matlab实现 递归算法生成3维分形树ByLinking

Matlab实现递归算法生成3维分形树 注:此算法树根在侧面,需对坐标轴进行旋转便可得到上图效果 以下代码全部粘贴到一个M文件中命名为TreeByL即可运行 为方便网友研读代码加入了大量注释 同时愿与matlab程序爱好者进行交流:Linking508@https://www.360docs.net/doc/1c5348905.html, %%%%%%%%%%%%%%%%%%%%%%%%%%%% %Matlab实现递归算法生成3维分形树 %ByLinking %%%%%%%%%%%%%%%%%%%%%%%%%%%% function TreeByL L=15;%主干长 a=0; b=pi/3; r=0;%r=pi/5; %分支生成函数 makeBranch(0,0,0,L,a,b,r); % a在XOZ平面投影与X轴夹角b与Y轴的夹角r与主干的夹角 function makeBranch (x,y,z,L,a,b,r) B=pi/5;s1=1.5;s2=3;s3=1.2;%B枝干的倾斜度C主干的倾斜度s1细腻程度s2分支收缩速度s3主干收缩速度 % B=pi/5;s1=1.5;s2=2.4;s3=1.35; if L>s1 x1=x+L/s2*cos(a)*cos(r);

y1=y+L/s2*sin(a); z1=z+L/s2*cos(a)*sin(r); x1R=x1+L/s2*cos(a-b)*cos(r); y1R=y1+L/s2*sin(a-b); z1R=z1+L/s2*cos(a-b)*sin(r); x1L=x1+L/s2*cos(a+b)*cos(r); y1L=y1+L/s2*sin(a+b); z1L=z1+L/s2*cos(a+b)*sin(r); x1F=x1+L/s2*cos((a-b)*sin(a))*cos(r+atan(1/cos(a))); y1F=y1+L/s2*sin((a-b)*sin(a)); z1F=z1+L/s2*cos((a-b)*sin(a))*sin(r+atan(1/cos(a))); x1B=x1+L/s2*cos((a-b)*sin(a))*cos(r-atan(1/cos(a))); y1B=y1+L/s2*sin((a-b)*sin(a)); z1B=z1+L/s2*cos((a-b)*sin(a))*sin(r-atan(1/cos(a))); %------------------------------------------------------ x2=x+L/s2*cos(a)*cos(r); y2=y+L/s2*sin(a); z2=z+L/s2*cos(a)*sin(r); x2R=x2+L/s2*cos(a-b)*cos(r); y2R=y2+L/s2*sin(a-b); z2R=z2+L/s2*cos(a-b)*sin(r); x2L=x2+L/s2*cos(a+b)*cos(r); y2L=y2+L/s2*sin(a+b); z2L=z2+L/s2*cos(a+b)*sin(r); x2F=x2+L/s2*cos((a-b)*sin(a))*cos(r+atan(1/cos(a))); y2F=y2+L/s2*sin((a-b)*sin(a)); z2F=z2+L/s2*cos((a-b)*sin(a))*sin(r+atan(1/cos(a))); x2B=x2+L/s2*cos((a-b)*sin(a))*cos(r-atan(1/cos(a))); y2B=y2+L/s2*sin((a-b)*sin(a)); z2B=z2+L/s2*cos((a-b)*sin(a))*sin(r-atan(1/cos(a))); plot3([x,x2],[y,y2],[z,z2],'k');hold on;set(gcf,'color','w');grid on;view(pi/2,0);%axis off;xlabel('X Label');ylabel('Y Label');zlabel('Z Label'); set(gca,'xlim',[0,25],'ylim',[-15,15],'zlim',[-15,15]); plot3([x2,x2R],[y2,y2R],[z2,z2R],'g');hold on; plot3([x2,x2L],[y2,y2L],[z2,z2L],'g');hold on; plot3([x2,x2B],[y2,y2B],[z2,z2B],'g');hold on;

分形植物模拟

基于GDI+和BSP算法的分形植物模拟 王兴元武志峰 (大连理工大学电子与信息工程学院,大连 116024) 摘要:为更灵活地模拟较多种类的植物形态,本文提出了一种借助GDI+技术,将分形算法与BSP算法相结合的编程思路。通过为植物各部器官建模和忠实于真实植物生长机制的程序处理,可生成多种自然逼真、立体感较强的植物形态图像。使用计时器技术,还实现了植物形态的动态模拟控制。 关键词:分形算法;BSP算法;GDI+;植物模拟;动态控制 中图分类号:TP391.41 文献标识码:A 0 引言 分形理论的引入,为研究植物结构形态开辟了新途径。当前典型的分形植物模拟方法有两种:L-系统[1、2]和迭代函数系统[3、4],但L-系统需先确定生成规则,简洁但不够灵活,且难于编程控制[5、6];迭代函数系统中仿射变换的确定较复杂,而且不能描绘细节[7]。因此,单独使用这两种算法并不是最好的选择。作者将L-系统的字符串替换思想和递归算法相结合,运用BSP( Binary Space Partition)[8、9]方法,通过递归地剖分空间,对每个平面进行细节描绘,从而找到一种能生动逼真地模拟植物形态的编程方法。作者利用https://www.360docs.net/doc/1c5348905.html,和GDI+(Windows提供的图形设备接口)编程[10],设计了基于参数数据库的“植物形态动态模拟系统”,可登录http://wuzhifeng_https://www.360docs.net/doc/1c5348905.html,/浏览该系统生成的部分图片。 1 GDI+ GDI+是集成于.NET开发环境中的图形设备接口[10],为图形函数提供了新的API.。使用GDI+,可以利用Windows的图形函数库,灵活使用各种画笔、画刷,在窗体和控件上创建图形和绘制文本,并可将图形图像作为对象进行操作。使用.NET Framwork提供的Graphics、Pen、Brush、Font、Color 等GDI+绘图对象类,可实现形状、线条、文本的绘制和图形处理。Graphics对象相当于绘图的画布,它的创建是各种编程操作的基础,创建了Graphics对象和Pen、Brush对象后,就可以使用一些画线和填充图形方法。画图方法主要有DrawLine、DrawRectangle、DrawBezier、DrawEllipse、DrawClosedCurve,填充图形的方法有FillRectangle、FillEllipse、FillPolygon、FillClosedCurve等。可以用这些方法绘制植物各部器官的模型,再灵活使用Brush对象的SolidBrush、HatchBrush、TextureBrush、LinerGradientBrush、PathGradientBrush方法进行填充,就可模拟整株植物的形态。 2 分形递归算法与BSP算法的结合 2.1 分形递归算法 自然植物具有自我相似、自我复制和自我嵌套的物质结构规则。递归是分形几何中的一种基本算法,在计算机程序设计中,递归的实质就是利用压栈和出栈的功能,重复运用某些规则来生成嵌套的结构。根据不同的植物外形,可以设定不同的生成元(基本生长模型),如图1所示,然后利用递归算法,将这个生成元在每一个层次上不断重画[11]。 基金项目:国家自然科学基金(69974008)及辽宁省自然科学基金( 972194)资助. 作者简介:王兴元(1964-),男,辽宁省沈阳人,博士,副教授,主要研究方向为混沌与分形理论及其应用;武志峰(1973-),男,山西大同人,硕士,主要研究方向为分形的计算机模拟.

相关文档
最新文档