Francesco Fassò, Andrea Giacobbe
Università degli studi di Padova

Note del corso di
Laboratorio Computazionale
A.A. 2008 —2009

Capitolo 6: la mappa logistica

6. Mappa logistica

6.1 Diagramma a ragnatela

Modello Malthusiano

Si ha una specie isolata in condizioni ideali (spazio e nutrimento illimitato)

Ogni individuo ha una certa probabilità di morire (m) ed una certa probabilità di figliare (f) per istante di tempo (anno).

Se un dato anno la popolazione è x[n], la popolazione l'anno successivo è 

x[n+1]=x[n]-m x[n]+f x[n]=(1+f-m) x[n]

6.1 Diagramma a ragnatela

La legge che regola la popolazione è quindi x[n+1]=(1+k)x[n]  dove k=f-m

Chiamiamo k il coefficiente di accrescimento. È un coefficiente caratteristico della popolazione e delle condizioni al contorno

Un modo per definire una funzione per iterazione è

x[0]=x0;
x[n_]:= (1+k) x[n-1]

6.1 Diagramma a ragnatela

Visualizziamo l'andamento delle popolazioni per vari coefficienti di accrescimento. Generiamo prima la lista

lista=Table[x[n],{n,0,100}];

E poi disegniamo le evoluzioni per stessi dati inziali e k diversi

a=ListPlot[lista/.{x0->500,k->0.01},Joined->True];
b=ListPlot[lista/.{x0->500,k->0},Joined->True];
c=ListPlot[lista/.{x0->500,k->-0.01},Joined->True];

6.1 Diagramma a ragnatela

Mostriamo tutto assieme

Show[{a,b,c},PlotRange->{0,1500},ImageSize->700]

6.1 Diagramma a ragnatela

Molto più ragionevole è plottare stesso parametro k ma diversi dati iniziali

k=0.01;
lista=Table[x[n],{n,0,100}];
k=.

a=ListPlot[lista/.{x0->1000},Joined->True];
b=ListPlot[lista/.{x0->2000},Joined->True];
c=ListPlot[lista/.{x0->5000},Joined->True];

6.1 Diagramma a ragnatela

Show[{a,b,c},PlotRange->{0,10000},ImageSize->700]

6.1 Diagramma a ragnatela

Un altro modo di fare le cose è di usare NestList.

Definiamo la funzione da iterare. Sappiamo già che il modo migliore di farlo è dare il parametro e lo stato come variabili separate

f[k_][x_]:= (1+k) x

6.1 Diagramma a ragnatela

Creiamo quindi una funzione pop[x0, k, n] che, dato  il parametro k, il numero di  iterazioni n, ed il dato iniziale x0, genera la popolazione

pop[x0_,k_,n_]:=NestList[f[k],x0,n]

Vediamo se funziona

pop[100,0.1,10]

6.1 Diagramma a ragnatela

Questo modello non è un granchè, perché non è ragionevole ipotizzare che esistano risorse illimitate.

Un modello più interessante è il Modello di Verlhust

Ci sono limitazioni di risorse che si risolvono in una correzione del tipo  x[n + 1] = (1 + k) x[n] - h ((x[n ])^2) con h molto piccolo

6.1 Diagramma a ragnatela

Il termine quadratico, per popolazioni piccole, è una correzione irrilevante. Quando la popolazione cresce allora ((x[n])^2) è molto più grande di x[n] e, anche se moltiplicato per h piccolo, domina su (1+k)x[n]

Il coefficiente h si chiama coefficiente logistico perché ha a che vedere con la logistica (come rifornisco la popolazione di cibo)

Si calcolano immediatamente gli equilibri, che sono i punti x tali che x= (1 + k) x - h (x^2). Le uniche soluzioni sono x=0,(( k)/h)

Esercizio 6.1.1:  fissati k=0.1, h=(10^(-5)), disegnare in una stessa immagine i grafici di varie evoluzioni al variare dei dati iniziali da (Subscript[x, 0]) da (10^2) a (10^6). Scrivere un Manipulate in cui si può variare il parametro h

