Python教程之绘制Mandelbrot集合
Python教程之绘制Mandelbrot集合
一. 分形与混沌 自然界的很多事物,如树木、云彩、山脉、雪花、海岸线等,都呈现出传统几何学所不能描述的形状,这些形状都有如下的特性:- 有着十分精细的不规则结构
- 整体与局部相似
- 判断每次调用函数得到的结果是否在半径R之内,即复数的模小于R
- 记录下模大于R时的迭代次数
- 迭代最多进行N次
- 不同的迭代次数的点使用不同的颜色绘制
import numpy as np
import pylab as pl
import time
from matplotlib import cm
def iter_point(c):
z=c
for i in range(1,100):
if abs(z)>3: break
z=z*z+c
return i
def draw_mandelbrot(cx,cy,d):
x0,x1,y0,y1=cx-d,cx+d,cy-d,cy+d
y,x=np.ogrid[y0:y1:200j,x0:x1:200j]
c=x+y*1j
start=time.clock()
mandelbrot=np.frompyfunc(iter_point,1,1)(c).astype(np.float)
print ("time="),time.clock()-start
pl.imshow(mandelbrot,cmap=cm.Blues_r,extent=[x0,x1,y0,y1])
pl.gca().set_axis_off()
x,y=0.27322626,0.595153338
pl.subplot(231)
draw_mandelbrot(-0.6,0,1.5)
for i in range(2,7):
pl.subplot(230+i)
draw_mandelbrot(x,y,0.2**(i-1))
pl.subplots_adjust(0.02,0,0.88,1,0.01,0)
pl.show()
运行效果如下图:
https://www.linuxboy.net/topicnews.aspx?tid=17
linuxboy的RSS地址:https://www.linuxboy.net/rssFeed.aspx
本文永久更新链接地址:https://www.linuxboy.net/Linux/2019-05/158412.htm
评论暂时关闭