Sei sulla pagina 1di 14

Fisica Computazionale - Esercitazioni

E. Onofri
Dipartimento di Fisica
Università di Parma
onofri@unipr.it, www.fis.unipr.it/∼onofri

29 gennaio 2004

Sommario
I problemi che sono illustrati qui di seguito costituiscono delle esercitazioni di
fine corso. Ci saranno quindici giorni di tempo per elaborare un rapporto su uno dei
problemi scelti a piacere dallo studente.

– Typeset by FoilTEX –
unipr/fisica 2001/02

1. Modello di Ehrenfest
2. Simulazione del modello di Ising2 con il metodo di Metropolis
3. Dinamica del moto della Luna (problema dei tre corpi) con Matlab
4. Ricerca di zeri di funzioni in campo complesso con il metodo di Newton
5. Simulazione del moto Browniano in campo di gravità.
6. Catena lineare di oscillatori non lineari (Fermi-Pasta-Ulam) ed equipartizione
dell’energia.
7. Determinazione della configurazione di equilibrio per N particelle vincolate ad una sfera
P −µ
con energia potenziale U = i<j |r i − r j | , con µ = 1, 2, 3....

– Typeset by FoilTEX – 1
unipr/fisica 2001/02

Modello di Ehrenfest

Il modello di Ehrenfest è uno dei più semplici processi stocastici (tecnicamente una
catena di Markov) di cui si possono studiare in dettaglio le proprietà statistiche. Il modello
consiste in due urne, diciamo L (left) e R (right) in cui vengono inizialmente disposte in
modo arbitrario N palle da biliardo identificate con un numero n = 1, 2, ..., N . Ad
ogni secondo viene estratto un numero a caso compreso tra 1 e N ; la palla che porta
il numero estratto viene spostata dall’urna in cui si trova all’altra. Il problema consiste
nel determinare la probabilità P (n, k, t) di trovare NL(t) = n palle nell’urna L dopo t
secondi sapendo che inizialmente NL (0) = k.

Scrivere un programma Matlab per simulare il processo e cercare di determinare la


funzione P (n, k, t) per t molto grande. Si chiede: il processo tende all’equilibrio? Cioè,
si chiede se esiste la distribuzione limite di probabilità P (n, k, ∞)?

Si può esplorare il problema per piccoli valori di N (10 − 20) e poi passare a valori più
interessanti (N = 1000 − 10000). Si ricordi che il processo è determinato dalla matrice
stocastica P che permette di esprimere la distribuzione di probabilità all’istante t + 1 nota

– Typeset by FoilTEX – 2
unipr/fisica 2001/02

quella all’istante t:
p(t + 1) = P p(t)
e la matrice P si costruisce facilmente tenendo conto che l’estrazione del numero della
palla è del tutto casuale (probabilità = 1/N ).

Per studiare i casi con dimensione alta è conveniente rappresentare la matrice P con
una “matrice sparsa”.

Provare a determinare il valore medio del numero di palle NL per tempi molto alti e
la deviazione standard. Come variano con N ?

Il problema si presta ad una soluzione esatta, che è la seguente (M. Kac, in “Selected
Papers on Noise and Stochastic Processes”, Dover, 1954):

La probabilità Pn(t) di avere n palle nella prima urna varia nel tempo secondo
l’equazione
N −n+1 n+1
Pn(t + 1) = Pn−1(t) + Pn+1 (t)
N N

– Typeset by FoilTEX – 3
unipr/fisica 2001/02
PN
(spiegare perché). Se si definisce il polinomio ρ(x, t) = n=0 Pn (t)xn , l’equazione
precedente diventa

1 X n
X N −n+1 n
ρ(x, t + 1) = Pn+1(t)(n + 1)x + Pn−1(t) x
N N

Ora, è sempre possibile, e spesso risulta utile, sostituire

d n
nxn → x x
dx

Si ottiene cosı̀

2 d
N ρ(x, t + 1) = N xρ(x, t) + (1 − x ) ρ(x, t)
dx

