Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Cammini aleatori

1Introduzione

All’inizio del XIX secolo Robert Brown osservò al microscopio il moto irregolare di piccole particelle sospese in un fluido[1]. Le particelle continuavano a cambiare direzione in modo apparentemente imprevedibile, anche in assenza di correnti macroscopiche visibili.

Oggi interpretiamo questo moto browniano come il risultato degli urti continui tra la particella sospesa e le molecole del fluido. A ogni istante la particella riceve un numero enorme di impulsi microscopici provenienti da direzioni diverse. In media questi impulsi si compensano, ma le compensazioni non sono mai esatte: rimane una forza risultante fluttuante, che cambia rapidamente intensità e direzione.

Seguire nel dettaglio tutti questi urti sarebbe non solo estremamente complicato, ma anche poco utile. Le scale microscopiche associate al moto delle molecole del fluido sono infatti molto più piccole delle scale spaziali e temporali sulle quali osserviamo la particella sospesa.

Possiamo quindi distinguere almeno due scale temporali:

Scegliendo un intervallo temporale Δt\Delta t molto più grande della durata e della separazione tipica dei singoli urti, non cerchiamo di descrivere ciò che accade durante ogni collisione. Descriviamo invece soltanto lo spostamento netto accumulato dalla particella durante ciascun intervallo Δt\Delta t.

Il modello che costruiamo è quindi una descrizione coarse-grained (cioè a grana grossa): sostituiamo la complicata dinamica microscopica con una successione di spostamenti casuali che tengono conto dell’effetto medio degli urti. Infatti, se volessimo (e potessimo) risolvere il moto alle scale microscopiche, vedremmo che a tempi molto brevi la particella reale possiede una velocità ben definita e il moto è approssimativamente balistico. La descrizione browniana emerge quando osserviamo il sistema su intervalli temporali molto più lunghi del tempo caratteristico degli urti microscopici. A queste scale di tempo intermedie, la traiettoria efficace del moto browniano risulta continua ma non differenziabile: ingrandendone un tratto continuano ad apparire nuove irregolarità. Quindi, poiché la traiettoria non è differenziabile, non è possibile associare alla traiettoria una velocità istantanea ordinaria. Il random walk discreto evita inizialmente questo problema, descrivendo il moto mediante spostamenti definiti su intervalli temporali finiti.

Una singola traiettoria browniana è estremamente irregolare. La posizione della particella dopo un certo tempo non può essere prevista conoscendo soltanto la sua posizione iniziale: traiettorie preparate nelle stesse condizioni macroscopiche producono evoluzioni microscopiche diverse.

L’obiettivo non è quindi prevedere esattamente una particolare traiettoria, ma descrivere le proprietà statistiche di un insieme di possibili traiettorie. Possiamo domandarci, per esempio,

Queste quantità possono essere definite considerando molte realizzazioni indipendenti dello stesso esperimento in cui poniamo una particella in x0x_0 al tempo 0. Se xn(α)x_n^{(\alpha)} è la posizione dopo nn passi nella traiettoria α\alpha, allora la distanza media percorsa dalla particella al tempo tnt_n è

xnx01Ntrajα=1Ntraj(xn(α)x0(α)),\langle x_n-x_0\rangle \simeq \frac{1}{N_{\mathrm{traj}}} \sum_{\alpha=1}^{N_{\mathrm{traj}}} \left(x_n^{(\alpha)}-x_0^{(\alpha)}\right),

dove la media è effettuata su molte traiettorie osservate tutte dopo lo stesso numero di passi.

In alternativa, in molti sistemi è possibile ottenere informazioni statistiche anche osservando una singola traiettoria per un tempo molto lungo. In questo caso si confrontano spostamenti che partono da istanti diversi della stessa traiettoria. Ad esempio, dividiamo l’intera traiettoria in MM segmenti di lunghezza nn. In questo caso, la distanza media percorsa dalla particella è

xnx01Mm=0M1(xmn+nxmn),\langle x_n-x_0\rangle \simeq \frac{1}{M} \sum_{m=0}^{M - 1} \left(x_{mn + n}-x_{mn}\right),

Notiamo subito come in entrambi i casi (medie calcolate su più traiettorie e medie calcolate sulla stessa traiettoria), ciò che conta è lo spostamento rispetto a una posizione iniziale. Per questo motivo conviene portarsi esplicitamente dietro la posizione iniziale x0x_0 e studiare la quantità

Xnxnx0.X_n\equiv x_n-x_0.

Nel caso di una media di insieme, x0x_0 è la posizione dalla quale vengono preparate le diverse realizzazioni. Nel caso di una media lungo una traiettoria, il ruolo di x0x_0 può essere assunto di volta in volta dalla posizione all’inizio di ciascun intervallo osservato.

Studiare xnx0x_n-x_0, anziché direttamente xnx_n, permette inoltre di separare le proprietà del moto dalla scelta arbitraria dell’origine delle coordinate. Infatti, per un sistema omogeneo le statistiche degli spostamenti non devono dipendere dal punto dello spazio dal quale la particella è partita.

2Random walk unidimensionale discreto

Il modello più semplice che contiene questi ingredienti è il random walk simmetrico unidimensionale.

