Monte Carlo stare

Transkrypt

Monte Carlo stare
Metoda Metropolisa
1 − E
P= e
Z
− E
Z =∑ e

Kanoniczna suma stanów

Prawdopodobieństwo wystąpienia
mikrostanu
U≡〈 E 〉=∑ P E =Z

Wartość średnia energii
−1
− E
E e
∑

Średnia wartość
d r A r  exp[−U r
∫
〈 A 〉=
N
N
∫ d r exp[−U  r ]
N
N
Ur 
1
=
kT
N
N
]
Energia oddziaływań
Odwrotność temperatury
N
r ={r 1, r 2,. .. , r N }
r i = x , y , z 
ri
Prawdopodobieństwo mikrostanu
Z≈∫ d r exp [− U  r ]
N
N
N
exp[− U  r ]
Pr =
Z
N
Z – suma stanów
Załóżmy, że potrafimy generować punkty zgodnie z rozkładem prawdopodobieństwa
P(rN). Wtedy liczba punktów pi generowanych na jednostkę objętości wokół punktu rN
jest równa MP(rN), gdzie M jest całkowitą ilością wygenerowanych punktów.
M
1
〈 A 〉≈ ∑ pi A r N 
M i=1
Rozważmy jak generować punkty w przestrzeni konfiguracyjnej z względnym
prawdopodobieństwem proporcjonalnym do czynnika Boltzmanna. Przygotowujemy
układ w konfiguracji rN, która oznaczamy jako o (old), która ma nieznikający czynnik
Boltzmanna. Exp[-
 U(o)]
Następnie generujemy próbną konfigurację r'N , która oznaczamy jako n (new), przez
dodanie małego losowego przesunięcia  do konfiguracji o. Czynnik Boltzmanna dla tej
nowej próbnej konfiguracji wynosi Exp[-
 U(n)]
Teraz musimy zdecydować czy zaakceptować nową konfigurację czy nie. Jest wiele
reguł mówiących jak podjąć taką decyzję aby spełniony był wiąz aby średnio
prawdopodobieństwo znalezienia układu w konfiguracji n było proporcjonalne do P(n).
Wyprowadźmy schemat Metropolisa do otrzymania prawdopodobieństwa przejścia z
konfiguracji o do n
o  n
o  n
 musi spełniać pewien oczywisty warunek: jeśli dojdzie się do i równowagowego, ten
rozkładu nie zostanie on już zniszczony.
W równowadze średnia liczba zaakceptowanych próbnych ruchów, których wynikiem
jest opuszczenie stanu o musi być równa liczbie zaakceptowanych ruchów próbnych z
wszystkich innych stanów n do stanu o.
Można narzucić jeszcze silniejszy warunek; mianowicie w równowadze średnia liczba
zaakceptowanych ruchów jest ze stanu o do jakiegokolwiek innego stanu n jest
dokładnie skasowana przez liczbę ruchów odwrotnych.
Ten warunek równowagi szczegółowej implikuje
Po o  n=Pn n o
Macierz przejścia  składa się z dwu członów. Pierwszy określa prawdopodobieństwo
prawdopodobieństwo przeprowadzenia ruchu próbnego od stanu o do stanu n.
 o n
Następny człon określa sposób w jaki akceptuj się bądź odrzuca nową konfigurację.
Prawdopodobieństwo zaakceptowania ruchu próbnego ze stanu o do stanu n
oznaczane jest przez.
acc  o  n
Stąd otrzymujemy
o  n=o  n×acc o  n
W oryginalnym schemacie Metropolisa  jest symetryczną macierzą
 o  n= n o
