SEMINARSKI RAD iz Verovatnoće i Statistike Izračunavanje približne vrednosti broja π

Similar documents
KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

Fajl koji je korišćen može se naći na

Projektovanje paralelnih algoritama II

Red veze za benzen. Slika 1.

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

TEORIJA SKUPOVA Zadaci

Mathcad sa algoritmima

Metrički prostori i Riman-Stiltjesov integral

Uvod u relacione baze podataka

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

Konstrukcija i analiza algoritama

Asian Journal of Science and Technology Vol. 4, Issue 08, pp , August, 2013 RESEARCH ARTICLE

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice

povezuju tačke na četiri različita načina (pravom linijom, splajnom,

BROJEVNE KONGRUENCIJE

ZANIMLJIVI ALGEBARSKI ZADACI SA BROJEM 2013 (Interesting algebraic problems with number 2013)

ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING

O homomorfizam-homogenim geometrijama ranga 2

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu

Quasi-Newtonove metode

Matematika 2, ZS 2016/2017

DISTRIBUIRANI ALGORITMI I SISTEMI

Konstrukcija i analiza algoritama

Jedna familija trokoračnih postupaka šestog reda za rešavanje nelinearnih jednačina

1.1 Algoritmi. 2 Uvod

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

Fraktali - konačno u beskonačnom

FTN Novi Sad Katedra za motore i vozila. Drumska vozila Uputstvo za izradu vučnog proračuna motornog vozila. 1. Ulazni podaci IZVOR:

Geometrija (I smer) deo 3: Linije u ravni

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle).

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4

NAPREDNI FIZIČKI PRAKTIKUM 1 studij Matematika i fizika; smjer nastavnički MJERENJE MALIH OTPORA

Teorem o reziduumima i primjene. Završni rad

ANALYSIS OF THE RELIABILITY OF THE "ALTERNATOR- ALTERNATOR BELT" SYSTEM

DYNAMIC HEAT TRANSFER IN WALLS: LIMITATIONS OF HEAT FLUX METERS

Đorđe Đorđević, Dušan Petković, Darko Živković. University of Niš, The Faculty of Civil Engineering and Architecture, Serbia

NON-SPECIFIC METHODS FOR DETECTING RESIDUES OF CLEANING AGENTS DURING CLEANING VALIDATION

Oracle Spatial Koordinatni sustavi, projekcije i transformacije. Dalibor Kušić, mag. ing. listopad 2010.

UNSTABILITY OF FOOD PRODUCTION PER CAPITA AND POPULATION: ASIA. Vesna Jablanović 1

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

KRITERIJI KOMPLEKSNOSTI ZA K-MEANS ALGORITAM

Kontinualni lokacijski modeli. Jelena Panić 748/15 Vidosava Antonović 819/15

Programiranje u realnom vremenu Bojan Furlan

Položaj nultočaka polinoma

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008

AIR CURTAINS VAZDU[NE ZAVESE V H

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

Vedska matematika. Marija Miloloža

Metoda parcijalnih najmanjih kvadrata: Regresijski model

HRVATSKA MATEMATIČKA OLIMPIJADA

Pitagorine trojke. Uvod

INVESTIGATION OF UPSETTING OF CYLINDER BY CONICAL DIES

Šta je to mašinsko učenje?

Metode izračunavanja determinanti matrica n-tog reda

Modified Zagreb M 2 Index Comparison with the Randi} Connectivity Index for Benzenoid Systems

6 th INTERNATIONAL CONFERENCE

Krivulja središta i krivulja fokusa u pramenu konika. konika zadanom pomoću dviju dvostrukih točaka u izotropnoj ravnini

Andrea Rožnjik. VaR KAO MERA RIZIKA U OPTIMIZACIJI PORTFOLIA. - magistarska teza - Novi Sad, 2008.

Maja Antolović Algoritmi u teoriji brojeva

Neke primene teorije fazi skupova i fazi logike u procesiranju slika

VREMENSKE SERIJE U FINANSIJAMA: ARCH I GARCH

AN EXPERIMENTAL METHOD FOR DETERMINATION OF NATURAL CIRCULAR FREQUENCY OF HELICAL TORSIONAL SPRINGS UDC:

Philippe Jodin. Original scientific paper UDC: :519.6 Paper received:

Karakterizacija problema zadovoljenja uslova širine 1

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1

O aksiomu izbora, cipelama i čarapama

UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU

IMPROVEMENT OF HIPPARCOS PROPER MOTIONS IN DECLINATION

Harmonijski brojevi. Uvod

UOPŠTENI INVERZI, FAKTORI USLOVLJENOSTI I PERTURBACIJE

Velimir Abramovic: KOLIKO IMA BESKONACNOSTI U MATEMATICI? (Iz Osnovi Nauke o Vremenu )

Metode praćenja planova

Kristina Popadić. Analiza preživljavanja sa primenama u zdravstvenom osiguranju - master rad -

PRIMENA FAZI LOGIKE ZA REŠAVANJE NP-TEŠKIH PROBLEMA RUTIRANJA VOZILA I

Termodinamika. FIZIKA PSS-GRAD 29. studenog Copyright 2015 John Wiley & Sons, Inc. All rights reserved.

Didaktički aspekti matematičkog modeliranja

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom.

Pellova jednadžba. Pell s equation

Yu.G. Matvienko. The paper was presented at the Twelfth Meeting New Trends in Fatigue and Fracture (NT2F12) Brasov, Romania, May, 2012

NIZOVI I REDOVI FUNKCIJA

Numerical Inverse Laplace Transform

PRELIMINARY COMMUNICATION Influence of chloride ions on the open circuit potentials of chromium in deaerated sulfuric acid solutions

Jednočlani potpuni skupovi veznika za iskaznu logiku

ODREĐIVANJE DINAMIČKOG ODZIVA MEHANIČKOG SUSTAVA METODOM RUNGE-KUTTA

Sveučilište J.J.Strossmayera u Osijeku Odjel za matematiku. Sveučilišni preddiplomski studij matematike

DESIGN AND CALCULATION OF RING SPRINGS AS SPRING ELEMENTS OF THE WAGON BUFFER UDC : Jovan Nešović

REVIEW OF GAMMA FUNCTIONS IN ACCUMULATED FATIGUE DAMAGE ASSESSMENT OF SHIP STRUCTURES

