Frattale di Newton

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
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