Dla symetrycznego  warunek równowagi szczegółowej wygląda następująco:
Po ×acc  o  n=P n×acc n  o
Stąd otrzymujemy
acc o  n P n
=
=exp{−[U n−U  o]}
acc n  o P o
Warunki Metropolisa
Oczywiście prawdopodobieństwo akceptacji nowej konfiguracji nie może przekraczać 1
acc  o  n=P n/ P o
PnP o
acc  o  n=1
Pn≥P o
Możliwy jest też inny wybór acc, ale oryginalny wybór Metropolisa et al. wydaje się
dawać bardziej efektywne próbkowanie przestrzeni konfiguracyjnej od większości
innych strategi, które zostały zaproponowane.
Podsumowanie
W schemacie Metropolisa prawdopodobieństwo przejścia od stanu o do stanu n dane
jest przez
o  n=o  n
Pn≥P o
o  n=o  n P n/ P o
PnP o
o  o=1−∑ o  n
n≠o
Nadal pozostaje zdefiniowanie macierzy  , ale wiemy, że macierz  musi być
symetryczna
Należy jeszcze zdefiniować jak zdecydować czy próbny ruch ma być zaakceptowany
czy odrzucony. Załóżmy, że wygenerowaliśmy próbny ruch ze stanu o do stan n z
U(n) > U(o). Ten ruch próbny powinien być zaakceptowany z prawdopodobieństwem
acc  o  n=exp {−[U n−U o ] }0
Aby zdecydować czy zaakceptować czy odrzucić ten ruch próbny, generuje się liczbę
losową z rozkładu jednorodnego w przedziale [0,1]. Oznaczmy tę liczbę przez  .
Prawdopodobieństwo tego, żeliczba losowa  jest mniejsza od acc(o -> n) jest równe
acc(o -> n). Dlatego akceptujemy ruch próbny jeśli  < acc(o -> n) a odrzucamy w
przeciwnym razie. Ta reguła gwarantuje, że prawdopodobieństwo akceptacji ruchu
próbnego z konfiguracji o do n jest rzeczywiście równe acc(o - > n).
Bardzo ważna jest jakość generatora liczb losowych, aby generowane liczby losowe
były rzeczywiście jednorodnie rozłożone w przedziale [0,1]. W przeciwnym wypadku
próbkowanie Monte Carlo będzie wypaczone.
Procedura Monte Carlo
●
Stwarzamy konfigurację początkową
●
Wprowadzamy zaburzenie tej konfiguracji
●
●
●
Sprawdzamy czy można zaakceptować nową
konfigurację zgodnie z odpowiednim
prawdopodobieństwem
Jeśli nowa konfiguracja nie jest zaakceptowana
wtedy stara konfiguracja jest liczona jako nowa
Wprowadzamy zaburzenie nowej konfiguracji
Układ w kontakcie z termostatem
T
Otoczenie
N,V
Układ
T – temperatura
N – liczba cząsteczek
V - objętość
Współrzędne cząsteczek
x(i),y(i)
1
2
3
4
5
6
E1≠ E2=E3= E4≠ E5≠E 6
6
1
〈 E〉= ∑ Ei
6 i=1
Wybór cząsteczki do przesunięcia
N – ilość cząsteczek
Losujemy indeks cząsteczki, która będzie przesuwana – i
i=[⋅N ]1
Podłoga (część całkowita, cecha, entier) liczby rzeczywistej x, oznaczana , [x], Ent(x)
lub E(x) to największa liczba całkowita nie większa od x. Symbolicznie:
⌊ x ⌋=max {k , k ∈ ℤ: k≤x }
Wybór cząsteczki do przesunięcia
FORTRAN
i = IDINT( DBLE( N ) * RAN(dummy)) + 1
Funkcja INT(A)
jeśli |A| < 1 wtedy INT(A) = 0
w przeciwnym razie INT(A) jest liczbą całkowitą, której wartość jest największą liczbą
całkowitą, która nie przekracza wartości A i której znak jest taki sam jak znak A
Podstawiamy współrzędne wylosowanej cząsteczki
x old =x i
y old = y i
Przesunięcie
y
x new =x old 2 1−1d max
y new = y old 22−1 d max
y new
y old
x old
x new
x
 x old , y old    x new , y new 
2dmax
Przesunięcie
P
x new =x old 2 −1 d max
Wydajność symulacji zależy od wartości dmax .
Wartość dmax jest dobierana eksperymentalnie.
ξ - zmienna losowa
dmax – maksymalne przesunięcie
0≤≤1
Wartość maksymalnego przesunięcie dmax dobiera się metodą prób i błędów, tak aby
prawdopodobieństwo akceptacji nowych konfiguracji wynosiło 50%
Periodyczne warunki brzegowe
Układ
Repliki
Układ jest otoczony przez repliki tego układu
Aby badać fazy objętościowe układ jest otoczony swoimi replikami, dzięki czemu
można założyć, że układ składający się z N cząsteczek jest otoczony przez
nieskończoną liczbę cząsteczek.
Jeśli cząsteczka opuściła granice pudła symulacyjnego stosujemy periodyczne warunki
brzegowe.
IF (xnew .LT. 0.0) THEN
xnew = xnew + L
ELSEIF( xnew .GT .L) THEN
xnew = xnew - L
ENDIF
IF (ynew .LT. 0.0) THEN
ynew = ynew + L
ELSEIF( ynew .GT. L) THEN
ynew = ynew - L
ENDIF
L – długość boku pudła symulacyjnego
(xnew,ynew) – współrzędne przesuniętego punktu
FORTRAN
Sprawdzamy czy cząsteczka
pokrywa się z innymi
DO j = 1, i-1
xd = xnew - x(j)
yd = ynew - y(j)
INCLUDE 'MI.inc'
IF ( r2 .LT. 2 ) GO TO 8870
ENDDO
DO j = i+1, N
xd = xnew - x(j)
yd = ynew - y(j)
INCLUDE 'MI.inc'
IF ( r2 .LT. 2 ) GO TO 8870
ENDDO
MI.inc
IF ( xd .GT. L/2.) THEN
xd = xd - L
ELSEIF ( xd .LT. - L/2. ) THEN
xd = xd + L
ENDIF
IF ( yd .GT. L/2. ) THEN
yd = yd - L
ELSEIF ( yd .LT. -L/2. ) THEN
yd = yd + L
ENDIF
r2 = xd*xd + yd*yd
Minimum image convention
1. Przesuwamy cząsteczkę
2. Stosujemy periodyczne warunki
brzegowe
3. Sprawdzamy czy cząsteczka
nie pokrywa się z innymi
cząsteczkami
Cząsteczka po przesunięciu pokrywa się z inną cząsteczką w pudle symulacyjnym
1. Przesuwamy cząsteczkę
2. Stosujemy periodyczne warunki
brzegowe
3. Sprawdzamy czy cząsteczka
nie pokrywa się z innymi
cząsteczkami
Cząsteczka po przesunięciu nie pokrywa się z żadną cząsteczką w pudle symulacyjnym, ale ...
... ale pokrywa się z obrazem
jednej z cząsteczek.
Minimalny obraz
Centrum pudła symulacyjnego ustawia się
w miejscu, w którym znajduje się wybrana
cząsteczka.
Oblicza się oddziaływania wybranej
cząsteczki z cząsteczkami znajdującymi
się w pudle symulacyjnym oraz w
obrazach pudła symulacyjnego.
Potencjał twardych kul
Twarde dyski (kule)
{
0 , r 
U r =
∞ , r 
r – odległość między kulami
U - energia
Potencjał Lenard-Jonesa
[    ]

u r 12=4
r 12
Energia
ε
σ
Odległość
12

−
r 12
6
Schemat Metropolisa
acc o  n=min {1,e
{
1
acc o  n=
0
−U
,
,
Uold – energia przed zaburzeniem układu
Unew – energia po zaburzeniu układu
β – odwrotność temperatury
new
−U
old

}
Płyn Lenard-Jonesa
Płyn twardych kul

Podobne dokumenty