Matlab实验报告分形迭代_第1页
Matlab实验报告分形迭代_第2页
Matlab实验报告分形迭代_第3页
Matlab实验报告分形迭代_第4页
Matlab实验报告分形迭代_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数学实验报告:分形迭代练习1实验目的:绘制分形图案并分析其特点。实验内容:绘制Koch曲线、Sierpinski三角形和树木花草图形,观察这些图形的局部和原 来分形图形的关系。实验思路:利用函数反复调用自己来模拟分形构造时的迭代过程,当迭代指标n为0时运 行作图操作,否则继续迭代。实验步骤: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至U q的1/3处端点ab=

2、(p+2*q)/3; %求出从p至U 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线段做下一回合endSierpinski 三角形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);% 填充

3、三角形 abc hold 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树木花草function grasstree(p,q,n) % p、q分别为树木花草始末复坐标,n为迭代次数plot(real(p);real(q),imag(p);imag(q);hold on;axis equalif(n0)a=(2*p+q)/3;b=(p+2*q)/3;c=a+(b-a)*exp(pi*i/6);%

4、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); TOC o 1-5 h z iI(iii0.9 -F /O.B - /-0.7 -1/-0 G - /树木花草Q三A 0.4 -0.3 -|-0 2 -0 1 -Q IIIIIIII-QG -Q4-0.2002040 G实验结论:以上图案的局部形状与原本图形用某种自相似性,这正是分形的特点。问题分析:一般迭代次数大于7

5、,程序运行时间就很长,因此迭代次数建议设定为5。练习2实验目的:研究Koah雪花的特征。实验内容:对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称 为Koch雪花。编制程序绘制出它的图形,并计算Koch雪花的面积,以及它的分形维数。方法思路:采用Koch曲线的迭代元来绘制。实验步骤:function xuehua(n)koch(0,0.5+(1/2)*sqrt(3)*i,n);koch(0.5+(1/2)*sqrt(3)*i,1,n);koch(1,0,n);endxuehua(1);xuehua(3)主要输出:不同n对应不同的图像如下:n=1实验结论:每一次迭加,所产生

6、的新三角形的边长变为上一次的1/3,数量为上一次的41 倍。而设原三角形边长为r,Koch雪花的面积S =+ m x 3x4-1 x4432ii=1由此可以推出雪花曲线的边长是无限的,而面积是有限的。另外,从图像可以看出,随迭代 次数n趋于无穷,图形每一点都没有切线。问题分析:由于没有找到matlab中相应的计算图形面积与周长的函数,所以这两项计算是 由人工完成的。练习3实验目的:研究分形维数反映出来的分形的特性。实验内容:利用分形维数公式d=log(n)/log(c)计算雪花曲线,Sierpinski三角形,Minkowski 香肠的维数并与其图像显现出的性质进行比较。方法思路:只需画出Mi

7、nkowski香肠的图像,其他分形利用之前图像与维数进行比较即可。实验步骤:Minkowski 香肠:function Minkowski(p,q,n)if (n=0)plot(real(p);real(q),imag(p);imag(q);hold on;axis equalelsem=(q-p)/4;m1=real(m);m2=imag(m);a=p+m; b=a+(-m2+m1*i);c=b+m;d0=c+(m2-m1*i);d=c+2*(m2-m1*i);e=d+m;f=e+(-m2+m1*i);Minkowski(p, a, n-1);Minkowski(a, b, n-1);Min

8、kowski(b, c, n-1);Minkowski(c, d0, n-1);Minkowski(d0, d, n-1);Minkowski(d, e, n-1);Minkowski(e, f, n-1);Minkowski(f, q, n-1);实验输出:由分形维数公式log(n)/log(c)可计算的个图形的维数。雪花曲线:log4/log3=1.26Minkowski 香肠:log n/logc=1.5Sierpinski 三角形:log3/log2=1.58Minkowski 香肠:0.3 TOC o 1-5 h z 0一2 -0.1 -尹-0-102 事-0.3 -IIiiIiII

9、I00.10.20.30.40L60.60.70.80.91实验结论:可见雪花曲线,Sierpinski三角形,Minkowski香肠的维数都在1与2之间,它 们的图像的面积都有极限,而图形边长无限长。维数越接近1,则图形有更多的曲线的性质, 维数越接近2,则图形有更多的平面的性质,由此可推算Hilbert曲线的维数很接近2。问题分析:迭代次数越大,则图像的说明效果越好,但程序的运行时间也越长,建议迭代 次数不要超过7。练习4实验目的:探索Weierstrass函数图像的性质实验内容:已知Weierstrass函数如下:W G)=考 XG-2)k sin (Xkx),人 1,1 s 2,k=1