Konstekstno slobodne gramatike

Neprekidan slučajan vektor

VELOCITY PROFILES AT THE OUTLET OF THE DIFFERENT DESIGNED DIES FOR ALUMINIUM EXTRUSION

Funkcijske jednadºbe

Uvod u dinamičko programiranje

MATEMATIČKA REZERVA ŽIVOTNIH OSIGURANJA

IV razred- matematika. U prvoj nedelji septembra planirano je obnavljanje gradiva druge godine (3 èasa), a 4-tog èasa radi se inicijalni test.

Transcription:

SEMINARSKI RAD iz Verovatnoće i Statistike Izračunavanje približne vrednosti broja π Aleksandar Nedeljković 36/2009 Matematički fakultet Univerzitet u Beogradu January 18, 2011. 1

SADRŽAJ 2 Sadržaj 1 Uvod 3 1.1 Istorija Monte Karlo metode.............. 4 2 Aproksimacija π odabirom tačaka unutar kruga koji je upisan u kvadrat 5 2.1 Postavka problema................... 5 2.2 Statistička homogenost................. 5 2.3 Realizacija algoritma.................. 6 2.4 Kod programa...................... 7 2.5 Rezultati testiranja programa............. 8 3 Aproksimacija π odabirom tačaka unutar lopte koja je upisana u kocku 9 3.1 Postavka problema................... 9 3.2 Kod programa...................... 10 3.3 Rezultati testiranja programa............. 11 4 Aproksimacija π zasnovana na problemu Bufonove igle 12 4.1 Postavka problema................... 12 4.2 Modelovanje problema................. 14 4.3 Opis programa..................... 17 4.4 Kod programa...................... 18 4.5 Rezultati testiranja programa............. 24 5 Poredjenje brzine konvergencije u sva 3 slučaja 25 6 Zaključak 26 7 Literatura 27 2

3 1 Uvod Monte Karlo metoda je često korišćena numerička metoda za rešavanje raznorodnih problema upotrebom računarskih mogućnosti. Primenjuje se na probleme koji se mogu svesti na aproksimiranje integrala. U osnovi Monte Karlo metode analize je jednostavan princip aproksimacije, ali može biti računarski zahtevan za izračunavanje. Nije teško napisati računarski program koji će koristiti Monte Karlo metodu analize, nego je problem što se mnogi tako napisani programi mogu izvršavati danima. Medjutim, postoje načini da se ubrza Monte Karlo metoda analize. U tim slučajevima koriste se različite tehnike smanjivanja varijance. Takve tehnike nisu intuitivne i zahtevaju detaljnije razumevanje. 3

1.1 Istorija Monte Karlo metode 4 1.1 Istorija Monte Karlo metode Zasluge za osmišljavanje Monte Karlo metode pripisuju se Stanislavu Ulamu, poljskom matematičaru koji je tokom Drugog svetskog rata radio u Sjedinjenim Američkim Državama s Johnom von Neumannom na Manhattan projektu. Ulam je prvenstveno poznat po dizajniranju hidrogenske bombe zajedno s Edwardom Tellerom 1951. godine. Osmislio je Monte Karlo metodu 1946. godine, dok se oporavljao od bolesti igrajući solitaire - popularnu igra karata. Ulam je pokušavao odgonetnuti pitanje: Kolike su šanse da se 52 karte podele tako da je igru moguće završiti? Nakon mnogo vremena potrošenog na propitivanja kombinatoričkih rešenja, počeo se pitati postoji li praktičnije rješenje tog problema. Uočio je da bi bilo mnogo jednostavnije naprosto podeliti karte stotinu puta i pobrojati koliko je bilo uspešnih ishoda. Taj postupak čoveku bi oduzeo puno vremena, ali računar bi do rezultata došao relativno brzo. Zahvaljujući razvoju sve bržih računara, moglo se predvideti da će slični takvi, samo mnogo komplikovaniji proračuni postati izvodljivi u prihvatljivom vremenu. Ulam je odmah uočio i druge probleme na koje je mogao primeniti istu metodu izračunavanja (npr. problem neutronske difuzije i drugi problemi matematičke fizike). Kasnije je opisao ideju svom kolegi John von Neumannu i počeli su planirati stvarne proračune na toj ideji. Monte Karlo metoda, kako se danas shvata, podrazumijeva bilo koju tehniku statističkog uzorkovanja primenjenu za aproksimiranje rešenja. Ulam nije smislio statističko uzorkovanje koje je postojalo još i pre njegove ideje. Bacanje novčića i izvlačenje karata bili su do tada najčešći načini za stvaranje slučajnih uzoraka. Ulamov je doprinos što je prepoznao potencijal novoizmišljenih elektroničkih računara za automatizovano stvaranje statističkih uzoraka. Radeći sa Johnom von Neumannom i Nicolasom Metropolisom, smislio je algoritme za programsku implementaciju, te je pronašao način da se problemi koji nemaju karakter slučajnih odabira pretvore u oblik pogodan za statističko uzorkovanje. Tako je statističko uzorkovanje prestalo biti samo matematička radoznalost i postalo je formalna metodologija primjenjiva na velik broj problema. Metropolis je imenovao novu metodologiju prema lancu kasina Monte Karlo. Ulam i Metropolis objavili su prvi članak o Monte Karlo metodi 1949. godine. 4

5 2 Aproksimacija π odabirom tačaka unutar kruga koji je upisan u kvadrat 2.1 Postavka problema Neophodno je odrediti verovatnoću da slučajno izabrana tačka iz kvadrata bude u krugu upisanom u kvadrat. P (Ω) = (a 2 )2 π a 2 = π 4 Kada se izvede n eksperimenata, posmatrani dogadjaj će se ostvariti k puta, gde je k broj imedju 0 i n. Količnik k/n se naziva relativna frekvencija posmatranog dogadjaja. U našem slučaju k n π 4 2.2 Statistička homogenost Kad se povećava broj izvedenih eksperimenata, vrednosti relativne frekvencije će se menjati, ali ta promena nije predvidljiva (jer onda ni ishodi ne bi bili slučajni). Pa ipak zapaža se izvesna pravilnost u koju se svako može uveriti sprovodjenjem jednostavnog eksperimenta - bacanjem numerisane kockice za igru i beleženjem pojavljivanja odredjenog broja. Ta pravilnost se ogleda u sve manjoj razlici izmedju frekvencije i stvarne (teorijske) verovatnoce, računate pod predpostavkom da je kockica fer. Ta specifična konvergencija ka verovatnoći dogadjaja naziva se statistička homogenost. Ako se pak stvarna verovatnoća ne zna, ili je složena za izračunavanje, onda se za dovoljno veliko n nepoznata verovatnoća aproksimira relativnom frekvencijom k/n. 5