6.1 Diagramma a ragnatela

Abbiamo definito un primo modello dinamico discreto dalle caratteristiche molto prevedibili.

Infatti, nel modello di Verlhust, la popolazione evolve secondo una mappa quadratica.

x[n + 1] = (1 + k) x[n] - h ((x[n])^2)

E la dinamica evolve verso una configurazione di equilibrio

x[n]=(k/h)

per tutte le condizioni iniziali sensate

6.1 Diagramma a ragnatela

Già in questo modello, però, si possono ottenere dinamiche molto difficili da descrivere

Operiamo prima il riscalamento x=((1+k)/h)y. La mappa logistica diviene

y[n+1]=m y[n](1-y[n])

con m=((((1+k))^2)/h)

6.1 Diagramma a ragnatela

Si tratta quindi di studiare le iterate della mappa f:ℝ->ℝ,x-> m x (1-x)

In generale, data una funzione f:ℝ->ℝ si chiama orbita di un punto (Subscript[x, 0]) in ℝ la successione di punti

(Subscript[x, 0]),f[(Subscript[x, 0])]=(Subscript[x, 1]),…,f[(Subscript[x, n-1])]=(Subscript[x, n]),…

Un punto soluzione (OverBar[x]) tale che f[(OverBar[x])]=(OverBar[x]) è detto punto fisso od equilibrio

6.1 Diagramma a ragnatela

Ovviamente, l'orbita di un punto fisso è la successione (OverBar[x]),(OverBar[x]),(OverBar[x]),...

Esempio: la mappa logistica ha due punti fissi.

Solve [m x(1-x)==x,x]//Simplify

6.1 Diagramma a ragnatela

Se esiste invece un N tale che (f^N)[(OverBar[x])]=(OverBar[x]), allora {(OverBar[x]), f[(OverBar[x])], ...,(f^(N-1))[(OverBar[x])]}  è un'orbita periodica, di periodo N

Osservazione: Secondo questa definizione, un punto fisso genera un'orbita periodica di
qualsiasi periodo.

Similmente, un'orbita periodica di periodo N è anche periodica di  periodo qualsiasi multiplo di N.

6.1 Diagramma a ragnatela

Per orbita di periodo "minimo"  N si intende un'orbita periodica di periodo N che non è periodica di alcun periodo minore di N.

Di solito, quando si parla di periodo di un'orbita si intende "periodo minimo".

Osservazione: un'orbita {(Subscript[x, 1]),...,(Subscript[x, N])} è periodica di periodo minimale N allora ogni (Subscript[x, i]) è punto fisso per la mappa (f^N)

6.1 Diagramma a ragnatela

Esercizio 6.1.2i: supponiamo m∈[1,4]. Verificare che le orbite periodiche di periodo 1 della mappa logistica sono {0} e {1-(1/m)}, 
■ verificare che l'unica orbita periodica di periodo 2 è {((1+m-(Sqrt[-3-2m+(m^2)]))/(2m)),((1+m+(Sqrt[-3-2m+(m^2)]))/(2m))} e comincia ad esistere per m≥3.

Domande un po' più difficili sono:
■ quante orbite periodiche di periodo 4 esistono? Da che valore comincia ad esistere la prima orbita periodica di periodo 4? Si riesce a disegnarne un grafico?
■ idem per le orbite periodiche di periodo 3 e 5.

Per queste ultime (ed anche per le prime) vale la pena disegnare numericamente le soluzioni nel piano (Subscript[[1,4], m ])× (Subscript[[0,1], x]) (Si dovrebbe arrivare a determinare algebricamente le orbite periodiche fino al periodo 4)

6.1 Diagramma a ragnatela

Come si fa a determinare il limite di una dinamica (Subscript[x, 0]),(Subscript[x, 1]),…? L' ideale sarebbe che i punti convergano verso i punti fissi f[x]=x

