1import numpy as np
2import time
3
4tic = time.time()
5
6x1 = -2.0
7x2 =  1.0
8y1 = -1.0
9y2 =  1.0
10
11w = 150
12h = 100
13maxit = 127
14
15def mandelbrot(x, y, maxit):
16    c = x + y*1j
17    z = 0 + 0j
18    it = 0
19    while abs(z) < 2 and it < maxit:
20        z = z**2 + c
21        it += 1
22    return it
23
24dx = (x2 - x1) / w
25dy = (y2 - y1) / h
26
27C = np.empty([h, w], dtype='i')
28for k in np.arange(h):
29    y = y1 + k * dy
30    for j in np.arange(w):
31        x = x1 + j * dx
32        C[k, j] = mandelbrot(x, y, maxit)
33
34M = C
35
36toc = time.time()
37print('wall clock time: %8.2f seconds' % (toc-tic))
38
39# eye candy (requires matplotlib)
40if 1:
41    try:
42        from matplotlib import pyplot as plt
43        plt.imshow(M, aspect='equal')
44        try:
45            plt.nipy_spectral()
46        except AttributeError:
47            plt.spectral()
48        plt.pause(2)
49    except:
50        pass
51