In condizioni di equilibrio ρ(x, t + 1) = ρ(x, t) si ha allora

d
N (1 − x)ρ(x, t) = (1 − x2 ) ρ(x, t)
dx

– Typeset by FoilTEX – 4
unipr/fisica 2001/02

ossia
d N
ρ(x, t)/ρ(x, t) =
dx 1+x
che ha soluzione
N
ρ(x, t) = N (1 + x)
. La probabilità Pn all’equilibrio è allora
N 
Pn = N
n

e la condizione di normalizzazione ci dà N = 2−N . Si lascia come esercizio dimostrare


che < n >= N/2, < n2 > − < n >2 = N/4, dove < f (n) >=
P
Pnf (n) indica
il valore medio sulla distribuzione di probabilità all’equilibrio. Il programma numerico deve
riprodurre questi risultati.

– Typeset by FoilTEX – 5
unipr/fisica 2001/02

Ricerca di zeri di funzioni in campo complesso con il metodo di


Newton

Il metodo di Newton per funzioni differenziabili di variabile reale consiste nella ricerca
di zeri attraverso la successione

f (xn )
xn+1 = xn −
f ′ (xn )

Se la successione converge, il limite soddisfa f (x∞ ) = 0 e la convergenza è molto


rapida. Il metodo si può tentare di applicare in campo complesso, dove la successione
è identica tranne che per la sostituzione xn → zn. Nel caso reale si può essere certi
della presenza di uno zero in un dato intervallo (a, b) se la funzione cambia segno
f (a)f (b) < 0. In campo complesso si deve fare uso del teorema del logaritmo indicatore
secondo cui per una funzione regolare in un dominio D il numero di zeri è pari a

1 f ′(z)
I
NZ = dz
2πi f (z)

– Typeset by FoilTEX – 6
unipr/fisica 2001/02
.

Scrivere un programma Matlab che 1) calcola NZ con il metodo del logaritmo


indicatore per un prefissato rettangolo in campo complesso e 2) applica l’algoritmo di
Newton in parallelo su una matrice di punti zn,m scelti uniformemente all’interno del
rettangolo, eliminando via via i punti che escono dal rettangolo.

– Typeset by FoilTEX – 7
unipr/fisica 2001/02

Simulazione del moto Browniano in campo di gravità

Si consideri il moto di una particella browniana in un recipiente di altezza h tenendo


conto dell’azione del peso; il problema consiste nel determinare la soluzione dell’equazione
stocastica
dz(t) = −V dt + σdw(t)
rispettando il vincolo 0 < z < h; V è la velocità limite in presenza di gravità e di viscosità
(V = mg/η ), dw è l’incremento del moto Browniano √ standard (w(t + ∆t) − w(t) cioè
una variabile pgaussiana di media zero e varianza ∆t) e σ è il coefficiente di diffusione
di Einstein ( (RT /6πaη)). Si tratta di realizzare un programma in C o in Matlab
per risolvere l’equazione utilizzando un generatore di sequenze pseudocasuali (randn) che
permetta di simulare il moto Browniano e individuare le corrette condizioni al contorno
z = 0 (l’altra condizione z < h si può ignorare considerando h molto grande rispetto
a quella che risulterà essere l’altezza media raggiunta dalla particelle browniana e che per
ragioni dimensionali deve essere dell’ordine di σ 2/V ). La condizione al contorno z > 0
si può rispettare considerando il problema equivalente privo di vincoli ma simmetrizzato
rispetto a z = 0, ossia
dz(t) = −V ε(x)dt + σdw(t)

– Typeset by FoilTEX – 8
unipr/fisica 2001/02

avendo indicato con ε(x) il segno di x. Alternativamente si può introdurre una condizione
di riflessione quando z raggiunge z = 0. Esplorare quale sia la soluzione più efficiente (e
giusta).

Omettendo i dettagli il programma sarà a grandi linee:

• Inizializzare le costanti: V, z(0), intervallo temporale (τ ) e numero totale di passi