2.3 Realizacija algoritma 6 2.3 Realizacija algoritma Kako je ovde u pitanju aproksimacija, logično je da će više bacanja davati bolje rezultate, i poništiti negativan efekat kompjuterski generisanih random brojeva koji nisu zaista nasumični, već pseudo-nasumični. Računanje broja π na ovaj način se zasniva na tome da je podjednaka verovatnoća izbora bilo koje tačke u okviru kvadrata, pa ćemo mi pretpostaviti da nam naš program daje tačke sa uniformnom raspodelom. Iako radimo samo sa celobrojnim koordinatama, pa zapravo ne analiziramo kompletnu površinu kvadrata, zbog velikih vrednost brojeva rezultati bi trebalo da budu dovoljno precizni. Realizacija algoritma, sa druge strane, je veoma jednostavna. U svakoj iteraciji generišemo dve nasumične vrednosti koje nam predstavljaju X i Y koordinatu tačke, i njih koristimo da bismo izračunali da li ona pripada krugu ili ne. U svom kodu sam radio sa velikim nenegativnim brojevima da bih izbegao korišćenje manje preciznih realnih brojeva, odnosno ostavio ga za sam kraj. Kvadrat je postavljen u donji levi ćošak prvog kvadranta koordinatnog sistema, odnosno obuhvata tačke od (0, 0) do (a, a). Formula na kraju algoritma je dobijena preko odnosa površina kruga i kvadrata. ukupanbrojt acaka brojt acakaukrugu 4 π π 4 brojt acakaukrugu ukupanbrojt acaka Pošto koristimo random generator, a želimo što veću preciznost, ograničio sam stranicu kvadrata na najveći broj koji možemo dobiti od random generatora, što je u mom slučaju bilo 2 31 1, odnosno nešto preko dve milijarde. Takodje, da bi se centar kruga nalazio na celobrojnim koordinatama, stranicu kvadrata sam smanjivao na paran broj ukoliko je konstanta RAND MAX neparna, što bi uglavnom i trebalo da bude slučaj. Program se može pronaći na mojoj internet strani: http://www.alas.matf.bg.ac.rs/ mi09036/vis.html 6

2.4 Kod programa 7 2.4 Kod programa 1 #i n c l u d e <s t d i o. h> 2 #i n c l u d e < s t d l i b. h> 3 #i n c l u d e <time. h> 4 i n t main ( ) 5 { 6 unsigned long long a = RAND_MAX ; // Duzina s t r a n i c e k v a d r a t a 7 8 if ( RAND_MAX & 1) // U k o l i k o j e A neparno smanjujemo ga 9 a ; // za 1 da b i c e n t a r kruga b i l a c e l o b r o j n a v r e d n o s t 10 11 // P o l u p r e c n i k kruga 12 unsigned long long r = a / 2 ; 13 14 // B r o j a c t a c a k a u krugu 15 unsigned long long pogodaka = 0 ; 16 17 // B r o j i t e r a c i j a a l g o r i t m a, t j. ukupan b r o j t a c a k a 18 unsigned long long n ; 19 20 // Seed za random g e n e r a t o r 21 srand ( time ( 0 ) ) ; 22 23 // Ucitavamo b r o j i t e r a c i j a 24 printf ( U n e t i b r o j i t e r a c i j a : ) ; 25 scanf ( %l l d, &n ) ; 26 27 // I z v r s a v a m o a l g o r i t a m 28 unsigned long long x, y ; 29 unsigned long long rr = r r ; 30 31 unsigned long long i ; 32 for ( i = 1 ; i <= n ; i++) 33 { 34 x = rand ( ) ; 35 y = rand ( ) ; 36 if ( x > a y > a ) // Da ne b i d o b i j a l i t a c k e van k v a d r a t a 37 { 38 i ; // Ponavljamo i t e r a c i j u 39 continue ; 40 } 41 if ( ( x r ) ( x r ) + ( y r ) ( y r ) <= rr ) // J e d n a c i n a kruga 42 pogodaka++; 43 } 44 d o u b l e pi = 4 ( d o u b l e ) pogodaka / n ; 45 printf ( A p r o k s i m a c i j a b r o j a Pi : %l f \n, pi ) ; // I s p i s u j e m o d o b i j e n u v r e d n o s t 46 r e t u r n 0 ; 47 } 7

2.5 Rezultati testiranja programa 8 2.5 Rezultati testiranja programa Broj iteracija Vreme izračunavanja Aproksimacija π Greška 1.000 <1 sek 3,108000 0.03359 10.000 <1 sek 3,153600 0.01200 100.000 <1 sek 3,144000 0.00240 1.000.000 <1 sek 3,140188 0.00140 10.000.000 <1 sek 3,141856 0.00026 100.000.000 2 sekunde 3,141841 0.00024 1.000.000.000 50 sekundi 3,141715 0.00024 10.000.000.000 6 minuta 3,141595 0.000002 100.000.000.000 1 sat 3,141595 0.000002 1.000.000.000.000 10 sati 3,141594 0.000001 8

9 3 Aproksimacija π odabirom tačaka unutar lopte koja je upisana u kocku 3.1 Postavka problema Ovaj problem je trodimenzionalan za razliku od prethodnog primera i razlikuje se jedino po tome što smo mu povećali dimenziju i u suštini nema bitnijih razlika. Statistički metod za procenjivanje vrednosti π u ovom primeru je generalizovan upotrebom trodimenzionalne implementacije. U ovom primeru neophodno je odrediti verovatnoću da slučajno izabrana tačka iz kocke bude unutar lopte koja je upisana u kocku kao na slici ispod. P (Ω) = 4 3 (a 2 )3 π a 3 = 4a3π 24 a 3 = 4a3 π 24a 3 = π 6 ukupanbrojt acaka brojt acakaulopti 6 π π 6 brojt acakaulopti ukupanbrojt acaka 9

