Monte Carlo integrálás Bevezetés Egyszerű mintavétel Talál – nem talál módszer Fontossági mintavétel
Számítógépes modellezés Bevezetés Integrálok hatékony kiszámítása számos anyagtudományi problémánál lényeges. Egy közelítő integrálkiszámítási módszert fogunk megismerni, mely véletlen számokat használ az algoritmus során. innen ered a neve is („szerencsejáték”) Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Bevezetés Minden olyan szimulációt (nem feltétlen számítógépes) Monte Carlo szimulációnak nevezünk, mely véletlen számokat használ az algoritmus során. Sztochasztikus szimulációnak is nevezik, mert nem eleve elrendelt (determinisztikus) a végeredmény. Az ötlet maga sokkal régebbi, mint a számítógép. Buffon (1707 - 1788) : Egy 𝑑 távolságban vonalazott lapra ha ráejtünk egy 𝑙 hosszúságú tűt. Mekkora a valószínűsége, hogy a tű keresztez egy vonalat? Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Bevezetés 𝑑 𝑙 𝑃= 2𝑙 𝜋𝑑 Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Bevezetés Lazzarini (1901) meghatározta 𝜋-t 3408 dobásból.* 𝜋= 355 113 =3.1415929 Monte Carlo lépés szimulált válasz válasz kívánt válasz MC lépés * https://en.wikipedia.org/wiki/Buffon's_needle Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Bevezetés A „Numerikus számolás alapjai” anyagrészben tárgyaltuk a határozott integrálok kiszámításának numerikus közelítő módszerét. A legegyszerűbben az integrálközelítő összeget használhatjuk erre a célra, azaz Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Bevezetés az [a, b] intervallumot n elemi intervallumra osztjuk n-1 tetszőlegesen választott x1, x2, ..., xn-1 ponttal. Választunk egy 𝜉 𝑖 pontot minden intervallumban vagy annak a szélén. Ebben az esetben az f(x) függvény [a, b] intervallumon vett határozott integrálja: 𝐼= 𝑖=1 𝑛 𝑓 𝜉 𝑖 Δ 𝑥 i ahol Δ 𝑥 𝑖 = 𝑥 𝑖 − 𝑥 𝑖−1 . Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Bevezetés Ha a beosztás egyenközű, akkor Δ 𝑥 𝑖 = 𝑏−𝑎 𝑛 bármely i-re. Azaz 𝐼= 𝑏−𝑎 𝑛 𝑖=1 𝑛 𝑓 𝜉 𝑖 Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Bevezetés Ez az integrálszámítás kiterjeszthető 𝑀 dimenzióra is ekkor 𝑀 db intervallumunk van [a1, b1], [a2, b2], …, [aM, bM] és az eljárás ugyanaz, mint 1D-ben, így 𝐼= 𝑏 1 − 𝑎 1 𝑏 2 − 𝑎 2 … 𝑏 𝑀 − 𝑎 𝑀 𝑛 1 𝑛 2 … 𝑛 𝑀 𝑖 1 =1 𝑛 1 𝑖 2 =1 𝑛 2 … 𝑖 𝑀 =1 𝑛 𝑀 𝑓 𝜉 𝑖 ahol 𝜉 𝑖 =( 𝜉 1 , 𝜉 2 ,…, 𝜉 𝑀 ) Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Bevezetés Kicsit tömörebben: 𝐼= 𝑉 𝑀 𝑖 1 =1 𝑛 1 𝑖 2 =1 𝑛 2 … 𝑖 𝑀 =1 𝑛 𝑀 𝑓 𝜉 𝑖 𝑛 = 𝑉 𝑀 𝑓 𝜉 𝑖 ahol 𝑛≡ 𝑛 1 𝑛 2 … 𝑛 𝑀 az összes pontok száma 𝑉 𝑀 ≡ 𝑏 1 − 𝑎 1 𝑏 2 − 𝑎 2 … 𝑏 𝑀 − 𝑎 𝑀 az 𝑀 dimenziós intervallumdoboz térfogata 𝑓 𝜉 𝑖 ≡ 𝑖 1 =1 𝑛 1 𝑖 2 =1 𝑛 2 … 𝑖 𝑀 =1 𝑛 𝑀 𝑓 𝜉 𝑖 𝑛 ≡ 𝑖=1 𝑛 𝑓 𝜉 𝑖 𝑛 , azaz 𝑓 𝜉 𝑖 átlaga Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Bevezetés Mindez még tovább egyszerűsíthető, ha a 𝜉 𝑖 pontokat sem tetszőlegesen választjuk az intervallumokban, hanem egyenközűen, a Δ𝑥 intervallumok közepére. Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Egyszerű mintavétel A Monte Carlo integrálás alapötlete, hogy egyenközű intervallumok, vagy egyenközűen elosztott 𝜉 𝑖 -k helyett válasszuk ki véletlenszerűen (egyenletes eloszlású véletlen számokkal) a 𝜉 𝑖 pontokat – jelöljük ezeket 𝑥 𝑖 -vel 𝜉 𝑖 =( 𝜉 1 , 𝜉 2 ,…, 𝜉 𝑀 ) vektorokat 𝑀 dimenzió esetén – jelöljük ezeket 𝑥 𝑖 =( 𝑥 1 , 𝑥 2 ,…, 𝑥 𝑀 )-vel és így Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Egyszerű mintavétel 𝐼≈ 𝑏−𝑎 𝑛 𝑖=1 𝑛 𝑓 𝑥 𝑖 vagy 𝐼≈ 𝑉 𝑀 𝑓 𝑥 𝑖 Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Egyszerű mintavétel 0 𝜋 𝑒 −𝑥 cos(𝑥) 𝑑𝑥 mc1d.sci clear(); //Az MC intergral algoritmus function ii = mc1d(f,a,b,n) x = a + (b-a)*rand(1,n) //veletlen szamok [a,b]-ben fx = f(x) //f(x) kiszamolasa minden x-ben ii = (b-a)*sum(fx)/n // <f(x)> szamolasa endfunction Dr. Erdélyi Zoltán Számítógépes modellezés
Egyszerű mintavétel: példa //Hasznalat function y = f(x) y = exp(-x).*cos(x) //integralni kivant fuggveny endfunction I=mc1d(f,0, %pi,1e5); //MC integral algoritmus hivasa disp(I) Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Talál – nem talál „Talált – nem talált” módszer Az előző, mintavételezős módszernél még egyszerűbb. Lényegében a felületi valószínűséget használjuk ki f(x) A0 𝐴= 𝐴 0 + 𝐴 ∗ = 𝑏−𝑎 ℎ h A* a b x Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Talál – nem talál Az integrál, azaz az 𝐴 ∗ terület és az 𝐴 terület aránya egyenlő az [a,b] és [0,h] intervallumokon generált véletlen számokból alkotott (x,y) koordinátájú pontok közül 𝐴 ∗ területbe eső ( 𝑛 ∗ ) per az összes véletlen számok számával (𝑛): 𝐴 ∗ 𝐴 = 𝑛 ∗ 𝑛 Tehát az integrál 𝐼= 𝐴 ∗ =𝐴 𝑛 ∗ 𝑛 Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Talál – nem talál 𝑀 dimenzióra 𝐼= 𝑉 ∗ 𝑖=1 𝑛 𝑓( 𝑥 𝑖 ) 𝑛 ahol 𝑉 ∗ az érdekes térfogat mérete 𝑓 𝑥 𝑖 = 1 ha 𝑥 𝑖 az érdekes térfogatban van 0 egyébként Dr. Erdélyi Zoltán Számítógépes modellezés
Talál – nem talál: példa Egységsugarú kör területe clear(); //egysegsugaru kor terulete function ii = korterulet(n) summa = 0 for i = 1:n x = rand(1,1) y = rand(1,1) if (x^2 + y^2 <= 1) then summa = summa + 1 end ii = 4 * summa/n // fentiek csak ¼ körre endfunction // ezért 4* //hivas A = korterulet(1e5); disp(A) az analitikus eredmény éppen 𝜋 ezt jó közelítéssel adja az algoritmus Dr. Erdélyi Zoltán Számítógépes modellezés
Fontossági mintavétel Egy függvény az [a,b] intervallumon nem minden szakaszon ugyanolyan súllyal járul az integrálhoz farok rész kicsi járulék nagy értékeknél, nagy járulék f(x) a b x Dr. Erdélyi Zoltán Számítógépes modellezés
Fontossági mintavétel így az egyenletes eloszlású véletlen számok használata igazán akkor hatékony, ha a függvény nem változik sokat az [a,b] intervallumon Ötlet: ha erősen változik a függvény az [a,b] intervallumon, akkor válasszunk sűrűbben véletlen számokat ott, ahol nagyobb a függvény (abszolút) értéke másként fogalmazva: transzformáljuk olyanná, ami nem nagyon változik és úgy integráljunk Dr. Erdélyi Zoltán Számítógépes modellezés
Fontossági mintavétel 𝐼= 𝑎 𝑏 𝑓 𝑥 𝑑𝑥 = 𝑎 𝑏 𝑓 𝑥 𝑔 𝑥 𝑔 𝑥 𝑑𝑥 = 𝑎 𝑏 𝑓 𝑥 𝑔 𝑥 𝑑𝐺 𝑥 ahol 𝐺 𝑥 = 𝑎 𝑥 𝑔 𝑥 𝑑𝑥 bevezetve 𝑟=𝐺(𝑥) Dr. Erdélyi Zoltán Számítógépes modellezés
Fontossági mintavétel 𝐼= 𝐺(𝑎) 𝐺(𝑏) 𝑓 𝐺 −1 (𝑟) 𝑔 𝐺 −1 (𝑟) 𝑑𝑟 ahol az integrandus már egy „lapos” függvény, ha jól választottuk meg 𝑔(𝑥)-et. Így 𝐼≈ 1 𝑁 𝑖=1 𝑁 𝑓 𝐺 −1 ( 𝑟 𝑖 ) 𝑔 𝐺 −1 ( 𝑟 𝑖 ) Dr. Erdélyi Zoltán Számítógépes modellezés
Fontossági mintavétel ahol 𝑟 𝑖 már egyenletes eloszlású véletlen számok azaz az integrálást úgy végezhetjük, ahogyan már láttuk A probléma a 𝑔(𝑥) kiválasztása. általános recept nincs Dr. Erdélyi Zoltán Számítógépes modellezés
Számítógépes modellezés Előnyök A Monte Carlo módszer akkor előnyös, ha a hagyományos integrálközelítő összegek kiszámítása nagyon számolásigényes. pl. sokdimenziós esetben a dimenziónkénti elemi intervallumok számának a szorzata adja az összegzések számát, ami óriási lehet a Monte Carlo módszerrel az összegzendő tagok száma független a dimenziótól Dr. Erdélyi Zoltán Számítógépes modellezés