Consideriamo una particella che si trova inizialmente nella posizione x0x_0. Dividiamo il tempo in intervalli di durata Δt\Delta t. Durante ogni intervallo la particella compie uno spostamento di modulo Δx\Delta x, verso destra oppure verso sinistra con uguale probabilità:

xn=xn1+ξn,x_n=x_{n-1}+\xi_n,

dove

ξn={+Δxcon probabilitaˋ 1/2,Δxcon probabilitaˋ 1/2.\xi_n= \begin{cases} +\Delta x & \text{con probabilità } 1/2,\\ -\Delta x & \text{con probabilità } 1/2. \end{cases}

Ne discende che gli spostamenti compiuti in intervalli temporali diversi sono statisticamente indipendenti, cioè che ξiξj=0\langle \xi_i \xi_j \rangle = 0 per iji \neq j.

<Figure size 800x500 with 1 Axes>

Figure 1:Quattro diverse realizzazioni di un random walk unidimensionale simulato per 105 passi.

La Figura 1 mostra quattro diverse realizzazioni numeriche di un random walk unidimensionale. Si vede come le traiettorie siano molto frastagliate e diverse tra loro. Qualitativamente, sembra anche che il camminatore non si sposti molto: se ci si muove di NN passi lungo una direzione, lo spostamento totale coinciderà con NN, mentre in queste traiettorie il camminatore non si è allontanato per più di qualche centinaio di passi dall’origine, nonostante i 105 passi compiuti. Questa osservazione qualitativa si può circostanziare come segue. Dopo nn passi,

xn=x0+i=1nξi,x_n=x_0+\sum_{i=1}^{n}\xi_i,

e quindi lo spostamento rispetto alla posizione iniziale è

Xnxnx0=i=1nξi.X_n\equiv x_n-x_0=\sum_{i=1}^{n}\xi_i.

Questa formulazione rende esplicito che x0x_0 determina soltanto una traslazione della traiettoria, mentre le proprietà statistiche del moto sono contenute nella somma degli incrementi casuali.

Per un singolo passo si ha

ξi=12Δx+12(Δx)=0.\langle \xi_i\rangle = \frac{1}{2}\Delta x+\frac{1}{2}(-\Delta x) =0.

Usando la linearità del valor medio,

Xn=i=1nξi=i=1nξi=0.\langle X_n\rangle = \left\langle\sum_{i=1}^n\xi_i\right\rangle = \sum_{i=1}^n\langle\xi_i\rangle = 0.

Di conseguenza, xnx0=0\langle x_n-x_0\rangle=0 e quindi xn=x0\langle x_n\rangle=x_0: la posizione media non cambia nel tempo. Questo non significa che la particella rimanga ferma: le singole traiettorie si allontanano in generale da x0x_0, ma gli spostamenti verso destra e verso sinistra si compensano quando si calcola la media su molte realizzazioni.

Calcoliamo ora il quadrato dello spostamento:

Xn2=(i=1nξi)2=i=1nξi2+2i<jξiξj.X_n^2 = \left(\sum_{i=1}^n\xi_i\right)^2 = \sum_{i=1}^n\xi_i^2 + 2\sum_{i<j}\xi_i\xi_j.

Prendendo il valor medio,

Xn2=i=1nξi2+2i<jξiξj.\langle X_n^2\rangle = \sum_{i=1}^n\langle\xi_i^2\rangle + 2\sum_{i<j}\langle\xi_i\xi_j\rangle.

Poiché i passi sono indipendenti, per iji\neq j vale

ξiξj=ξiξj=0.\langle\xi_i\xi_j\rangle = \langle\xi_i\rangle\langle\xi_j\rangle = 0.

Inoltre, indipendentemente dalla direzione del passo,

ξi2=Δx2,\xi_i^2=\Delta x^2,

e quindi

Xn2=i=1nΔx2=nΔx2.\langle X_n^2\rangle = \sum_{i=1}^n\Delta x^2 = n\Delta x^2.

Otteniamo dunque

(xnx0)2=nΔx2.\left\langle (x_n-x_0)^2\right\rangle=n\Delta x^2.

Dato che Xn=0\langle X_n\rangle=0, questa quantità coincide con la varianza:

Var(Xn)=Xn2Xn2=nΔx2.\operatorname{Var}(X_n) = \langle X_n^2\rangle-\langle X_n\rangle^2 = n\Delta x^2.

Analogamente,

Var(xn)=nΔx2.\operatorname{Var}(x_n)=n\Delta x^2.

La posizione quadratica media, che in generale dipende dalla scelta dell’origine e/o dalla condizione iniziale x0x_0, è invece

xn2=x02+Xn2=x02+nΔx2.\langle x_n^2\rangle = x_0^2+\langle X_n^2\rangle = x_0^2+n\Delta x^2.

2.1Legge di scala diffusiva

Una misura della distanza tipica percorsa dalla particella è la radice dello spostamento quadratico medio,

xrms(xnx0)2.x_{\mathrm{rms}} \equiv \sqrt{\left\langle(x_n-x_0)^2\right\rangle}.

Per il random walk,

xrms=Δxn.x_{\mathrm{rms}}=\Delta x\sqrt{n}.

La distanza tipica cresce quindi come n\sqrt{n}, e non come nn: dopo nn passi la particella ha percorso una distanza totale nΔxn\Delta x, ma il suo spostamento netto è tipicamente soltanto dell’ordine di Δxn\Delta x\sqrt n.

Se a ogni passo associamo un intervallo temporale Δt\Delta t, dopo nn passi è trascorso un tempo

t=nΔt.t=n\Delta t.

Lo spostamento quadratico medio può allora essere scritto come

(x(t)x0)2=Δx2Δtt2Dt,\left\langle(x(t)-x_0)^2\right\rangle = \frac{\Delta x^2}{\Delta t}t \equiv 2 D t,

dove abbiamo introdotto il coefficiente di diffusione unidimensionale

DΔx22Δt.D\equiv\frac{\Delta x^2}{2\Delta t}.

Questa relazione lineare tra spostamento quadratico medio e tempo rappresenta la caratteristica principale (la firma) del moto diffusivo.

<Figure size 700x500 with 1 Axes>

Figure 2:Lo spostamento quadratico (x(t)x0)2\left\langle(x(t)-x_0)^2\right\rangle per un random-walk unidimensionale mediato su una o più traiettorie (vedi legenda), insieme alla curva teorica di pendenza unitaria (linea tratteggiata viola). Nota Bene: la linea rossa è quasi completamente nascosta dalla curva teorica.

La Figura 2 mostra come lo spostamento quadratico medio tenda al valore teorico, purché il numero di traiettorie su cui è mediato sia sufficientemente grande. Il grafico è in scala doppio logaritmica (o log-log): questa scelta è la migliore quando le quantità di interesse variano di diversi ordini di grandezza. Inoltre, se A(t)=BtαA(t) = B t^\alpha, allora log(A(t))=αlog(Bt)=αlog(t)+αlogB\log(A(t)) = \alpha \log(Bt) = \alpha \log(t) + \alpha \log B: quantità che dipendono dall’ascissa con una legge a potenza appariranno rette di coefficiente angolare pari all’esponente della potenza.

Confrontiamo il moto diffusivo con quello di una particella che si muove con velocità costante (moto balistico). In questo caso la posizione evolve con la legge

x(t)x0=vt,x(t)-x_0=vt,

da cui si trova immediatamente

[x(t)x0]2=v2t2.[x(t)-x_0]^2=v^2t^2.

Nel moto balistico gli spostamenti successivi sono tutti coerenti: la particella mantiene memoria della direzione del moto. Nel random walk, invece, la direzione di ogni passo è indipendente da quella dei passi precedenti e la memoria della direzione viene persa immediatamente.

2.2Distribuzione delle posizioni

Consideriamo ora il seguente sistema: un “camminatore” (cioè la versione semplificata della nostra particella) che può spostarsi lungo un binario. A ogni istante di tempo Δt\Delta t, il camminatore può spostarsi a destra o a sinistra di Δx\Delta x con uguale probabilità. Dopo nn passi, indichiamo con n+n_+ il numero di passi verso destra e con nn_- il numero di passi verso sinistra. Si ha

n++n=nn_++n_-=n

e

xnx0=(n+n)Δx=(2n+n)Δx.x_n-x_0=(n_+-n_-)\Delta x=(2n_+-n)\Delta x.

La probabilità che in un percorso di nn passi il camminatore ne abbia fatti n+n_+ verso destra è data da una distribuzione binomiale:

P(n+,n)=12n(nn+),\mathcal{P}(n_+, n) = \frac{1}{2^n} \binom{n}{n_+},

da cui si ottiene la distribuzione della posizione sostituendo la dipendenza di n+n_+ da xnx_n trovata nell’equazione (30)[2]:

Pn(x)=12n(n12(n+xx0Δx)),P_n(x) = \frac{1}{2^n} \binom{n}{ \frac{1}{2} \left( n+\frac{x-x_0}{\Delta x} \right) },

La distribuzione discreta presenta alcune particolarità. Per esempio, se nn è dispari P(x0)=0P(x_0) = 0, e dopo un numero pari di passi la particella può trovarsi soltanto a una distanza pari a un multiplo pari di Δx\Delta x da x0x_0. Questi dettagli diventano però irrilevanti quando nn è grande e si osserva il sistema su scale spaziali molto maggiori di Δx\Delta x.

2.3Il limite continuo e il teorema del limite centrale

Lo spostamento dopo nn passi,

Xn=i=1nξi,X_n=\sum_{i=1}^n\xi_i,

è la somma di nn variabili aleatorie indipendenti e identicamente distribuite, con

ξi=0,Var(ξi)=Δx2.\langle\xi_i\rangle=0, \qquad \operatorname{Var}(\xi_i)=\Delta x^2.

Il teorema del limite centrale afferma che, per nn grande, la variabile normalizzata

Zn=XnΔxnZ_n = \frac{X_n}{\Delta x\sqrt n}

tende ad avere una distribuzione normale con media nulla e varianza unitaria.

La distribuzione dello spostamento è quindi approssimativamente

P(Xn)12πnΔx2exp[Xn22nΔx2].P(X_n) \simeq \frac{1}{\sqrt{2\pi n\Delta x^2}} \exp\left[ -\frac{X_n^2}{2n\Delta x^2} \right].

Usando

Xn=xx0,t=nΔt,D=Δx22Δt,X_n=x-x_0, \qquad t=n\Delta t, \qquad D=\frac{\Delta x^2}{2\Delta t},

otteniamo

P(x,t)=14πDtexp[(xx0)24Dt].P(x,t) = \frac{1}{\sqrt{4\pi Dt}} \exp\left[ -\frac{(x-x_0)^2}{4Dt} \right].

Questa distribuzione ha media

x(t)=x0\langle x(t)\rangle=x_0

e varianza

Var[x(t)]=2Dt.\operatorname{Var}[x(t)]=2Dt.

Nel limite continuo la distribuzione binomiale del random walk viene dunque sostituita da una distribuzione gaussiana la cui larghezza cresce come t\sqrt t.

<Figure size 1500x420 with 3 Axes>

Figure 3:Distribuzioni di probabilità delle posizioni xx0x - x_0 per un random walk unidimensionale a tre diversi istanti di tempo (da sinistra a destra, n=10,100,1000n = 10, 100, 1000), mediate su 105 traiettorie. Gli istogrammi sono i valori numerici, mentre le righe continue sono le distribuzioni continue teoriche, eq. (38).

La Figura 3 mostra come l’approssimazione continua funzioni piuttosto bene già a tempi corti (n=10n = 10).

2.4Oltre il random walk destra/sinistra

Il teorema del limite centrale mostra che il comportamento diffusivo non dipende dalla scelta particolare di passi discreti verso destra o verso sinistra. Le ipotesi essenziali sono che gli incrementi ξi\xi_i siano indipendenti e identicamente distribuiti, con media nulla e varianza finita. Se queste condizioni sono verificate, per nn grande la distribuzione dello spostamento tenderà a una gaussiana, indipendentemente dalla forma dettagliata della distribuzione dei singoli passi. Il random walk destra/sinistra è quindi soltanto il più semplice esempio di una classe molto più generale di processi diffusivi.

Una scelta comune, e utile anche per altre applicazioni, consiste nell’estrarre direttamente gli incrementi da una distribuzione gaussiana. Supponiamo di voler generare due variabili indipendenti Z1Z_1 e Z2Z_2, entrambe distribuite secondo una normale standard,

Z1,Z2N(0,1).Z_1,Z_2\sim\mathcal{N}(0,1).

Poiché sono indipendenti, la loro densità congiunta è il prodotto delle due densità gaussiane:

12πexp[z12+z222].\frac{1}{2\pi}\exp\left[-\frac{z_1^2+z_2^2}{2}\right].

Introduciamo le coordinate polari, z1=rcosθz_1=r\cos\theta e z2=rsinθz_2=r\sin\theta, per cui z12+z22=r2z_1^2+z_2^2=r^2. Nel cambio di variabili bisogna inoltre includere lo Jacobiano, dz1,dz2=r,dr,dθdz_1,dz_2=r,dr,d\theta. La densità congiunta di RR e Θ\Theta diventa quindi

pR,Θ(r,θ)=12πrer2/2,p_{R, \Theta}(r, \theta) = \frac{1}{2\pi}r e^{-r^2/2},

con

r0,0θ<2π.r\geq 0,\qquad0\leq\theta<2\pi.

Questa densità si fattorizza:

pR,Θ(r,θ)=rer2/2pR(r)12πpΘ(θ).p_{R, \Theta}(r, \theta) = \underbrace{r e^{-r^2/2}}{p_R(r)}\underbrace{\frac{1}{2\pi}}{p_\Theta(\theta)}.

Di conseguenza, RR e Θ\Theta sono indipendenti. In particolare, l’angolo è uniformemente distribuito nell’intervallo [0,2π)[0,2\pi). Se U2U_2 è una variabile uniforme in (0,1)(0,1), possiamo quindi porre

Θ=2πU2.\Theta=2\pi U_2.

Resta da generare la variabile radiale RR, la cui densità è

pR(r)=rer2/2.p_R(r)=r e^{-r^2/2}.

La sua funzione di distribuzione cumulativa è

FR(r)=P(Rr)=0rses2/2,ds.F_R(r) = P(R\leq r) = \int_0^r s e^{-s^2/2},ds.

Poiché

dddxes2/2=ses2/2,\od{}{dx} e^{-s^2/2} = -s e^{-s^2/2},

si ottiene

FR(r)=1er2/2.F_R(r)=1-e^{-r^2/2}.

Usiamo ora il metodo della trasformazione inversa. Se U1U_1 è uniforme in [0,1)[0,1), imponiamo

U1=FR(r)=1er2/2.U_1=F_R(r)=1-e^{-r^2/2}.

Da questa relazione segue

er2/2=1U1,e^{-r^2/2}=1-U_1,

e quindi r22=log(1U1)-\frac{r^2}{2}=\log(1-U_1), pertanto,

r=2log(1U1).r=\sqrt{-2\log(1-U_1)}.

Poiché anche 1U11-U_1 è uniforme (in (0,1](0,1] piuttosto che in [0,1)[0, 1), ma questo non cambia le sue proprietà statistiche), possiamo rinominarlo semplicemente U1U_1 e scrivere[3]

R=2logU1.R=\sqrt{-2\log U_1}.

Tornando infine alle coordinate cartesiane,

Z1=RcosΘ,Z2=RsinΘ.Z_1=R\cos\Theta,\qquad Z_2=R\sin\Theta.

Sostituendo le espressioni trovate per RR e Θ\Theta, otteniamo la trasformazione di Box-Muller:

Z1=2logU1cos(2πU2)Z2=2logU1sin(2πU2),\begin{align} Z_1 &= \sqrt{-2\log U_1}\cos(2\pi U_2)\\ Z_2 &= \sqrt{-2\log U_1}\sin(2\pi U_2), \end{align}

dove U1U_1 e U2U_2 sono variabili uniformi indipendenti in (0,1)(0,1). Le variabili Z1Z_1 e Z2Z_2 così generate sono indipendenti e distribuite secondo una normale standard. Un incremento gaussiano di varianza σ2\sigma^2 si ottiene quindi ponendo

2.4.1C: Variabili locali static, ovvero come ricordare un valore tra due chiamate

La trasformazione di Box–Muller genera due numeri gaussiani indipendenti, Z1Z_1 e Z2Z_2, usando la stessa coppia di numeri uniformi. Se la nostra funzione restituisse soltanto Z1Z_1, getteremmo via metà del risultato appena calcolato:

double gaussian(void) {
    double u1 = 1.0 - drand48();
    double u2 = drand48();

    double r = sqrt(-2.0 * log(u1));
    double theta = 2.0 * M_PI * u2;

    return r * cos(theta);
}

Potremmo invece restituire Z1Z_1 e conservare Z2Z_2 per la chiamata successiva. Una normale variabile locale, tuttavia, non è adatta a questo scopo:

double gaussian(void) {
    double next_gaussian;

    /* ... */

    next_gaussian = z2;
    return z1;
}

La variabile next_gaussian viene creata ogni volta che la funzione viene chiamata e cessa di esistere quando la funzione termina. Il valore assegnato durante una chiamata non è quindi disponibile in quella successiva.

Per conservare il valore possiamo dichiarare la variabile locale mediante la parola chiave static:

static double next_gaussian = 0.0;

Una variabile locale static ha proprietà particolari:

Possiamo quindi implementare il generatore nel modo seguente:

double gaussian(void) {
    static int has_spare = 0;
    static double spare = 0.0;

    if(has_spare) {
        has_spare = 0;
        return spare;
    }

    double u1 = 1.0 - drand48();
    double u2 = drand48();

    double r = sqrt(-2.0 * log(u1));
    double theta = 2.0 * M_PI * u2;

    double z1 = r * cos(theta);
    double z2 = r * sin(theta);

    spare = z2;
    has_spare = 1;

    return z1;
}

Le due variabili statiche hanno ruoli differenti:

Durante la prima chiamata has_spare vale zero. La funzione genera quindi Z1Z_1 e Z2Z_2, restituisce Z1Z_1 e conserva Z2Z_2 in spare. Durante la seconda chiamata has_spare vale uno: la funzione restituisce immediatamente il valore conservato, senza generare nuovi numeri uniformi e senza valutare nuovamente logaritmo, seno e coseno (che sono tra le funzioni matematiche più “costose” in termini di cicli CPU). La terza chiamata genera una nuova coppia, la quarta usa nuovamente il valore conservato, e così via. Il costo della trasformazione di Box–Muller viene pertanto sostenuto una volta ogni due numeri gaussiani prodotti.

Se has_spare e spare non fossero static, verrebbero ricreate a ogni chiamata. In particolare, has_spare sarebbe inizializzata ogni volta a zero e l’istruzione condizionale

if(has_spare)

non sarebbe mai verificata.

2.5Dalla dinamica discreta all’equazione di diffusione

Indichiamo con P(x,t)P(x,t) la probabilità di trovare la particella nella posizione xx al tempo tt.

Per trovarsi in xx al tempo t+Δtt+\Delta t, al passo precedente la particella deve essersi trovata

La probabilità soddisfa quindi la master equation

P(x,t+Δt)=12P(xΔx,t)+12P(x+Δx,t).P(x,t+\Delta t) = \frac12P(x-\Delta x,t) + \frac12P(x+\Delta x,t).

Supponiamo ora che Δx\Delta x e Δt\Delta t siano sufficientemente piccoli (o, equivalentemente, che P(x,t)P(x,t) vari lentamente sulle scale microscopiche Δx\Delta x e Δt\Delta t). Possiamo allora sviluppare i due membri in serie di Taylor.

Per il membro sinistro,

P(x,t+Δt)=P(x,t)+ΔtPt+O(Δt2).P(x,t+\Delta t) = P(x,t) + \Delta t\frac{\partial P}{\partial t} + \mathcal{O}(\Delta t^2).

Per i due termini spaziali,

P(x±Δx,t)=P(x,t)±ΔxPx+Δx222Px2±Δx33!3Px3+O(Δx4).P(x\pm\Delta x,t) = P(x,t) \pm \Delta x\frac{\partial P}{\partial x} + \frac{\Delta x^2}{2} \frac{\partial^2P}{\partial x^2} \pm \frac{\Delta x^3}{3!} \frac{\partial^3P}{\partial x^3} + \mathcal{O}(\Delta x^4).

Sommando i due contributi, i termini dispari in Δx\Delta x si cancellano:

12[P(xΔx,t)+P(x+Δx,t)]=P(x,t)+Δx222Px2+O(Δx4).\frac12 \left[ P(x-\Delta x,t)+P(x+\Delta x,t) \right] = P(x,t) + \frac{\Delta x^2}{2} \frac{\partial^2P}{\partial x^2} + \mathcal{O}(\Delta x^4).

Inserendo gli sviluppi nell’equazione (59) si ottiene

P+ΔtPt=P+Δx222Px2+O(Δt2,Δx4).P + \Delta t\frac{\partial P}{\partial t} = P + \frac{\Delta x^2}{2} \frac{\partial^2P}{\partial x^2} + \mathcal{O}(\Delta t^2,\Delta x^4).

Eliminando il termine P(x,t)P(x,t) da entrambi i membri e dividendo per Δt\Delta t,

Pt=Δx22Δt2Px2+O(Δt,Δx4Δt).\frac{\partial P}{\partial t} = \frac{\Delta x^2}{2\Delta t} \frac{\partial^2P}{\partial x^2} + \mathcal{O} \left( \Delta t, \frac{\Delta x^4}{\Delta t} \right).

Ricordando la definizione di coefficiente di diffusione, eq. (22), possiamo prendere il limite al continuo, Δx0\Delta x\to0 e Δt0\Delta t\to0, ottenendo

P(x,t)t=D2P(x,t)x2.\frac{\partial P(x,t)}{\partial t} = D\frac{\partial^2P(x,t)}{\partial x^2}.

Questa è l’equazione di diffusione, formalmente identica all’equazione del calore. Si può dimostrare (ma noi non lo faremo) che la soluzione di questa equazione differenziale per una particella che si trova con certezza in x0x_0 al tempo iniziale[4] è

P(x,t)=14πDtexp[(xx0)24Dt].P(x,t) = \frac{1}{\sqrt{4\pi Dt}} \exp\left[ -\frac{(x-x_0)^2}{4Dt} \right].

Si tratta, e non è un caso, della stessa distribuzione gaussiana ottenuta applicando il teorema del limite centrale al random walk discreto, eq. (38).

La distribuzione è normalizzata,

+P(x,t)dx=1,\int_{-\infty}^{+\infty}P(x,t)\,dx=1,

e soddisfa

x(t)=x0,[x(t)x0]2=2Dt.\langle x(t)\rangle=x_0, \qquad \left\langle[x(t)-x_0]^2\right\rangle=2Dt.

Il random walk discreto e l’equazione di diffusione descrivono quindi la stessa fisica su scale differenti:

3L’equazione di Langevin

Il random walk descrive il moto browniano direttamente in termini di spostamenti casuali. Esiste però un secondo punto di vista, più vicino alla meccanica newtoniana: scrivere un’equazione del moto per la particella e rappresentare l’effetto del fluido mediante una forza dissipativa e una forza casuale.

Questo approccio fu introdotto da Paul Langevin all’inizio del Novecento. L’idea fondamentale consiste nel separare l’effetto delle molecole del fluido in due contributi:

  1. un termine di attrito, che tende a frenare la particella;

  2. una parte rapidamente fluttuante (detta spesso di rumore), dovuta al fatto che gli urti microscopici non si compensano mai esattamente.

In una dimensione l’equazione di Langevin più semplice è

md2xdt2=γv(t)+η(t),m\odd{x}{t} = -\gamma v(t) + \eta(t),

dove γ>0\gamma > 0 è il coefficiente di attrito e quindi γv(t)-\gamma v(t) è la forza dissipativa, e η(t)\eta(t) è una forza casuale che rappresenta gli urti con il fluido. La novità rispetto alle ODE considerate finora, come le equazioni differenziali dovute all’applicazione delle leggi di Newton, è che la forzante η(t)\eta(t) non è una funzione deterministica del tempo, e non può essere scritta in termini di x(t)x(t) e v(t)v(t). In questo caso, infatti, “risolvere l’equazione” significa ottenere una traiettoria che non è unica, ma dipende dalla realizzazione. Come per il random walk discreto, anche in questo caso il sistema va studiato in termini probabilistici.

Prima di introdurre il rumore ripassiamo l’effetto della dissipazione. Ponendo η(t)=0\eta(t) = 0 l’equazione diventa

md2xdt2=mdvdt=γv,m\odd{x}{t} = m\od{v}{t}=-\gamma v,

che ha soluzione

v(t)=v0eγt/m=v0et/τv,v(t)=v_0e^{-\gamma t/m} = v_0e^{-t/\tau_v},

dove abbiamo implicitamente definito il tempo di rilassamento della velocità come τv=mγ\tau_v=\frac{m}{\gamma}

La velocità iniziale viene quindi “dimenticata” su una scala temporale dell’ordine di τv\tau_v. Infatti, per tempi molto più brevi, tτvt\ll\tau_v, la velocità cambia poco e il moto è approssimativamente balistico. Per tempi molto più lunghi, tτvt\gg\tau_v, la memoria della velocità iniziale è persa e diventano dominanti gli effetti cumulativi delle fluttuazioni casuali.

Questa scala temporale è importante anche da un altro punto di vista: per risolvere numericamente la dinamica di un sistema con un termine di attrito, Δt\Delta t deve essere sufficientemente piccolo da poter risolvere correttamente il rilassamento, e quindi si deve avere Δtτv\Delta t \ll \tau_v.

3.1Il processo di Wiener

Per rappresentare la forza casuale è utile introdurre il processo di Wiener, il più famoso tra i processi stocastici, spesso indicato con W(t)W(t).

W(t)W(t) non è una funzione propriamente detta, e quindi non possiamo definirlo tramite un’espressione chiusa (per esempio attraverso la sua derivata). È invece caratterizzabile mediante i suoi incrementi. Consideriamo due istanti separati da un intervallo Δt\Delta t. L’incremento

ΔW=W(t+Δt)W(t)\Delta W = W(t+\Delta t)-W(t)

è una variabile aleatoria gaussiana con

ΔW=0\langle\Delta W\rangle=0

e

(ΔW)2=Δt.\langle(\Delta W)^2\rangle=\Delta t.

Dal punto di vista implementativo, l’incremento si può generare numericamente come

ΔW=ΔtR,\Delta W=\sqrt{\Delta t}\,R,

dove RR è una variabile normale standard (cioè di media nulla e varianza unitaria, RN(0,1)R\sim\mathcal{N}(0,1)). Data questa definizione, come per il random walk anche in questo caso gli incrementi associati a intervalli temporali distinti sono indipendenti.

In pratica, un processo di Wiener può essere costruito iterativamente:

Wn+1=Wn+ΔtRn,W_{n+1}=W_n+\sqrt{\Delta t}\,R_n,

con RnR_n indipendenti e distribuiti secondo una normale standard.

Questo è precisamente un random walk con passi gaussiani, che implica

WnW0=0\langle W_n-W_0\rangle=0

e

(WnW0)2=nΔt=tn.\left\langle(W_n-W_0)^2\right\rangle=n\Delta t=t_n.

La forza ideale η(t)\eta(t) varia su tempi arbitrariamente brevi e non deve essere interpretata come una normale funzione regolare. Conviene quindi, come fatto per il processo di Wiener, scrivere l’equazione direttamente in termini degli incrementi prodotti in un intervallo finito:

mΔv=γvΔt+σΔW,m \Delta v = -\gamma v \Delta t + \sigma\Delta W,

dove il parametro σ\sigma determina l’intensità delle fluttuazioni.

Come vedrete più avanti nel corso di Meccanica Statistica, considerando una particella in equilibrio con un fluido alla temperatura TT, il teorema di equipartizione richiede

12mv2=12kBT,\frac{1}{2}m\langle v^2\rangle = \frac{1}{2}k_{\mathrm B}T,

dove kBk_B è la costante di Boltzmann. Dissipazione e rumore non possono quindi essere scelti indipendentemente: l’energia sottratta alla particella dalla forza di attrito deve essere restituita dal sistema sotto forma di rumore. Non lo dimostriamo, ma la condizione di equilibrio termico fissa

σ=2γkBT.\sigma=\sqrt{2\gamma k_{\mathrm B}T}.

L’equazione di Langevin diventa quindi

mΔv=γvΔt+2γkBTΔW,m\Delta v = -\gamma v\Delta t + \sqrt{2\gamma k_{\mathrm B}T}\Delta W,

o, equivalentemente,

Δv=vτvΔt+2kBTmτvΔW=vτvΔt+2kBTmτvΔtR.\Delta v = -\frac{v}{\tau_v}\Delta t + \sqrt{\frac{2k_{\mathrm B}T}{m\tau_v}}\Delta W = -\frac{v}{\tau_v}\Delta t + \sqrt{ \frac{2k_{\mathrm B}T}{m\tau_v}\Delta t } R.

3.2Integrazione numerica con il metodo di Eulero

Discretizziamo il tempo, tn=nΔtt_n=n\Delta t. Applicando il metodo di Eulero all’equazione per la velocità otteniamo

vn+1=vnΔtτvvn+2kBTmτvΔtRn,v_{n+1} = v_n - \frac{\Delta t}{\tau_v}v_n + \sqrt{\frac{2k_{\mathrm B}T}{m\tau_v}\Delta t}R_n,

dove, come specificato sopra, gli RnR_n sono numeri casuali indipendenti estratti da una gaussiana di media nulla e varianza unitaria.

La posizione al passo successivo è quindi

xn+1=xn+vnΔt.x_{n+1}=x_n+v_n\Delta t.

Come per il random walk discreto, ogni esecuzione dell’algoritmo produce una diversa traiettoria. Le proprietà fisiche si ottengono mediando su molte realizzazioni oppure, sotto opportune condizioni, studiando una singola traiettoria sufficientemente lunga.

Come abbiamo ampiamente dimostrato in passato, il metodo di Eulero è semplice, ma soffre di problemi strutturali che possono spesso portare a comportamenti non fisici, indipendentemente dal valore id Δt\Delta t. Nel caso dell’equazione di Langevin, dimostriamo che la dinamica di Eulero non riproduce esattamente la distribuzione di equilibrio della velocità.

Considerando l’aggiornamento (90) e definendo q=1Δtτvq=1-\frac{\Delta t}{\tau_v}, possiamo calcolare la varianza della velocità, che evolve secondo

vn+12=q2vn2+2kBTmτvΔt.\langle v_{n+1}^2\rangle = q^2\langle v_n^2\rangle + \frac{2k_{\mathrm B}T}{m\tau_v}\Delta t.

In condizioni stazionarie la varianza deve rimanere costante, quindi

vn+12=vn2=v2Euler,\langle v_{n+1}^2\rangle=\langle v_n^2\rangle = \langle v^2\rangle_{\mathrm{Euler}},

da cui si ottiene

v2Euler=kBTm11Δt/(2τv)kBTm.\langle v^2\rangle_{\mathrm{Euler}} = \frac{k_{\mathrm B}T}{m} \frac{1}{1-\Delta t/(2\tau_v)} \neq \frac{k_B T}{m}.

La temperatura cinetica misurata numericamente è quindi leggermente più alta di quella desiderata. L’errore scompare nel limite

Δt0,\Delta t\to0,

ma è sempre presente, e può diventare visibile se il passo temporale non è sufficientemente piccolo. Questo fornisce un utile test numerico: variando Δt\Delta t, si può verificare se e come mv2m\langle v^2\rangle converga a kBTk_{\mathrm B}T.

3.3Dalla dinamica di Langevin alla diffusione

<Figure size 1200x480 with 2 Axes>

Figure 4:A sinistra: lo spostamento quadratico medio ottenuto risolvendo l’equazione di Langevin di parametri γ=1\gamma = 1, m=1m = 1, kBT=1k_B T = 1 integrata con il metodo di Eulero con Δt=0.01\Delta t = 0.01. I risultati sono stati ottenuti mediando su 10000 traiettorie. Le linee tratteggiate sono gli andamenti teorici balistico e diffusivo nei rispettivi regimi di validità. A destra: le distribuzioni degli spostamenti numeriche (linee continue) e teoriche (eq (38), linee tratteggiate) a t=10t = 10 e t=100t = 100.

La Figura 4 mostra alcuni risultati di simulazione ottenuti mediando molte traiettorie. Nel pannello di sinistra, che mostra lo spostamento quadratico medio, si può vedere come l’equazione di Langevin contenga sia il regime balistico sia quello diffusivo. Infatti, per tempi molto brevi rispetto a τv\tau_v, la velocità non ha ancora perso memoria del suo valore iniziale e

x(t)x0v0t.x(t)-x_0\simeq v_0t.

Di conseguenza,

[x(t)x0]2t2.\left\langle[x(t)-x_0]^2\right\rangle \propto t^2.

Per tempi molto lunghi rispetto a τv\tau_v, la velocità iniziale viene dimenticata e lo spostamento è il risultato della somma di molti contributi debolmente correlati. Si può dimostrare (ma non lo faremo) come in questo regime si ottenga allora il regime diffusivo,

[x(t)x0]22Dt.\left\langle[x(t)-x_0]^2\right\rangle \simeq 2Dt.

Il coefficiente di diffusione è legato all’attrito e alla temperatura dalla relazione di Einstein,

D=kBTγ.D=\frac{k_{\mathrm B}T}{\gamma}.

La dinamica di Langevin fornisce quindi un collegamento tra la descrizione microscopica in termini di velocità, attrito e fluttuazioni e la descrizione macroscopica in termini di diffusione.

3.4Possibili verifiche numeriche

Una simulazione dell’equazione di Langevin permette di verificare direttamente diversi risultati:

  1. La velocità media decade come

    v(t)=v0et/τv.\langle v(t)\rangle=v_0e^{-t/\tau_v}.
  2. A tempi lunghi la velocità soddisfa l’equipartizione,

    v2=kBTm.\langle v^2\rangle=\frac{k_{\mathrm B}T}{m}.
  3. Lo spostamento quadratico medio è balistico a tempi brevi,

    [x(t)x0]2t2,\left\langle[x(t)-x_0]^2\right\rangle\propto t^2,

    e diffusivo a tempi lunghi,

    [x(t)x0]2t.\left\langle[x(t)-x_0]^2\right\rangle\propto t.
  4. Nel regime diffusivo il coefficiente misurato soddisfa

    D=kBTγ.D=\frac{k_{\mathrm B}T}{\gamma}.
  5. Il metodo di Eulero converge al risultato corretto diminuendo Δt\Delta t, mentre l’aggiornamento esponenziale riproduce più accuratamente la distribuzione delle velocità anche a passi temporali maggiori.

Footnotes
  1. Brown era un botanico, e le prime osservazioni furono fatte utilizzando grani di polline.

  2. La distribuzione è ovviamente valida per i soli valori di xx accessibili al random walk.

  3. Oppure possiamo mantenere il numero distribuito in (0,1](0, 1] per evitare divergenze nel logaritmo, come viene fatto nella funzione di esempio riportata più in basso

  4. Questo tipo di condizioni iniziali si può scrivere formalmente come

    P(x,0)=δ(xx0),P(x,0)=\delta(x-x_0),

    dove δ(x)\delta(x) è la delta di Dirac, un oggetto matematico che verrà introdotto durante il corso di Modelli e Metodi Matematici della Fisica.