3.2 Kod programa 10 3.2 Kod programa 1 #i n c l u d e <s t d i o. h> 2 #i n c l u d e < s t d l i b. h> 3 #i n c l u d e <time. h> 4 v o i d main ( ) 5 { 6 unsigned long long n ; 7 unsigned long long r ; 8 unsigned long long a = RAND_MAX ; 9 unsigned long long x, y, z ; 10 unsigned long long rr ; 11 unsigned long long pogodaka = 0 ; 12 unsigned long long i ; 13 d o u b l e pi ; 14 15 if ( RAND_MAX & 1) // U k o l i k o j e A neparno smanjujemo ga 16 a ; // za 1 da b i c e n t a r l o p t e b i l a c e l o b r o j n a v r e d n o s t 17 18 // P o l u p r e c n i k l o p t e 19 r = a / 2 ; 20 21 // B r o j a c t a c a k a u l o p t i 22 pogodaka = 0 ; 23 24 srand ( time ( 0 ) ) ; 25 // Ucitavamo b r o j i t e r a c i j a 26 printf ( U n e t i b r o j i t e r a c i j a : ) ; 27 scanf ( %l l d, &n ) ; 28 // I z v r s a v a m o a l g o r i t a m 29 30 rr = r r ; 31 32 for ( i = 1 ; i <= n ; i++) 33 { 34 x = rand ( ) ; 35 y = rand ( ) ; 36 z = rand ( ) ; 37 if ( x > a y > a z > a ) // Da ne b i d o b i j a l i t a c k e van kocke 38 { 39 i ; // Ponavljamo i t e r a c i j u 40 continue ; 41 } 42 if ( ( x r ) ( x r ) + ( y r ) ( y r ) + ( z r ) ( z r ) <= rr ) // J e d n a c i n a l o p t e 43 pogodaka++; 44 } 45 pi = 6 ( d o u b l e ) pogodaka / n ; 46 printf ( A p r o k s i m a c i j a b r o j a Pi : %l f \n, pi ) ; // I s p i s u j e m o d o b i j e n u v r e d n o s t 47 } 10

3.3 Rezultati testiranja programa 11 3.3 Rezultati testiranja programa Broj iteracija Vreme izračunavanja Aproksimacija π Greška 1.000 <1 sek 3,132000 0.009592 10.000 <1 sek 3,161400 0.019807 100.000 <1 sek 3,130020 0.011572 1.000.000 <1 sek 3,140188 0.001404 10.000.000 <1 sek 3,141856 0.000263 100.000.000 2 sekunde 3,141726 0.000133 1.000.000.000 1 minut 3,141409 0.000183 10.000.000.000 7 minuta 3,141595 0.000002 11

12 4 Aproksimacija π zasnovana na problemu Bufonove igle 4.1 Postavka problema Najoriginalniji i najneočekivaniji način približnog izračunavanja broja π jeste sledeći: Treba imati kratku šivaću iglu(od 2cm.), bolje sa zalomljenim vrhom, da bi igla bila svuda jednake debljine, i na listu hartije treba izvući paralelne prave tako da je odstojanje svakih dveju susednih pravih dvaput veće od dužine igle. Zatim se sa izvesne visine igla baca na hartiju i pazi se na to da li igla seče koju od paralelnih pravih ili ne seče nijednu. Da igla ne bi odskakala, pod hartiju se stavlja upijajuća hartija ili komad meke tkanine. Bacanje igle ponavlja se mnogo puta, na primer 100 puta ili, još bolje, 1000 puta, i svaki put se zapiše da li je ili nije bilo presecanja (presecanjem treba smatrati i onaj slučaj kad igla dodiruje jednu od nacrtanih paralelnih pravih). Ako se ukupan broj bacanja igle podeli brojem slučajeva kad je bilo zapaženo presecanje, tada se u količniku mora dobiti broj π, t.j. razume se, njegova više ili manje tačna približna vrednost. Objasnićemo zašto se dobija takav količnik. Neka je K najverovatniji broj presecanja neke od posmatranih pravih i igle, a dužina naše igle neka je 20mm. U slučaju presecanja tačka preseka (odnosno dodira) treba, razume se, da leži na nekoj od ovih milimetara i u tom pogledu ni bilo koji od njih ni bilo koji deo igle nema nikakve prednosti. Zato je najverovatniji broj preseka svakog milimetra k. Za deo igle od 3mm. taj broj 20 je 3k 11k, za deo od 11mm. on je jednak itd. Drugim rečima, najverovatniji broj preseka je direktno proporcionalan dužini igle. Ta 20 20 se proporcionalnost zadržava i u slučaju kad je igla savijena. Neka je igla savijena, pri čemu je deo AB=11mm, a BC=9mm. Za deo AB najverovatniji broj preseka jednak je 11k 20 iglu je 11k + 9k 20 20 9k, za BC je, a za celu 20, tj. kao i ranije taj broj je K. Iglu možemo saviti na još neobičniji način - broj preseka se od toga neće promeniti (imajte u vidu da, kad je igla savijena, jednu istu pravu mogu presecati dva ili više delova igle. Takvo presecanje treba računati kao 2,3 itd., jer se prvo ubraja prilikom sračunavanja preseka za jedan deo igle, drugo za drugi deo igle itd.). Zamislite sada da bacamo iglu 12

4.1 Postavka problema 13 savijenu u obliku kruga s prečnikom jednakim rastojanju izmedju paralelnih pravih (ovo je dvaput veće od naše igle). Takav prsten će uvek dvaput seći neku liniju (ili odjednom dodirivati dve linije, tako da se u svakom slučaju dobijaju po dva presecanja).ako je ukupan broj bacanja N, onda je broj presecanja 2N. Naša prava igla je od tog prstena manja po dušini onoliko puta koliko je puta poluprečnik manji od obima kruga, tj.2π puta. Ali, mi smo već utvrdili da je najverovatniji broj presecanja proporcionalan dužini igle. Zato najverovatniji broj presecanja (K) naše igle mora biti 2π puta manji od 2N, tj. taj broj je N.Otuda je: π π brojbacanja brojp resecanja Ukoliko se posmatra veći broj bacanja, utoliko se dobija tačnija vrednost broja π. Švajcarski astronom R. Volf je sredinom prošlog veka posmatrao 5000 bacanja igle na hartiju sa izvučenim paralelnim pravim i za broj π je dobio vrednost 3,159..., koja je uostalom, manje tačna od Arhimedovog broja. Kao što vidite, odnos obima kruga prema prečniku nalazi se ovde eksperimentalnim putem, pri čemu se (i to je najzanimljivije) ne crta ni krug ni njegov prečnik, tj.radi se bez šestara. Čovek koji nema nikakvih predstava o geometriji, pa čak ni o krugu, može na taj način odrediti broj π, ako strpljivo izvrši veliki broj bacanja igle. 13

