Monte Carlo módszerek a statisztikus fizikában. Az Ising modell. 8. előadás
PI KISZÁMOLÁSI JÁTÉKOK A TENGERPARTON egy kört és köré egy négyzetet rajzolunk véletlenszerűen kavicsokat dobálunk megszámoljuk: - a négyzetben levő kavicsokat - a kör belsejében levő kavicsokat Ncircle =4 Nsquare Werner Krauth: Introduction to Monte Carlo algorithms
PI KISZÁMOLÁSI JÁTÉKOK A HELIKOPTER LESZÁLLÓPÁLYÁN a területen állunk valahol és véletlen irányban egy kavicsot eldobunk elsétálunk a kavicshoz a folyamatot ismételjük Ncircle =4 Nsquare probléma: mit teszünk, ha a kavics a négyzeten kívül landol? Werner Krauth: Introduction to Monte Carlo algorithms
ALAPVETŐ MONTE CARLO MEGKÖZELÍTÉSEK 1. Direkt mintavételezés: egy független mintahalmazt generálunk 2. Markov-lánc mintavételezés: a minták szekvenciális generálása Pénzérmék a cipősdobozban.
RÉSZLETES EGYENSÚLY (DETAILED BALANCE) egyszerűsített, diszkrét 3x3as kavics játék a kavicsot egy lépésben a 4 szomszédos irány valamelyikébe dobjuk sok iteráció után minden mezőt azonos mennyiségű kaviccsal kell megtöltsünk
RÉSZLETES EGYENSÚLY (DETAILED BALANCE) 3X3- AS KAVICSJÁTÉK rácspont meglátogatási valószínűségek: (a), (b), etc. rácspont-váltási valószínűségek: p(a! b), p(a! c), etc. normalizálás: valószínűségek kapcsolata: p(a! a) + p(a! b) + p(a! c) = 1 (a) = (b)p(b! a) + (c)p(c! a) + (a)p(a! a) részletes egyensúly: (a)p(a! b) = (b)p(b! a) (a)p(a! c) = (c)p(c! a) itt a rácspont meglátogatási valószínűségek egyenlőek, következésképpen az összes átmeneti valószínűségek egyenlőek kell legyenek > a sarkokban helybenmaradás esetén is kavicsot kell hagynunk > BIZONYOS LÉPÉSEK ELUTASÍTÁSA ez elégséges, de nem szükséges feltétel!
A METROPOLIS ALGORITMUS Bizonyos lépések elutasítása az alapvető mechanizmus arra, hogy a Monte Carlo algoritmusok a helyes rácspont meglátogatási valószínűségeket biztosítsák. Az elutasítás költséges, de nem hiábavaló (ezek a kavicsok is beszámolódnak). A 3x3-as kavics-játékban a rácspontok meglátogatási valószínűsége egyenlő. Általában ez nem igaz, azaz (a) 6= (b) A részletes egyensúly betartásával az átmeneti valószínűségeket a Metropolis algoritmussal generálhatjuk: N. Metropolis, A. W. Rosenbluth, M. N. Rosenbluth, A. H. Teller, E. Teller, J. Chem. Phys. 21, 1087 (1953) (b) Az algoritmus bizonyos p(a! b) = min 1, (a) valószínűséggel fogadja el a->b-be való lépést.
VÉLETLEN BOLYONGÁS ALGORITMUS VÉLETLEN SZÁMOK GENERÁL ÁSA MEGHATÁROZOTT VALÓSZÍNŰSÉGELOSZL ÁSSAL kiindulunk az x0 pontból rögzítjük a maximális δ lépéshosszt egy adott xi pontban a következő lépést az alábbi módon generáljuk: választunk egy xt próbalépést az [xi-δ, xi+δ] intervallumból kiszámoljuk a w = P(xt)/P(xi) arányt HA w > 1 > xi+1 = xt HA w < 1 generálunk egy r egyenletes eloszlású véletlenszámot a [0, 1] intervallumon HA r < w > xi+1 = xt KÜLÖNBEN > xi+1 = xi
Démon algoritmus az ideális gázra időátlag fizikai mennyiségek átlagértéke sokaságátlag E, V, N pl. molekuláris dinamika Monte Carlo módszerek Módszer: Creutz dolgozta ki a háló mértékelmélet alapján egy extra szabadságfokot adunk a rendszerhez démon a démon energiát ad/vesz el, hogy megváltoztassa a rendszer dinamikai változóit ha a rendszer energiája csökken, a vátozás energiáját a démon kapja ha a rendszer energiája nő, a változást a démon adja, ha van neki elegendő megj. a démonnak nem lehet az energiája negatív Algoritmus: 1. Választunk véletlenszerűen egy részecskét és próbából megváltoztatjuk sebességét. 2. Kiszámoljuk a változás miatt bekövetkező ΔE energiaváltozást. 3. Ha ΔE 0, a rendszer a ΔE energiát a démonnak adja, akinek az energiája E d = E d ΔE lesz és a változást elfogadjuk. 4. Ha ΔE > 0, és a démonnak elegendő energiája van (E d ΔE), akkor a démon adja a szükséges energiát (E d = E d ΔE) és a változást elfogadjuk. Ha a démonnak nincselég energiája, a próba konfigurációt elvetjük és a rendszer állapota változatlan marad. Megj. Egy Monte Carlo lépés annyi próbálkozást jelent, ahány részecske van a rendszerben.
MC a statisztikus fizikában vizsgált mennyiség eloszlásfüggvény állapottér eleme teljes állapottér rendszer Hamiltonfüggvénye Fontossági mintavételezést használunk az integrálok számítására. Jól megválasztott P(x)-el:
Metropolis MC szimuláció kanonikus sokaságban (Boltzmann statisztika) Egy mennyiség átlagértéke T hőmérsékleten: fontossági mintavételezés f ( H [] x ) e H k [ x ] B T KIINDULÁS: a rendszer kezdetben a 0. állapotban van ε 0, A 0 lenullázzuk a következőket: N MC próbálkozások száma A össz a tanulmányozottmennyiségösszege ALGORITMUS: véletlenszerűen megváltoztatjuk a rendszer állapotát i. -ből i+1. -be ε ι+1, A i+1 növeljük N-et összehasonlítjuk az ε ι+1 és az ε ι energiákat HA ε ι+1 < ε ι A össz = A össz + A i+1 HA ε ι+1 > ε ι generálunk egy r véletlen számot az egyenletes eloszlású [0, 1]-ből HA exp{-(ε i+1 ε i )/(k B T)} > r A össz = A össz + A i+1 KÜLÖNBEN A össz = A össz + A i Figyelem! A szimuláció elején a tranziens időszakban a mennyiséget nem összegezzük (nem vesszük bele az átlagérték számításba).
Ising modell anyagok mágnesességének tanulmányozása a mágnesezettség eredete: töltött részecskék mozgása zárt pályákon Ampere törvény töltött részecskék saját tengely körüli forgása mágneses momentum egyszerű klasszikus közelítés Ising spin 2D mágnes egy spin csakis a négy legközelebbi szomszédjával hat kölcsön (~r -3 ) kölcsönhatási energia: J > 0 ferromágneses rendszer J < 0 antiferromágneses rendszer mágnesezettség:
Ferromágnesség, paramágnesség és a Curie hőmérséklet H = 0 két fázis lehetséges T függvényében Curie hőmérséklet ferromágneses paramágneses ferromágnes-paramágnes fázisátalakulás d>2 (magasabb dimenziókban) másodrendű fázisátalakulás, rend-rendezetlenség fázisátalakulás 2D 3D T c = 2.269 J/k B egzaktul megoldható T c = 4.44 J/k B szimulációs eredmény négyzetrácson
Monte Carlo szimuláció FELADAT: véletlenszerűen generálni egy konfiguráció halmazt (minta) a lehetséges állapotok teréből (konfigurációs tér) egy bizonyos valószínűségi eloszlás szerint, és kiszámítani a megfigyelt mennyiség átlagértékét (pl. mágnesezettség) a minták alapján kofiguráció, vagy minta: mágnesezettség átlagolása Boltzmann statisztika alapján konfigurációs tér: óriási még kevés spin esetében is 20x20-as rács: N s = 400 lehetséges konfigurációk száma: 2 400 = 2.58 x 10 120 1millió konfiguráció/s 8.8 x 10 103 év!!!
Monte Carlo szimuláció valószínűség-eloszlás, súlyfüggvény: fontossági mintavételezés, a Boltzmann-faktor alapján Monte Carlo átlagérték: generálunk N független konfigurációt a Boltzmann-faktor alapján a mágnesezettség és az energia átlagértékei fajhő és mágneses szuszceptibilitás átlagértékei
Monte Carlo szimuláció - átlagértékek
Monte Carlo szimuláció - átlagértékek
Monte Carlo szimuláció - átlagértékek 0
Monte Carlo szimuláció Hogyan generáljunk mintákat a Boltzmann faktor alapján? pl. METROPOLIS algoritmus kiindulunk egy adott konfigurációból kiválasztunk egy spint: s i próbából megfordítjuk: s i,próba = -s i kiszámítjuk a rendszer energiaváltozását: ΔE = E(s 1,...,s i,próba,...s N ) E(s 1,...,s i,...s N ) generálunk egy r egyenletes eloszlású véletlenszámot HA w = e ΔE k T B > ismételjük ezeket a lépéseket r s i = s i,próba MEGJEGYZÉSEK: egy MC lépés N próbálkozás akármilyen kezdeti állapotból kiindulva a rendszert néhány MC lépésen át hagyjuk termalizálódni, az átlagértékeket csak ezután kezdjük számolni erős végesméret effektus periodikus határfeltételek használata
Monte Carlo szimuláció ALGORITMUS: rögzítünk egy adott T hőmérsékletet rögzítünk egy kezdeti spinkonfigurációt (pl. véletlenszerűen) több MC lépést végzünk a rendszer termalizálására nagyszámú MC lépésre kiszámoljuk az E, E 2, M, M 2 átlagértékeket rögzítjük az <m(t)>, <E(T)>, <C v (T)> és <χ(t)> átlagértékeket megváltoztatjuk a T hőmérsékletet és megismételjük az algoritmust ábrázoljuk az átlagértékeket a hőmérséklet függvényében
Monte Carlo szimuláció a w exponenciális faktor számítása: számítsuk ki előre a H és T ismeretében!!! w = e ΔE k B T exp függvény számolás minden lépésben lassú 4 szomszéd összege j szomszédok j s j x,j y megszorozva a spin értékével ha H 0 +2H vagy -2H s j x 1, j y s j x 1, j y s j x,j y 1 s j x,j y 1 s i j szomszédok s j 10 lehetséges érték w-re double w[17][3];... for (int i = -8; i <= 8; i += 4){ w[i+8][0] = exp( - (i * J + 2 * H) / T ); w[i+8][2] = exp( - (i * J - 2 * H) / T ); } +4 +2 0-2 -4 ugyanazok az értékek w 8 2 s i j szomszédok s j 1 s i
Monte Carlo szimuláció Periodikus határfeltételek: int Lx, Ly; // spinek száma x és y irányban... // véletlenszerűen kiválasztjuk az i,j -vel jellemzett spint int iprev = i == 0? Lx-1 : i-1; int inext = i == Lx-1? 0 : i+1; int jprev = j == 0? Ly-1 : j-1; int jnext = j == Ly-1? 0 : j+1; int sumneighbors = s[iprev][j] + s[inext][j] + s[i][jprev] + s[i][jnext];...