基于MATLAB实现分形图形的绘制
- 格式:pdf
- 大小:7.17 MB
- 文档页数:24
数学实验报告:分形迭代练习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混沌,分形对于函数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。
第8卷第4期2008年8月湖南工业职业技术学院学报JO URNAL O F HUNAN IND USTRY POLY TECHN I CVol 18No 14Aug 12008Matlab 软件在分形几何上的应用周后云(湖南商务职业技术学院,湖南长沙 410205)[摘 要] 以Koch 曲线和塞尔平斯基三角形为例,介绍了Ma tlab 软件在分形几何方面,对不规则图形进行直观描绘的方法。
[关键词] Matlab;分形几何;Koch 曲线;塞尔平斯基三角形。
[中图分类号] T N11 [文章标识码] A [文章编号] 1671-5004(2008)04-0148-02I n tu iti on isti c Underst and i n g Fract a l Geo m etry w ith M a tl ab Soft wareZ HOU Hou -yun(Hunan Vocati onal College of Commerce,Changsha 410205,Hunan )[Abstract] The paper tries t o describe Koch curve and Sier p inski triangle intuiti onisticly withMatlab s oft w are 1It gives reader si m p le fractal ge 2ometry knowledge 1[Key words] Matlab;fractal geometry;Koch curve;Sier p inski triangle 1 [收稿日期] 2008-06-15 [作者简介] 周后云(1981-),男,湖南邵阳人,湖南商务职业技术学院党委秘书,助教。
线性几何中所描述的圆、三角形、多边形、球等规则图形,其实在生活中,并不多见。
像河流、地貌、树叶、白云、雪花、布朗运动的分子轨迹等,多是不规则图形。
几个分形的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的平台,简单,易于用户操作分形图软件,它应该符合经典分形图系统,具有一般分形图的功能,满足一定的图像处理、信息管理等功能。
允许用户在不理解的复杂科学理论的同时通过简单的计算机操作,改变一些参数和进行颜色调整来生成分形图形,并且进行相关图形的存储以及其他功能。
关键词:分形理论;分形艺术;分形算法;Julia集;MandelbrotAbstractFractal is developed in recent two hundred and thirty years before a new science,fractal theory can be further divided into rules and irregular fractal,irregular fractal mainly describe simple geometric objects and the properties of nonlinear system is not smooth and irregular geometrical form,as an effective tool can be used to describe a lot of scientific phenomena,it has been widely used in many fields such as computer science,and there were very good in their respective areas the development of the theory,and on the practice of artistic also have very good development,greatly widened people's horizons,deepen people's understanding of science and art.The graduation design,the purpose is to create a platform based on MATLAB,simple,easy to user operation fractal graph software,it should conform to the classic fractal graph system,has the function of general fractal figure meet certain image processing,information management,etc. Allows the user to do not understand the complex science theory at the same time,through a simple computer operation,color changing some parameters and adjust the afterlife composition form graphics,and related graphics storage,and other functions.Key words: Fractal theory; Fractal art; Fractal algorithm; Julia set; Mandelbrot目录1. 绪论 (4)1.1 研究背景 (4)1.2 研究目的和意义 (4)1.3 国内外相关课题的研究现状 (5)1.4 相关技术介绍 (6)1.4.1 MATLAB平台的选取 (6)1.4.2 关于MATLAB的GUI (6)1.5 论文组织结构 (7)2. 系统可行性分析 (8)2.1 经济可行性 (8)2.2 技术可行性 (8)2.3 社会实践可行性 (8)3. 系统需求分析 (10)3.1 系统功能结构分析 (10)3.2 分形算法原理介绍 (10)4. 系统设计 (12)4.1 系统运行界面设计 (12)4.2 软件运行环境及功能的具体设计 (12)5.系统实现 (15)5.1 分形图绘制算法的实现 (15)5.2 系统功能模块的实现 (16)5.2.1界面功能介绍 (16)5.2.2 算法功能实现 (17)5.3 系统交互模式的实现 (21)6.系统测试 (23)6.1 系统测试的目的和说明 (23)6.2 系统测试结果及不足 (27)7.总结 (28)参考文献: (29)致谢.............................................................................................. 错误!未定义书签。
目录前言 (1)第一章 MATLAB介绍 (2)1.1 MATLAB简介 (2)1.2 MATLAB语言 (2)1.2.1 创建向量、向量元素的访问: (2)1.2.2 创建矩阵、矩阵元素的访问 (3)1.2.3 流程控制 (4)1.3 MATLAB语言的传统优点 (5)第二章分形入门知识 (6)2.1 分形理论 (6)2.2 分形几何观及其应用 (7)第三章 Koch雪花的绘制 (7)3.1 von Koch曲线简介 (8)3.2 Koch雪花算法设计 (8)第四章 Frac_tree绘制 (11)第五章 Mandelbort集的绘制 (12)5.1 Mandelbort集简介 (13)5.2 Mandelbort集算法设计 (13)第六章 Julia集的绘制 (17)6.1 Julia集简介 (18)6.2 Julia集的算法设计 (18)6.3 Julia集与Mandelbort集 (20)第七章花篮簇的绘制 (22)总结 (23)主要参考文献: (23)前言分形是描述不规则几何形态的有力工具。
不言而喻,不规则的几何形态在我们的周围处处可见,诸如花草、山脉、烟云、火焰等举目皆是。
至于微观世界的复杂物质结构,宏观世界浩瀚天体的演变,更展现出了层出不穷的不规则几何形态,它们往往都是分形几何的研究对象。
大自然向人类展示其美丽多变形态的同时,也提出了难以回答的询问:怎样描述复杂的自然表象?恰恰是分形几何学,它把自然形态看作是具有无限嵌套层次的精细结构,并且在不同的尺度下保持某种相似的属性,于是在变换与迭代中得到描述自然形态的有效方法。
分形的研究离不开计算机。
如果不是计算机图形图像处理功能的增强,不能想象怎样才能直观地看到Julia集和Mandelbort集的精细结构,更不能想象可以产生具有无限细结的自然景物和高度真实感的三维动画。
反过来,分形理论与方法又极大地丰富了计算机图形学内容,甚至分形的思想会在计算机科学的发展上产生一定的影响。
如何进行图像分割的Matlab实现引言:图像分割是计算机视觉领域的一项基础技术,它将图像中的像素点分为不同的区域,使得具有相似特征的像素被聚类到一起。
在图像分析、目标检测、图像处理等任务中,图像分割起着至关重要的作用。
本文将介绍如何使用Matlab实现图像分割算法,包括传统的阈值分割、基于区域的分割以及基于深度学习的分割等。
一、传统的阈值分割1.1 简介阈值分割是最简单和常用的图像分割方法之一,它根据像素的灰度值与阈值的比较结果将像素分为两类:前景和背景。
在Matlab中,可以使用函数`im2bw`实现二值化分割任务。
1.2 实现步骤(1)加载图像:使用`imread`函数读取待分割的图像,并将其转换为灰度图像。
(2)确定阈值:根据图像的灰度直方图,可以通过分析波峰和波谷来确定一个适合的阈值。
(3)二值化分割:使用`im2bw`函数将灰度图像二值化,得到分割后的图像。
(4)结果显示:使用`imshow`函数将原图像和分割结果进行显示。
二、基于区域的分割2.1 简介基于区域的分割方法将图像划分为具有一定连续性和相似性质的区域,其基本思想是将图像中相似的像素组成区域,并对区域进行合并或分裂,以达到分割的目的。
2.2 实现步骤(1)加载图像:同样使用`imread`函数读取待分割的图像。
(2)图像预处理:可选的预处理步骤包括噪声去除、图像增强等,以提供更好的分割效果。
(3)区域生长:选择一个适当的种子点作为起始点,在附近的像素中根据一定的准则来判断是否属于同一区域,并逐步生长扩展区域,直至满足停止准则。
(4)结果显示:使用`imshow`函数将原图像和分割结果进行显示。
三、基于深度学习的分割3.1 简介基于深度学习的分割方法是近年来发展起来的一种高效且准确的分割技术,主要基于深度卷积神经网络(CNN)和全卷积网络(FCN)。
深度学习模型通过学习大量标注的图像,能够学习到图像的高级特征,从而实现更准确的图像分割。
几个分形的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画分段函数图像的话,总要分段去画⾮常⿇烦,还需要hold on,现在教你⼀种简单化分段函数的⽅法,让你⼀下⼦知道这个⽅法的魅⼒!数学软件Matlab R2019b for Linux 64位中⽂最新正式版(附安装⽅法+镜像)类型:编程其它⼤⼩:126MB语⾔:简体中⽂时间:2019-10-01查看详情Matlab R2018b Win64位中⽂特别版(附许可⽂件+安装密钥+激活⽅法)类型:编程其它⼤⼩:12.0GB语⾔:简体中⽂时间:2018-09-19查看详情步骤如下:第⼀步⽐如我们要画这样⼀个分段函数图像“-4<x<4;y=3*x;4<=x<12;y=20;12<=x<18;y=-5x+2;”,如下图所⽰:第⼆步我们先⽤matlab表达出来,y=(3*x).*(x>=-4&x<4) + 20*(x>=4&x<12)+(-5*x+2).*(x>12&x<=18),如下图所⽰:第三步输⼊x=-4:0.1:18,这个x的范围也是分段函数x的条件范围,如下图所⽰:第四步m脚本输⼊“x=-4:0.1:18y=(3*x).*(x>=-4&x<4) + 20*(x>=4&x<12)+(-5*x+2).*(x>12&x<=18)plot(x,y)”代码,如下图所⽰:第五步运⾏脚本,可以看到已经画出了分段函数图像,主要是先⽤matlab表⽰出分段函数,然后使⽤plot画图就可以,如下图所⽰:相关阅读:。
3 几个分形的matlab 实现摘要:给出几个分形的实例,并用 matlab 编程实现方便更好的理解分形,欣赏其带来的数学美感关键字:Koch 曲线 实验 图像一、问题描述:从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的两边代替,形成ft 丘形图形如下图1在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的两条边代替,再次形成新的图形如此迭代,形成Koch 分形曲线。
二、算法分析:考虑由直线段(2个点)产生第一个图形(5个点)的过程。
图1中,设 P 1 和 P 5 分别为原始直线段的两个端点,现需要在直线段的中间依次插入三个点 P 2 , P 3 , P 4 。
显然 P 2 位于线段三分之一处, P 4 位于线段三分之二处, P 3 点的位置可看成是由 P 4 点以 P 2 点为轴心,逆时针旋转60 而得。
旋转由正交矩阵 ⎛⎫ cos( ) A = - sin( ) ⎪ 3 ⎪⎪实现。
sin( ) ⎝ cos( ) ⎪ ⎭ 算法根据初始数据( P 1 和 P 5 点的坐标),产生图1中5个结点的坐标。
结点的坐标数组形成一个5 ⨯ 2 矩阵,矩阵的第一行为 P 1 的坐标,第二行为 P 2 的坐标……,第五行为 P 5 的 坐标。
矩阵的第一列元素分别为5个结点的 x 坐标,第二列元素分别为5个结点的 y 坐标。
进一步考虑Koch 曲线形成过程中结点数目的变化规律。
设第 k 次迭代产生的结点数为 n k ,第 k + 1次迭代产生的结点数为 n k +1 ,则 n k 和 n k +1 中间的递推关系为 n k +1 = 4n k - 3 。
3 3三、实验程序及注释: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 ⎛⎫ cos(2) -sin( ) ⎪2⎛0-1⎫A = ⎪= ⎪1 0程序和曲线如下:sin( )⎝ 2cos( ) ⎪⎝⎭2 ⎭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环境下分形图形的生成
马洪强
【期刊名称】《《上海视觉》》
【年(卷),期】2017(000)002
【摘要】分形理论作为新兴的数学分支,具有十分广泛的应用前景。
用计算机绘制的分形图形,其应用价值具有现实意义。
本文以Koch曲线为例,阐述递归算法的分形图形生成的基本步骤,列举了经典分形实例,通过举例来说明MATLAB环境下向量化程序分形实现,并设计出向量式随机分形程序,使得分形图形富有变化。
【总页数】7页(P17-23)
【作者】马洪强
【作者单位】[1]上海视觉艺术学院
【正文语种】中文
【中图分类】TP311.1
【相关文献】
1.Matlab下仿真的可视化设计和可执行程序的生成研究 [J], 余斌;唐建国
2.DOS环境下Foxpro菜单生成器浅析 [J], 徐盛岩
3.MATLAB环境下数据驱动故障检测工具箱设计 [J], 郭锦平;边若鹏
4.抗血管生成药物Endostantin作用下实体肿瘤血管生成的数值模拟:考虑基质力学环境及血管生成抑素的影响 [J], 蔡彦;吴洁;古娜;张洪一;曹金凤;许世雄;龙泉;柯林斯
5.新媒介环境下的“网络赋名”与“官方命名”——场域视域下的舆论生成分析[J], 高宪春
因版权原因,仅展示原文概要,查看原文内容请购买。