Frattale di Newton

Rappresentazione di un frattale ottenuto con il metodo di Newton.

Il frattale di Newton è un insieme di frontiera nel piano complesso che è caratterizzato dal metodo di Newton applicato a un polinomio o funzione trascendentale. È l'insieme di Julia della funzione meromorfa

che è data dal metodo di Newton . Essa, quando non ci sono cicli attrattori (di ordine superiore a 1), divide il piano complesso in regioni , ognuna delle quali è associata alla radice del polinomio, .

In questo modo il frattale di Newton è simile all'insieme di Mandelbrot, e come altri frattali mostra un aspetto complesso che deriva da una semplice descrizione. È rilevante per l'analisi numerica perché mostra che (al di fuori della regione di convergenza quadratica) il metodo di Newton può essere molto sensibile alla scelta del punto di partenza.[1] Molti punti del piano complesso sono associati a una delle radici del polinomio nel modo seguente: il punto è usato come valore iniziale e i punti successivi sono dati dal metodo di Newton:

,

che produce una successione di punti . Se la successione converge alla radice , allora era un elemento della regione . Tuttavia, per ogni polinomio di grado almeno 2 ci sono punti per i quali l'iterazione di Newton non converge a nessuna radice: gli esempi sono i confini dei bacini di attrazione delle varie radici. Esistono anche polinomi per cui gli insiemi aperti di punti di partenza non convergono in nessuna radice: un semplice esempio è , dove alcuni punti sono attratti dal ciclo 0, 1, 0, 1 ... anziché da una radice.[1]

Un insieme aperto per il quale le iterazioni convergono verso una data radice o un ciclo di radici (che non è un punto fisso), rappresenta un insieme di Fatou per l'iterazione. L'insieme complementare all'unione di tutti questi è l'insieme di Julia. Gli insieme di Fatou infatti hanno un confine comune, ossia l'insieme di Julia. Pertanto ogni punto dell'insieme di Julia è un punto di accumulazione per ciascuno degli insiemi di Fatou. È proprio questa proprietà che causa la struttura frattale dell'insieme di Julia (quando il grado del polinomio è maggiore di 2).

Rappresentazione[modifica | modifica wikitesto]

Per tracciare immagini interessanti, si può prima scegliere un numero specificato di punti del piano complesso e calcolare i coefficienti del polinomio

Quindi per un reticolo rettangolare , , di punti in , si individua l'indice della radice corrispondente e si usa per riempire la griglia raster × Assegnando ad ogni punto un colore . In più o in alternativa i colori possono essere assegnati in funzione della distanza , definita come primo valore cosicché per un preassegnato piccolo a piacere.[2]

Per implementare il 'frattale di Newton' è richiesta una funzione di partenza e la sua derivata:

Le radici della funzione sono , e .

le funzioni sopra definite possono essere tradotte in pseudocodice come segue:

//z^3-1  float2 Function (float2 z) { 	return cpow(z, 3) - float2(1, 0); //cpow è una funzione esponenziale per numeri complessi }  //3*z^2 float2 Derivative (float2 z) { 	return 3 * cmul(z, z); //cmul è una funzione che gestisce la moltiplicazione di numeri complessi } 

Si tratta poi di implementare il metodo di Newton usando le funzioni definite.

Per ogni pixel (x, y) sul target, fai: { 	zx = scaled x coordinate of pixel (scaled to lie in the Mandelbrot X scale (-2.5, 1))     zy = scaled y coordinate of pixel (scaled to lie in the Mandelbrot Y scale (-1, 1))      float2 z = float2(zx, zy); //Z è dettato in origine sulle coordinate del pixel  	float2 roots[3] = //Radici (soluzioni) del polinomio 	{ 		float2(1, 0),  		float2(-.5, sqrt(3)/2),  		float2(-.5, -sqrt(3)/2) 	}; 	 	color colors[3] =  //assegna un colore per ogni radice 	{ 	    red, 	    green, 	    blue     }          int iteration = 0;  	while (iteration < maxIteration) 	{ 		z -= cdiv(Function(z), Derivative(z)); //cdiv è una funzione che gestisce la divisione di numeri complessi          float tolerance = 0.000001;          		for (int i = 0; i < roots.Length; i++) 		{ 		    float difference = z - roots[i]; 		     			//Se la ritorsione corrente è abbastanza vicina a una radice colora il pixel. 			if (abs(difference.x) < tolerance && abs(difference.y) < tolerance) 			{ 				return colors[i]; //Invia il colore corrispondente alla radice 			} 		} 		iteration++;     }          return black; //Assegna il nero se non si ha una radice } 

Esempi[modifica | modifica wikitesto]

Generalizzazione[modifica | modifica wikitesto]

Una generalizzazione dell'iterazione di Newton è: dove è un numero complesso.[3] La scelta speciale corrisponde al frattale di Newton. I punti fissi di questa mappa sono stabili quando giace all'interno del disco di raggio 1 centrato su  1. Quando è all'esterno di questo disco, i punti fissi sono localmente instabili, tuttavia la mappa mostra ancora una struttura frattale nel senso dell'insieme di Julia. Se è un polinomio di grado , allora la sequenza è un insieme limitato a condizione che si trovi all'interno di un disco di raggio centrato su . Più in generale, il frattale di Newton è un caso speciale di frattale di Julia.

Note[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

  Portale Matematica: accedi alle voci di Wikipedia che trattano di Matematica