temporali (Nτ ).
• Inizializzare il generatore di numeri casuali (seed).

• Loop (while(t<Tmax )), t = t + τ ; w = randn(); z = z − V τ ε(z) + τ w;
end(loop)
• salvare z(T ) e ricominciare un’altra traiettoria
• analizzare l’insieme di valori {z(T )} e cercare la distribuzione di probabilità
• Determinare analiticamente la distribuzione di probabilità e confrontarla con i dati
MonteCarlo

– Typeset by FoilTEX – 9
unipr/fisica 2001/02

Catena lineare di oscillatori non lineari (Fermi-Pasta-Ulam) ed


equipartizione dell’energia.

Il problema consiste nello studio della dinamica di un sistema con N particelle di


massa uguale m che interagiscono attraverso forze elastiche più forze anelastiche: le
equazioni del moto sono

mẍ1 = k(x2 − 2x1 ) + α((x2 − x1)2 − x21 )


2 2
mẍ2 = k(x3 − 2x2 + x1 ) + α((x3 − x2 ) − (x2 − x1 ) )
2 2
mẍ3 = k(x4 − 2x3 + x2 ) + α((x4 − x3 ) − (x3 − x2 ) )
.........
2 2
mẍN −1 = k(xN − 2xN −1 + xN −2 ) + α((xN − xN −1) − (xN −1 − xN −2) )
2 2
mẍN = k(−2xN + xN −1) + α(xN − (xN − xN −1) )

Per α = 0 il sistema lineare esegue oscillazioni quasi–periodiche con frequenze determinate

– Typeset by FoilTEX – 10
unipr/fisica 2001/02

dall’equazione

2 2 2
−mω x1 = k(x2 − 2x1 ) + α((x2 − x1 ) − x1 )
2 2 2
−mω x2 = k(x3 − 2x2 + x1 ) + α((x3 − x2) − (x2 − x1 ) )
−mω 2 x3 = k(x4 − 2x3 + x2 ) + −α((x4 − x3 )2 − (x3 − x2 )2 )
......
2 2 2
−mω xN −1 − = k(xN − 2xN −1 + xN −2) + α((xN − xN −1) − (xN −1 − xN −2) )
−mω 2xN = k(2xN + xN −1) + −α(x2N − −(xN − xN −1)2 )

le cui soluzioni sono date dalle radici dell’equazione det(K − ω 2I) = 0 dove K è la

– Typeset by FoilTEX – 11
unipr/fisica 2001/02

matrice  
2 −1 0 0 ... 0
−1 2 −1 0 ... 0 
 
k 
 0 −1 2 −1 ... 0 

 .. ... ... ... ... ... 
m . 
 0 0 ... −1 2 −1
 
0 0 0 ... −1 2
Trovare le radici (frequenze proprie di oscillazione). Lo studio della dinamica si può
effettuare in Matlab utilizzando le routines ode45 o ode113. Il vettore di stato è costituito
da  
x1
 ẋ 
 1
x 
 2
y =  ẋ2 
 
. . .
 
xN 
 
ẋN
e l’unico lavoro consiste nel tradurre le equazioni del moto in una routine (diciamo

– Typeset by FoilTEX – 12
unipr/fisica 2001/02

fpu.m) da invocare con odexx. Si studino le caratteristiche del moto dal punto di vista
della distribuzione dell’energia tra i vari modi normali di oscillazione. Per N grande e
tempi grandi ci si aspetta, secondo la meccanica statistica, l’equidistribuzione dell’energia.
Fermi, Pasta e Ulam furono i primi a esplorare questo problema a Los Alamos e trovarono
deviazioni significative dalla equipartizione. I modi normali sono definiti da

N
X
ξα = sin(nπα/N ) xn
n=1

e l’energia di ciascun modo normale è dato da 12 mξ̇ 2 + 21 mωα2 ξ 2 .

– Typeset by FoilTEX – 13

Potrebbero piacerti anche