4.2 Modelovanje problema 14 4.2 Modelovanje problema Modelovonje problema podelićemo u pet koraka: 1. Prepoznavanje slučajnih veličina koje su nam od interesa Bilo koji ishod eksperimenta je u potpunosti odredjen položajem igle u ravni. Zbog početnog uslova (l < d) igla ne može da seče više od jedne prave, pa je dovoljno posmatrati položaj u odnosu na najbližu pravu. U odnosu na ovu pravu položaj igle je u potpunosti oderedjen dvema slučajnih veličinana: X - ugao igle u odnosu na pravu meren u smeru suprotnom od smera kretanja kazaljke na satu Y - rastojanje središta igle od prave Za slučajne veličine definisane na ovaj način važi: 0 X π, 0 Y d 2 2. Definisanje prostora svih ishoda za prethodno uočene slučajne veličine Prostor svih ishoda (X,Y) odgovara pravougaoniku: Π = (X, Y ) = {(x, y) : 0 x π, 0 y d 2 } 14

4.2 Modelovanje problema 15 3. Definisanje prostora povoljnih ishoda Da bi odredili prostor povoljnih ishoda moramo da prepoznamo one tačke prostora svih ishoda u kojima igla seče neku od pravih (tačke u kojima se eksperiment realizovao). Neformalno, igla seče pravu ukoliko je rastojanje središta igle od te prave dovoljno malo za neku fiksiranu ugaonu poziciju igle. Što znači da ako koordinatu donjeg kraja igle napišemo u obliku y 1 sin(x), zaključujemo da se 2 presek javlja ukoliko je ova vrednost negativna, tj. ako važi: y 1 2 sin(x) 4. Odredjivanje zajedničke raspodele verovatnoća na prethodno definisanom prostoru ishoda Zajednička raspodela verovatnoća slučajnih veličina X i Y je odredjena njihovom zajedničkom funkcijom gustine f (X,Y ) (x, y). Da bi odredili zajedni vcku gutinu moramo prvo utvrditi način na koji se eksperiment izvodi. Kako se igla baca na slučajan način, možemo uzeti da je raspodela slučajne veličine X uniformna na intervalu [0, π], tako da je njena marginalna gustina raspodele verovatnoća: f X (x) = 1 π 0 x π Analogno, možemo smatrati da slučajna veličina Y ima uniformnu raspodelu na intervalu [0, d ], tako da je njena marginalna 2 gustina raspodele verovatnoća data na sledeći način: f Y (y) = 2 d 0 y d 2 Uočimo da poznavanje ugaone pozicije igle ne može da utiče na njeno rastojanje od prave i obratno. Stoga, slučajne veličine X i Y 15

4.2 Modelovanje problema 16 možemo smatrati nezavisnim, pa je njihova zajednička funkcija gustine raspodele verovatnoća jednaka proizvodu njima odgovarajućih marginalnih: f (X,Y ) (x, y) = 2 πd 0 x π 0 y d 2 5. Rešavanje problema u prethodno postavljenim okvirima Da bi odredili verovatnoću preseka igle sa nekom od pravih moramo da integralimo prethodno utvrdjenu zajedničku gustinu na prostoru povoljnih ishoda: 2 πd 1 2 sin(x) P = π 0 0 π 0 dx 1 2 sin(x) 0 dy = 1 Posledica 2l πd 2 πd dxdy = π 0 sin(x)dx = Bifonov eksperiment nam daje mogućnost procene broja π. Naime, ako se igla baca veliki broj puta (n) na ravan podeljenu paralelnim pravama i ako m puta preseče neku pravu, tada se, prema statističkoj definiciji verovatnoće (posledica zakona velikih brojeva koji kaže da relativna frekvencija nekog dogadjaja u eksperimentu koji se ponavlja, konvergira skoro svuda ka stvarnoj vrednosti verovatnoće tog dogadjaja), može uzeti da je verovatnoća preseka igle sa nekom pravom približno jednaka m. Tako da na osnovu prethodno n dobijenog rezultata koji daje tačnu vrednost ove verovatnoće zaključujemo da važi: πd Zaključak 2l πd m n π 2ln md Bifonov eksperiment nije efikasan metod aproksimacije broja π. Za procenu broja π na četiri decimale potrebno je oko 100 miliona bacanja. 16

4.3 Opis programa 17 4.3 Opis programa Korišćenje programa je veoma jednostavno. Kao što se vidi sa slike u gornjem levom uglu su četiri dugmeta. Prvo dugme pokreće simulaciju, drugo dugme usporava simulaciju, a treće dugme ubrzava simulaciju, dok poslednje četvto dugme zaustavlja simulaciju. Ispod dugmića se nalazi slika stola na kom se simulira bacanje iglica. Na sredini prozora može se videti trenutni broj pokušaja i trakasti grafikon koji ima vrednosti od 3.04 do 3.24 i on nam mnogo preciznije prikazuje konvergiranje ka broju π od plotera sa desne strane na kom je skup vrednosti na intervalu od 2 do 4. Iznad plotera sa gornje desne strane se nalazi trenutna aproksimirana vrenost broja π. Program se može pronaći na mojoj internet strani: http://www.alas.matf.bg.ac.rs/ mi09036/vis.html 17