Proposizione: un punto fisso (Subscript[x, 0]) (ovvero tale che f[(Subscript[x, 0])]=(Subscript[x, 0]) attrae i punti vicini se \[LeftBracketingBar]f'[(Subscript[x, 0])]\[RightBracketingBar]<1, li repelle se \[LeftBracketingBar]f'[(Subscript[x, 0])]\[RightBracketingBar]>1

■ Dimostrazione: Se |f'[(Subscript[x, 0])]|<c<1 allora esiste un intorno di (Subscript[x, 0]) nel quale |f[x]-f[(Subscript[x, 0])]|<(c+ϵ)|x-(Subscript[x, 0])|. Ovvero |f[x]-(Subscript[x, 0])|<|x-(Subscript[x, 0])|

■ Pertanto, in tale intorno, la mappa f avvicina ogni punto ad (Subscript[x, 0])

■ Se invece |f'[(Subscript[x, 0])]|>1 si procede in modo analogo e si ottiene l'affermazione contraria.

6.1 Diagramma a ragnatela

Insomma, approssimiamo f con la sua tangente e vediamo subito con disegni che ...

Comandi che creano le figure

f=2x-(1/4);
disegno=Plot[{f,x},{x,0,1},
PlotStyle->{{Thickness[0.01],RGBColor[1,0,0]},{Thickness[0.01],RGBColor[0,1,0]}},
PlotRange->{0,0.8},
DisplayFunction->Identity];
x0=0.3;
x1= f/.x->x0;
x2= f/.x->x1;
x3= f/.x->x2;
Graphics[{Thickness[0.01],Line[{{x0,x0},{x0,x1},{x1,x1},{x1,x2},{x2,x2},{x2,x3},{x3,x3}}], PointSize[0.03],RGBColor[0,0,1], 
Point[{x0,x0}],Point[{x1,x1}],Point[{x2,x2}],Point[{x3,x3}]}];
a = Show[{disegno,%},Axes->True];

f=(1/2)x+ (1/4);
disegno=Plot[{f,x},{x,0,1},
PlotStyle->{{Thickness[0.01],RGBColor[1,0,0]},{Thickness[0.01],RGBColor[0,1,0]}},
PlotRange->{0,0.8},
DisplayFunction->Identity];
x0=0.3;
x1= f/.x->x0;
x2= f/.x->x1;
x3= f/.x->x2;
Graphics[{Thickness[0.01],Line[{{x0,x0},{x0,x1},{x1,x1},{x1,x2},{x2,x2},{x2,x3},{x3,x3}}], PointSize[0.03],RGBColor[0,0,1], 
Point[{x0,x0}],Point[{x1,x1}],Point[{x2,x2}],Point[{x3,x3}]}];
b= Show[{disegno,%},Axes->True];

Show[GraphicsArray[{b,a}],
DisplayFunction->$DisplayFunction];

6.1 Diagramma a ragnatela

Corollario: un'orbita periodica di periodo N attrae i punti vicini se, per un x di questa orbita (e quindi per ogni x dell'orbita) vale |D[(f^N),x]|<1

Abbiamo quindi imparato che cosa rende attrattiva (stabile) o repulsiva (instabile) una certa orbita periodica di una mappa f. Diciamo che x è

■ attrattivo se esiste un intorno U di x tale che l' orbita di ogni punto in U tende a x per n->∞

■ repulsivo se esiste un intorno U di x tale che l' orbita di almeno un punto di U lascia U per n->∞

6.1 Diagramma a ragnatela

N.B. La attrattività/repulsività di un'orbita periodica si definisce e si studia in modo analogo, riguardandola come un punto fisso di una potenza N della mappa f.

Esercizio 6.1.2ii: usare le considerazioni appena fatte per scoprire che il valore (Subscript[m, 1]) al quale il punto fisso 1-(1/m) da attrattivo diventa repulsivo è quello in cui nasce un'orbita periodica di periodo 2 attrattiva. Scoprire che il valore (Subscript[m, 2]) al quale l'orbita periodica di periodo 2 (che appare per m>(Subscript[m, 1])) da attrattiva diventa repulsiva coincide con la nascita di un'orbita periodica attrattiva di periodo 4.

