几个分形的matlab实现

合集下载

matlab多重分形谱算法

matlab多重分形谱算法

matlab多重分形谱算法
MATLAB中的多重分形谱算法是一种用于分析信号和图像的技术,它可以帮助我们理解复杂系统的结构和特征。

多重分形谱算法通常
用于测量信号或图像的分形维度,以及它们的分形特征。

下面我将
从多个角度来解释MATLAB中的多重分形谱算法。

首先,多重分形谱算法可以用于计算信号或图像的分形维度。

分形维度是一种描述信号或图像自相似性的度量,它可以帮助我们
理解信号或图像的复杂性和规律性。

在MATLAB中,我们可以使用多
重分形谱算法来计算信号或图像的分形维度,从而得到关于其结构
和特征的信息。

其次,多重分形谱算法可以用于分析信号或图像的分形特征。

通过计算信号或图像的分形谱,我们可以得到关于其分形特征的信息,比如分形维度的分布情况、分形特征的变化趋势等。

这些信息
可以帮助我们理解信号或图像的复杂性和规律性,从而为进一步的
分析和处理提供参考。

此外,MATLAB中的多重分形谱算法还可以用于处理不同类型的
信号和图像。

无论是一维的时间序列信号还是二维的图像数据,多
重分形谱算法都可以进行分形维度和分形特征的计算,从而帮助我们理解不同类型数据的结构和特征。

总的来说,MATLAB中的多重分形谱算法是一种强大的工具,可以帮助我们分析信号和图像的分形特征,从而揭示其复杂性和规律性。

通过对多重分形谱算法的理解和应用,我们可以更好地理解和处理各种类型的数据。

matlab分形

matlab分形

由生成元产生的分形是一种规则分形,是数学 家按一定规则构造出来的,相当于物理中的模型。 这类图形的构造方式都有一个共同的特点:
最终图形 F 都是按照一定的规则 R 通过 对初始图形 F0 不断修改得到的。
最具代表性的图形有Koch雪花曲线、分形树

Koch雪花曲线:
给定一条直线段F0,将该直线三等分,并将中 间的一段用以该线段为边的等边三角形的另外两边 代替,得到图形F1,然后,再对图形F1中的每一小 段都按上述方式修改,以至无穷。则最后得到的极 限曲线
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;
end u=[uuu]; plot(u(:,1),u(:,2)) axis([-.5,.5,0,1])
end
二、由I FS (迭代函数系)所生成的分形图形 I FS迭代是生成分形图形的另一种方法。IFS迭 代的一般算法是:给定平面上的一组仿射变换 wi
x ai wi y ci bi x ei , i 1, 2, n di y fi
比如,当 z0 1时,我们可以依次迭代出:
z1 = f(1.0) = 1.0^2 - 0.75 = 0.25 z2 = f(0.25) = 0.25^2 - 0.75 = -0.6875 z3 = f(-0.6875) = (-0.6875)^2 - 0.75 = -0.2773 z4 = f(-0.2773) = (-0.2773)^2 - 0.75 = -0.6731 z5 = f(-0.6731) = (-0.6731)^2 - 0.75 = -0.2970 ……

matlab的fraclab计算

matlab的fraclab计算

一、概述计算作为现代科学技术的重要工具,在各个领域有着广泛的应用。

而MATLAB作为一种基于矩阵运算的高级技术计算语言,在科学计算和工程领域也有着非常广泛的应用。

而fraclab作为MATLAB中扩展性工具箱的一种,是专门用于分形计算的工具,它能够方便地进行分形维度、分形谱等方面的计算。

二、fraclab简介1. fraclab是什么?fraclab是一个MATLAB的扩展工具箱,它专门用于分形计算。

其中包含了一系列用于计算分形维度、分形谱以及进行分形图形生成等功能的函数。

2. fraclab的优势- 方便快捷:fraclab提供了一系列方便快捷的函数,能够帮助用户轻松地进行分形计算。

- 多功能性:fraclab不仅仅可以用于计算分形维度和分形谱,还能够用于生成分形图形,对于分形研究来说颇具实用性。

三、fraclab的基本运用1. 分形维度的计算- 使用fraclab中的函数,可以很容易地计算出给定分形结构的分形维度,这对于分形结构的研究和分析有着很大的帮助。

