Tocca per forza di cose di parlare di Mitchell Feigenbaum. Nel 1978 il suo Quantitative universality for a class of nonlinear transformations fu pubblicato su Journal of Statistical Physics (vol. 19, n. 1, pp. 25–52 - luglio 1978. DOI: 10.1007/BF01020332).
Feigenbaum studiava una vasta classe di mappe unimodali del tipo![]()
(Una mappa unimodale è una funzione definita su un intervallo chiuso, che presenta un solo massimo e i cui valori appartengono allo stesso intervallo chiuso su cui è definita).
Se vi ricordate la prima puntata, sono esattamente gli stessi oggetti di cui parlava Robert May nel suo articolo del 1976 su Nature. Ma Feigenbaum dimostrava che il fenomeno del period-doubling (biforcazioni a raddoppio di periodo) verso il caos è governato da costanti universali, indipendenti dai dettagli specifici della mappa (purché soddisfi certe condizioni di regolarità).
Feigenbaum evidenziava due costanti :
δ (delta di Feigenbaum) ≈ 4.669201... : rapporto di convergenza degli intervalli di parametro tra biforcazioni successive.
α (alpha di Feigenbaum) ≈ 2.502907... : fattore di scaling spaziale delle iterazioni.
![]() |
| Costanti di Feigenbaum (grafica realizzata con Gemini) |
(Nota importante: abbiamo usato la notazione originale di Feigenbaum , dove l'autore usa λ quando Robert May usava r. Da questo punto in poi useremo r, perché come vedrete tra poco λ serve a definire altro)
Popolazioni, equazioni alle differenze finite. Ma abbiamo iniziato parlando di funzioni continue ed equazioni differenziali (in passato qualcuno obiettò che anche la materia è discreta, costituita da unità discrete - atomi, molecole - ma per fare un esempio, puoi contare gli individui di un branco, ma non le molecole in un metro cubo di aria). E Ilya Prigogine non si interessò a successioni e insiemi numerabili, ma a funzioni continue, e per il suo lavoro gli esponenti di Lyapunov erano cruciali.
Alexander M. Lyapunov entrò in questa storia nel 1892, con la sua tesi di dottorato, Общая задача об устойчивости движения (Il problema generale della stabilità del moto), pubblicata dalla Società Matematica di Kharkov. Fu pubblicato poi nel 1907 sugli Annales de la Faculté des sciences de Toulouse : Mathématique come Problème général de la stabilité du mouvement .
Lyapunov parlava di movimento, quindi di traiettorie, introducendo elementi per quantificarne la stabilità (gli esponenti di Lyapunov, λ). λ può essere usato per valutare letteralmente la stabilità del moto di corpi (dei pianeti del sistema solare, per esempio) ma è applicabile anche alle traiettorie di un sistema nel suo spazio delle fasi, uno spazio geometrico in cui ogni punto descrive un possibile stato. Una traiettoria nello spazio delle fasi rappresenta il percorso del sistema nel suo cambiare stato. Il diagramma di biforcazione della mappa logistica e l'attrattore di Lorenz non sono grafici - sono strutture nello spazio delle fasi dei rispettivi sistemi.
Per un sistema dinamico, λ è definito dall'evoluzione della distanza tra due punti, δZ(t)
e si ricava con
![]() |
| Grafica ricavata con Gemini |
λ ha importanti proprietà diagnostiche dell'evoluzione delle traiettorie: se λ<0 le traiettorie convergono (verso un ciclo limite, un attrattore), se λ>0 divergono. λ=0 è il punto di transizione tra le due situazioni. L'enorme versalità degli esponenti di Lyapunov è costituta dal fatto che δZ(t) è definita in modo tale che può essere sia una differenza finita che un differenziale. Possiamo calcolare λ in funzione del tempo per il sistema di equazioni differenziali di Lorenz, o possiamo calcolarlo per le differenze finite della mappa logistica. E in tal caso otteniamo questo:
| Grafica ottenuta con Mathematica |
Ogni volta che l'esponente di Lyapunov assume il valore di 0 abbiamo una biforcazione, quando r=3.5699 si passa da valori di λ sempre negativi a valori prevalentemente positivi: la transizione verso il caos. Come si può facilmente notare, tout se tiens.
APPENDICE
Il grafico dell'esponente di Lyapunov per il diagramma di biforcazione della mappa logistica è stato ottenuto mantenendo la struttura del precedente. In questo caso il tempo, rispetto alla definizione di λ che abbiamo visto sopra, non è una variabile dello stato del sistema. Lo spazio delle fasi della mappa logistica è unidimensionale e il tempo viene sostituito con il numero di iterazioni n. Inoltre abbiamo a che fare con una successione e non con una funzione. Questa notazione permette di valutare la divergenza totale come la somma delle divergenze ad ogni singolo passaggio.
Ma se il nostro orizzonte per n non arriva a infinito, bensì a un generico n, allora operativamente dobbiamo lavorare con questa equazione:
Il nostro contatore andrà da 1 a N=1000, come nell'esempio precedente, sempre escludendo i primi 200 termini (il transiente). Ci sono alcune cose da evidenziare. In primo luogo per semplicità il rapporto di incrementi |δZ(i+1)|/|δZ(i)|
non è stato calcolato con le differenze finite, ma usando la derivata
rispetto a x della funzione f(x)=rx(1-x), che è isomorfa a xn+1=rxn(1-xn)
(e contiene tutti i suoi punti). Si potrebbe evitare tutto questo e
lavorare con le differenze finite, ma il codice sarebbe più complicato
e, soprattutto, il risultato finale sarebbe assolutamente identico
(provate, se pensate sia il caso).iterazioni = 1000;
transiente = 200;
dati = Reap[
Do[
x = 0.5;
somma = 0;
Do[
x = r*x*(1 - x);
If[i > transiente, somma += Log[Abs[r*(1 - 2*x)]]],
{i, 1, iterazioni}
];
Sow[{r, somma/(iterazioni - transiente)}],
{r, 2.5, 4, 0.001}
]
][[2, 1]
];
ListLinePlot[dati,
AxesLabel -> {"r", "λ"},
PlotRange -> All,
PlotTheme -> "Scientific",
GridLines -> {{3.56995}, {0}}
]
Per il resto per la lista prodotta da Reap/Sow i valori di |δZ(i+1)|/|δZ(i)| vengono calcolati per ogni punto della mappa, quindi continuiamo con i valori discreti, e i contatori funzionano esattamente come nell'esempio precedente.
somma += Log[Abs[r*(1 - 2*x)]]: somma parte con valore 0 che viene incrementato di Log[Abs[r*(1 - 2*x)]], ad ogni singolo passo, valore calcolato per ogni coppia r, x - è esattamente la sommatoria descritta dall'equazione. Dopo di che la lista viene riempita con i valori di 1/n somma dove n è numero di punti effettivamente usati (quindi in questo caso escludendo i primi 200), ancora una volta replicando la sommatoria vista nell'ultima equazione.
Si usa ListLinePlot invece che ListPlot per
avere i singoli punti collegati da linee (se notate il grafico è
costituito da linee continue, ma abbiamo lavorato su un set di punti,
non con una funzione continua). L'argomento GridLines piazza due rette nel
grafico, una che evidenzia lo 0 di λ e l'altra che evidenzia il valore di r superato il quale ci si ritrova nella zona caotica.














h

