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

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

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

基于逃逸时间算法

1. Mandelbrot集 Mandelbrot(res,iter,xc,yc,xoom)function%Mandelbrot是放大倍

(x0=xc-2/xoom;x1=xc+2/xoom;

数xoomxc,yc)是图像中心,% res是目标分辨率,iter是循环次数,

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初始化N,最

终根据%N=zeros(res,res);

间的程序运行时间和toc%tic 显示tic k=1:iter for对空间上每点

都进行迭代 z=z.^2+C; %0未逃逸则时间为4,诺某点逃逸,记录逃逸时间k,

N(abs(z)>4)=k; %逃逸半径为 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集 Julia(c,res,iter,xc,yc,xoom)function集%Julia是放大倍数xoomiter是目标分辨率,是循环次数,(xc,yc)是图像中心,%c为参数, res 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);

k=1:iter for z=z.^2+C; N(abs(z)>2)=k; C(abs(z)>2)=0;

z(abs(z)>2)=0;end;colormap jet image(x,y,N);;axis square end

>>Julia(i,512,200,0,0,1) >> Julia(i,512,200,0,0,2000)

2000上面两张图很好的反映分形的自相似性,右图是左图关于原点放大倍的情况。

>>Julia(0.1+0.7i,512,200,0,0,1)

>>Julia(-0.8-0.21i,512,200,0,0,1)

3.newton分形参考:

附注:*的矩阵运算和循环运算比较4.matlab test(N)function A=rand(N);tic B=A>0.5; toc tic

i=1:N for j=1:N for A(i,j)>0.5if B(i,j)=1; B(i,j)=0; else end end end toc

运行程序:

>> test(100)

Elapsed time is 0.000108 seconds.

Elapsed time is 0.000476 seconds.

>> test(1000)

Elapsed time is 0.029430 seconds.

Elapsed time is 0.053551 seconds.

>> test(10000)

Elapsed time is 0.565822 seconds.

Elapsed time is 24.152359 seconds.

从中可知在matlab中完成同样的操作,矩阵效率要远远优于循环效率。本文的两个程序均包含

循环,当数据量大时,运行时间会很长。

相关文档
最新文档