Questo fenomeno viene detto biforcazione. In questo caso speciale la biforcazione è detta a forchetta

6.1 Diagramma a ragnatela

C'è un metodo grafico che permette di tracciare le orbite di una qualunque mappa f.

Si comincia col tracciare il grafico di f e la bisettrice del I e III quadrante (la retta y = x).

6.1 Diagramma a ragnatela

L' evoluto f[x] di un punto x si determina nel seguente modo : 
■ si segna il punto di coordinata (Subscript[x, 0]) sulla bisettrice, ovvero si disegna il punto ((Subscript[x, 0]),(Subscript[x, 0]))
■ si traccia il segmento verticale che lo congiunge con il grafo di f, arrivando in ((Subscript[x, 0]),(Subscript[x, 1])) 
■ si traccia il segmento orizzontale che congiunge ((Subscript[x, 0,])(Subscript[x, 1])) con la bisettrice, arrivando qiundi in ((Subscript[x, 1]),(Subscript[x, 1]))

6.1 Diagramma a ragnatela

Si ripete il processo. Il grafico che così si ottiene si chiama Diagramma a ragnatela.

6.1 Diagramma a ragnatela

Consideriamo ora la mappa logistica, che denotiamo (Subscript[f, m])= m x (1-x) ed assumiamo che m≥1. Sappiamo che ci sono due punti fissi: 0 e 1-(1/m). come sono fatte le altre orbite?

Si osserva facilmente che

Proposizione: se (Subscript[x, 0])<0 od (Subscript[x, 0])>1, allora l'orbita tende a -∞

6.1 Diagramma a ragnatela

La dimostrazione formale (facile) è lasciata come esercizio. Ci si convince della verità dell'affermazione facendo uso del metodo grafico:

Dunque, la dinamica "interessante" della mappa logistica ha luogo nell'intervallo [0, 1].

6.1 Diagramma a ragnatela

Lo studio "sperimentale" appena fatto della mappa logistica mostra che per m piccoli (per la precisione m<3) tutte le orbite con dato iniziale in [0,1] tendono al punto fisso 1-(1/m) che è attrattivo.

6.1 Diagramma a ragnatela

Per m più grande ma non troppo, (per la precisione 3<m<1+(Sqrt[6])= 3.44949), tutte le orbite tendono ad un'orbita periodica di periodo 2.

I due punti di quest' orbita "emanano" dal punto fisso e si allontanano l'uno dall'altro al crescere di m

6.1 Diagramma a ragnatela

Per m ancora più grande, diciamo (Subscript[m, 2]) <m≤(Subscript[m, 3]), tutte le orbite tendono ad un'orbita periodica di periodo 4.

6.1 Diagramma a ragnatela

Per questo, ci interessiamo solo ad orbite che restano al suo interno.

Esercizio 6.1.4: scrivere una funzione Disegno[m,x,n]  che produce il diagramma a ragnatela delle iterazioni della mappa logistica, trattando come variabili
■ il parametro m
■ il punto iniziale x
■ il numero di iterazioni della mappa n
Sperimentare poi sulla dinamica creando un Manipulate su m che mostri il diagramma a ragnatela da un fissato punto iniziale (diciamo 0.5) per un numero fissato di passi.

Suggerimento: scelto m ed il dato iniziale x ed il numero di punti dell'orbita, si può creare l' orbita con il comando NestList[f, x, n]. Ottenuta l'orbita {x,f[x],...}, gli si mappa sopra una funzione che crea la lista di punti del piano {{x, x}, {x, f[x]}, {f[x], f[x]}, ...} (conviene prima raddoppiare gli elementi della lista e poi usare una delle features di Partition). Si crea così una lista che poi si trasformerà in una poligonale e che si mostrerà assieme al grafico della funzione ed alla bisettrice.

6.2 Una cascata di biforcazioni

Gli esercizi appena proposti sono serviti per controllare "sperimentalmente" il comportamento  delle orbite per alcuni m compresi tra 1 e 4, e per accorgersi che,