10、对不同的s值,画出函数图像,观察图像的不规则性与s的关系,并猜测Weierstrass 函数图像的维数与s的关系方法思路:由于Weierstrass函数表达式中为无穷项求和,Matlab中使用无穷项求和花费太多时间,所以考虑取足够大的项数进行运算,通过变换s的值,画出不同的图像 进行比较,达到原来的实验目的。实验步骤:syms f xf=0; y=10; s=1.4;%s=1.6;%s=1.8;for i=1:100f=f+yA(s-2)*i)*sin(yA(i)*x);endezplot(f,0,2)5.实验输出:S的取值对应Weierstrass函数的图像6.实验结论:Weierstras

11、s函数图像随着s值的增加变得更加不规则猜测随着s取不同的值,Weierstrass函数图像的维数随着s值得增加而变大7.问题分析:考虑到不同项数的做和可能会影响图像的准确性,但在实验了 100项、300 项和500项的做和后,发现图像改变并不是很大,而当项数改为1000后, 发现又要等很长的时间,且得到的结论相同,所以取100项的求和进行实 验。练习6实验目的:绘制Mandelbrot集和Julia集。实验内容:绘制Mandelbrot集并局部放大,与其不同的部位(内点、外电、边界点及芽抱 内点)对应的Julia集形状进行对比。实验思路:按照Mandelbrot集和Julia集的构造方法,先编

12、写好相应函数,观察Mandelbrot 集的局部细节,出几个典型的内点、外电、边界点及芽抱内点,然后画出对应的Julia集并 比较。实验步骤:Mandelbrot 集function mandelbrot(z,r,k,d)if nargin 4k = 200; %迭代次数d = 500; %分辨率z=-0.75; %中心r=1.25; %显示半径endx = linspace(real(z)-r,real(z)+r,d);y = linspace(imag(z)-r,imag(z)+r,d);A = ones(d,1)*x+i*(ones(d,1)*y);C=A;B = zeros(d,d);

13、for s = 1:kB = B+(abs(A)=2);A = A.*A+C;end;imagesc(flipud(B);colormap(jet);hold off;axis equal;axis off;Julia 集function Julia(c,k,v)if nargin 3c = -0.5; k = 100; v = 500;endr = max(abs(c),2);d = linspace(-r,r,v);A = ones(v,1)*d+i*(ones(v,1)*d);B = zeros(v,v);for s = 1:kB = B+(abs(A)=r);A = A.*A+ones

14、(v,v).*c;end;imagesc(B);colormap(jet);hold off;axis equal;axis off;5.主要输出:以下为不同z值的Mandelbrot集的局部放大图形以及对应的Julia集图形Mandelbrot集全局图对应Julia集Mandelbrot 集局部z= -1+0.5iz为外点。z= -1.448z为芽抱的 内点z= -1+0.3iz为边界点。6.实验结论:当z为Mandelbrot集的内点时,则对应的Julia集有内点,且图形面积很大;当z为Mandelbrot集的外点时,则对应的Julia集为空集;当z为Mandelbrot集的边界点时,则对

15、应的Julia集无内点但连通,且两图形状相似。 当z为Mandelbrot集的芽抱的内点时,则对应的Julia集有内点,且芽抱的面积越大, 对应Julia集的面积越大。另外,Mandelbrot集的芽抱与整个Mandelbrot集有明显的相似性。7.问题分析:由于分形的结构是无限精细的,要确定Mandelbrot集的边界点并不容易,事实上 实验过程中只选取了一个与边界点很接近的点;另外,根据本算法所画的Julia 集是不可能为空集的,但可以根据Julia集的收敛速度判断其实际的Julia集是否 为空集。练习9实验目的:绘制IFS迭代的吸引子图,并观察图形的特点。实验内容:给定的仿射变换为:w1

16、(Z) = sZ+1,w2(Z) = sZ -1相应概率p1=p2=0.5,其中s,Z为复数,现取s=0.5+0.5i,绘制相应IFS迭代 吸引子图,再通过变换s的值,观察图形变化。方法思路:可以构造一个0,1上随机取值的n列矩阵来完成这个概率事件,当第i个元的值小于0.5时,取w1的迭代方式,反之,取w2的迭代方式,再将最终的所有迭 代。序列汇总为一个n行矩阵,再在图上进行描点。实验步骤:n=1000000;p=rand(n,1);w=zeros(1,n);s=0.5+0.5*i;%s=1+0.5*i;%s=0.5+0.4i;%s=0.4+0.5i;Z=1+i;w(1)=Z;for m=1:n-1if p(m)0.5w(m+1)=s*w(m)+1;elsew(m+1)=s*w(m)-1;endendplot(w(1:n),.,MarkerSize,1)5.实验输出:s的取值IFS迭代的吸引子的图形s=0.5+0.5i2iii-2iiIiiIiiI*巧 -21 51-D.500 511.522.5s=1+0.5i7.9Q53* 4 ,*:3* *4昏4 3336 -L l l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论