from scipy import *
from pylab import *
import time

def Mand(ext, max_steps):
    data = zeros( (Nx,Ny) )
    for i in range(Nx):
        for j in range(Ny):
            x = ext[0] + (ext[1]-ext[0])*i/(Nx-1.)
            y = ext[2] + (ext[3]-ext[2])*j/(Ny-1.)
            z0 = x+y*1j
            z = 0j
            for itr in range(max_steps):
                if abs(z)>2.:
                    data[j,i]=itr
                    break
                z = z*z + z0
            if abs(z)<2:
                data[j,i] = max_steps
    return data

if __name__ == '__main__':

    Nx = 1000
    Ny = 1000
    max_steps = 50

    ext = [-2,1,-1,1]
    t0 = time.clock()
    data = Mand(ext, max_steps)
    print 'time=', time.clock()-t0
    
    imshow(data, extent=ext)
    show()
    
