分形曲线及matlable算法
matlab多重分形谱算法
matlab多重分形谱算法
MATLAB中的多重分形谱算法是一种用于分析信号和图像的技术,它可以帮助我们理解复杂系统的结构和特征。
多重分形谱算法通常
用于测量信号或图像的分形维度,以及它们的分形特征。
下面我将
从多个角度来解释MATLAB中的多重分形谱算法。
首先,多重分形谱算法可以用于计算信号或图像的分形维度。
分形维度是一种描述信号或图像自相似性的度量,它可以帮助我们
理解信号或图像的复杂性和规律性。
在MATLAB中,我们可以使用多
重分形谱算法来计算信号或图像的分形维度,从而得到关于其结构
和特征的信息。
其次,多重分形谱算法可以用于分析信号或图像的分形特征。
通过计算信号或图像的分形谱,我们可以得到关于其分形特征的信息,比如分形维度的分布情况、分形特征的变化趋势等。
这些信息
可以帮助我们理解信号或图像的复杂性和规律性,从而为进一步的
分析和处理提供参考。
此外,MATLAB中的多重分形谱算法还可以用于处理不同类型的
信号和图像。
无论是一维的时间序列信号还是二维的图像数据,多
重分形谱算法都可以进行分形维度和分形特征的计算,从而帮助我们理解不同类型数据的结构和特征。
总的来说,MATLAB中的多重分形谱算法是一种强大的工具,可以帮助我们分析信号和图像的分形特征,从而揭示其复杂性和规律性。
通过对多重分形谱算法的理解和应用,我们可以更好地理解和处理各种类型的数据。
matlable软件的使用和教程
MATLAB百科名片MATLAB软件界面图MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks 公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
目录基本功能应用发展历程新版本新功能特点优势工具基本功能应用展开编辑本段基本功能MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
编辑本段应用MATLAB 产品族可以用来进行以下各种工作:● 数值分析● 数值和符号计算● 工程与科学绘图● 控制系统的设计与仿真● 数字图像处理技术● 数字信号处理技术● 通讯系统设计与仿真MATLAB在通讯系统设计与仿真的应用● 财务与金融工程MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
几个分形的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:4d=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; %迭代后新的结点数目endplot(p(:,1),p(:,2)) %绘出每相邻两个点的连线axis([0 10 0 10])四、实验数据记录:由第三部分的程序,可得到如下的Koch分形曲线:图2五、注记:1.参照实验方法,可绘制如下生成元的Koch 分形曲线:图3此时,旋转矩阵为:⎪⎪⎭⎫ ⎝⎛-=⎪⎪⎪⎪⎭⎫ ⎝⎛-=0110)2cos()2sin()2sin()2cos(ππππA 程序和曲线如下:p=[0 0;10 0]; %P 为初始两个点的坐标,第一列为x 坐标,第二列为y 坐标n=2; %n 为结点数A=[0 -1;1 0]; %旋转矩阵for k=1:4d=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+d*A'; %用向量方法计算迭代后处于5k+3位置上的点的坐标 p(4:5:m,:)=q+2*d+d*A'; %用向量方法计算迭代后处于5k+4位置上的点的坐标 p(5:5:m,:)=q+2*d; %用向量方法计算迭代后处于5k 位置上的点的坐标n=m; %迭代后新的结点数目endplot(p(:,1),p(:,2)) %绘出每相邻两个点的连线axis([0 10 0 10])图4由于中间三分之一部分是一个正方形时,有很多连接的部分。
MATLAB环境下图像分形维数的计算
也有采用递减序列进行像素点覆盖,递减序列 的构造有多种方法,普遍使用的是二等分序列,也 就是将图像逐次二等分.所采用的序列的最大值都 将取决于图像的大小.网格的最小值始终为1,这 是划分网格的极限.
根据分形维数的定义,块的尺寸越小,计算出 的图像的维数越精确,但对于存储在计算机内的分 形图像,只能分割到像素点尺寸,就不能再继续分 割下去了.因此,当讨论图像的分形性质时,可以取 一个像素点的尺寸作为尺度下限,为了避免奇异情 形的发生,在计算分形维数的过程中,要求有适当 多的测试点,至于尺度上限可根据具体情况和具体 要求进行确定.
(1.中国矿业大学资源与安全工程学院,北京100083;2.中原工学院数理系,河南郑州450007)
摘要:利用MATLAB的图像处理和数值计算功能,对大气可吸入颗粒物的场发射电镜
(FESEM)图像进行处理,得到颗粒物边界的二值图像;编制MATLAB程序,统计一系列以不同
像素数量为边长的正方形块覆盖二值图像时的个数,根据像素数量和正方形块个数之间的关系,
确定图像的计盒维数.结果表明:MATLAB对分形图像的处理简单、方便,通过科赫曲线、谢宾
斯基填料等有规分形图形分形维数的计算表明该方法计算出的结果准确、可靠.对大气颗粒物的
分形维数的计算表明,不同不规则程度的颗粒物有不同的分形维数,可以通过颗粒物分形维数的
计算分析颗粒物的来源和输运过程.
曲线分段 matlab
曲线分段 matlab介绍在数学和计算机科学的领域中,曲线分段是一种常见的技术。
在matlab中,我们可以使用不同的方法来实现曲线分段。
本文将介绍曲线分段的概念、matlab中的实现方法以及一些实际应用。
概念曲线分段是将一个连续的曲线分割成多个段的过程。
每个段都可以用一个简单的函数或模型来表示。
这种分段的方法可以使得对复杂曲线的处理更加简单和高效。
matlab中的实现方法在matlab中,有几种常见的方法可以实现曲线分段。
下面将介绍其中的几种方法。
1. 多项式拟合多项式拟合是一种常见的曲线拟合方法。
在matlab中,可以使用polyfit函数来进行多项式拟合。
通过选择适当的多项式阶数,可以将曲线拟合成多个段的形式。
2. 样条插值样条插值是一种通过一系列节点来近似曲线的方法。
在matlab中,可以使用interp1函数进行样条插值。
通过选择适当的节点和插值方法,可以将曲线分割成多个段。
3. 分段线性插值分段线性插值是一种简单而有效的曲线分段方法。
在matlab中,可以使用interp1函数的'linear'方法进行分段线性插值。
通过选择适当的节点,可以将曲线分割成多个线性段。
实际应用曲线分段在许多领域中都有广泛的应用。
下面将介绍几个实际应用的例子。
1. 图像处理在图像处理中,曲线分段可以用于图像的边缘检测和分割。
通过将图像中的曲线分割成多个段,可以更好地提取出图像中的边缘信息。
2. 机器学习在机器学习中,曲线分段可以用于特征提取和模式识别。
通过将复杂的曲线分割成多个简单的段,可以更好地表示和处理数据。
3. 金融分析在金融分析中,曲线分段可以用于股票价格的预测和趋势分析。
通过将股票价格曲线分割成多个段,可以更好地捕捉股票市场的波动和趋势。
总结曲线分段是一种常见的技术,可以将复杂的曲线分割成多个简单的段。
在matlab 中,可以使用多项式拟合、样条插值和分段线性插值等方法来实现曲线分段。
分形图之matlab实现
分形图之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:iterz=z.^2+C; %对空间上每点都进行迭代N(abs(z)>4)=k; %逃逸半径为4,诺某点逃逸,记录逃逸时间k,未逃逸则时间为0 z(abs(z)>4)=0;C(abs(z)>4)=0;endimshow(N,[]);tocend>>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:iterz=z.^2+C;N(abs(z)>2)=k;C(abs(z)>2)=0;z(abs(z)>2)=0;endcolormap jet;image(x,y,N);axis square;end>>Julia(i,512,200,0,0,1)>> Julia(i,512,200,0,0,2000)>>Julia(0.1+0.7i,512,200,0,0,1)>>Julia(-0.8-0.21i,512,200,0,0,1)。
matlable软件的使用和教程
MATLAB百科名片MATLAB软件界面图MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
目录发展历程新版本新功能特点优势工具展开编辑本段基本功能MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
编辑本段应用MATLAB 产品族可以用来进行以下各种工作:● 数值分析● 数值和符号计算● 工程与科学绘图● 控制系统的设计与仿真● 数字图像处理技术● 数字信号处理技术● 通讯系统设计与仿真MATLAB在通讯系统设计与仿真的应用● 财务与金融工程MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
第7章分形维数应用与MATLAB实现
第7章分形维数应用与MATLAB实现分形维数是描述分形结构复杂性的一个重要指标,通过分形维数可以对分形物体的几何特征进行度量。
分形维数的应用十分广泛,可以应用于自然科学、工程技术、生物医学等多个领域。
在自然科学中,分形维数被广泛应用于地理地貌、气象学、流体力学等领域。
例如,在地理地貌中,通过计算地形的分形维数可以揭示地形的形态特征,如地表的复杂程度、地面的起伏程度等。
在气象学中,通过计算云雾的分形维数可以揭示云雾的形态特征,如云雾的密度、结构等。
在流体力学中,通过计算流体流动的分形维数可以揭示流体流动的特征,如流体流动的无规则性、混沌性等。
在工程技术中,分形维数被广泛应用于图像处理、信号处理、网络优化等领域。
例如,在图像处理中,通过计算图像的分形维数可以对图像进行压缩、去噪等操作,提高图像的质量和处理效率。
在信号处理中,通过计算信号的分形维数可以对信号进行分析和识别,提取出信号的特征信息。
在网络优化中,通过计算网络的分形维数可以对网络结构进行优化,提高网络的传输和通信效率。
在生物医学中,分形维数被广泛应用于医学图像处理、疾病诊断、脑信号分析等领域。
例如,在医学图像处理中,通过计算病理图像的分形维数可以对病灶的形态特征进行量化,帮助医生进行病症的诊断和分析。
在疾病诊断中,通过计算生物信号(如心电图、脑电图等)的分形维数可以对疾病的发展和变化进行监测和分析,提供辅助诊断的依据。
MATLAB作为一种专门用于科学计算和数据可视化的工具,可以很方便地实现分形维数的计算和分析。
MATLAB提供了丰富的数学工具箱和图形工具箱,可以实现各种分形维数的算法和可视化方法。
通过调用相关函数和工具,用户可以快速、准确地计算和分析分形维数,并可视化展示分形结构的特征。
总之,分形维数在科学研究和工程应用中具有重要的作用。
通过应用分形维数,可以深入了解和揭示物体的几何特征和复杂性,为科学研究、工程技术和生物医学提供有效的分析工具和方法。
MATLAB分形曲线与面积计算-1
12/13
三、电子科技大学清水河校区占地面积计算
参考电子科技大学 清水河校区1:200 地图(或参考网上 地图). 采样学校周 边坐标数据计算学 校占地面积. 同类问题: 杭州西湖面积、 洞庭湖面积、 ········ ········ ·······
13/13
Lk
xdy [(1 t ) xk txk 1 ]( yk 1 yk )dt 01 1 ( yk 1 yk )( xk xk 1 ) 2
Lk
ydx xdy xk yk 1 xk 1 yk
(k 1,2,, n)
多边形面积计算公式:
1 n xk An 2 k 1 x k 1
L的特征值1 1, 2
1 4 对应的特征向量为1 = , 2 = 1 -3 3 3 3 1 2 7 112 3 n 1 3 3 n 1 X ( n ) L( n 1) X (1) 1 1 2 2 7 112 3 3 7 所以 lim X ( n ) , An lim area( Pn ) lim n n 7 3 n 7 X (1)
5/13
Sn 4n 1 Kn的周长: Ln n 4 n L0 3 Kn的维数: Dn ln4 / ln3 1.2618
Kn的边数:
Dn lnN / ln 1
相邻两次的边数比和边长比
参考资料: 分形论——奇异 性探索,作者:林鸿溢
课外作业:完成面积计算的 数学实验报告(电子文档)
格林公式导出的面积计算方法
Q P ( x y )dxdy L Pdx Qdy D
取 P y
Q x
几个分形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次迭代产生的结点数为kn,第1+k次迭代产生的结点数为1+kn,则kn和1+kn中间的递推关系为341-=+kknn。
三、实验程序及注释: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:4d=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; %迭代后新的结点数目endplot(p(:,1),p(:,2)) %绘出每相邻两个点的连线axis([0 10 0 10])四、实验数据记录:由第三部分的程序,可得到如下的Koch分形曲线:图2五、注记:1.参照实验方法,可绘制如下生成元的Koch 分形曲线:图3此时,旋转矩阵为:⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎪⎭⎫ ⎝⎛-=0110)2cos()2sin()2sin()2cos(ππππA 程序和曲线如下:p=[0 0;10 0]; %P 为初始两个点的坐标,第一列为x 坐标,第二列为y 坐标 n=2; %n 为结点数 A=[0 -1;1 0]; %旋转矩阵 for k=1:4d=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+d*A'; %用向量方法计算迭代后处于5k+3位置上的点的坐标 p(4:5:m,:)=q+2*d+d*A'; %用向量方法计算迭代后处于5k+4位置上的点的坐标 p(5:5:m,:)=q+2*d; %用向量方法计算迭代后处于5k 位置上的点的坐标 n=m; %迭代后新的结点数目 endplot(p(:,1),p(:,2)) %绘出每相邻两个点的连线 axis([0 10 0 10])图4由于中间三分之一部分是一个正方形时,有很多连接的部分。
分形插值算法和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]。
分形与迭代资料讲解
分形与迭代实验三迭代与分形一、实验目的与要求1.了解分形几何的基本情况;2.了解通过迭代方式产生分形图的方法;3.了解matlab软件中简单的程序结构;4.掌握matlab软件中plot, fill等函数的基本用法;二、问题描述1.对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称为Koch雪花。
编制程序绘制出它的图形,并计算Koch雪花的面积,以及它的分形维数。
2.自己构造生成元(要有创意),按照图形迭代的方式产生分形图,用计算机编制程序绘制出它的图形,并计算其分形维数。
三、问题分析1.第一题要求我们利用一个等边三角形然后在三角形的基础上利用理论课上的Koch曲线的画法,产生一朵Koch雪花,由于Koch雪花的产生相当于将三条等长的直线分别产生的Koch曲线按照等边三角形的坐标形式组合起来然后在同一个坐标系中表示出来,这就形成了Koch雪花图案。
四、背景知识介绍1.什么是迭代迭代法是常用的一种数学方法,就是将一种规则反复作用在某个对象上,它可以产生非常复杂的行为。
我们这里介绍图形迭代和函数迭代两种方式。
(1)图形迭代。
给定初始图形F0,以及一个替换规则R,将R反复作用在初始图形F0上,产生一个图形序列:R(F0)=F1,R(F1)=F2,R(F2)=F3,…(2)函数迭代。
给定初始值x0,以及一个函数f(x),将f(x)反复作用在初始值x0上,产生一个数列:f(x)=x1,f(x1)=x2,f(x2)=x3,…2.p lot函数介绍plot是最重要最基本的二维曲线绘图指令,基本功能是画折线和曲线。
基本调用格式如下:(1) plot(Y,LineSpec)。
其中,Y一般是数组;而LineSpec是用来指定线型、色彩等的选项字符串,可省略。
本功能是以数组Y作为竖坐标,以数组元素的下标为横坐标,画出一条折线。
当数组元素很多时,就出现连续曲线的效果。
(2) plot(X,Y)。
其中,X 、Y 一般是相同长度的数组。
几个分形的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:4d=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; %迭代后新的结点数目endplot(p(:,1),p(:,2)) %绘出每相邻两个点的连线axis([0 10 0 10])四、实验数据记录:由第三部分的程序,可得到如下的Koch分形曲线:图2五、注记:1.参照实验方法,可绘制如下生成元的Koch 分形曲线:图3此时,旋转矩阵为:⎪⎪⎭⎫ ⎝⎛-=⎪⎪⎪⎪⎭⎫ ⎝⎛-=0110)2cos()2sin()2sin()2cos(ππππA 程序和曲线如下:p=[0 0;10 0]; %P 为初始两个点的坐标,第一列为x 坐标,第二列为y 坐标n=2; %n 为结点数A=[0 -1;1 0]; %旋转矩阵for k=1:4d=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+d*A'; %用向量方法计算迭代后处于5k+3位置上的点的坐标 p(4:5:m,:)=q+2*d+d*A'; %用向量方法计算迭代后处于5k+4位置上的点的坐标 p(5:5:m,:)=q+2*d; %用向量方法计算迭代后处于5k 位置上的点的坐标n=m; %迭代后新的结点数目endplot(p(:,1),p(:,2)) %绘出每相邻两个点的连线axis([0 10 0 10])图4由于中间三分之一部分是一个正方形时,有很多连接的部分。
分形曲线及matlable算法
n=m;
end
plot(p(:,1),p(:,2))
flash 制作原代码 1---------------------------------------_root.createEmptyMovieClip("fenxing",1); a=new Array(1025); b=new Array(1025); c=new Array(1025); d=new Array(1025); e=new Array(1025); f=new Array(1025); a[1]=100; b[1]=100; a[2]=500; b[2]=100; n=2; for(k=1;k<=4;k++) {with(_root.fenxing) {for(w=1;w<n;w++) {c[w]=(a[w+1]-a[w])/3; d[w]=(b[w+1]-b[w])/3; }//微分 d m=5*n-4; for(z=1;z<=n;z++) { e[z]=a[z]; f[z]=b[z]; }//差距 q h=2; for(g=6;g<=m;g=g+5) {if(h<=n) a[g]=e[h]; b[g]=f[h]; h++ } z=1; w=1; for(g=2;g<=m;g=g+5) {a[g]=e[z]+c[w]; b[g]=f[z]+d[w]; z++;
实现。 MATLAB 程序如下 clear p=[0 0;10 0];n=1; A=[cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3)]; for k=1:5 j=0; for i=1:n q1=p(i,:); q2=p(i+1,:);
MATLAB中的分形数学方法介绍
MATLAB中的分形数学方法介绍分形是一种迷人且富有挑战性的数学领域,在现代科学和工程中有着广泛的应用。
MATLAB作为一种出色的计算工具,提供了丰富的分形数学方法和相关函数,使得研究者能够更方便地探索和实现分形数学的各种应用。
本文将介绍一些常见的MATLAB中的分形数学方法以及它们的应用。
首先,让我们从最经典的分形图像开始,即“分形树”。
分形树是一种具有自相似性质的图形,它的分支结构在各个层次上都呈现出类似的形状。
在MATLAB中,我们可以使用递归算法来生成分形树。
首先定义一个起始点,然后在每一个分支处分别生成更小的分支,直到达到指定的层数。
接下来,我们介绍分形图像中的另一个重要概念:分形维度。
分形维度是描述分形图像复杂性的一个重要指标,它可以帮助我们量化和比较不同分形图像的特征。
在MATLAB中,我们可以使用盒计数法来计算一个图像的分形维度。
该方法通过在图像上放置越来越小的盒子,并统计图像中相应位置包含的点的个数,从而得到一个关于盒子尺寸的函数。
通过对这个函数进行线性拟合,我们可以得到图像的分形维度。
除了生成图像和计算分形维度外,MATLAB还提供了其他一些强大的分形数学方法。
例如,通过MATLAB的迭代函数系统,我们可以构建一些令人惊叹的分形图案。
迭代函数系统是指由一系列函数和相应的权重所构成的系统,通过重复应用这些函数,并根据权重分配概率来生成图像。
通过调整函数和权重的选择,我们可以创造出各种各样的分形图案。
此外,MATLAB还提供了许多用于分形分析和建模的工具。
例如,我们可以使用MATLAB的分形相关函数来计算一个时间序列数据的分形维度,从而分析其复杂性和变化规律。
此外,MATLAB还提供了一些用于生成分形地形模型的函数,这对于地理信息系统和仿真研究非常有用。
综上所述,MATLAB为分形数学提供了丰富的工具和函数,使得研究者能够更方便地探索和实现分形数学的各种应用。
无论是生成分形图像、计算分形维度还是进行分形分析和建模,MATLAB都能够提供强大的支持。
曲线分段 matlab
曲线分段 matlab曲线分段是一种将曲线分割成若干个部分,并在每个部分上进行不同处理的技术。
Matlab提供了许多方法来实现曲线分段,包括函数拟合、插值和参数化等。
本文将介绍这些方法和如何在Matlab中使用它们。
1.函数拟合函数拟合是一种将一组数据拟合到一个给定的函数形式中的技术。
在Matlab中,可以使用polyfit和fit函数来完成函数拟合。
polyfit函数可以拟合多项式方程。
例如,要将以下数据集拟合为一个二次方程:x = [0 1 2 3 4 5];y = [1 2.1 4.2 7.2 11.2 17.5];可以使用以下代码:p = polyfit(x, y, 2);x_fit = linspace(0, 5);y_fit = polyval(p, x_fit);plot(x, y, 'o', x_fit, y_fit, '-');2.插值插值是一种通过已知数据点来估计未知数据点的技术。
在Matlab中,可以使用interp1函数来完成插值。
interp1函数可以线性插值一维数据,例如:x = [0 1 2; 3 4 5; 6 7 8];y = [0 1 2; 3 4 5; 6 7 8];z = [0 1 2; 1 2 1; 0 1 0];[x_interp, y_interp] = meshgrid(linspace(0, 2), linspace(0, 2));z_interp = interp2(x, y, z, x_interp, y_interp);surf(x, y, z);hold on;surf(x_interp, y_interp, z_interp);3.参数化例如,要绘制一个心形曲线:x = @(t) 16*sin(t).^3;y = @(t) 13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t);t = linspace(0, 2*pi);plot(x(t), y(t));总结Matlab提供了许多方法来实现曲线分段,包括函数拟合、插值和参数化等。
matlabl值分割-迭代法 -回复
matlabl值分割-迭代法-回复MATLAB的值分割迭代法值分割是图像处理领域的一个重要任务,它通过将图像划分为具有不同灰度级的区域来实现。
MATLAB是一个强大的数值计算和图像处理软件,它提供了各种图像处理函数和工具箱,可以方便地进行图像值分割。
而值分割迭代法是一种常用的图像分割方法之一,本文将逐步介绍MATLAB中的值分割迭代法的步骤和原理。
首先,值分割迭代法是一种基于像素灰度级的图像分割方法。
它的基本思想是通过不断迭代,将像素灰度级按照某种准则分类为不同的区域,直到满足停止准则为止。
值分割迭代法的算法流程如下:1. 初始化:选择初始阈值T,将图像像素灰度值小于T的像素分为一个区域A,将像素灰度值大于等于T的像素分为另一个区域B。
2. 计算平均灰度:分别计算区域A和区域B中像素的平均灰度值avg_A 和avg_B。
3. 更新阈值:将新的阈值T更新为avg_A和avg_B的平均值:T = (avg_A + avg_B) / 2。
4. 重新分类:将图像像素灰度值小于T的像素重新分为区域A,将像素灰度值大于等于T的像素重新分为区域B。
5. 重复步骤2至步骤4,直到满足停止准则。
常用的停止准则可以是迭代次数达到一定值,或者阈值的变化率小于某个阈值。
以上就是值分割迭代法的基本流程。
下面我们将逐步使用MATLAB实现这个算法。
首先,我们需要准备一幅图像作为输入。
在MATLAB中,可以使用imread 函数读取图像文件,并使用imshow函数显示图像。
例如,我们读取一张名为"lena.jpg"的图像,代码如下:image = imread('lena.jpg');imshow(image);接下来,我们可以编写一个函数来实现值分割迭代法。
函数的输入是图像和停止准则,输出是分割后的图像和最终阈值。
下面是一个简单的例子:matlabfunction [segmented_image, final_threshold] =value_segmentation(image, stop_criteria)初始化阈值threshold = 128;while true将图像分为两个区域region_A = image(image < threshold);region_B = image(image >= threshold);计算平均灰度值avg_A = mean(region_A);avg_B = mean(region_B);更新阈值new_threshold = (avg_A + avg_B) / 2;判断是否满足停止准则if abs(new_threshold - threshold) < stop_criteria break;end重新分类threshold = new_threshold;end根据最终阈值重新分割图像segmented_image = zeros(size(image));segmented_image(image < threshold) = 0;segmented_image(image >= threshold) = 255;返回分割后的图像和最终阈值final_threshold = threshold;end在上述代码中,我们使用了MATLAB的循环语句来实现迭代的过程。
matlab分形
以及相应的一组概率p1 ,, pn ,( p1 pn 1, pi 0). 对于任意选取的初始值 z0 ( x0 , y0 ),以概率 pi 选取变 换 wi 做迭代
zk 1 ( xk 1 , yk 1 ) wi ( xk , yk ), k 0,1, 2,
{zk }0收敛的极限图形称为一个IFS吸引子, 则点列 k
F lim Fk
k
即是所谓的Koch曲线。
Koch曲线的修改规则R是将每一条直线段F0用 一条折线F1替代,称F1为生成元。
生成Koch曲线的Matlab程序
clear clf new=[1 0]; kmax=3; for k=1:kmax old=new; n=length(old)-1; for m=0:n-1;
由生成元产生的分形是一种规则分形,是数学 家按一定规则构造出来的,相当于物理中的模型。 这类图形的构造方式都有一个共同的特点:
最终图形 F 都是按照一定的规则 R 通过 对初始图形 F0 不断修改得到的。
最具代表性的图形有Koch雪花曲线、分形树
●
Koch雪花曲线:
给定一条直线段F0,将该直线三等分,并将中 间的一段用以该线段为边的等边三角形的另外两边 代替,得到图形F1,然后,再对图形F1中的每一小 段都按上述方式修改,以至无穷。则最后得到的极 限曲线
尽管分形几何的提出只有三十年左右的时间, 但它已经在自然科学的各个领域如数学、物理、 化学、地理、天文、材料、生命乃至经济、社会、 艺术等极其广泛的领域有着广泛的应用。
这里以迭代的观点介绍分形的基本特性以及生 成分形图形的基本方法。
生成元产生的分形图形
由IFS(迭代函数系)所生成的分形图形
matlabe函数曲线
matlabe函数曲线Matlab是一种强大的数值计算和数据可视化软件,它提供了许多函数和工具来绘制各种类型的曲线。
在本文中,我们将介绍如何使用Matlab函数来绘制不同类型的曲线。
首先,让我们看一下如何使用Matlab函数来创建简单的曲线。
我们可以使用plot函数来绘制一维曲线。
例如,我们可以使用以下代码来创建一个正弦曲线:```matlabx = 0:0.1:2*pi;y = sin(x);plot(x, y);```在这个例子中,我们使用0到2π的范围内的值作为x轴的数据点,然后计算每个点的正弦值作为y轴的数据点。
最后,我们使用plot 函数将这些点连接成曲线。
除了一维曲线,Matlab还可以创建二维曲线。
我们可以使用mesh和surf函数来创建三维曲线。
例如,我们可以使用以下代码来创建一个二维高斯分布曲线:```matlabx = -3:0.1:3;y = -3:0.1:3;[X, Y] = meshgrid(x, y);Z = exp(-(X.^2 + Y.^2)/2) / (2*pi);surf(X, Y, Z);```在这个例子中,我们使用meshgrid函数创建了一个网格,并在每个网格点上计算高斯分布的值。
然后,我们使用surf函数将这些值可视化为一个三维曲面。
此外,Matlab还提供了许多其他函数来创建不同类型的曲线,如极坐标曲线、等高线图、散点图等。
你可以根据自己的需求选择适合的函数来绘制你想要的曲线。
总之,Matlab提供了丰富的函数和工具来创建各种类型的曲线。
你可以使用plot函数绘制一维曲线,使用mesh和surf函数绘制二维曲线,还可以使用其他函数绘制不同类型的曲线。
通过灵活运用这些函数,你可以轻松地创建出精美的曲线图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的两条边代替,再次形成 新的图形如此迭代,形成 koch 分形曲线。
算法分析:由一条线段产生四条线段,故算法中由 n 条线段迭代一次后将产生 4n 条线段。算法针对每 一条线段逐步进行,将计算新的三个点。第一个点位于线段三分之一处,第三个点位于线段三分之二处, 第二个点以第一个点为轴心,将第一和第三个点形成的向量正向旋转 60 0 而得。正向旋转由正交矩阵
for(j=1;j<l;j++) {if(a[j]==a[j+1]&&b[j]==b[j+1]) { g=j; for(;j<l;j++) {a[j]=a[j+1]; b[j]=b[j+1]; } j=g+1;
}
} y=l; for(f=1;f<=y;f++) {c[f]=a[f]; d[f]=b[f]; } } n=4*n; }
2------------------------------------i=2; k=1; _root.fenxing.onEnterFrame=function() { with(_root.fenxing) {for(;i<=k*10&&i<=m;) { lineStyle(1,0x000000,100); moveTo(a[i-1],400-b[i-1]); lineTo(a[i],400-b[i]); trace(i); trace(a[i]); trace(b[i]); i++; }k++; if(i==m+1){
n=m;
end
plot(p(:,1),p(:,2))
flash 制作原代码 1---------------------------------------_root.createEmptyMovieClip("fenxing",1); a=new Array(1025); b=new Array(1025); c=new Array(1025); d=new Array(1025); e=new Array(1025); f=new Array(1025); a[1]=100; b[1]=100; a[2]=500; b[2]=100; n=2; for(k=1;k<=4;k++) {with(_root.fenxing) {for(w=1;w<n;w++) {c[w]=(a[w+1]-a[w])/3; d[w]=(b[w+1]-b[w])/3; }//微分 d m=5*n-4; for(z=1;z<=n;z++) { e[z]=a[z]; f[z]=b[z]; }//差距 q h=2; for(g=6;g<=m;g=g+5) {if(h<=n) a[g]=e[h]; b[g]=f[h]; h++ } z=1; w=1; for(g=2;g<=m;g=g+5) {a[g]=e[z]+c[w]; b[g]=f[z]+d[w]; z++;
2 矩形分形曲线 2 在线演示 顶部
p=[0 0;10 0];n=2; A=[0 -1;1 0]; for k=1:4 d=diff(p/3);m=5*n-4; q=p(1:n-1,:); p(6:5:m,:)=p(2:n,:); p(2:5:m,:)=q+d; p(3:5:m,:)=q+d+.7*d*A'; p(4:5:m,:)=q+2*d+.7*d*A'; p(5:5:m,:)=q+2*d; n=m;
} z=1; w=1; for(g=3;g<=m;g=g+5) {a[g]=e[z]+c[w]-0.7*d[w]; b[g]= f[z]+d[w]+0.7*c[w]; z++; w++; } z=1; w=1; for(g=4;g<=m;g=g+5) {a[g]=e[z]+2*c[w]-0.7*d[w]; b[g]= f[z]+2*d[w]+0.7*c[w]; z++; w++; } z=1; w=1; for(g=5;g<=m;g=g+5) {a[g]=e[z]+2*c[w]; b[g]=f[z]+2*d[w]; z++; w++; } } n=m; }
{ for(k=1;k<=n;k++) {x1=c[k]; y1=d[k]; x2=c[k+1]; y2=d[k+1]; j=j+1; a[j]=x1; b[j]=y1; j=j+1; a[j]=x1+(x2-x1)/3; b[j]=y1+(y2-y1)/3; j=j+1; a[j]=x1+(x2-x1)/3+((x2-x1)/3)*Math.cos(Math.PI/3)-((y2-y1)/3)*Math.sin(Math.PI/3); b[j]=y1+(y2-y1)/3+((x2-x1)/3)*Math.sin(Math.PI/3)+((y2-y1)/3)*Math.cos(Math.PI/3); j=j+1; a[j]=x1+2*(x2-x1)/3; b[j]=y1+2*(y2-y1)/3; j=j+1; a[j]=x2; b[j]=y2; l=j; }
end
plot(p(:,1),p(:,2))
flash 制作原代码 1-----------------------------_root.createEmptyMovieClip("fenxing",1); a=new Array(1025); b=new Array(1025); c=new Array(1025); d=new Array(1025); e=new Array(1025); f=new Array(1025); a[1]=100; b[1]=100; a[2]=500; b[2]=100; n=2; for(k=1;k<=4;k++) {with(_root.fenxing) {for(w=1;w<n;w++) {c[w]=(a[w+1]-a[w])/3; d[w]=(b[w+1]-b[w])/3; }//微分 d m=5*n-4; for(z=1;z<=n;z++) { e[z]=a[z]; f[z]=b[z]; }//差距 q h=2; for(g=6;g<=m;g=g+5) {if(h<=n) a[g]=e[h]; b[g]=f[h]; h++ } z=1; w=1; for(g=2;g<=m;g=g+5) {a[g]=e[z]+c[w]; b[g]=f[z]+d[w]; z++; w++;
j=j+1;r(j,:)=q1+d;
j=j+1;r(j,:)=q1+d+d*A';
j=j+1;r(j,:)=q1+2*d;
end
n=4*n;clear p
p=[r;q2];
end
plot(p(:,1),p(:,2)) koch 分形图片 flash 制作源代码 第一祯 die=4; bi=1 color=0x000000 alpha=100 stop(); 第二祯 _root.createEmptyMovieClip("koch",1); a=new Array(1025); b=new Array(1025); c=new Array(1025); d=new Array(1025); l=0; n=1; a[1]=100; b[1]=200; a[2]=500; b[2]=200; c[1]=100; d[1]=200; c[2]=500; d[2]=200; for(m=1;m<=die;m++) {j=0; with(_root.koch)
w++; } z=1; w=1; for(g=3;g<=m;g=g+5) {a[g]=e[z]+c[w]-1*d[w]; b[g]= f[z]+d[w]+1*c[w]; z++; w++; } z=1; w=1; for(g=4;g<=m;g=g+5) {a[g]=e[z]+2*c[w]-1*d[w]; b[g]= f[z]+2*d[w]+1*c[w]; z++; w++; } z=1; w=1; for(g=5;g<=m;g=g+5) {a[g]=e[z]+2*c[w]; b[g]=f[z]+2*d[w]; z++; w++; } } n=m; } 2----------------------------------------i=2; k=1; _root.fenxing.onEnterFrame=function() { with(_root.fenxing) {for(;i<=k*10&&i<=m;) {lineStyle(1,0x000000,100); moveTo(a[i-1],400-b[i-1]); lineTo(a[i],400-b[i]); trace(i); trace(a[i]); trace(b[i]); i++; } k++;