Insiemi di Mandelbrot e di Julia

Adesso che sappiamo come iterare, possiamo disegnare gli insiemi di Mandelbrot e di Julia. Ambedue si basano sulla medesima formula:

zn+1 = zn2+c

ma viene applicata in modo differente nei due casi:

  1. Per l'insieme di Mandelbrot, si prende z0 = 0; poi si fa variare c nel piano complesso, e per ogni punto si vede se |zn| tende ad infinito oppure no. Se |zn| non tende ad infinito, allora il punto appartiene all'insieme di Mandelbrot.
  2. Per l'insieme di Julia, si sceglie un c fisso (chiamato seme dell'insieme), e si fa variare invece z0 nel piano complesso, e si ripete la storia: se |zn| tende ad infinito, allora il punto non appartiene all'insieme di Julia. Se non converge ad infinito, invece, vi appartiene. C'è da dire che per essere pignoli Julia definì il suo insieme non come quello contenente tutti i punti per cui non va ad infinito, ma come i punti di frontiera fra questi due insiemi.

Dato che, ovviamente, non faremo questi calcoli a mano, dobbiamo far capire al calcolatore quando una iterazione diverge oppure no. Per far questo abbiamo bisogno di due valori numerici che "spieghino" questo concetto al computer. Il valore di bailout e il massimo numero di iterazioni. Vediamo come si usano.

Il valore di bailout rappresenta l'infinito nel calcolatore. Quando, durante l'iterazione, |zn| raggiunge o supera tale valore, allora il punto è andato ad infinito, e non apparterrà all'insieme (sia esso di Mandelbrot o di Julia). Un valore di bailout troppo basso può fornire un'immagine sbagliata, apparendo "tagliata", perchè punti interni sono invece considerati esterni.

Il massimo numero d'iterazioi rappresenta invece l'infinito dell'iterazione; se, dopo che n raggiunge il limite massimo d'iterazioni, |zn| è ancora inferiore al valore di bailout, allora il punto non diverge, ed appartiene all'insieme. Un valore troppo basso di tale valore può creare delle immagini approssimate, con pochi dettagli, perchè i punti vicino alla frontiera divergono più lentamente, rispetto a quelli lontani, e potrebbero necessitare di più iterazioni per superare la soglia di bailout. Da ciò si capisce che, per guardare gli insiemi ad ingrandimenti sempre maggiori, abbiamo bisogno di un numero sempre più elevato di iterazioni, per aumentare il dettaglio dell'immagine.

A lato si possono vedere due esempi di errati valori di bailout e max. num. d'iterazioni: nel primo caso, si vede come le immagini appaiono tagliate, con delle parti che scompaiono; nel secondo, invece, si vede come il confine appaia più grezzo ed approssimato rispetto alla figura con maggior dettaglio. E importante cercare sempre il compromesso giusto fra valori e dettaglio voluto, perchè dobbiamo ricordare che usiamo un calcolatore, e che potrebbe perdere troppo tempo per creare un'immagine molto dettagliata: d'altro canto, difficilmente noteremo approssimazioni dell'ordine del pixel, e quindi un'ulteriore incremento di questi valori aumenterebbe il tempo di calcolo per creare dettagli invisibili al nostro occhio.

Per l'insieme di Mandelbrot standard, bastano per usa suffuciente precisione un valore di bailout pari a 4, ed un tetto massimo d'iterazioni dell'ordine del centinatio: lo stesso vale per la quasi totalità dell'insieme di Julia.

Mandelbrot
Insieme di Mandelbrot (sopra) e un insieme di Julia (sotto).
Julia
Mandelbrot con basso valore di bailout
Insiemi di Mandelbrot e Julia con un basso valore di bailout (0.75)
Julia con baso valore di bailout
Mandelbrot con poche iterazioni
Insiemi di Mandelbrot e Julia con un basso numero d'iterazioni (10).
Julia con poche iterazioni
Vai indietro alle iterazioni complesse Vai avanti alla colorazione