分形图之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:iter z=z.^2+C; %对空间上每点都进行迭代 N(abs(z)>4)=k; %逃逸半径为4,诺某点逃逸,记录逃逸时间k,未逃逸则时间为0 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.Ju lia 集 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:iter 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 >>Ju lia(i,512,200,0,0,1) >> Ju lia(i,512,200,0,0,2000) >>Ju lia(0.1+0.7i,512,200,0,0,1) >>Ju lia(-0.8-0.21i,512,200,0,0,1)