- 可以使用boxcount函数来计算分形维度,只需输入相应的分形结构,即可得到相应的分形维度。

2. 分形谱的计算- fraclab还能够帮助用户计算分形谱,这对于分形图像的分析和特征提取有着很大的作用。

- 通过使用fraclab中的相应函数,可以得到给定分形图像的分形谱,并从中获取有用的信息。

3. 分形图形的生成- fraclab不仅可以用于分形特征的计算,还能够帮助用户生成分形图形,这对于分形算法的验证和实验有着很大的帮助。

- 用户只需要使用fraclab中的相应函数,就可以方便地生成各种形式的分形图形,验证自己的分形算法。

四、fraclab在科学研究中的应用1. 地质学领域- 在地震波形分析中,常常会涉及到地质中的分形结构,而fraclab提供了一系列的功能,方便地进行地震波形的分形维度和分形谱的计算,以及分形图形的生成,对于地震波形的分析具有很大的帮助。

几个分形的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实验报告:分形迭代

Matlab实验报告:分形迭代

数学实验报告:分形迭代练习11.实验目的:绘制分形图案并分析其特点。

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 equalelsea=(2*p+q)/3; % 求出从p 到q 的1/3 处端点ab=(p+2*q)/3; % 求出从p 到q 的2/3 处端点bc=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');% 填充三角形abchold on;axis equalelsea1=(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为迭代次数plot([real(p);real(q)],[imag(p);imag(q)]);hold on;axis equalif(n>0)a=(2*p+q)/3;b=(p+2*q)/3;c=a+(b-a)*exp(pi*i/6);%d=b+(q-b)*exp(-pi*i/6);%grasstree(a,c,n-1);grasstree(b,d,n-1);endend5.主要输出:指令:koch(0,1,5); soerpinski(0,1,exp(pi*i/3),5); grasstree(0,i,5);Koch曲线Sierpinski三角形树木花草6.实验结论:以上图案的局部形状与原本图形用某种自相似性,这正是分形的特点。

分形插值算法和MATLAB实验分析

分形插值算法和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]。

几个分形的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混沌,分形

matlab混沌,分形

matlab混沌,分形对于函数f(x)=λsin(πx),λ∈(0,1],使⽤matlab计算随着λ逐渐增⼤,迭代x=f(x)的值,代码如下:function y=diedai(f,a,x1)N=32;y=zeros(N,1);for i=1:1e4x2=f(a,x1);x1=x2;y(mod(i,N)+1)=x2;endend%f=@(a,x)a*x*(1-x);f=@(a,x)a*sin(pi*x);%x0=0.1;hold on;for x0=-1:0.05:1for a=0:0.01:1y=diedai(f,a,x0);for count=1:32plot(a,y(count),'k.');hold on;endendend得到的图像如下:其中横轴为λ,纵轴为x可以看到随着λ的逐渐增⼤,出现了倍周期分叉的情况。

由图中可以看出第⼀个分叉值⼤约在0.3附近,第⼆个在0.73到0.75之间,第三个在0.8到0.85之间,混沌⼤约出现在0.86附近。

接下来编写代码计算分叉值,代码如下:format long;x0=0.1;for a=0.3182:0.0000001:0.3183y=diedai(f,a,x0);if max(y)>0.001disp(a);break;endend得到第⼀个分叉值⼤约为0.3182298format long;x0=0.1;for a=0.7199:0.000001:0.72y=diedai(f,a,x0);if max(y)-min(y)>0.001disp(a);break;endend得到第⼆个分叉值⼤约为0.719911format long;x0=0.1;for a=0.8332:0.000001:0.8333y=diedai(f,a,x0);if abs(y(32)-y(30))>0.001disp(a);break;endend得到第三个分叉值⼤约为0.833267利⽤Feigenbaum常数估计第三个分叉值,得到0.805939分形图周常青画mandelbrot分形图,主要使⽤了三个函数:iter=mandelbrot1(x0,y0,maxIter),⽤来计算迭代后是否收敛,⽅程z=z2+z0。

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

几个分形得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分形曲线:
图2
五、注记:
1、参照实验方法,可绘制如下生成元得Koch 分形曲线:
图3
此时,旋转矩阵为:
程序与曲线如下:
p=[00;10 0]; %P为初始两个点得坐标,第一列为x坐标,第二列为y坐标
n=2; %n为结点数
A=[0—1;10]; %旋转矩阵
for k=1:4
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+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; %迭代后新得结点数目
end
plot(p(:,1),p(:,2)) %绘出每相邻两个点得连线
axis([0 10 0 10])
ﻫ图4
由于中间
三分之一
部分就是
一个正方
形时,有很
多连接得
部分。