■ quando m∈ [1,3], allora la dinamica converge verso il punto fisso 1-(1/m)
■ quando m∈[3, 3.44949], allora la dinamica converge verso un'orbita di periodo 2, intersezione della bisettrice con (f^2) 
■ quando m∈[ 3.44949,...], allora la dinamica converge verso un'orbita di periodo 4, intersezione della bisettrice con (f^4) 
■ e così via ..

6.2 Una cascata di biforcazioni

Continuando così, in un intervallo molto piccolo (Subscript[m, 3]) <m≤(Subscript[m, 4]), tutte le orbite tenderanno ad un'orbita periodica di periodo 8.

Al crescere di m la dinamica diventa più complicata. La sequenza di punti (Subscript[m, i]) si avvicina ad un valore (Subscript[m, ∞]) un po' minore 4. In quell'intervallo la dinamica ha fatto infinite biforcazioni e il comportamento diventa caotico

Osservazione : I calcoli numerici sembrano indicare che per ogni m in un certo intervallo, esiste una orbita periodica che attrae tutte le orbite che partono in [0, 1].

6.2 Una cascata di biforcazioni

In realtà non le attrae tutte. Infatti, per esempio,i punti fissi 0 e 1-(1/m) e tutti i punti delle orbite periodiche repulsive di ordine minore di una data orbita periodica attrattiva non sono attratti da essa.

Però è vero che le orbite che non sono attratte sono eccezionali: l' insieme di dati iniziali che è attratto è un aperto ed ha misura uno. Dimostrarlo è complicato.

NB : Se m>4, naturalmente, come già sappiamo, vi sono punti iniziali interni a [0,1] le cui orbite tendono a -∞: ci sono problemi di overflow.

Abbiamo già determinato orbite di periodo 2. Proviamo a visualizzarle in altro modo. Disegnamo dove sono al variare del parametro m

6.2 Una cascata di biforcazioni

Esercizio 6.2.2: Per studiare le biforcazioni successive alle prime, si può procedere numericamente. Per ogni m, quasi tutte le orbite sono  attratte da un'orbita periodica. E' quindi sufficiente seguire un'orbita scelta a caso. Con probabilità uno si vedrà l' orbita convergere verso l'orbita periodica attrattiva. Si potrà quindi campionare su m e disegnare nel piano (Subscript[[1,4], m])×(Subscript[[0,1], x]) il diagramma di biforcazione (con le sole orbite attrattive).

