1 / 33

Monte-Carlo meetodid 1. loeng

Monte-Carlo meetodid 1. loeng. Märt Möls martm@ut.ee. Ajakulu: 0,01s arvu kohta Arvutus, mis vajab 100miljonit juhuslikku suurust ootaks vajalike arvude genereerimise taga 11päeva. Kasutamine R’i kaudu: library(random) a=randomNumbers(n=100, min=1, max=1000, base=10).

tale
Télécharger la présentation

Monte-Carlo meetodid 1. loeng

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Monte-Carlo meetodid1. loeng Märt Möls martm@ut.ee

  2. Ajakulu: 0,01s arvu kohta Arvutus, mis vajab 100miljonit juhuslikku suurust ootaks vajalike arvude genereerimise taga 11päeva. Kasutamine R’i kaudu: library(random) a=randomNumbers(n=100, min=1, max=1000, base=10)

  3. Juhuslikud ja pseudojuhuslikud arvud Def. 1. Arve x1, ..., xn nimetatakse juhuslikule suurusele X vastavateks juhuslikeks arvudeks, kui nad on saadud juhusliku suuruse X väärtustena juhusliku katse sõltumatul kordamisel

  4. Juhuslikud ja pseudojuhuslikud arvud Def. 2. Arve x1, ..., xn nimetatakse juhuslikule suurusele X vastavateks pseudojuhuslikeks arvudeks, kui nad on saadud mingi algoritmi või eeskirja kohaselt ja neid ei õnnestu eristada juhuslikule suurusele X vastavatest juhuslikest arvudest statistiliste testide abil.

  5. Üks vanimatest “juhuslike arvude” generaatoritest – ruudu keskosa meetod Võta üks arv: 2345 Tõsta see ruutu 23452 = 05499025 U1=0,4990 49902 = 24900100 90012 = 81018001 U2=0,9001 U3=0,0180 …………. ………….

  6. Pole päriselt probleemivaba… 0.4990 0.9001 0.0180 0.0324 0.1049 0.1004 0.0080 0.0064 0.0040 0.0016 0.0002 0.0000 0.0000 0.0000 …………

  7. RANDU – kunagine kõige populaarsem pseudojuhuslike arvude generaator

  8. Kursuse kava • Õpime tekitama “juhuslikke” arve arvuti abil; • kontrollime, kas kasutatav juhuslike arvude generaator on piisavalt hea; • õpime muutma juhuslikkust endale sobivale kujule (kuidas saada soovitud jaotusega juhuslikke suuruseid); • õpime juhuslikke arve kasutama erinevate ülesannete lahendamisel (integreerimine, usaldusintervallide leidmine, hinnangu nihke vähendamine, ...) .

  9. Aine edukaks läbimiseks • Tuleb sooritada 2 kontrolltööd (praktikumide ajal). Kontrolltöö tulemus läheb arvesse eksamihinde arvutamisel (40% hindest tuleb kontrolltöö tulemusest); • 60% eksamihindest moodustab eksamitöö.

  10. Pseudojuhuslike arvude generaatorid

  11. Tavalähenemine Genereeri üks või mitu ühtlasest jaotusest U(0,1) pseudojuhuslikku suurust Transformeeri ühtlasest jaotusest (pseudo)juhuslik suurus soovitud jaotusega juhuslikuks suuruseks

  12. Lineaarne kongruentne generaator Pseudojuhuslikud arvud vahemikus 0..1 saadakse valemiga:

  13. Näide a=5, b=1, m=8 x0 = 1 x1 = 6 x2 = 7 x3 = 4 x4 = 5 x5 = 2 x6 = 3 x7 = 0 x8 = 1 x9 = 6 ....... U1 = 6 / 8 = 0,75 U2 = 7 / 8 U2 = 7 / 8 U3 = 4 / 8 Vaadeldud pseudojuhuslike arvude generaator läks tsüklisse: alates 9. genereeritud arvust hakkavad genereeritud arvud iseennast kordama. Lineaarne kongruentne generaator hakkab hiljemalt m arvu pärast iseennast kordama.

  14. Iseenda kordamine... ...pole ainult lineaarse kongruentse generaatori omapära. Seda teevad kõik pseudojuhuslike arvude generaatorid. Pseudojuhuslike arvude generaatori üldine tööpõhimõte: • Lähtesta generaator algseisundisse S0 • Leia uus seisund Si = f(Si-1) • Väljasta juhuslik suurus Ui = g(Si) • Suurenda i väärtust: i = i+1 ja jätka punktist 2. Kuna seisundi Si meeleshoidmiseks kasutatav mälumaht on lõplik, peab iga pseudojuhuslike arvude generaator lõpuks iseennast kordama hakkama.

  15. Näide 2 a=5, b=1, m=9 1 6 4 0 1 6 4 0 ....

  16. Teoreem Lineaarse kongruentse meetodi korral saavutatakse tsükli maksimaalne pikkus m parajasti siis, kui on täidetud järgmised tingimused: 1. suurim ühistegur SÜT(b, m)=1 2. (a-1) on iga algarvu kordne, millega jagub m(kui m jagub p-ga siis ka a-1 jagub p-ga) 3. Kui m jagub 4-ga, siis peab ka a-1 jaguma 4-ga.

  17. Generaator 1 Generaator 2 a=5, b=1, m=8 a=5, b=1, m=9 • SÜT(b,m)=1 1. SÜT(b,m)=1 • (a-1) jagub 2-ga 2. (a-1) ei jagu 3-ga • (a-1) jagub 4-ga 3. m ei jagu 4-ga. Kui m jagub 4-ga, siis peab ka (a-1) jaguma 4-ga

  18. Parandame generaatorit 2 Generaator 2 a=5, b=1, m=9 • SÜT(b,m)=1 • (a-1) jagub 3-ga • m ei jagu 4-ga. 1 8 3 4 2 6 7 5 0 1 8 ..... 7

  19. Märkus: multiplikatiivne generaator Multiplikatiivse generaatori korral on maksimaalne tsüklipikkus m-1. See saavutatakse ainult juhul, kui m on algarv ja a≠0 on nn lihtne juur: mistahes arvu m-1 algteguri p korral a(m-1)/p ei jagu arvuga m.

  20. Soovitused (Handbook of Monte-Carlo Methods, D.P.Kroese; T. Taimre; Z. I. Botev): m>261 ≈2*1018 Ei tohiks kasutada generaatoreid, mille m on esitatav kujul 2p Näiteid MinSTD a=75b=0 m=231-1 SAS (UNIFORM) a=397204094 b=0 m=231-1 Visual Basic (ver 6 ja varasem): a=1140671485 b=12820163 m=224 MMIX (Knuth) a=6364136223846793005 b=1442695040888963407 m=264 Maple: a=427419669081, b=0, m=1012-11 Pierre L'Ecuyer:a=243267374564284687042667403923350539132 b=0, m=2128-159 .... Vaata: http://random.mat.sbg.ac.at/results/karl/server/node5.html

  21. Pikk periood ei taga veel head generaatorit a=1, b=1, m=mustmiljon Xi = 1, 2, 3, 4, 5, 6, 7, 8, 9, ..... Tuleks jälgida korrelatsiooni järjestikuste LKG-generaatori poolt genereeritud arvude vahel. Sageli saab mõistliku generaatori valikuga a≈ sqrt(m)

More Related