Matematcă ș Iformatcă.. Metoda Mote-Carlo.. Metoda Mote Carlo. Aplcaţ. Precza metode. Termeul,,Metoda Mote Carlo este som cu termeul,,metoda epermetelor statstce. Aparţa aceste metode se raportează de obce la aul 949, î care apare artcolul,,the Mote Carlo method (Metropols N., Ulam S.). Îtemeetor metode sut cosderaţ amerca J. Neuma ş S. Ulam care, î legătură cu lucrărle efectuate petru crearea bombe atomce, au propus să se utlzeze aparatul teore probabltăţlor petru rezolvarea uor probleme cu caracter aplcatv la calculatoarele electroce. e fapt, deea utlzăr feomeelor aleatoare î domeul calculelor de apromare poate f raportată la aul 873, câd a apărut o lucrare a lu Hall despre determarea umărulu π cu ajutorul arucărlor la îtâmplare a uu ac pe o foae de hârte pa care s-au trasat drepte paralele. Metoda Mote Carlo este o metodă de rezolvare umercă a problemelor matematce, bazată pe modelarea varablelor aleatoare. Fe o varablă aleatoare. Să efectuăm epermete depedete astfel, îcât fecare să se îchee cu o valoare a lu (e putem maga că î fecare epermet, pur ş smplu, se măsoară valoarea lu ). Acest proces de costrure petru a valor,,, repreztă modelarea varable aleatoare, ar valorle se umesc realzărle lu. acă este vorba de studerea uor feomee reale, atuc modelarea varablelor aleatoare, legate de ele, este umtă,,smulare. Procedeul prcpal de elaborare a metode Mote Carlo petru rezolvarea ue probleme costă î reducerea acestea la calculul valorlor med. Ma eact, petru a calcula valoarea apromatvă a ue mărm scalare a (care poate f rădăca ue ecuaţ, valoarea ue tegrale defte etc.) trebue să găsm o varablă aleatoare, astfel îcât să avem M = a. Atuc, modelâd varabla aleatoare, adcă costrud petru ea realzăr,,,, vom cosdera: a = Mărmea a (dec ş ) poate f atât scalară, cât ş vectorală. Metoda Mote Carlo poate f aplcată, î prmul râd, problemelor care admt o descrere probablstă. ar, aşa cum vom vedea, î multe cazur se poate costru u model probablst ş petru probleme strct determste..
Matematcă ș Iformatcă.. Metoda Mote-Carlo G Fe că dorm să estmăm ara S G a ue fgur plae mărgte G. Petru aceasta alegem u dreptugh, cu ara S care să cludă pe G. Î luăm la îtâmplare pucte. Fe pr (G) umărul puctelor care meresc î G. Este evdet că dacă e mare, atuc ( G) SG, de ude rezultă estmaţa S ( G) SG S. Î acest eemplu varabla aleatoare este prezetă mplct ş are două valor posble: S, dacă puctul mereşte î G, ş 0 dacă puctul mereşte î \G. Se verfcă cu uşurţă că M = S G, ar ( G) = Pe lâgă oţuea de modelare a varable aleatoare ma putem vorb ş despre modelarea uu evemet aleator sau a uu epermet ş, î geeral, a uu feome. e fecare dată pr modelare vom subîţelege recrearea, reproducerea cu ajutorul calculatorulu electroc a fucţoăr modelulu probablst al feomeulu. Eemplu de modelare: modelarea varable aleatoare cu legea uformă de repartţe pe [0,]. Să arucăm de k or o moedă smetrcă ş să puem α = sau α = 0 după cum la arucarea, =,,, k, cade stema sau baul. Este evdet că suma S k = α α α S + +... + k este u umăr pe [0,] ş repreztă o varablă aleatoare dscretă cu k valor posble. acă k este mare (k 40), atuc repartţa varable aleatoare S k cocde practc cu repartţa varable aleatoare, uform repartzate pe [0,]. Ma eact se poate demostra că, cu probabltatea, k lm α k = are legea uformă de repartţe pe [0,]. Pr urmare, dacă vrem să modelăm varabla aleatoare cu repartţe uformă pe [0,], atuc realzăr,,, petru le putem obţe arucâd o moedă smetrcă de k or: fecare k arucăr e dau o realzare. Valorle,,, ale varable aleatoare uforme pe [0,], se umesc umere aleatoare.. k
Matematcă ș Iformatcă.. Metoda Mote-Carlo acă petru varabla cu repartţe uformă pe [0,] a fost obţut u umăr ecesar de realzăr, acestea pot f îmagazate î memora calculatorulu (spre a f foloste ulteror). Tabele de umere aleatoare se găsesc î cărţle de teora probabltăţlor ş statstcă matematcă. Astfel de tabele au fost alcătute cu mult îate de aparţa metode Mote Carlo î forma e actuală. Necestatea lor apare î legătură cu aplcarea procedeelor de alegere la îtâmplare, la plafcarea dverselor epermete î bologe, medcă, agrcultură etc. Petru alcăturea tabelelor de umere aleatoare Kedall folosea ruleta, alcătută dtr-u dsc dvzat î zece sectoare egale corespuzătoare cfrelor 0,,, 3, 4, 5, 6, 7, 8, 9. Tot î acest scop a fost folost u dspoztv specal cu acţue rapdă ruleta electrocă, care servea ca geerator de umere aleatoare, bazat pe şte prcp fzce (de geerare de mpulsur aleatoare). Totodată, se îtreprdeau măsur de precauţe petru a asgura mparţaltatea epermetelor. Î plus se aplca u comple de teste petru a verfca dacă umerele care se obţeau erau îtradevăr aleatoare. acă dspuem de u tabel sufcet de cuprzător de umere aleatoare, atuc problema surse de realzăr depedete ale varable aleatoare uform repartzate pe [0,] poate f cosderată rezolvată î prcpu. Totuş, d puct de vedere practc, păstrarea uu tabel amplu î memora calculatorulu este destul de comodă, de aceea tabelele de umere aleatoare practc u se utlzează. Î calculele practce realzărle varable aleatoare uform repartzate pe [0,] se obţ cel ma smplu cu ajutorul uu algortm. Numerele obţute pe această cale se umesc pseudoaleatoare (spre deosebre de umerele aleatoare, care se obţ, de eemplu, cu ajutorul moede). Evdet, se mpue codţa ca obţerea acestor umere să abă loc îtr-u tmp sufcet de scurt de fucţoare a calculatorulu. Î lmbajul PASCAL estă u geerator de umere pseudoaleatoare fucţa RANOM. Îate de a folos î program fucţa RANOM, apelăm oblgatoru la fucţa RANOMIZE, ce ţază procesul de geerare a varable aleatore. Utlzâd acest geerator, putem scre u program care a la îtâmplare u umăr de pe [0,]: Program Puct; Var :real; Beg radomze; := radom; Wrtel( abscsa puctulu, ::3); Ed. 3
Matematcă ș Iformatcă.. Metoda Mote-Carlo La modelarea varable aleatoare η cu legea de repartţe uformă pe [a, b], vom folos formula ( b ), η = a + a ude este o varablă aleatoare cu repartţe uformă pe [0,]. Pr urmare realzărle y, y,, y ale lu η se obţ d realzărle,,, ale lu coform formule: y ( b a), = a + =,,...,. Î PASCAL estă, de asemeea fucţa RANOM(k) care a la îtâmplare u umăr d mulţmea {0,,,, k }. acă trebue să se aleagă u umăr d mulţmea {,,, k}, atuc î program se va scre RANOM(k) +. Vom scre u program care modelează o arucare a zarulu: Program Zar; Var :teger; Beg radomze; := radom(6) + ; wrtel( Numarul de pucte este :, ); Ed. Putem modela u epermet ma complcat, ş aume, arucarea a două zarur pâă câd ambele vor cădea cu aceeaş faţă, cu afşarea umărulu de arucăr: Program Zar; Var z, z, k :teger; Beg radomze; repeat z:=radom(6)+; z:=radom(6)+; wrtel(z,, z); k:=k +; utl z=z; wrtel( Numarul de arucar:, k); Ed. 4
Matematcă ș Iformatcă.. Metoda Mote-Carlo Aplcaţ Cu ajutorul metode Mote Carlo se pot rezolva următoarele probleme:. Calculul probabltăţ uu evemet aleator acă evemetul aleator A se produce î epermetul dat cu o probabltate ecuoscută P(A), atuc coform metode Mote Carlo, valoarea apromatvă a aceste probabltăţ se calculează astfel: se modelează epermetul dat de or ş se pue ( A) P( A), (A) fd umărul de aparţ ale lu A î epermetele efectuate.. Calculul valor med a ue varable aleatoare acă cuoaştem realzăr,,..., ale varable aleatoare, atuc cosderăm că M. Prcpala problemă de calcul, care se rezolvă de obce pr metoda Mote Carlo, este problema estmăr valor med a ue varable aleatoare, adcă problema calculu ue tegrale de tp Lebesgue î raport cu o aumtă măsură de probabltate. = Precza metode Mote Carlo Am meţoat deja că metoda Mote Carlo se bazează pe calculul valorlor med. Astfel apare problema precze formule M = (,,, sut realzăr obţute î urma modelăr lu ): petru ce cu o probabltate u ma mcă decât are loc egaltatea ( > 0, (0, ))? = M < 5
Matematcă ș Iformatcă.. Metoda Mote-Carlo Astfel, fd daţ > 0 ş (0, ), se cere să determăm acea valoare a lu care satsface relaţa: = < = M P sau = < < = < < = = M P M P Î vrtutea teoreme lmtă cetrale petru varable aleatoare depedete detc repartzate (,,, sut atare varable), ultma egaltate deve = Ф 0. Astfel trebue să rezolvăm ecuaţa 0 = Ф, adcă. 0 = Ф (6) Mărmea 0 Ф, pe care o otam pr, o găsm î tabelul valorlor fucţe. ) ( 0 0 = u du e Ф π e eemplu, petru =0.95 găsm =.96, adcă..96 0.95 0 = Ф Rezolvâd ecuaţa (6) obţem =. (7) Astfel, dacă +, precza este asgurată. Eemplu. Îtr-o ură sut k ble albe, k ble egre, k 3 ble roş. ea se alege la îtâmplare câte o blă pâă câd vor f etrase două ble albe cosecutv (î cazul scheme fără îtoarcere s-ar putea îtâmpla să fe scoase toate blele fără a f scoase două ble albe cosecutv). Fe umărul de ble etrase. Să se calculeze M ş P(A), ude A = {au fost etrase două ble egre cosecutv}. Să se aalzeze ambele scheme: cu ş fără îtoarcere. Prma problemă costă î recuoaşterea culorlor blelor. Petru aceasta vom cosdera că blele sut umerotate î felul următor: umerele de la pâă la k sut atrbute culor albe, umerele de la k + pâă la k + k sut atrbute culor egre, ar toate celelalte culor roş. Alegâd cu ajutorul fucţe radom u umăr d mulţmea {,,..., k + k + k 3 }, vom raţoa 6
Matematcă ș Iformatcă.. Metoda Mote-Carlo astfel: dacă k, aceasta îseamă că s-a ales o blă albă, dacă k < k + k, aceasta îseamă că s-a ales o blă eagră, ar dacă k + k + că s-a ales o blă roşe. Avâd aceasta î vedere vom modela epermetul respectv, adcă vom etrage câte o blă pâă câd vor f scoase două ble albe cosecutv sau pâă câd vor f scoase toate blele d ură (ţâd cot de schema etragerlor). Î cosecţă, lu î vom atrbu ca valoare umărul blelor scoase. Repetăm epermetul de or. Numărul î prealabl trebue găst î fucţe de eacttatea (vez formula 7). Petru aceasta vom estma cu ajutorul formule 0 0 =,,,..., fd 0 0 0 = 0 = realzăr ale lu, 0 0. Tetul uu program-model î lmbajul Pascal Cazul scheme cu îtoarcere program ble; uses CRT; var k,k,k3,,j,d:logt;,,cs,a,0,g:logt; s,s,dsp,p,ma,eps,b: eteded; s,,a:logt; BEGIN clrscr; radomze; wrtel('schema E EXTRAGERE CU INTOARCERE'); wrtel('trodu eacttatea epslo:'); read(eps); wrtel('trodu b tabelar:'); read(b); wrtel('itrodu umarul de epermete 0 petru calcularea dsperse:'); read(0); wrtel; wrtel('itrodu umarul de ble albe k:'); read(k); wrtel('itrodu umarul de ble egre k:'); read(k); wrtel('itrodu umarul de ble ros k3:'); read(k3); s:=0; s:=0; for := to 0 do beg := radom(k+k+k3)+; f <=k the wrte(' a') else f <=k+k the wrte(' ') 7
Matematcă ș Iformatcă.. Metoda Mote-Carlo else wrte(' r'); a:=0; cs:=; {a dca daca s-au ales cosecutv doua ble albe} repeat :=radom(k+k+k3)+; f <=k the wrte(' a') else f <=k+k the wrte(' ') else wrte(' r'); f (<=k) ad (<=k) the a:=; cs:=cs+; :=; utl a=; {se verfca daca s-au ales cosecutv doua ble albe} wrtel; wrtel(' cs=',cs); s:=s+cs/0; s:=s+cs*cs/0; ed; dsp:=s-s*s; {se calculeaza dspersa} wrtel('spersa =',dsp::4); :=truc(b*b*dsp/(eps*eps)); {se calculeaza umarul de epermete} wrtel('=',); readkey; s:=0; a:=0; { dca daca s-au ales doua ble egre cosecutve} for := to do beg := radom(k+k+k3)+; a:=0; cs:=; g:=0; repeat :=radom(k+k+k3)+; f (<=k) ad (<=k) the a:=; f (k<=)ad (<=k+k)ad(k<=)ad(<=k+k) the g:=; cs:=cs+; :=; utl a=; f g= the a:=a+; {umarul de cazur favorable evemetulu A} s:=s+cs; ed; wrtel; Ma:=s/; wrtel('valoarea mede Ma=',Ma::3); P:=a/; wrtel('probabltatea P=',P::3); readkey; EN. 8
Matematcă ș Iformatcă.. Metoda Mote-Carlo Rezultatul SCHEMA E EXTRAGERE CU INTOARCERE Itrodu eacttatea eps: 0.0 Itrodu cuatla b tabelara:.96 Itrodu umarul de epermete 0 petru calcularea dsperse: 0 Itrodu umarul de ble albe k: Itrodu umarul de ble egre k: 3 Itrodu umarul de ble ros k3: r a a r a a cs= a r r r r r r r r a a r a r a a r r r a a cs=48 r r a r a a cs=8 a a cs=3 a a cs=4 a a cs= a r r a r a a cs= r a a cs=7 r r r a a a cs=0 a r a r a r r r r a r a r a r a r r a r a r r r r a r r r r r a r a r a a r r a a r a r r a r a a cs=89 a a cs=3 r r r r a a cs= r a r r r a a cs=3 a a cs=9 r a r r a r a a r r r a r a r a r a a r a a cs=45 r a r r r r a r a a a cs=9 a r r r a acs= r r r a a a cs=0 r a r r r r r a a a a a a a cs=8 a r a a cs=4 spersa = 43.7475 =678683 Valoarea mede Ma=5.755 Probabltatea P=0.78 Cazul Scheme fără îtoarcere program ble; uses CRT; var k, k, k3, k0,k0,k03,, j:teger;,,cs,a,0,g,calba,ceagra:teger; dsp,p,ma,eps,b:real; s,s,s,,a:logt; BEGIN 9
Matematcă ș Iformatcă.. Metoda Mote-Carlo clrscr; radomze; wrtel('schema FARA INTOARCERE'); wrtel('itrodu eacttatea epslo:'); read(eps); wrtel('itrodu b tabelar:'); read(b); wrtel('itrodu umarul de epermete petru calcularea dsperse 0:'); read(0); wrtel; radomze; wrtel('itrodu umarul de ble albe k:'); read(k0); wrtel('itrodu umarul de ble egre k:'); read(k0); wrtel('itrodu umarul de ble ros k3:'); read(k03); s:=0; s:=0; for := to 0 do beg k:=k0; k:=k0; k3:=k03; := radom(k+k+k3)+; calba:=0; {calba - dca daca culoarea ble este alba} f (<=k) the beg wrte(' a'); k:=k-; calba:=; ed else f <=k+k the beg wrte(' '); k:=k-; ed else beg wrte(' r'); k3:=k3-; ed; a:=0; cs:=; repeat :=radom(k+k+k3)+; f (<=k)ad (k< >0) the beg wrte(' a'); f calba= the a:=; k:=k-; calba:=; ed else f (<=k+k)ad(k<>0) the beg wrte(' '); k:=k-; calba:=0; ed else f (k3<>0) the beg wrte(' r'); k3:=k3-; calba:=0; ed; 0
Matematcă ș Iformatcă.. Metoda Mote-Carlo cs:=cs+; :=; utl (a=)or(k+k+k3=0); wrtel; wrtel(' cs=',cs); s:=s+cs; s:=s+cs*cs; ed; dsp:=s/0-sqr(s/0); wrtel('spersa =',dsp::4); :=truc(b*b*dsp/(eps*eps)); wrtel('=',); readkey; s:=0; a:=0; for := to do beg k:=k0; k:=k0; k3:=k03; calba:=0; ceagra:=0; {ceagra dca daca culoarea ble este eagra} := radom(k+k+k3)+; f <=k the beg k:=k-; calba:=; ed else f <=k+k the beg k:=k-; ceagra:=;ed else k3:=k3-; a:=0; cs:=; g:=0; repeat :=radom(k+k+k3)+; f (<=k) ad (k<>0) the beg f calba= the a:=; k:=k-; calba:=; ceagra:=0; ed else f (k<>0)ad (<=k+k) the beg f ceagra= the g:=; k:=k-; ceagra:=; calba:=0; ed else f k3<>0 the beg k3:=k3-; calba:=0; ceagra:=0; ed; cs:=cs+; :=; utl (a=)or(k+k+k3=0); f g= the a:=a+; s:=s+cs; ed; Ma:=s/; wrtel('valoarea mede Ma=',Ma::3);
Matematcă ș Iformatcă.. Metoda Mote-Carlo P:=a/; wrtel('probabltatea P=',P::3); readkey; EN. Rezultatul SCHEMA E EXTRAGERE FARA INTOARCERE Itrodu eacttatea eps: 0.0 Itrodu cuatla b tabelara:.96 Itrodu umarul de epermete 0 petru calcularea dsperse: 0 Itrodu umarul de ble albe k: Itrodu umarul de ble egre k: 3 Itrodu umarul de ble ros k3: a r r a cs=7 a a cs= r a a r cs=7 r a a cs=6 a r a r cs=7 r r a a cs=6 r a a r cs=7 a r r a cs=7 a r a r cs=7 r a a r cs=7 r a r a cs=7 a a cs=3 a r a r cs=7 a a r r cs=7 a a cs= r a r a cs=7 r a r a cs=7 a r r a cs=7 r a a r cs=7 r r a a cs=7 spersa =.7600 =060 Valoarea mede Ma=6.3 Probabltatea P=0.570