Insieme di Mandelbrot…

L’insieme di Mandelbrot o frattale di Mandelbrot è l’insieme dei numeri complessi \(c \in \displaystyle{C}\) per i quali la successione definita da:

{\displaystyle {\begin{cases}z_{0}=0\\z_{n+1}=z_{n}^{2}+c\end{cases}}}

è limitata.

Nonostante la semplicità della definizione, l’insieme ha una forma complessa il cui contorno è un frattale.

Qui, la funzione per la costruzione della matrice da diagrammare:

def plotter(n, vallim, itlim, xi,xs,yi,ys):
    image = np.full((n,n),0)
    Xp = np.linspace(xi,xs,n)
    Yp = np.linspace(yi,ys,n)
    for x in range(n):
        for y in range(n):
            image[y][x] = divergetest(complex(Xp[x],Yp[y]),vallim, itlim)
    return image

Di seguito, invece, la routine per verificare la convergenza della successione:

def divergetest(c, vallim, itlim):
    z = c
    i = 0
    while i < itlim and np.sqrt((z.real)**2 + (z.imag)**2)< vallim:
        z = z**2 + c
        i = i + 1
    return i

Il programma principale:

n = 5000
xi,xs,yi,ys = -3,1,-2,2
vallim = 5
itlim = 30
mandelbrot = plotter(n,vallim,itlim,xi,xs,yi,ys)

plt.figure(1,figsize=[8,8])
plt.title('Mandelbrot Set')
plt.imshow(mandelbrot,extent=[-3,1,-2,2])
plt.xlabel('Real')
plt.ylabel('Complex')
plt.show()

Di seguito, l’output del programma: