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 Ur 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 ] Pr = 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 Po o n=Pn 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: Po ×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 PnP o acc o n=1 Pn≥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 Pn≥P o o n=o n P n/ P o PnP 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−1d max y new = y old 22−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