所以
我们将高
度压缩到
原来得0。

7
倍,即中间
部分为一
个长与宽
之比为1:0。

7得矩形时,得到程序与曲线如下:
p=[00;10 0]; %P为初始两个点得坐标,第一列为x坐标,第二列为y坐标
n=2; %n为结点数
A=[0 -1;1 0]; %旋转矩阵
fork=1:4
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+0、7*d*A'; %用向量方法计算迭代后处于5k+3位置上得点得坐标
p(4:5:m,:)=q+2*d+0、7*d*A'; %用向量方法计算迭代后处于5k+4位置上得点得坐标
p(5:5:m,:)=q+2*d; %用向量方法计算迭代后处于5k位置上得点得坐标
n=m; %迭代后新得结点数目
end
plot(p(:,1),p(:,2)) %绘出每相邻两个点得连线
axis([0 10 0 10])
图5
2.参照实验方法,我们由四边形得四个初始点出发,对于四边形得每条边,生成元如下:
图6
可得到火焰般得图形、
程序与曲线如下:
p=[010;10 0;0 -10;—100;010];
%P为四边形四个顶点得坐标,其中第五个点与第一个点重合,以便于绘图
%第一列为x坐标,第二列为y坐标
n=5; %n为结点数
A=[cos(—pi/3) -sin(—pi/3);sin(—pi/3) cos(-pi/3)]; %旋转矩阵,顺时针旋转60度
for k=1:5
d=diff(p)/3;m=4*n-3; %迭代公式
q=p(1:n—1,:);
p(5:4:m,:)=p(2:n,:);
p(2:4:m,:)=q+d;
p(3:4:m,:)=q+2*d+d*A';
p(4:4:m,:)=q+2*d;
n=m;
end
plot(p(:,1),p(:,2))
axis([-10 10 -10 10])
图7
3.参照实验方法,由下列得生成元,绘制Koch分形曲线:
图8
分析:为了绘图方便,我们将结点数处理一下,把第一次迭代产生得六个点瞧成十个点,即图中有五条线段(1—2,3-4,5—6,7—8,9—10),我们将每条线段得每个端点瞧成新得两个结点,这样我们就可以很方便地用plot绘图了。

程序与曲线如下:
p=[0 0;10 10]; %P为初始两个点得坐标,第一列为x坐标,第二列为y坐标
n=2; %n为结点数
A=[cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3)];
B=[cos(-pi/3) -sin(-pi/3);sin(—pi/3) cos(-pi/3)];
%旋转矩阵A对应于第一次逆时针旋转60度,旋转矩阵B对应于第二次顺时针旋转60度
for k=1:4
d=diff(p)/3;
d1=d(1:2:n,:);%取每条线段对应得向量
m=5*n; %迭代公式
q1=p(1:2:n-1,:);
p(10:10:m,:)=p(2:2:n,:);
p(1:10:m,:)=p(1:2:n,:); %迭代后处于10k与10k+1位置上得点得坐标为迭代前得相应坐标
p(2:10:m,:)=q1+d1;
%用向量方法计算迭代后处于10k+2,10k+3,10k+5位置上得点得坐标,都相同
p(3:10:m,:)=p(2:10:m,:);
p(4:10:m,:)=q1+d1+d1*A'; %用向量方法计算迭代后处于10k+4位置上得点得坐标
p(5:10:m,:)=p(2:10:m,:);
p(6:10:m,:)=q1+2*d1;
%用向量方法计算迭代后处于10k+6,10k+7,10k+9位置上得点得坐标,都相同p(7:10:m,:)=p(6:10:m,:);
p(8:10:m,:)=q1+2*d1+d1*B';
p(9:10:m,:)=p(6:10:m,:);
n=m; %迭代后新得结点数目
end
plot(p(:,1),p(:,2)) %绘出每相邻两个点得连线
axis([0 10 0 10])
六,结束语
通过图形显示,更好得理解得分形同时也也加深对分形概念得进一步掌握参考文献:〈<matlab从精通到入门>>。

相关文档
最新文档