Suggerimento: Bisogna fare un grafico con m in ascissa e le orbite in ordinata.
■ Per ogni valore di m, su di una certa griglia, si disegna una sola orbita, per esempio quella di (Subscript[x, 0])=0.5 (tanto tutte le orbite convergono all'orbita periodica attrattiva).
■ Per visualizzare il comportamento asintotico dell'orbita si tengono gli ultimi punti, che percorrono circa l'orbita periodica. Si possono fare 1000 iterazioni e tenere le ultime 100.
■ Il disegno viene più chiaro se si disegnano punti piccoli.
■ Non superare il valore m=4, se no un insieme di misura non nulla in [0,1] tende a -∞, e si va in overflow.
■ Il numero di valori per m fissato può andare da alcune centinaia ad alcune migliaia, a seconda di quel che si vuole ottenere.

6.2 Una cascata di biforcazioni

La successione delle distanze fra le biforcazioni è approssimativamente geometrica. Ovvero, per n grande

(((Subscript[m, n+1])-(Subscript[m, n]))/((Subscript[m, n])-(Subscript[m, n-1])))-> (1/k)

ove k è una costante positiva chiamata costante di Feigenbaum

Esercizio 6.2.3:  Provare a determinare la costante k determinando i primi (sei, sette, o quel che riuscite) valori della successione (Subscript[m, 1]),(Subscript[m, 2]),(Subscript[m, 3]) e stimare (Subscript[m, ∞]) assumendo una crescita geometrica e confrontarlo con il diagramma di biforcazione.

6.2 Una cascata di biforcazioni

L' idea è di definire una funzione Biforcazione[{mmin, mmax}, {xmin, xmax}, numit, numdrop, passo] e di usarla per ridisegnare il diagramma di biforcazione abbastanza in dettaglio attorno ad un biforcazione

Ad occhio poi si può determinare il valore di m a cui avviene la biforcazione

Riuscite ad automatizzare questa ricerca?

6.2 Una cascata di biforcazioni

Per determinare la biforcazione n–esima si dovrebbe fissare un m

E controllare se l'iterato  N–esimo e quello N+(2^n) sono molto vicini

Se sono molto vicini allora non siamo ancora alla biforcazione, e bisogna aumentare m

6.2 Una cascata di biforcazioni

Appena si allontanano siamo arrivati alla biforcazione

Bisognerà partire dalla biforcazione n–esima, confrontare due punti in là nell'orbita che siano separati da (2^n) iterazioni

e se sono molto vicini aumentare m altrimenti stampare m, che sarà il momento in cui succede la biforcazione.

Questa procedura richiede un comando While, (stando attenti che la procedura aumenti m, altrimenti si rischia di uno uscire mai)

6.2 Una cascata di biforcazioni

Osservazione: la crescita gometrica dei valori di biforcazione non è una peculiarità della mappa logistica.

Lo scenario di raddoppiamento del periodo visto qui si presenta tale e quale per ogni mappa f dell' intervallo[0, 1] su se stesso che abbia un unico massimo, sia ovunque non–negativa e sia nulla agli estremi dell' intervallo.

Che questo succeda, si capisce facilmente ripercorrendo tutta l'analisi fatta per la mappa logistica.

6.2 Una cascata di biforcazioni

Più sorprendente è che questa "universalità" sia anche quantitativa: la costante k che  determina l'asintiotica della successione geometrica delle lunghezze degli intervalli fra le biforcazioni è la stessa per tutte queste mappe!

Questo fatto è noto come congettura di Feigenbaum (la sua dimostrazione, dovuta a Landford, è stata una delle prime dimostrazioni computer–assisted).

6.2 Una cascata di biforcazioni

uno dei fenomeni più interessanti: al crescere del parametro m, il "caos" non aumenta sempre. A volte scompare.

Questo è legato all'apparire di orbite periodiche attrattive che stabilizzano la dinamica.

Corrispondentemente, nel diagramma di biforcazione appare una finestra regolare, con un'orbita periodica, la quale poi biforca per raddoppiamento del periodo...

6.2 Una cascata di biforcazioni

... ed una nuova cascata si mette in moto. La più grossa di queste finestre è quella di periodo 3.

Esercizio 6.2.4:  determinare algebricamente l'orbita attrattiva di periodo 3 che appare nella finestra regolare poco dopo m=3.828. Confrontarla con il diagramma di biforcazione ottenuto nell'esercizio 6.2.2

6.3 Divergenza delle orbite

Abbiamo osservato che ci sono vari regimi: quello regolare in cui la dinamica è regolata da orbite periodiche attrattive ma che ci sono anche regimi oltre la cascata di biforcazioni

Scopriremo che quei regimi sono caotici: l'attrattore è un insieme complicato da descrivere (di tipo Cantor?)

Le finestre  nelle quali si  osservano cascate di biforcazioni per raddoppiamento del periodo si alternano a regioni in cui vige il caos

6.3 Divergenza delle orbite

Esiste un modo per distinguere una regione regolare da una caotica? Come cambia il comportamento di orbite vicine quando si è  nella regione regolare e quando si e' in quella caotica.

Quando m > 4, le orbite che non scappano dall' interno dell' intervallo [0, 1] restano su un insieme invariante che ha la struttura di un Cantor ternario.

Si usa in modo essenziale il fatto che la mappa assume valori > 1. È molto difficile studiarlo numericamente perché, appunto, tutte le altre orbite prima o poi scappano.

6.3 Divergenza delle orbite

In realtà anche nelle finestre in cui (Subscript[m, ∞])<m≤4, eccetto che per le "finestre" regolari nelle quali si hanno cascate triplicazione etc, l'insieme che attrae la dinamica è un insieme di Cantor, ma è più difficile dimostrarlo.

In entrambi i casi, la dinamica è "caotica" nel senso che ha una dipendenza  sensibile dai dati iniziali

Una semplice stima mostra che le orbite di una mappa f si allontano l' una dall' altra al più esponenzialmente in fretta: |(Subscript[x, n])-(Subscript[y, n])|< (A^n)|(Subscript[x, 0])-(Subscript[y, 0])| per qualche costante positiva A.

6.3 Divergenza delle orbite

Proposizione: la distanza tra due orbite |(Subscript[x, n])-(Subscript[y, n])| è maggiorata da  Sup((|f'|)^n)|(Subscript[x, 0])-(Subscript[y, 0])|

■ Dimostrazione: |(Subscript[x, n])-(Subscript[y, n])|=|f[(Subscript[x, n-1])]-f[(Subscript[y, n-1])]|≤ Sup|f'||(Subscript[x, n-1])-(Subscript[y, n-1])|.

■ Quindi, per ricorsione, |(Subscript[x, n])-(Subscript[y, n])|≤Sup ((|f'|)^n)|(Subscript[x, 0])-(Subscript[y, 0])|

6.3 Divergenza delle orbite

Calcoliamo il numero Sup [f'[x], (0, 1)] per la nostra mappa

fp=D[m x (1-x),x]//Simplify

La derivata di f è m(1-2x), e va da m a -m

Si ha perciò che la derivata ha supremo uguale ad m

6.3 Divergenza delle orbite

In linea di principio, una coppia di elementi  potrebbero avere distanza che evolve come |(Subscript[x, n]),(Subscript[y, m])|=(A^n)|(Subscript[x, 0])-(Subscript[y, 0])|

In altre parole, se scriviamo la funzione Dist[n]=|(Subscript[x, n])-(Subscript[y, n])| e facciamo un LogPlot, dovremmo vedere il grafico della funzione lineare n-> n Log[A]+Log[(Subscript[x, 0])-(Subscript[y, 0])]

Questa è l'equazione di una retta di coefficiente angolare Log[A]

6.3 Divergenza delle orbite

Naturalmente, questa è una stima e in casi particolari la separazione fra le orbite potrebbe essere molto più lenta.

Anzi, le orbite potrebbero restare a distanza costante o addirittura avvicinarsi l'una all'altra.

Quest'ultimo caso si verifica, se tutte le orbite tendono asintoticamente ad un punto fisso o ad un'orbita periodica.

6.3 Divergenza delle orbite

In altri casi, però, la separazione fra orbite vicine può davvero  essere esponenziale con costante A>1, quindi Log[A]>0

Questo pone dei limiti alla predicibilità dell'evoluzione: piccolissime variazioni nelle condizioni iniziali possono portare a evoluzioni completamente diverse.

Nonostante il determinismo della legge di evoluzione, in pratica il futuro è impossibile da predire

6.3 Divergenza delle orbite

Esercizio 6.3.1:  Provare a determinare la separazione fra orbite (molto!)  vicine della mappa logistica. Per cominciare, si possono plottare le due orbite su uno stesso grafico, magari in colori diversi. Per questo scopo potete usare ListPlot e vedere quanto vicine e per quanto tempo stanno vicine due orbite, ovvero quanto la loro separazione sia sensibile alla loro distanza iniziale.
  
■ Iterare la mappa poche volte (qualche decina?), arrestandosi prima che la separazione si saturi (la distanza tra due punti non può mai  essere >1)
■ Studiare qualche orbita per un valore di m<(Subscript[m, ∞]), poi per un valore m>(Subscript[m, ∞]) in una banda caotica e magari in un valore m>(Subscript[m, ∞]) in una finestra regolare.

Per migliorare la comprensione di questo fatto, è necessario fare un grafico Logaritmico (LogListPlot) della distanza fra le due orbite.
■ Cercare di produrre qualche grafico che mette bene in evidenza la differenza fra i due regimi. NB: È importante scegliere bene il valore della separazione iniziale.