4.4 Kod programa 18 4.4 Kod programa 1 i m p o r t java. applet. ; 2 i m p o r t java. awt. ; 3 4 p u b l i c c l a s s appletbuffon e x t e n d s Applet implements Runnable 5 { 6 Dimension offdimension, d ; // p r o m e n l j i v e k o j e s e k o r i s t e 7 Image offimage ; // van s l i k e sa update ( ) 8 Graphics offgraphics ; // metod k o j i r e d u k u j e t r e p e r e n j e 9 10 i n t needlelength = 2 0 ; 11 i n t numrows = 1 0 ; 12 13 i n t xborder = 1 5 ; // p r o m e n l j i v e za i v i c e p r o z o r a 14 i n t yborder = 4 5 ; 15 i n t margin = 5 0 ; 16 17 i n t tableheight = needlelength numrows ; // 18 i n t tablewidth = 2 0 0 ; // d e f i n i s e m o v e l i c i n u s t o l a 19 i n t tablexcorner = xborder ; // na k o j i s e b a c a j u i g l e 20 i n t tableycorner = yborder ; // 21 22 i n t barwidth = 2 0 ; // d e f i n i s e m o v e l i c i n u t r a k a s t o g g r a f i k o n a 23 i n t barheight = tableheight ; 24 i n t barxcorner = xborder+tablexcorner+tablewidth+margin ; 25 i n t barycorner = tableycorner ; 26 27 d o u b l e bartop = 3. 2 4 ; // d e f i n i s e m o l i m i t e za t r a k a s t i g r a f i k o n 28 d o u b l e barbot = 3. 0 4 ; // na v r e d n o s t i od 3. 0 4 do 3. 2 4 tako da j e p i u s r e d i n i 29 d o u b l e barmid = ( bartop+barbot ) / 2 ; 30 31 i n t barvalue ; // d i n a m i c k a v r e d n o s t t r a k a s t o g g r a f i k o n a 32 33 i n t plotwidth = 2 0 0 ; // d e f i n i s e m o v e l i c i n u p l o t e r a 34 i n t plotheight = tableheight ; 35 i n t plotxcorner = barxcorner+margin+barwidth+xborder ; 36 i n t plotycorner = tableycorner ; 37 38 d o u b l e plotmax = 4 ; // p o s t a v l j a m o l i m i t e za p l o t e r 39 d o u b l e plotmin = 2 ; 40 d o u b l e plotmid = ( plotmax+plotmin ) / 2 ; 41 42 i n t barmaxplot = ( i n t ) ( plotheight ( plotmax bartop )/ 43 ( plotmax plotmin ) ) ; 44 i n t barminplot = ( i n t ) ( plotheight ( plotmax barbot )/ 45 ( plotmax plotmin ) ) ; 46 i n t barthick=( barmaxplot==barminplot? 1 : 47 barminplot barmaxplot ) ; 48 49 i n t pointerwidth =30; // p o i n t e r za t r a k a s t i g r a f i k o n 50 i n t pointertop, pointerbot ; 51 52 i n t power = 5 ; // v r e d n o s t a m p l i t u d e za x osu p l o t e r a 53 54 i n t n = 0 ; // b r o j b a c e n i h i g l i 18

4.4 Kod programa 19 55 i n t hit = 0 ; // b r o j i g l i k o j e su p o g o d i l e l i n i j u 56 i n t i = 1 ; // 57 58 d o u b l e needlex1, needlex2, needley1, needley2 ; 59 d o u b l e deltax, deltay ; 60 61 i n t ysign ; 62 63 f i n a l d o u b l e pivalue =2.0 Math. atan ( 1. 0 ) ; 64 65 i n t x1, x2, y1, y2 ; // p r o m e n l j i v e za c r t a n j e i g l i c a 66 i n t gx1, gx2, gy1, gy2 ; // p r o m e n l j i v e za p r a v l j e n j e p l o t e r a 67 68 i n t speed = 2 0 ; // p o s t a v l j a n j e b r z i n e sa t r y c a t c h blokom 69 70 d o u b l e h = 0 ; // r e a l n a v r e d n o s t p r o m e n l j i v e k o j a b r o j i pogotke 71 d o u b l e estpi, prevestpi ; // p r i b l i z n a v r e d n o s t p i 72 d o u b l e prob = 1 ; // odnos pogodaka i p o k u s a j a 73 d o u b l e prev = 1 ; // odnos po prethodnom s u d j e n j u 74 75 b o o l e a n oldscreen = f a l s e ; 76 b o o l e a n begin = f a l s e ; 77 78 Thread t ; 79 Button b1, b2, b3, b4 ; 80 81 p u b l i c v o i d init ( ) 82 { 83 setlayout ( new FlowLayout ( FlowLayout. LEFT ) ) ; 84 b1 = new Button ( Pocni ) ; 85 b2 = new Button ( U s p o r i ) ; 86 b3 = new Button ( U b r z a j ) ; 87 b4 = new Button ( Z a u s t a v i ) ; 88 89 add ( b1 ) ; 90 add ( b2 ) ; 91 add ( b3 ) ; 92 add ( b4 ) ; 93 94 t = new Thread ( this ) ; 95 t. start ( ) ; 96 } 97 98 p u b l i c b o o l e a n action ( Event e, Object o ) 99 { 100 if ( o. equals ( Pocni ) ) 101 { 102 n = 0 ; 103 hit = 0 ; 104 oldscreen = f a l s e ; 105 begin = t r u e ; 106 } 107 else if ( o. equals ( Z a u s t a v i ) ) 108 { 109 t. stop ( ) ; 110 } 111 else if ( o. equals ( U b r z a j ) ) 19

4.4 Kod programa 20 112 { 113 speed = ( speed >10? speed 10 : 1 0 ) ; 114 } 115 else if ( o. equals ( U s p o r i ) ) 116 { 117 speed = speed +10; 118 } 119 r e t u r n t r u e ; 120 } 121 122 p u b l i c v o i d run ( ) 123 { 124 while ( t r u e ) 125 { 126 if ( begin ) 127 { 128 // i z r a c u n a v a n j e p o z i c i j e k r a j a i g l e 129 130 needlex1 = tablewidth Math. random ( ) ; 131 needley1 = tableheight Math. random ( ) ; 132 deltax = needlelength Math. sin ( 2 pivalue Math. random () pivalue ) ; 133 deltay = Math. sqrt ( needlelength needlelength deltax deltax ) ; 134 needlex2 = needlex1+deltax ; 135 ysign = ( Math. random () <0.5? 1 : 1 ) ; 136 needley2 = needley1+ysign deltay ; 137 138 // p r o v e r a v a n j e da l i i g l a p r e l a z i l i n i j u 139 140 for ( i n t yline =0; yline<=needlelength numrows ; yline+=needlelength ) 141 { 142 if ( ( needley1<=yline && needley2>=yline ) 143 ( needley1>=yline && needley2<=yline ) ) 144 { 145 hit++; 146 b r e a k ; 147 } 148 } 149 n++; 150 prev = prob ; 151 h = hit ; 152 prob = h/ n ; 153 prevestpi = 2/ prev ; 154 estpi = 2/ prob ; 155 156 // i z r a c u n a v a n j a za p l o t e r 157 158 gx1 = ( i n t ) ( plotxcorner+math. log ( n ) plotwidth /( power Math. log ( 1 0 ) ) ) ; 159 gx2 = ( i n t ) ( plotxcorner+math. log ( n+1) plotwidth /( power Math. log ( 1 0 ) ) ) ; 160 gy1 = ( i n t ) ( plotycorner+(plotheight /( plotmin plotmax ) ) 161 ( prevestpi plotmax ) ) ; 162 if ( gy1<=plotycorner ) gy1 = plotycorner +1; 163 if ( gy1==plotycorner+plotheight ) gy1=gy1 1; 164 gy2 = ( i n t ) ( plotycorner+(plotheight /( plotmin plotmax ) ) 165 ( estpi plotmax ) ) ; 166 if ( gy2<=plotycorner ) gy2 = plotycorner +1; 167 if ( gy2==plotycorner+plotheight ) gy2=gy2 1; 168 20

4.4 Kod programa 21 169 // i z r a c u n a v a n j a za c r t a n j e i g l i c a 170 171 x1 = ( i n t ) ( xborder+needlex1 ) ; 172 x2 = ( i n t ) ( xborder+needlex2 ) ; 173 y1 = ( i n t ) ( yborder+needley1 ) ; 174 y2 = ( i n t ) ( yborder+needley2 ) ; 175 repaint ( ) ; 176 } 177 try 178 { 179 Thread. currentthread ( ). sleep ( speed ) ; 180 } 181 catch ( InterruptedException e ) 182 { 183 } 184 } 185 } 186 187 p u b l i c v o i d paint ( Graphics g ) 188 { 189 d = size ( ) ; 190 update ( g ) ; 191 } 192 193 p u b l i c v o i d update ( Graphics g ) 194 { 195 if ( ( offgraphics==null ) 196 ( d. width!= offdimension. width ) 197 ( d. height!= offdimension. height ) ) 198 { 199 offdimension = d ; 200 offimage = createimage ( d. width, d. height ) ; 201 offgraphics = offimage. getgraphics ( ) ; 202 } 203 204 if (! oldscreen ) 205 { 206 offgraphics. setcolor ( getbackground ( ) ) ; 207 offgraphics. fillrect ( 0, 0, d. width, d. height ) ; 208 offgraphics. setcolor ( Color. gray ) ; 209 offgraphics. fillrect ( plotxcorner, plotycorner+barmaxplot, 210 plotwidth, barminplot barmaxplot ) ; 211 offgraphics. drawstring ( +barmid+, barxcorner 45, 212 barycorner+barheight / 2 ) ; 213 offgraphics. drawstring ( +bartop+, barxcorner 45, 214 barycorner +5); 215 offgraphics. drawstring ( +barbot+, barxcorner 45, 216 barycorner+3+barheight ) ; 217 offgraphics. drawstring ( +plotmax, plotxcorner+plotwidth +2, 218 plotycorner +5); 219 offgraphics. drawstring ( +plotmin, plotxcorner+plotwidth +2, 220 plotycorner+plotheight +5); 221 offgraphics. drawstring ( +plotmid, plotxcorner+plotwidth +2, 222 plotycorner+plotheight /2+5); 223 offgraphics. drawstring ( G r a f i k a p r o k s i m a c i j e b r o j a p i, 224 plotxcorner +5, plotycorner+plotheight +20); 225 21

4.4 Kod programa 22 226 // c r t a n j e l i n i j a k o j e s e odnose na t r a k a s t i g r a f i k o n i p l o t e r 227 228 offgraphics. drawline ( barxcorner+barwidth +5, barycorner, 229 plotxcorner 5, barmaxplot+plotycorner ) ; 230 offgraphics. drawline ( barxcorner+barwidth +5, barycorner+barheight, 231 plotxcorner 5, barminplot+plotycorner ) ; 232 233 // c r t a n j e s t o l a na k o j i p a d a j u i g l e i o s e p l o t e r a 234 235 offgraphics. setcolor ( Color. blue ) ; 236 offgraphics. drawrect ( tablexcorner, tableycorner, tablewidth, tableheight ) ; 237 offgraphics. drawrect ( plotxcorner, plotycorner, plotwidth, plotheight ) ; 238 239 for ( i=1; i<tableheight / needlelength ; i++) 240 { 241 offgraphics. drawline ( tablexcorner, tableycorner+needlelength i, 242 tablexcorner+tablewidth, tableycorner+needlelength i ) ; 243 } 244 oldscreen = t r u e ; 245 } 246 247 else 248 { 249 offgraphics. setcolor ( getbackground ( ) ) ; 250 offgraphics. fillrect ( 0, 0, d. width, yborder 10); 251 } 252 253 // i s p i s i v a n j e p r i b l i z n e v r e d n o s t i p i 254 255 offgraphics. setcolor ( Color. black ) ; 256 offgraphics. drawstring ( Trenutna v r e d n o s t b r o j a p i : +estpi, 257 plotxcorner +10, 2 0 ) ; 258 offgraphics. drawstring ( Br. p o k u s a j a : +n, 240, 2 0 ) ; 259 260 offgraphics. setcolor ( Color. black ) ; 261 262 // vodimo racuna da s e n i j e d n a i g l a ne n a d j e i z v a n g r a n i c a s t o l a 263 264 x1 = ( x1>tablexcorner+tablewidth? 265 tablexcorner+tablewidth : x1 ) ; 266 x2 = ( x2>tablexcorner+tablewidth? 267 tablexcorner+tablewidth : x2 ) ; 268 y1 = ( y1>tableycorner+tableheight? 269 tableycorner+tableheight : y1 ) ; 270 y2 = ( y2>tableycorner+tableheight? 271 tableycorner+tableheight : y2 ) ; 272 273 x1 = ( x1<tablexcorner? tablexcorner : x1 ) ; 274 x2 = ( x2<tablexcorner? tablexcorner : x2 ) ; 275 y1 = ( y1<tableycorner? tableycorner : y1 ) ; 276 y2 = ( y2<tableycorner? tableycorner : y2 ) ; 277 278 offgraphics. drawline ( x1, y1, x2, y2 ) ; 279 280 // c r t a n j e t r a k a s t o g g r a f i k o n a 281 282 offgraphics. setcolor ( Color. gray ) ; 22

4.4 Kod programa 23 283 offgraphics. fillrect ( barxcorner, barycorner, 20, barheight ) ; 284 285 offgraphics. setcolor ( Color. red ) ; 286 287 barvalue = ( i n t ) ( barheight ( estpi bartop ) / ( barbot bartop ) ) ; 288 if ( barvalue<0 pointerwidth / 2) barvalue=0 pointerwidth / 2 ; 289 if ( barvalue>barheight+pointerwidth / 2) barvalue=barheight+ 290 pointerwidth / 2 ; 291 292 pointertop = ( barvalue pointerwidth/2<0? 293 0 : barvalue pointerwidth / 2 ) ; 294 pointerbot = ( barvalue+pointerwidth/2>barheight? 295 barheight : barvalue+pointerwidth / 2 ) ; 296 297 offgraphics. fillrect ( barxcorner, barycorner+pointertop, 298 barwidth, pointerbot pointertop ) ; 299 300 301 offgraphics. setcolor ( Color. gray ) ; 302 if ( barvalue <0) barvalue =0; 303 if ( barvalue>barheight ) barvalue=barheight ; 304 offgraphics. drawline ( barxcorner, barycorner+barvalue, 305 barxcorner+barwidth 1, barycorner+barvalue ) ; 306 307 // c r t a n j e p l o t a 308 309 offgraphics. setcolor ( Color. red ) ; 310 311 offgraphics. drawline ( gx1, gy1, gx2, gy2 ) ; 312 g. drawimage ( offimage, 0, 0, this ) ; 313 } 314 } 23

4.5 Rezultati testiranja programa 24 4.5 Rezultati testiranja programa Broj iteracija 1. eksperiment 2. eksperiment 3. eksperiment 4. eksperiment 500 3,13283208 3,23206205 3,09214594 3,32225913 5.000 3,14248004 3,15636639 3,11642981 3,11235605 50.000 3,15566915 3,14524753 3,15845993 3,14607872 500.000 3,13949662 3,14416763 3,14020053 3,14390469 Broj iteracija 5. eksperiment 6. eksperiment 7. eksperiment 8. eksperiment 500 3,38524035 3,20307495 3,21750321 3,27653997 5.000 3,11235605 3,10829292 3,07616586 3,10829292 50.000 3,14497056 3,12666103 3,12789330 3,11398428 500.000 3,13632601 3,14380783 3,13764864 3,14330977 Broj bacanja 500 5.000 50.000 500.000 Standardna greška 0.091114511 0.0250001485 0.0017220910 0.00048493858 Histogram rezultata za 10.000 eksperimenata u kojima je bačeno 100.000 igli 24

25 5 Poredjenje brzine konvergencije u sva 3 slučaja π = 3.1415926535897932384626433832795... Broj iteracija Krug upisan u kvadrat Lopta upisana u kocku Bufonova igla 1.000 3.108000 3,132000 3.120124 10.000 3.153600 3,161400 3.150102 100.000 3.144000 3,130020 3.138436 1.000.000 3.140188 3,140188 3.136451 10.000.000 3.141856 3,141856 3.141186 100.000.000 3.141841 3,141726 3.141440 1.000.000.000 3.141715 3,141409 3.141501 10.000.000.000 3.141595 3,141595 3.141590 Greška Br. iteracija Krug upisan u kvadrat Lopta upisana u kocku Bufonova igla 1.000 0.033592 0.009592 0.021468 10.000 0.120073 0.019807 0.008509 100.000 0.002473 0.011572 0.003156 1.000.000 0.001404 0.001404 0.005141 10.000.000 0.000263 0.000263 0.000406 100.000.000 0.000248 0.000133 0.000152 1.000.000.000 0.000122 0.000183 0.000092 10.000.000.000 0.000002 0.000002 0.000003 25

26 6 Zaključak Monte Karlo metoda je numerički postupak za aproksimiranje (izračunavanje) integrala upotrebom računarskih mogućnosti i prosečne snage računara. Prednosti Monte Karlo metode su intuitivnost postupka aproksimacije, te jednostavno predstavljanje i primenjivanje u računarskim izračunavanjima. Još jedna značajna prednost ove metode je primena na višedimenzionalne integrale. Kad se podiže na više dimenzije, broj operacija koje treba izvesti raste eksponencijalno s dimenzionalnošću podintegralne funkcije integrala. Zbog tog nedostatka metode se uz odredjena ograničenja primjenjuju na integrale višedimenzionalnih funkcija. Monte Karlo metoda nema ograničenja po pitanju višedimenzionalnosti. Jednako se može primenjivati na 1000-dimenzionalni integral kao i na integral sa samo jednom dimenzijom. Iako je princip Monte Karlo metode jednostavan za programsko ostvarenje, za složene probleme računarsko izračunavanje može biti zahtevno čak i s najjačim računarom. Stoga postoje načini da se ubrza Monte Karlo metoda analize. U tim slučajevima mogu se koristiti različite tehnike smanjivanja varijance koje će smanjiti složenost izračunavanja. 26

27 7 Literatura [1] Jevremović Vesna, Verovatnoća i statistika, Matematički fakultet, Beograd 2009. [2] Richard J. Gonsalves, Monte Carlo Calculation of Pi, Physics Dept., SUNY, University at Buffalo, NY [3] http : //en.wikipedia.org/wiki/buffon s needle [4] Richard W. Hamming, T heartof P robability, Addison-Wesley, 1991 [5] Edwin Miles, Monte Carlo Integration: an Overview with Examples, 2004 [6] Harry Khamis, Statistical Consulting Center, Buffon s Needle Problem, Wright State University, Dayton OH [7] Eve Astrid Andersson, Calculation of Pi Using the Monte Carlo Method, Computer Science Dept., Northface University, Salt Lake City, UT [8] Ronald Mak, Monte Carlo and Buffon s Needles applet, Java Number Cruncher, Prentice Hall, Inc. 27