def mandelbrot(zmin, zmax, hpx, niter, func=lambda z, c: z**2 + c):
vpx=round(hpx * abs((zmax-zmin).imag / (zmax-zmin).real))
z = zeros((vpx, hpx), dtype=complex128)
x = linspace(zmin.real, zmax.real, hpx)
y = linspace(zmin.imag, zmax.imag, vpx)
cRe, cIm = meshgrid(x, y)
c = cRe + cIm * 1j
M = zeros((vpx,hpx))
for _ in range(niter):
mask = find(abs(z)<2)
M.flat[mask] = M.flat[mask] + 1
z.flat[mask] = func(z.flat[mask], c.flat[mask])
#z.flat[mask] = z.flat[mask]**2 + c.flat[mask]
M.flat[mask] = 0
return M
Mc = mandelbrot(-2.1+1.05j,0.7-1.05j,640,64)
imshow(Mc)
<matplotlib.image.AxesImage at 0xafa142cc>
Mn3 = mandelbrot(-1.2+1.6j,1.2-1.6j,240,64, func=lambda z, c: z**3 + c)
imshow(Mn3)
<matplotlib.image.AxesImage at 0xafa3e20c>
Mn4 = mandelbrot(-1.2+1.6j, 1.2-1.6j, 320, 64, func=lambda z, c: z**4 + c)
imshow(Mn4)
<matplotlib.image.AxesImage at 0xaf79014c>
Mn2_5 = mandelbrot(-1.6 + 1.2j, 1.6 - 1.2j, 320, 64, func=lambda z,c: z**2.5 + c)
imshow(Mn2_5)
<matplotlib.image.AxesImage at 0xaf63044c>
Mn2_01i = mandelbrot(-2.2 + 1.2j, 1.0 - 1.2j, 320, 64, func=lambda z, c: z**(2 + 0.1j) + c)
imshow(Mn2_01i)
<matplotlib.image.AxesImage at 0xaf5b11cc>
(3 + 2j)**(1 + 3j)
(-0.16893784584344818-0.5942900283096888j)
Mp=mandelbrot(-2 + 1.05j, 0.8 - 1.05j, 320, 64, func=lambda z, c: z**2 + z + c)
imshow(Mp)
<matplotlib.image.AxesImage at 0xaf5db22c>