62
Diplomamunka Miskolci Egyetem Leghosszabb szériák vizsgálata Készítette: Selling István Mérnök Informatikus MSc jelölt Témavezető: Dr. Karácsony Zsolt egyetemi docens Miskolc, 2013

Diplomamunka - midra.uni-miskolc.hu

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Diplomamunka - midra.uni-miskolc.hu

Diplomamunka

Miskolci Egyetem

Leghosszabb szériák vizsgálata

Készítette:

Selling István

Mérnök Informatikus MSc jelölt

Témavezető:

Dr. Karácsony Zsolt

egyetemi docens

Miskolc, 2013

Page 2: Diplomamunka - midra.uni-miskolc.hu

Miskolci EgyetemGépészmérnöki és Informatikai KarAlkalmazott Informatikai Tanszék Szám:

Diplomamunka Feladat

Selling István (MNJOHS) Mérnök Informatikus MSc jelölt részére.

A szakdolgozat tárgyköre: Valószínűség-számítás

A szakdolgozat címe: Leghosszabb szériák vizsgálata

A feladat részletezése:A valószínűség-számítás rövid történeti áttekintése.MATLAB programcsomag rövid bemutatása, története, alkalmazási területeinek rövidismertetése.Leghosszabb szériák témakörébe tartozó tételek, állítások ismertetése, bemutatása,ezen témakörön belül írt alkalmazások bemutatása. Rekurzív, aszimptotikus és szimu-lációs módszerek, összefüggések ismertetése. Két módszer bemutatása rekurzív progra-mok gyorsítására MATLAB programcsomagban.Szentpétervári paradoxon ismertetése, történetének áttekintése, alkalmazás bemutatá-sa.GUI készítés MATLAB programcsomag segítségével.

Témavezető: Dr. Karácsony Zsolt, egyetemi docens

A feladat kiadásának ideje: 2012. 09. 30.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .szakfelelős

2

Page 3: Diplomamunka - midra.uni-miskolc.hu

Eredetiségi Nyilatkozat

Alulírott . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; Neptun-kód: . . . . . . . . . . . . . . . . . . .a Miskolci Egyetem Gépészmérnöki és Informatikai Karának végzős . . . . . . . . . . . . . . . . . . .szakos hallgatója ezennel büntetőjogi és fegyelmi felelősségem tudatában nyilatkozomés aláírásommal igazolom, hogy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .című szakdolgozatom/diplomatervem saját, önálló munkám; az abban hivatkozott szak-irodalom felhasználása a forráskezelés szabályai szerint történt.

Tudomásul veszem, hogy szakdolgozat esetén plágiumnak számít:

• szószerinti idézet közlése idézőjel és hivatkozás megjelölése nélkül;

• tartalmi idézet hivatkozás megjelölése nélkül;

• más publikált gondolatainak saját gondolatként való feltüntetése.

Alulírott kijelentem, hogy a plágium fogalmát megismertem, és tudomásul veszem,hogy plágium esetén szakdolgozatom visszautasításra kerül.

Miskolc, . . . . . . . . . . . .év . . . . . . . . . . . .hó . . . . . . . . . . . .nap

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Hallgató

3

Page 4: Diplomamunka - midra.uni-miskolc.hu

1.szükséges (módosítás külön lapon)

A diplomamunka feladat módosításanem szükséges

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .dátum témavezető(k)

2. A feladat kidolgozását ellenőriztem:

témavezető (dátum, aláírás): konzulens (dátum, aláírás):. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . .

3. A diplomamunka beadható:

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .dátum témavezető(k)

4. A diplomamunka . . . . . . . . . . . . . . . . . szövegoldalt. . . . . . . . . . . . . . . . . program protokollt (listát, felhasználói leírást). . . . . . . . . . . . . . . . . elektronikus adathordozót (részletezve). . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . egyéb mellékletet (részletezve). . . . . . . . . . . . . . . . .

tartalmaz.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

dátum témavezető(k)5.

bocsáthatóA diplomamunka bírálatra

nem bocsátható

A bíráló neve: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .dátum szakfelelős

6. A diplomamunka osztályzataa témavezető javaslata: . . . . . . . . . . . . . .a bíráló javaslata: . . . . . . . . . . . . . .a diplomamunka végleges eredménye: . . . . . . . . . . . . . .

Miskolc, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .a Záróvizsga Bizottság Elnöke

4

Page 5: Diplomamunka - midra.uni-miskolc.hu

Tartalomjegyzék

1. Bevezetés 8

2. Rövid áttekintés 102.1. Történeti áttekintés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1.1. Valószínűség-számítás történeti áttekintése . . . . . . . . . . . . 102.1.2. MATLAB történeti áttekintése . . . . . . . . . . . . . . . . . . 11

2.2. Néhány szükséges fogalom . . . . . . . . . . . . . . . . . . . . . . . . . 112.3. A feladatok megoldása során használt eloszlások . . . . . . . . . . . . . 12

2.3.1. Bernoulli-eloszlás . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3.2. Egyenletes eloszlás . . . . . . . . . . . . . . . . . . . . . . . . . 132.3.3. Normális eloszlás . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.4. Fogadásos feladat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.4.1. A feladat leírása . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.4.2. A feladat szimulációja . . . . . . . . . . . . . . . . . . . . . . . 15

3. Leghosszabb szériák vizsgálata 173.1. Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.2. Független kísérletsorozat . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2.1. Szabályos pénzérme esete . . . . . . . . . . . . . . . . . . . . . 183.2.2. Alkalmazás bemutatása szabályos pénzérme esetében . . . . . . 213.2.3. Szabálytalan pénzérme esete . . . . . . . . . . . . . . . . . . . . 253.2.4. Alkalmazás bemutatása szabálytalan pénzérme esetén . . . . . . 273.2.5. Alkalmazás bemutatása, elért gyorsulások . . . . . . . . . . . . 323.2.6. Hibaszámításos alkalmazás bemutatása . . . . . . . . . . . . . . 34

3.3. Nem független kísérletsorozat . . . . . . . . . . . . . . . . . . . . . . . 363.3.1. Szimuláció bemutatása . . . . . . . . . . . . . . . . . . . . . . . 38

3.4. Néhány matematikai alkalmazás . . . . . . . . . . . . . . . . . . . . . . 38

4. Szentpétervári paradoxon 404.1. A szentpétervári paradoxon . . . . . . . . . . . . . . . . . . . . . . . . 404.2. A paradoxon előtörténete . . . . . . . . . . . . . . . . . . . . . . . . . . 414.3. A paradoxon módosítási lehetőségei . . . . . . . . . . . . . . . . . . . . 474.4. Alkalmazás bemutatása . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.5. További alkalmazások . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.5.1. Martingál szerencsejáték stratégia . . . . . . . . . . . . . . . . . 504.5.2. Egyék alkalmazások . . . . . . . . . . . . . . . . . . . . . . . . . 50

5. GUI tervezés MATLAB programcsomagban 52

5

Page 6: Diplomamunka - midra.uni-miskolc.hu

6. Összefoglalás 57

Irodalomjegyzék 59

Adathordozó használati útmutató 61

6

Page 7: Diplomamunka - midra.uni-miskolc.hu

Köszönetnyilvánítás

Ezúton szeretnék köszönetet nyilvánítani azoknak, akik segítsége nélkül ez a diplo-mamunka nem készülhetett volna el.

Elsősorban témavezetőmnek, Dr. Karácsony Zsoltnak, a sok segítségért, türelemért,figyelemért és ötleteiért, amikkel előresegítette a diplomamunkám haladását.

Köszönettel tartozom a Miskolci Egyetem Alkalmazott Matematikai Tanszékének,hogy támogattak a tanulmányaim során. Elsősorban Dr. Fegyverneki Sándort és Dr.Raisz Pétert szeretném kiemelni, akik megismertették, és megszerettették velem a ma-tematikának ezt a területét.

Ugyancsak szeretném megköszönni szüleimnek és barátaimnak a segítséget, támo-gatást és türelmet, amit nyújtottak.

Végül, de nem utolsó sorban pedig szeretném megköszönni a kedves Olvasónak,amiért idejét és figyelmét diplomamunkámra áldozza.

7

Page 8: Diplomamunka - midra.uni-miskolc.hu

1. fejezet

Bevezetés

A valószínűség-számítás matematikájának eredeti motivációját a véletlen tömeg-jelenségek (más néven kísérletek) mennyiségi, gyakorisági viszonyainak vizsgálata ad-ta, melyek egyrészt tetszőlegesen sokszor megismétlődhetnek, viszont megismétlődésüktöbbféle eredménnyel járhat, és nem tudjuk pontosan megmondani, kiszámítani, hogymelyik ismétlődés alkalmával melyik kimenetel következik be. A valószínűség-számításlegelső problémái szerencsejátékok elemzésén alapultak, annak kimeneteleit próbáltákmegállapítani. Ilyen problémák közé tartozik például egy érme feldobása esetén, hogyfej vagy írás lesz a dobás eredménye.

Szerencsejátéknak az olyan játékokat nevezzük, amikben nagy szerepet játszik va-lamilyen véletlenszerű esemény, és aminek eredményére játékosok fogadhatnak. A játékcélja az esemény kimenetelének eltalálása, és további pénz nyerése. A szerencsejátékoka legősibb játékformák közé tartoznak, végigkísérték az emberiség történelmét. Ren-geteg különböző szerencsejáték típust lehet megkülönböztetni, és ezeket a játékokatkülönböző eszközök segítségével lehet játszani. Ilyen játékok közé tartoznak péládul azérmedobásos, kockadobásos játékok, kártyajátékok. A szerencsejátékok között is van-nak olyan játékok, amelyek kimenetelében szerepet játszhatnak a játékosok képességei,viszont a szerencse nagyobb szereppel bír a játék kimenetelének meghatározásában.

A valószínűség-számítás kezdeti problémái mind szerencsejátékok köré épültek, ahogya legtöbb értekezés címében is megjelentek a véletlenek törvényszerűségeihez hasonlófogalmak. A klasszikus valószínűség-számítás alapjait lerakó matematikusok (Carda-no, Fermat, Pascal, Jacob Bernoulli, Huygens) munkái is különböző szerencsejátékok(kockadobás, érmedobás) elemzéseiből indultak ki, és váltak tudományággá. Diploma-munkámban ilyen szerencsejátékok elemzéséből kiinduló matematikai következtetéseketszeretnék bemutatni, és szimulálni.

A diplomamunka legelején szeretném röviden bemutatni a valószínűség-számítás ki-alakulásának történetét, és bemutatni, hogy milyen problémák köreivel bővült az elteltidők során. Ezután bemutatnám a programokhoz használt MATLAB szoftvercsomagkialakulásának történetét. Ennek a fejezetnek a végén szeretnék bemutatni egy egysze-rű programot, ami egy fogadásos feladathoz köthető, egy olyan játékhoz, aminek kétkimenetele van, és ezek a kimenetelek csakis a szerencsétől függnek. A játékos ilyen já-tékokból álló sorozatot játszik, és minden játék során fogad a játék értékére. A feladatlényege, hogy bemutassa, hogy adott kezdőösszeg, tét és valószínűségi érték során adottjátékszám mellett milyen nyereményeket milyen relatív gyakorisággal érhet el a játékos.Ez a feladat egy egyszerű bevezetésként szolgál diplomamunkám további részeihez.

Harmadik fejezetemben a leghosszabb szériák vizsgálatára térnék ki, azaz például

8

Page 9: Diplomamunka - midra.uni-miskolc.hu

egy érmedobásos kísérletet egymás után sokszor végrehajtva, milyen hosszúságú soro-zatok várhatóak az eredmények között. Ebben a fejezetben kitérnék először a függetlenkísérletek esetére, azaz az érmedobásra, amikor az aktuális kísérlet eredménye nem függaz előző kísérletek eredményétől. Itt ismertetem mind a szabályos, mind a szabálytalanpénzérme esetét. Ebben az alfejezetben ismertetem azokat a rekurzív és aszimptoti-kus tételeket, amelyek ezen véletlen események eredményére adnak összefüggéseket, ésezekhez az eredményekhez hasonlóan bemutatom a MATLAB programcsomag segítsé-gével megírt szimulációs eredményeket.

Ehhez az alfejezethez kapcsolódóan bemutatok egy olyan szimulációs programot,aminek az a célja, hogy elemezze azokat a változásokat, amik akkor következkeznek be,ha megengedünk különböző számú hibát egy érmesorozatban. Ezen szimulációval vizs-gálom a korábban is bemutatott leghosszabb fej, illetve leghosszabb bármilyen szériákváltozását hibák esetén. A szimuláció során alkalmazott algoritmus segítségével be-mutatom az egy, kettő, illetve három megengedett hiba esetét, viszont az alkalmazottalgoritmus segítségével több hibához tartozó sorozatok eredményei is kiszámíthatóakkevés változtatással.

Ugyanebben a fejezetben kitérek a függő kísérletek esetére is, amikor az aktuáliskísérlet eredménye függ az előző kísérletek eredményétől. Ilyen kísérletre adok példátolyan játékban, ahol egy pakli kártyából egyesével húzunk kártyákat, és a kihúzott kár-tyákat nem tesszük vissza a pakliba. Ebben a problémakörben is a leghosszabb szériákat(leghosszabb piros, illetve leghosszabb bármilyen színű) vizsgálom, és ezeket mutatombe szimuláció segítségével.

A negyedik fejezetben egy háromszáz évvel ezelőtt megfogalmazott feladatot muta-tok be, a szentpétervári paradoxont. A paradoxon ismertetése után bemutatom a pa-radoxon történetét is, kiemelve azokat a matematikusokat, akik érdemben foglalkoztaka problémával. Kiemelem a paradoxon néhány érdekes tulajdonságát, majd bemuta-tom az erre a feladatra írt szimulációs programot, aminek segítségével lehetőség van aszentpétervári játékot játszani, és megvizsgálni azt, hogy milyen kezdőtét mellett leszigazságos a játék, illetve hogy a játék elején megadott kezdőtétek mellett milyen kifi-zetődés várható a játéktól.

A szentpétervári paradoxon után bemutatom a probléma további változatait, illetvehogy milyen alkalmazásai vannak a problémának. Itt bemutatok egy szimulációs fel-adatot, ami az ún. martingál-stratégiához kapcsolódik. A stratégia bemutatása soránigyekszek bemutatni azon tényezőket, amik miatt ez a stratégia nagyon kiszámíthatlanlehet, és hiába tűnik biztosnak a nyerés, rengeteg pénzt lehet veszíteni az alkalmazá-sával.

Diplomamunkám legutolsó fejezetében egy rövid bemutatást adnék a MATLABszoftvercsomagba épített GUIDE nevű fejlesztőkörnyezetről, aminek segítségével könnyenlehet grafikus felhasználói felületeket szerkeszteni. Erre a környezetre azért térek ki,mert a diplomamunkához készült programok közös grafikus felülete ezzel a környe-zettel készült. Ebben a rövid leírásban bemutatom, milyen lehetőségeket nyújt ez akörnyezet, és jellemzem ezeket.

A kutató munka a Miskolci Egyetem stratégiai kutatási területén működő Fenntart-ható Természteti Erőforrás Gazdálkodás Kiválósági Központ / Alkalmazott Anyagtu-domány és Nanotechnológiai Kiválósági Központ / Mechatronikai és Logisztikai Kivá-lósági Központ / Innovációs Gépészeti Tervezés és Technológiák Kiválósági Központkeretében valósult meg.

9

Page 10: Diplomamunka - midra.uni-miskolc.hu

2. fejezet

Rövid áttekintés

2.1. Történeti áttekintés

2.1.1. Valószínűség-számítás történeti áttekintése

A valószínűség-számítás elméletének megalapozói közül első sorban a francia Pier-re Fermat (1601-1665) és Blaise Pascal (1623-1662) említésre méltó, bár néhány ilyentárgyú mű már előttük is megjelent. A legfontosabb példa a De ludo aleae (A kockajá-tékról) c. könyv, amit Cardanonak (1501-1576) tulajdonítanak. A legtöbb értekezés avéletlen törvényszerűségeiről hasonló címet viselt, a matematikának ez az ága ugyanisa szerencsejátékok elméleteként indult. Pascal és Fermat is lényegében a kockázáshozés egyéb játékokhoz kapcsolódó problémákat, feladatokat tárgyalnak, és oldanak meg,valamint lerakják a „klasszikus” valószínűség-számítás alapjait.

A valószínűség-számítás, mint matematikai elmélet születési évének az 1654-es esz-tendőt szokás tekinteni (Fermat és Pascal egyik ilyen tárgyú levelének kelte), maga avalószínűség szó Jacob Bernoulli (1654-1705) Ars conjectandi (A találgatás művészete,1713) című munkájában fordul elő először. Ha sokszor elvégezzük ugyanazt a kísérletet,és lejegyezzük, hogy az adott esemény ennek során hányszor következett be, akkor akísérletet egyre többször végezve az adott esemény relatív gyakorisága egyre inkábbmegközelít egy számot: az esemény valószínűségét.

A szerencsejátékok elmélete később biztosítási, népesedési és sztochasztikus (vélet-len) geometriai problémákkal bővült. A következő matematikusok, akik ilyen problé-mákkal foglalkoztak: Moivre, Legendre, Bayes, Poisson, Gauss, Buffon. A XIX. század-ban a valószínűség-számítás a matematika önmagában is hatalmas, önálló ágává vált. A„modern kori” (XIX. század második fele - XX. század első fele) valószínűség-számítástorosz matematikusok vitték tovább: Csebisev, Markov, Kolmogorov. Kolmogorov vé-gezte el az elmélet axiomatikus megalapozását. E lépéssel a valószínűség-számítás amodern matematika többi ágával teljesen egyenrangú formális elméletté vált.

A valószínűség-számítás nemcsak megalapozódott a huszadik században, hanemfolyamatosan újabb területekkel bővült, például egy részecske bolyongásának leírásatöbbdimenziós euklideszi térben (Brown-mozgás). A huszadik század második felébenszületett meg önálló tudományként műszaki, mérnöki és statisztikai problémák ter-mékeként a valószínűség-számítás két fontos új ága: a folyamat-statisztika, illetve azinformációelmélet.

10

Page 11: Diplomamunka - midra.uni-miskolc.hu

2.2. Néhány szükséges fogalom

2.1.2. MATLAB történeti áttekintése

A MATLAB egy speciális programrendszer, amely numerikus számítások elvégzésé-re lett kifejlesztve. A The MathWorks által kifejlesztett programrendszer képes mátrixszámítások elvégzésére, függvények és adatok ábrázolására, algoritmusok implementá-ciójára és felhasználói interfészek kialakítására.

A MATLAB-ot (Matrix Laboratory) az 1970-es évek elején Cleve Moler kezdte elfejleszteni, az akkori Új-Mexikói Egyetem Számítástudományi intézetének elnöke. Kez-detben csak a diákjai munkáját tervezte megkönnyíteni, hogy ezen keresztül el tudjákérni a LINPACK és EISPACK csomagokat Fortran tudás nélkül. Hamarosan elter-jedt más egyetemek hallgatói és munkatársai között is, és így erős érdeklődésre tettszert az alkalmazott matematikával foglalkozók körében. Jack Little 1983-ban, Moler-nél tett látogatása során felismerte a MATLAB-ban lévő lehetőségeket. Nem sokkalezután csatlakozott Molerhez és Steve Bangert-hez, majd újraírták a MATLAB-ot Cnyelven, és megalapították a The MathWorks-öt 1984-ben. Ezek az újraírt könyvtárakJACKPAC néven váltak ismertté. 2000-ben a MATLAB-ot ismét újraírták, hogy újabbmódszereket alkalmazzon a mátrixokkal való műveletekre, ebből született a LAPACKcsomag.

A MATLAB először az irányítástechnikával foglalkozók körében lett alkalmazva,ami Little szakterülete volt, de gyorsan elterjedt más területeken is. Manapság szin-tén használatos még az oktatásban, különösen a lineáris algebra és numerikus analízisszemléltetésében, és népszerű a képfeldolgozással foglalkozó kutatók között is. 2004-bena hivatalos források alapján a MATLAB több, mint 1 millió felhasználóval rendelkezett.

2.1. ábra. MATLAB logó

2.2. Néhány szükséges fogalom2.1. definíció. Ha n számú kísérlet közül az A esemény k-szor következett be (k =

= 0, 1, . . . , n) akkor a k számot az A esemény gyakoriságának, ak

nhányadost pedig az

A esemény relatív gyakoriságának nevezzük.

11

Page 12: Diplomamunka - midra.uni-miskolc.hu

2.3. A feladatok megoldása során használt eloszlások

2.2. definíció. Olyan meghatározott körülmények mellett vizsgált véletlen esemény-nél, amely esemény relatív gyakorisága viszonylagos stabilitást mutat, az illető eseményvalószínűségén azt a számértéket értjük, amely körül az illető esemény relatív gyakori-sága ingadozik.

2.3. definíció. Egy ξ diszkrét valószínűségi változó lehetséges értékei legyenekx1, x2, . . . , xn, . . . a megfelelő valószínűségek legyenek p1, p2, . . . , pn, . . . , ekkor a

∞∑n=1

pnxn

értéket, amely nem más, mint a ξ valószínűségi változó lehetséges értékeiből ezek va-lószínűségeivel, mint súlyokkal képzett középérték, ξ várható értékének nevezzük. Avárható érték diszkrét esetben pontosan akkor létezik, ha ez a sor abszolút konvergens.Jelölése : E(ξ)

Ha a ξ valószínűségi változó folytonos eloszlású, és sűrűségfüggvénye f(x), akkor

E(ξ) =

∞∫−∞

xf(x)dx

integrál alakjában írható fel a várható érték. Folytonos esetben a várható érték pontosanakkor létezik, ha ez az integrál létezik, és véges. Ez az integrál akkor létezik, ha azeloszlásfüggvény az egész intervallumon deriválható.

2.4. definíció. Egy ξ valószínűségi változó ingadozásának mértékéül E(ξ−E(ξ))2 vár-ható értéknek pozitív négyzetgyökét tekintik, és ezt a mennyiséget a ξ valószínűségiváltozó szórásának nevezik.

2.5. definíció. Legyenek A és B tetszőleges események, amelyek valószínűségeit jelöl-jük P (A) és P (B)-vel. Ha P (AB) = P (A)P (B), akkor a két esemény bekövetkezésenem befolyásolja egymást, azaz A és B esemény független. Három esemény teljesenfüggetlen egymástól, ha páronként függetlenek, és P (ABC) = P (A)P (B)P (C) telje-sül.

2.3. A feladatok megoldása során használt eloszlások

2.3.1. Bernoulli-eloszlás

A véges Bernoulli kísérletsorozatban jelölje ξ az i-edik kísérletben az A eseménybekövetkezései számát. Ekkor ξi Bernoulli-eloszlású

P (ξi = 1) = p, P (ξi = 0) = 1− p,

ahol p az A esemény bekövetkezésének valószínűsége.A Bernoulli-eloszlás várható értékére és szórásnégyzetére igaz, hogy

E(ξi) = p,

D2(ξ) = p(1− p).

12

Page 13: Diplomamunka - midra.uni-miskolc.hu

2.4. Fogadásos feladat

Bernoulli-eloszlás generálása:MATLAB környezetben lehetőségünk van egyenletes eloszlású véletlenszámok ge-

nerálására. Alapértelmezetten a rand() függvénnyel [0,1] intervallumon generáltatunkvéletlen eloszlású számokat. Ahhoz, hogy ebből Bernoulli-eloszlást képezzünk, meg kellvizsgálnunk, hogy az egyenletes eloszlással generált véletlen szám hogyan viszonyula p valószínűség értékéhez, és ennek megfelelően döntést hozni. Ha nagyobb, mint ap valószínűség, akkor az ellentétes esemény következett be, ha kisebb vagy egyenlőa véletlenszám a p valószínűséghez képest, akkor pedig bekövetkezett az A esemény.Ha P (ξ = 0.5) valószínűségű véletlen számokat akarunk létrehozni, akkor a [0,1] zártintervallumon generált véletlenszámokat a 0.5 érték alapján kell szétválasztani, ha avéletlenszám kisebb, mint 0.5, akkor az A esemény, különben az A esemény következettbe.

2.3.2. Egyenletes eloszlás

MATLAB programcsomagban alapértelmezetten egyenletes eloszlású véletlenszá-mokat generálunk [0,1] zárt intervallumon. Egy [a,b] intervallumon egyenletes eloszlá-sú ξ valószínűségi változó várható értéke az intervallum két szélső értékének számtaniközepe, azaz

E(ξ) =a+ b

2,

szórásnégyzete pedig

D2(ξ) =(b− a)2

12,

azaz a MATLAB rand() függvénye [0,1] intervallumon 0.5 várható értékű, és 1√12

szó-rású véletlen számokat generál.

2.3.3. Normális eloszlás

2.6. definíció. A ξ valószínűségi változót normális eloszlásúnak nevezzük, ha sűrűség-függvénye:

f(x) =1

D(ξ)√

2πe

(− (x−E(ξ))2

2D(ξ)2

),

ahol E(ξ) ∈ R és D(ξ) > 0.

Jelölés: ξ → N(E(ξ),D(ξ)).

2.7. definíció. Ha a ξ valószínűségi változó normális eloszlású, E(ξ) = 0 és D(ξ) = 1,akkor standard normális eloszlásúnak nevezzük. Jelölése: N(0,1);

MATLAB programcsomagban a normrnd(m,d) alakú függvénnyel tudunk normáliseloszlású véletlenszámot generálni, aminek várható értéke m, és szórásnégyzete d. Ah-hoz, hogy standard normális eloszlású legyen a véletlenszámunk, normrnd(0,1) alak-ban kell meghívni a függvényt.

13

Page 14: Diplomamunka - midra.uni-miskolc.hu

2.4. Fogadásos feladat

2.2. ábra. Standard normális eloszlás sűrűségfüggvénye

2.4. Fogadásos feladat

2.4.1. A feladat leírása

Vegyünk egy olyan játékokból álló sorozatot, amely játékoknak két kimenetele van,és ezen játékok függetlenek és azonos eloszlásúak! Tételezzük fel, hogy ismerjük ezek-nek a játékoknak a pozitív kimenetelhez (nyeréshez) tartozó p valószínűségét! Ebbőlkövetkezően a másik kimenet valószínűsége q = 1 − p lesz. Az ilyen játékok lehetnek

tetszőlegesek, például ha p értéke pontosan1

2, akkor ez a játék lehet egy egyszerű

szabályos pénzérme feldobása, vagy egy kockajátéknál az az eset, hogy párost vagy

páratlant dob a játékos. Ha a p értéke nem1

2, akkor ez lehet egy olyan játék, ahol már

a szerencsén kívül számítanak a játékot játszó emberek képességei is. Ilyen esetben ajátékhoz kapcsolódóan csak az az egyetlen feltételünk van, hogy a játéknak csak kétkimenete legyen. Ilyen játék lehet például egy csapatjáték (labdarúgás, kézilabda, stb.)az ún. egyenes kieséses szakaszban, azaz a döntetlen már nem engedélyezett. Vagy ilyenjáték lehet egy olyan szerencsejáték is, ahol a két esemény kimenetelének valószínűségenem egyezik meg, például egy hamis pénzérme feldobásának esete.

Vegyünk egy játékost, aki ilyen játékok kimenetelére akar fogadni! Minden fogadáslegyen „dupla vagy semmi”, azaz a játékos vagy megnyeri a játék tétjének kétszeresét,vagy elveszti a tétet! A játékos ilyen játékokból n számú játékra szeretne fogadni adottkezdőösszegből indulva. A felmerülő kérdés az, hogyha n játékra ugyanannyi téttel fo-gad egymás után ismert p valószínűséggel, akkor milyen összegváltozásra számíthat ajátékok lejátszása után.

Tekintsünk meg egy egyszerű példát! Legyen n értéke 5, p értéke 0.7 és a játékoskezdőösszege 100 forint, és játékonként 10 forintnyi tétet tegyen fel! Tekintsük meg azeredmények valószínűségének alakulását! Könnyedén belátható, hogy ebben az esetbena nyeremények értékei 50, 70, 90, 110, 130 és 150 lesz, mivel 50 lesz a végösszege a já-téknak, ha a játékos ötször veszít, 70 lesz akkor, ha 4-szer veszít, és egyszer nyer, és így

14

Page 15: Diplomamunka - midra.uni-miskolc.hu

2.4. Fogadásos feladat

tovább az öt győzelem értékét jelentő 150 forintig. Az elméleti értékeket a binomiáliseloszlás szolgáltatja.

Nyeremény értéke Szöveges magyarázat Kiszámítás képlete Nyeremény valószínűsége

50 0 győzelem, 5 vereség p0q5(50

)0.00243

70 1 győzelem, 4 vereség p1q4(51

)0.02835

90 2 győzelem, 3 vereség p2q3(52

)0.1323

110 3 győzelem, 2 vereség p3q2(53

)0.3087

130 4 győzelem, 1 vereség p4q1(54

)0.36015

150 5 győzelem, 0 vereség p5q0(55

)0.16807

2.4.2. A feladat szimulációja

Tekintsük meg a MATLAB programcsomagban készült szimulációt! Először hasz-náljuk ugyanezen értékeket, azaz 5 játékot játszunk, 100 forintról indulva, a nyerésvalószínűsége 0.7, és tíz forintot teszünk fel minden játék során! Hajtsuk végre ezt akísérletsorozatot 100 000-szer, és tekintsük meg a szimuláció eredményeit! A programfutása elején tűzzük ki elérendő összegnek 140 forintot! Fontos megjegyezni, hogy eztaz összeget csak akkor érheti el a szimuláció, ha 5-ször bejön a tippünk, azaz a va-lós nyeremény 150 forint lesz itt. Az ábrán piros körökkel lesz ábrázolva az elméletiérték, amit a binomiális eloszlás képlete alapján számolunk. Az ábra tetejéről leolvas-

2.3. ábra. A fenti példa szimulációs eredménye

15

Page 16: Diplomamunka - midra.uni-miskolc.hu

2.4. Fogadásos feladat

ható, hogy százezerszer megismételve a kísérletet annak a relatív gyakorisága, hogy a140 forintos célösszeget elérjük 0.16652, ami eléggé megközelíti a korábban kiszámított0.16807 nagyságú elméleti értéket.

Végezzük el a feladatot más adatokkal is! Legyen a játékszám 100, a kezdőöszegünk

1000 forint! A játék legyen szabályos érmedobás, azaz p =1

2legyen, a tét maradjon

az előző feladatbeli 10 forint! Célösszegnek tűzzünk ki 1100 forintot, és hajtsuk vége akísérletet 200 000-szer!

2.4. ábra. 0.5 valószínűséggel 100 játék játszása 1000 forint kezdőöszegről 10 forintostéttel

16

Page 17: Diplomamunka - midra.uni-miskolc.hu

3. fejezet

Leghosszabb szériák vizsgálata

3.1. BevezetésDiplomamunkám ezen fejezetében ismertetésre kerülő témával ezt megelőzően szá-

mos cikk foglalkozott már, bár ezen cikkek szóhasználatában eltérések figyelhetőekmeg. Vannak olyan szerzők, akik leghosszabb futamnak, vagy siker-sorozatnak, vagyegyszerűen csak leghosszabb sorozatnak nevezik egy adott kísérletsorozatban az egy-mást követő azonos – azaz csak fej, vagy csak írás az érmedobásos kísérletben – jelekleghosszabb szériáját. Ebből következően az érmedobásos kísérletsorozatban az egymásután következő – azaz írással meg nem szakított – fejdobások számának a maximumátleghosszabb fejszériának fogom nevezni.

Ebben a fejezetben ismert rekurziós és aszimptotikus tételeket, valamint az adottfeladathoz tartozó szimulációs eredményeket fogom összehasonlítani. Ezek közül a re-kurziós eljárásokra helyezem a hangsúlyt, mivel ezek szolgáltatják a pontos eredménye-ket. Az aszimptotikus eredmények csak hosszú dobássorozat esetén adnak jó közelítést,míg a szimulációs eredmények véletlenszerűek, és a kísérlet sokszori számítógépes meg-ismétlése során közelítik meg a pontos értékeket.

Emellett szeretnék kitérni mind a szabályos, mind a szabálytalan pénzérme esetéreis, és mindkét féle érménél a leghosszabb fejszéria, és a leghosszabb bármilyen széria(legyen az tiszta fej vagy tiszta írás) hosszát vizsgálom meg. A szimulációt MATLABprogramcsomag segítségével valósítottam meg, és ezen eredményeket ismertetem. Ezenfejezetben szeretnék kitérni mind a független kísérletsorozatra – visszatevéses mintavé-tel –, és a nem független kísérletsorozatra is – visszatevés nélküli mintavétel –, példáulfrancia kártya csomagból történő húzások során a leghosszabb bármilyen (fekete vagypiros) lapszéria hosszának szimulációjára is.

Mivel a rekurziós eljárások által szolgáltatott pontos eredmény sajnos lassú se-bességgel jár, így szeretnék ismertetni két módszert, amivel felgyorsíthatóak ezek amódszerek MATLAB programcsomagon belül. Mivel a MATLAB függvényhívások idő-igényesek, így az első megoldás során úgy gyorsítom fel a rekurziós függvény értékeinekkiszámítását, hogy az adott rekurziót átalakítom iteratív alakra, azaz kifejtem a kép-letet, és szükségtelenné teszem, hogy a függvény rekurzívan meghívja önmagát.

A másik módszer során bemutatok egy módszert, ami segítségével MATLAB kör-nyezetből meghívhatóak C, C++ és Fortran rutinok, amely programnyelveknél a re-kurziós függvényhívások nem olyan időigényesek, mint MATLAB esetében, így ezenrutinok meghívásával jelentős mértékben gyorsíthatóak a rekurzív függvények végre-hajtásai.

17

Page 18: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

3.2. Független kísérletsorozatBevezetésül tekintsük meg Varga Tamás kísérletét, amelyet Révész Pál 1978-ban is-

mertetett Helsinkinben egy nemzetközi matematikai konferencián [22], és később Schil-ling [25] cikkének bevezetőjeként is publikálásra került. Varga egy tanulócsoportot kétrészre osztott, majd az egyik csoportnak azt adta feladatul, hogy mindenki dobjon fel200-szor egy pénzérmét, és jegyezze le a kapott eredményeket. A csoport másik részénekpedig ugyanezt a kísérletet kellett elvégeznie gondolatban, és a gondolati eredménye-ket lejegyezni. Vagyis egy olyan 200 elemű fej-írás sorozatot kellett írniuk, amilyenegy 200 elemű dobássorozat lesz szerintük. A munka végeztével a két csoport lejegyzetteredményeit összekeverték, és átadták Vargának, aki majdnem 100%-osan megmondta,hogy az adott lapon valós, vagy kitalált eredmények szerepelnek. A megoldás onnanadódott, hogy amíg a valós sorozatokban nem volt ritka a 7, esetleg 8 egymást követőfej – Rényi Alfréd log2 200-as eredménye szerint –, addig a gondolati sorozatokban ahallgatók maximum öt azonos jelet mertek egymás után leírni.

A kísérlet továbbvitelét megtalálhatjuk Fazekas István, Karácsony Zsolt és LiborJózsefné [8] közös cikkében, miszerint Révész Pál, miután ismertette a Varga-féle kísér-letet, és megbeszélte az eredményt a hallgatóival, újra elvégeztette az eredeti kísérletet.Az összegyűjtött papírlapokat újra sikerült majdnem teljes pontossággal szétválogatniRévésznek. A megoldás ebben az esetben abból a tényből következett, hogy a hallgatóktöbbsége csakis az egyikféle jelre koncentrált (például a leghosszabb fejszéria), és nemfigyelt a másikfélére. Ez alapján került feltevésre a [8] cikkben a következő két kérdés:

Egy n hosszúságú sorozat esetén hogyan alakul a leghosszabb fejszéria hossza?Egy n hosszúságú sorozat esetén mekkora a leghosszabb bármilyen széria hossza?

3.2.1. Szabályos pénzérme esete

Leghosszabb fejszéria vizsgálata

Schilling [25] cikke nyomán vizsgáljuk meg a következő kísérletet. Dobjunk fel egyszabályos pénzérmét n-szer. Fejszériának nevezzük el az egymást követő, azaz írássalmeg nem szakított fejdobások sorozatát. Jelölje Rn a leghosszabb fejszéria nagyságát.Az eloszlásfüggvény így felírható a következő alakban: Fn(x) = P (Rn ≤ x). Fn(x)-etelegendő nemnegatív egész x-ekre megadni, mivel Fn(x) = 0, ha x < 0, és Fn(x) =Fn(|x|), ha x ≥ 0. ahol |x| jelöli x egészrészét. Jelölje An(x) azon n hosszúságú sorozatokszámát, amelyekben a leghosszabb fejszéria nem haladja meg x-et. Szabályos pénzérmeesetén egy n elemű sorozatot vizsgálva kapjuk, hogy

Fn(x) = P (Rn ≤ x) =An(x)

2n.

Felmerül ekkor a kérdés, hogy hogyan határozható meg An(x) értéke. Ehhez vizs-gáljuk meg először azt az esetet, amikor a leghosszabb fejszéria legfeljebb 3 elemű lehet,azaz x = 3. Ha n ≤ 3, akkor An(3) = 2n, mivel minden lehetséges eset megfelel annaka feltételnek, hogy az egymás utáni fejek száma legfeljebb 3 lehet. Viszont ha n > 3,akkor a vizsgálat szempontjából kedvező sorozatok kezdődhetnek a következőképpen:I, FI, FFI, FFFI, ahol F a fejet, I pedig az írást jelöli, és utánuk csak olyan sorozatszerepel, amelyben nincs háromnál hosszabb fejszéria. Így felírható a következő:

An(3) = An−1(3) + An−2(3) + An−3(3) + An−4(3), ha az n > 3.

18

Page 19: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

Ugyanezzel a módszerrel felírható az általános rekurziós képlet.

3.1. tétel. (Schilling [25], 198. o.)

An(x) =

x∑

j=0

An−1−j(x), ha n > x,

2n, ha 0 ≤ n ≤ x.

Rn aszimptotikus viselkedését Földes Antónia [12] alábbi tétele írja le.

3.2. tétel. (Földes [12]) Valamennyi egész k esetén

P

(Rn −

[log n

log 2

]< k

)= exp

(− 2−(k+1−{ logn

log 2}))

+ o(1),

ahol [a] jelöli az egészrészét a-nak, és {a} = a - [a], azaz a törtrésze.

Leghosszabb bármilyen széria vizsgálata

Vegyük itt is kiindulási alapként Schilling [25] cikkét. Dobjunk fel egy szabályospénzérmét n-szer, és jelölje R′n a leghosszabb széria nagyságát, amely lehet tiszta fejvagy tiszta írás sorozat. Jelölje Bn(x) azon n hosszúságú sorozatok számát, amelyekbena leghosszabb tetszőleges széria nem haladja meg x-et. Szabályos érme esetén egy nelemű sorozatot vizsgálva felírhatjuk az eloszlásfüggvényt:

F ′n(x) = P (R′n ≤ x) =Bn(x)

2n.

Használjuk fel Schilling [25] 199. oldalon leírt ötletét! A fej-írás sorozat mindeneleme alatt jelölje A azt, hogy az utána következővel azonos a vizsgált elem, és K azt,hogy különböző. Például:

F F I I F F FA K A K A A

Az alsó A, K elemekből álló sorozatban a leghosszabb tiszta A sorozat akkor éscsakis akkor k − 1 hosszú, ha a felső sorban a leghosszabb tiszta széria k hosszúságú.Ha a felső sorozat n hosszú, és ebben a leghosszabb széria k elemű, akkor az alsó sorozatn− 1 elemű, és a leghosszabb A széria k − 1 elemű. Azaz fennáll a következő:

Bn(x) = 2An−1(x− 1),

mivel minden alsó sorozat pontosan kétféle felső sorozathoz tartozhat. Ezt felhasználvakapjuk:

F ′n(x) = P (R′n(x) ≤ x) =Bn(x)

2n=

2An−1(x− 1)

2n=An−1(x− 1)

2n−1 ,

ésAn−1(x− 1)

2n−1 = P (Rn−1 ≤ x− 1) = Fn−1(x− 1).

Ezzel beláttuk, hogyF ′n(x) = Fn−1(x− 1),

19

Page 20: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

vagyis visszavezettük esetünket a tiszta fejszéria esetére.Vizsgáljuk meg most azt az esetet, amikor a leghosszabb széria pontosan k hosszú-

ságú. Vezessük be a következő jelöléseket:bn(k): n dobásból hányszor lesz a leghosszabb széria pontosan k hosszúságú,an(k): n dobásból hányszor lesz a leghosszabb fejszéria pontosan k hosszúságú.A bn(k) viselkedésére Szászné Simon Judit a doktori értekezésében [29] ad rekurzív

képletet.

3.3. lemma. (Szászné [29].) Minden n = 1, 2, . . . esetén bn(1) = bn(n) = 2, bn(r) = 0,ha r > n vagy r ≤ 0

bn(r) =r−1∑h=1

bn−h(r) +r∑

i=1

bn−r(i), ha 1 < r < n.

Bizonyítás. (Fazekas-Karácsony-Liborné [8], 4. oldal)Vizsgáljuk meg, mit jelent a lemma jobb oldalán levő két összeg. Bontsuk fel az

eseményteret aszerint, hogy milyen hosszú széria szerepel elől.Ha a sorozatunk h (h = 1, 2, . . . , r − 1) hosszúságú szériával kezdődik, akkor a

maradék n − h dobásból kell a leghosszabb szériának r hosszúságúnak lennie. Ha akezdő h széria fej, akkor a (h+ 1)-edik elemnek írásnak kell lennie. Ha a kezdő h szériaírás, akkor a (h+ 1)-edik elemnek fejnek kell lennie.

F . . . F︸ ︷︷ ︸h db fej

(1 ≤ h < r)

I . . . F . . . F . . .︸ ︷︷ ︸n− h elem közöttr hosszú széria

vagy:I . . . I︸ ︷︷ ︸h db írás

(1 ≤ h < r)

F . . . I . . . I . . .︸ ︷︷ ︸n− h elem közöttr hosszú széria

De ennek a kettőnek a száma megegyezik, és az összegük éppen:

r−1∑h=1

bn−h(r).

Ha r hosszúságú szériával kezdődik a sorozat, akkor a maradék n − r elemből i =1, 2, . . . , r hosszú széria lehet. Ha az első r elem fej, akkor az (r + 1)-edik elemnekírásnak kell lennie, míg ha az első r elem írás, akkor az (r + 1)-ediknek fejnek kelllennie.

F . . . F︸ ︷︷ ︸r db fej

I . . . F . . . F . . .︸ ︷︷ ︸n− r elem között

legfeljebb r hosszú széria

vagyI . . . I︸ ︷︷ ︸r db írás

F . . . I . . . I . . .︸ ︷︷ ︸n− r elem között

legfeljebb r hosszú széria

Ezen két részeset száma egyenlő, összegük pedig a következő alakban írható fel:r∑

i=1

bn−r(i).

20

Page 21: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

A bn(r)-rel tehát megadtuk azon sorozatok számát, amelyekben az n dobás sorána leghosszabb bármilyen széria hossza pontosan r.

R′n aszimptotikus viselkedésének vizsgálatához Földes [12] idézett eredményéneksegítségével eljuthatunk a következő tételig. (Fazekas-Karácsony-Liborné [8])

3.4. tétel. Valamennyi egész k esetén

P

(R′n −

[log(n− 1)

log 2

]< k

)= exp

(− 2−(k−{

log(n−1)log 2

}))

+ o(1),

ahol [a] az a szám egészrészét, {a} pedig az a törtrészét jelöli.

3.2.2. Alkalmazás bemutatása szabályos pénzérme esetében

Ezen alfejezetben szeretném bemutatni az alkalmazásom által kiszámított rekur-zív, aszimptotikus, és szimulációs eredményeket, illetve ismertetném az itt alkalmazottkét rekurziós képlet iteratív alakra való hozatalát és az iteratív algoritmust, illetveösszehasonlítanám sebesség alapján a két megoldási módszert.

Alkalmazott gyorsítás bemutatása leghosszabb fejszéria esetén

Ebben a szakaszban használjuk fel Schilling [25] már korábban ismertetett tételét(3.1. tétel.), és fejtsük ki ennek alakját.

Tekintsük először az n = 1 esetet. Ebben az esetben egy hosszúságú sorozatokatvizsgálunk, azaz a 0 és az 1 sorozatot. Az x értéke ilyenkor legyen egy, azaz legfeljebbegy hosszúságú sorozatot keresünk. Ekkor Schilling tétele alapján:

A1(1) = 21 = 2,

mivel n = x.Ezután vizsgáljuk meg az n = 2 esetet, amikor kettő hosszúságú sorozatokat (00,

01, 10, 11) vizsgálunk. Ekkor x változó értéke felveheti az egyet, illetve a kettőt. Írjukfel ezeket a tétel alapján:

A2(1) = A1(1) + A0(1) = 21 + 20 = 3,

A2(2) = 22 = 4.

Ugyanilyen módon vizsgáljuk meg n = 3 esetet, ahol x = 1, 2, 3.

A3(1) = A2(1) + A1(1) = 3 + 21 = 5,

A3(2) = A2(2) + A1(2) + A0(2) = 4 + 21 + 20 = 7,

A3(3) = 23 = 8.

Ezt a módszert folytatva felépíthetjük azt a fát, amely n mélységű, és n szélességű,és tartalmazza az n. szinten az adott n és az összes x = 1, 2, . . . n értékpárokhoz tartozóértékeket a következő alakban:

21

Page 22: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

23 4

5 7 88 13 15 16

13 24 29 31 3221 44 56 61 63 64

34 81 108 120 125 127 12855 149 208 236 248 253 255 256

89 274 401 464 492 504 509 511 512144 504 773 912 976 1004 1016 1021 1023 1024

Ebből a táblázatból lehet képezni először egy adott n-hez tartozó eloszlásfüggvényt,amit a legegyszerűbben úgy képezhetünk, hogy a táblázat minden sorát elosztjuk azadott sor utolsó elemével. Például n = 5 esetén:

134

158

78

1816

1316

1516

11332

2432

2932

3132

1

Ebből az eloszlásfüggvényből pedig könnyedén képezhetünk sűrűségfüggvényt nu-merikus deriválással. Mivel diszkrét értékekkel van dolgunk, így mindegyik elembőlkivonhatjuk az előtte lévő elemet, így megkapjuk a sűrűségfüggvényeket tartalmazótáblázatot. Maradva n = 5 eseténél:

134

14

58

28

18

816

516

216

116

1332

1132

532

232

132

3.5. megjegyzés. Ha a legelső táblázatot megvizsgáljuk, akkor megfigyelhető, hogyminden n esetén a legelső elem az n+1. Fibonacci elemmel, az n. elem pedig 2n hatványértékével egyezik meg.

Elért sebességjavulás

Vizsgáljuk meg az előbb ismertetett iteratív átírás és Schilling rekurzív tétele alap-ján megírt rekurzív függvény egymáshoz viszonyított sebességét. A méréshez használjuka MATLAB programcsomag beépített függvényeit (tic, toc). A következő táblázat-ban közlöm az értékeket különböző n esetekre. Az alkalmazott számítógép paraméterei:AMD Athlon 64 X2 Dual Core Processor 6000+, 4 GB, DDR2 memória.

22

Page 23: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

n Rekurziós képlet Iteratív átírás

5 0.004116 seconds 0.000043 seconds10 0.020726 seconds 0.000073 seconds15 0.407710 seconds 0.000107 seconds19 5.383905 seconds 0.000152 seconds20 10.400094 seconds 0.000171 seconds21 19.938068 seconds 0.000182 seconds

Alkalmazott gyorsítás bemutatása leghosszabb bármilyen széria esetén

Ebben a szakaszban alkalmazzuk Szászné [29] korábban ismertetett lemmáját (3.3.lemma.), és fejtsük ki az alakját.

Tekintsük először az n = 1 esetet, azaz egy hosszúságú sorozatokban keresünklegfeljebb x hosszúságú szakaszokat. Szászné állítását alkalmazva:

b1(1) = 2,

mivel bn(1) = 2.Számoljuk ki az n = 2 esetet:

b2(1) = 2,

b2(2) = 2.

Tekintsük az n = 3 esetet, amikor az x értéke lehet egy, kettő, illetve három!

b3(1) = 2,

b3(2) =1∑

h=1

b3−h(2) +2∑

i=1

b1(i) = b2(2) + b1(1) + b1(2) = 2 + 2 + 0 = 4,

b3(3) = 2.

Ezt a módszert folytatva felírhatunk egy n mélységű és szélességű fát, amelynekn. szintjéről kiolvashatjuk adott n mellett adott x-ekhez tartozó értékeket a következőalakban:

22 2

2 4 22 8 4 2

2 14 10 4 22 24 22 10 4 2

2 40 46 24 10 4 22 66 94 54 24 10 4 2

2 108 188 118 56 24 10 4 22 176 370 254 126 56 24 10 4 2

23

Page 24: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

3.6. megjegyzés. A táblázatot megfigyelve megállapítható, hogy minden sor összegemegegyezik 2n, n = 1, 2, . . . értékével. Ez azért igaz, mivel x = 1, 2, . . . n számokraösszegezzük azon eseteket, amelyekben a leghosszabb bármilyen széria pontosan x, ígyvalójában az összes n hosszúságú, két jelből álló sorozatokat kapjuk, amiknek számos-sága 2n.

A táblázatban ebben az esetben nem eloszlásértékek, hanem sűrűségértékek találha-tóak, így itt nem szükséges numerikus deriválás, mindössze minden sorozatbeli értéketle kell osztani 2 sorszámadik hatványával. Így megkapjuk a következő táblázatot, n = 5esetnél:

124

24

28

48

28

216

816

416

216

232

1432

1032

432

232

Elért sebességjavulás

Vizsgáljuk meg az előbb ismertetett iteratív átírás és Szászné állítása alapján megírtrekurzív függvény sebességeinek egymáshoz való viszonyát. Méréshez itt is használjuka MATLAB programcsomag beépített függvényveit. A következő táblázatban közlömkülönböző n esetekre az értékeket.

n Rekurziós képlet Iteratív átírás

5 0.000964 seconds 0.000013 seconds10 0.018185 seconds 0.000030 seconds15 0.592443 seconds 0.000072 seconds19 9.546739 seconds 0.000156 seconds20 19.722337 seconds 0.000173 seconds21 39.007926 seconds 0.000179 seconds

Alkalmazás bemutatása

A következő ábrákon pirox „x” jelöli az aszimptotikus, fekete „o” a rekurzióval kapotteredményeket, az oszlopdiagram pedig a szimulációval kapott eredményeket mutatja.Mindkét ábrán a bal oldalon szerepelnek a leghosszabb fejsorozatok eredményei, míg ajobb oldalon a leghosszabb bármilyen szériák eredményei. Mindkét esetre elmondható,hogy kis n esetén a szimulációs eredmények vannak közelebb a rekurzív eredményekhez,az aszimptotikus tételek n növelésével adják a rekurzióhoz közeli eredményeket. Nagyn értékere a rekurziós, aszimptotikus és a szimulációs értékek gyakorilatilag egybees-nek. Míg kis n esetén a rekurziós algoritmus gyors, n növelésével rohamosan lassul aszámítási eljárás, ezért célszerű alkalmazni a fentebb ismertetett gyorsító eljárás.

Futassuk le n = 50 esetre, 0.5-ös valószínűséggel, 10000-es kísérletszámra! Ezután

24

Page 25: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

3.1. ábra. Leghosszabb szériák, n = 50, p = 0.5, 10000-es kísérletszám

futassuk le ugyanilyen n esetre, de 100000-s kísérletszámmal! Ebben az esetben mármegfigyelhető, hogy a szimulációs eredmények sokkal jobban megközelítik a rekurzióbóladódó pontos eredményeket.

3.2. ábra. Leghosszabb szériák, n = 50, p = 0.5, 100000-es kísérletszám

3.2.3. Szabálytalan pénzérme esete

Ebben az esetben a fejdobás valószínűsége, azaz p értéke bármilyen valós szám leheta (0, 1) intervallumon. Kérdés, hogy ez a tény milyen hatással van a leghosszabb fej-,illetve a leghosszabb bármilyen széria alakulására. Ebben az esetben nyilvánvalóan nemlehet alkalmazni a klasszikus kedvező/összes formulát.

Jelölje p a fejdobás valószínűségét és q(= 1− p) az írás valószínűségét.

25

Page 26: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

Leghosszabb fejszéria vizsgálata

Schilling [25] cikke alapján tekintsük azon n hosszúságú fej-írás sorozatokat, ame-lyekben k darab fej szerepel. Ezek közül jelentse C(k)

n (x) azon sorozatok számát, ame-lyekben legfeljebb x fej következik egymás után, azaz a leghosszabb fejszéria legfeljebbx hosszúságú. Az adott jelölésekkel az eloszlásfüggvény a következő alakban írható fel

Fn(x) = P (Rn ≤ x) =n∑

k=0

C(k)n (x)pkqn−k.

3.7. lemma. (Schilling [25], 200. o.)

C(k)n (x) =

x∑

j=0

C(k−j)n−1−j(x), ha x < k < n.(

nk,

)ha 0 ≤ k ≤ x,

0, ha x < k = n.

Bizonyítás. (Fazekas-Karácsony-Liborné [8], 8. o.)Ha x < k = n, akkor nyilvánvalóan Ck

n(x) = 0, hiszen ekkor az összes x-nél többelem fej, így nincs olyan sorozat, ahol legfeljebb x fej van egymás után. Ha 0 ≤ k ≤x, akkor Ck

n(x) éppen a binomiális együtthatókat adja, hiszen ez az az eset, amikoraz n elem között legfeljebb x fej van, és azon eseteket kell összeszámlálni, amikor aleghosszabb fejszéria legfeljebb x. Márpedig ekkor az összes sorrend ilyen tulajdonságú.

Ha x < k < n, akkor az állítás helyességének belátásához elegendő átgondolnunk akövetkezőket. A sorozatunk kezdődhet j = 0, 1, 2, . . . , x fejjel, utána biztosan van egyírás, majd olyan sorozat következik, ahol a maradék n− j − 1 elem között k− j darabfej van úgy, hogy a leghosszabb fejszéria legfeljebb x hosszúságú.

F . . . F︸ ︷︷ ︸j db fej

I . . . F . . . I . . .︸ ︷︷ ︸n− j − 1 elem, melyben k − j darab fej van úgy,

hogy legfeljebb x hosszú a fejszéria

Ezek száma pedig éppen C(k−j)n−1−j(x). Ezzel az állítás helyességét beláttuk. �

Vizsgáljuk meg, hogy mi lesz annak a valószínűsége, hogy n dobásból a leghosszabbfejszéria pontosan k hosszúságú? Jelölje ezt p(n, k), amelyre Kopocinski [16] cikkébenad két formulát. Ezen két formula alkalmazhatóságához jegyezzük meg, hogy:

Fn(k) =

0, ha k < 0,

1, ha k ≥ n,k∑

i=0

p(n, i) egyébként.

3.8. tétel. (Kopocinski [16], Theorem 1, (2), (3).) Legyen p(n, k) = 0, ha k < 0, vagyk > n, p(k, k) = pk, ha k = 0, 1, 2, . . . . Ekkor

p(n, k) =k−1∑j=0

pjqp(n− j − 1, k) + pkqFn−k−1(k).

26

Page 27: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

p(n, k) = pkqFn−k−1(k) +n−k−2∑j=0

Fj(k − 1)q2pkFn−j−k−2(k) + Fn−k−1(k − 1)qpk,

ha n = k + 1, k + 2, . . . , k = 0, 1, 2, . . . , és Fn(k) jelöli annak a valószínűségét, hogy nesetből legfeljebb k hosszúságú fejszéria adódik.

Az aszimptotikus viselkedés leírását Gordon-Schilling-Waterman [15] cikkében ad-ják meg a következő tétellel.

3.9. tétel. (Gordon-Schilling-Waterman [15].) Legyen µ(n) = − log n

log p, q = 1 − p és

legyen W olyan, hogy teljesüljön rá: P (W ≤ t) = exp(− exp(−t))), ekkor t-ben egyen-letesen:

P (Rn − µ(qn) ≤ t)− P([

W

− log p+ {µ(qn)}

]− {µ(qn)} ≤ t

)→ 0,

ahol n→∞.

Leghosszabb bármilyen széria vizsgálata

Egy szabálytalan pénzérmét feldobva n-szer, jelölje R′n a leghosszabb bármilyenszéria – akár fej, akár írás – nagyságát. Ilyen esetben adódik a következő összefüggés.

3.10. lemma. (Schilling [25].)

F ′n(x) = P (R′n ≤ x) =n∑

k=0

C(k)n (x)pkqn−k,

ahol C(k)n (x) jelenti azon n hosszúságú sorozatok számát, amelyekben k darab fej van,

a leghosszabb bármilyen széria hossza legfeljebb x, és ahol

C(k)n (x) = Cx+1(m, k),

valamint a Cx(m, k) mennyiségek kielégítik Bloom [3] két állítását.

Itt Cx(m, k) jelöli, hogy m piros és k fekete folyót visszatevés nélkül kihúzva nemlesz x hosszúságú széria. Ct(m, k) értékeire Bloom [3] adott két rekurzív képletet, ame-lyeket a Fazekas-Karácsony-Liborné [8] cikkében megjelent bizonyításaikkal együtt akövetkező alfejezetben ismertetek.

R′n aszimptotikus viselkedését vizsgálva Muselli [21] tételét lehet felhasználni, mely-ben Vn(p) jelöli annak a valószínűségét, hogy a leghosszabb széria n dobás esetén afejekből adódik:

limn→∞

Vn(p) =

{0, ha 0 ≤ p < 1/2,

1, ha 1/2 < p ≤ 1.

Azaz egyhez tart annak a valószínűsége, hogy a leghosszabb széria az esélyesebbkimenetelből, azaz jelen esetben fejekből áll.

3.2.4. Alkalmazás bemutatása szabálytalan pénzérme esetén

Ebben az alfejezetben szeretném bemutatni az alkalmazásom által kiszámított re-kurzív, aszimptotikus és szimulációs eredményeket, illetve ismertetném az itt alkalma-zott két rekurziós képlet gyorsításának egy másik megoldását, és összehasonlítanám ahagyományos rekurzióval sebesség alapján.

27

Page 28: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

MEX-fájlok

AMATLABM programozási nyelven írt programjai kitűnőek arra, hogy olyan függ-vényeket és szkripteket írjunk, amelyek gyorsan futnak a MATLAB beépített függvé-nyeinek köszönhetően. Ennek a programozásnak az egyik nagy előnye, hogy ezeket afájlokat nem kell lefordítani, és futnak bármilyen rendszeren, amin már fut a MATLABprogramcsomag. A MATLAB ezt úgy éri el, hogy a fájlokat minden egyes futáskor so-ronként interpretálja. Ennek a módszernek az a hátránya, hogy nagyon lassúvá válhat avégrehajtás nagy méretű, bonyolult függvények esetén, főleg azoknál, ahol nagyon sokciklus van a megvalósításban, mivel a MATLAB a ciklus minden egyes végrehajtásakora ciklus összes sorát újrainterpretálja, ami jelentősen lassítja a végrehajtást. Ezeket alegegyszerűbben úgy kerülhetjük el, hogy alkalmazzuk a beépített függvényeket, illetvea vektorműveleteket. Viszont ez nem elég minden helyzetben.

Ennek a problémának a kiküszöbölésére kibővítették a MATLAB programcsomagot,hogy képes legyen C, C++ és Fortran nyelvekben írt függvények futtatására. Azokat afájlokat nevezzük MEX-fájloknak (Matlab EXecutable), amelyek ezen nyelvekben író-dott függvényeket tartalmazzák. Az így íródott MEX-függvények nem helyettesíthetika MATLAB beépített függvényeit, viszont jelentős sebességjavulást lehet velük elérniciklusoknál és olyan feladatoknál, amiknél a MATLAB lehetőségei nem megfelelőek. Eza kiegészítés lehetővé teszi rendszerspecifikus API-k hívását, hogy kiegészítse a MAT-LAB lehetőségeit.

Ebben a szakaszban szeretnék ismertetni pár egyszerűbb programkódot C nyelven,amelyek segítségével megérthetőek a MEX használatának alapjai. Az itt ismertetettprogramrészletek Jason Laska [17] programjai alapján készültek.

MATLAB felé való interfészAmikor C nyelven írunk programokat, akkor mindig feltételezzük, hogy a program

végrehajtása a main() függvényben kezdődik. A MEX-fájlok felépítése hasonló, itt avégrehajtás mindig egy különleges függvényből indul, aminek mexFunction a neve. Eza függvény valósítja meg az „átjárót” a MATLAB függvényhívás és a C kód között.

# include "math.h"# include "mex.h" // Ez a sor szükséges

void mexFunction(int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[])

{//Minden kód, és belső függvény idekerül

return;}

Ahhoz, hogy elkészítsünk egy MEX függvényt, szükséges a "mex.h" könyvtár, amitartalmazza az API-t, amit a MATLAB nyújt. A mexFunction függvénynek négy be-meneti paramétere van, amik a MATLAB függvényhívásnak felelnek meg:

• nlhs: Ez a paraméter jelképezi a „baloldali” argumentumok számosságát, azazhány kimeneti értéke lesz a függvénynek.

• plhs: Ez a paraméter egy tömb, amibe a tényleges kimeneti argumentumokkerülnek. Az mxArray típus egy MATLAB struktúra adatok tárolására.

28

Page 29: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

• nrhs: Ez a „ jobboldali” argumentumok számosságát jelenti, azaz hány bemenetiértéke van a függvénynek.

• prhs: Ez a tömb tárolja a tényleges bemeneti értékek mutatóit.

Adatok átvétele, és készítéseMint korábban említésre került, a fő MATLAB struktúra adatok tárolására MEX-

fájlokban az mxArray. Ebben a struktúrában tárolhatunk valós, komplex számokat,tömböket, mátrixokat, sztringeket és az összes egyéb MATLAB struktúrát. Ebben aparagrafusban szeretném bemutatni, hogyan kell egyszerűbb adattípusokat kezelni.

Tételezzük fel, hogy a példafüggvényeünknek három különböző bemeneti értékevan, amik legyenek x egy kétdimenziós mátrix, y egy sztring és z egy szám.

Ahhoz, hogy a x értékéhez hozzáférjünk, szükségünk lesz egy mutatóra, amit a prhstömbben találhatunk meg. Ezt a mutatót átmásoljuk egy xData nevű változóba.

//A mexFunction-ön belül

//DeklarációkmxArray *xData;double *xValues;int i, j;int rowLen, colLen;double avg;

//Másoljuk át az xData-ba x mutatójátxData = prhs[0];

//Tároljuk le az x mátrixotxValues = mxGetPr(xData);rowLen = mxGetN(xData);colLen = mxGetM(xData);

//Írassuk ki a matlab konzolba minden oszlop átlagátfor(i = 0; i < rowLen; i++){

avg = 0;for(j = 0; j < colLen; j++){

avg += xValues[(i * colLen) + j];}avg = avg / colLen;printf("Az %d sor átlaga: %d ", i, (int)avg);

}

Az mxGetPr függvényt használjuk, hogy kinyerjük a valós adatot onnan, ahova azxData mutató mutat. Ehhez hasonló az mxGetPi függvény, ami a komplex értékek ki-nyerésénél használatos. Az mxGetN és mxGetM függvények a sorok, és oszlopok nagyságátadják vissza. Ha ez egy tömb lenne, akkor a kettő közül az egyik nullát adna vissza.MATLAB mátrixon belüli mozgás során ahhoz, hogy az x. sor y. elemére ugorjunk a

29

Page 30: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

x*colLen+y képletet kell használnunk. A printf() függvény a MATLAB prompt-járaírja ki a szöveget.

A sztringek kinyerése is hasonló módon történik, de vannak sajátosságai.

//A mexFunction-ön belül

//DeklarációkmxArray *yData;int yLength;char *TheString;

//Másoljuk át az y bemeneti mutatójátyData = prhs[1];

//Készítsük el a "TheString" nevű változótyLength = mxGetN(yData) + 1;//mxCalloc hasonló a C-ben használt malloc parancsnhozTheString = mxCalloc(yLength, sizeof(char));mxGetString(yData ,TheString ,yLength);

Most pedig nézzük meg, hogyan kell egy egyszerű valós számértéket feldolgozni.

//A mexFunction-ön belül

//DeklarációkmxArray *zData;int Num;

//Másoljuk át z bemeneti mutatójátzData = prhs[2];

//Nyerjük ki a szám értékétNum = (int)(mxGetScalar(zData));

//és írassuk kiprintf("Az átadott szám %d", Num);

Most vizsgáljuk meg, hogyan kell az értékeket visszaadni a MATLAB-nak. Ez amódszer nagyon hasonló az adatok kinyeréséhez. Itt annyi különbség van, hogy memó-riaterületet előre le kell foglalni az adatstruktúránknak. A mostani példában vizsgáljukmeg egy kétdimenziós mátrix esetét, ami az x bemeneti mátrix értékét lemásoljuk z0változóba, és minden értéket megdupláz.

//A mexFunction-ön belül

//DeklarációkmxArray *xData;double *xValues, *outArray;int i, j;int rowLen, colLen;

30

Page 31: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

//Másoljuk át az x bemeneti mutatójátxData = prhs[0];

//Nyerjük ki a mátrixotxValues = mxGetPr(xData);rowLen = mxGetN(xData);colLen = mxGetM(xData);

//Foglaljuk le a memóriaterületet a kimenetnekplhs[0] = mxCreateDoubleMatrix(colLen, rowLen, mxREAL);//mxReal az adattípus, amit használunk

//Szerezzük meg az újonnan lefoglalt területünk mutatójátoutArray = mxGetPr(plhs[0]);

//Másoljuk át a mátrixot, és duplázzuk meg az értékétfor(i = 0; i < rowLen; i++){

for(j = 0; j < colLen; j++){

outArray[(i * colLen) + j] = 2 * xValues[(i * colLen) + j];}

}

MATLAB függvények hívásaMíg jelentős gyorsulást lehet elérni C függvények írásával, rengeteg hatékony, gyors

MATLAB függvény van, amiket felesleges újraírni. Szerencsére a MATLAB program-csomagon belül van lehetőség ezen függvények meghívására egy MEX-fájlból, mivel abeépített függvények paraméterszignatúrája hasonló ahhoz, amit a mexFunction meg-írásakor alkalmaztunk. Példánk során használjuk a következő függvényt:z=conv(x,y);.

//A mexFunction-ön belül

//DeklarációkmxArray *result;mxArray *arguments[2];

//Hozzunk létre tetszőleges bemeneti adatokatarguments[0] = mxCreateDoubleMatrix(1, 20, mxREAL);arguments[1] = mxCreateDoubleMatrix(1, 10, mxREAL);

//Hívjuk meg a függvénytmexCallMATLAB(1, &result, 2, arguments, "conv");

Fordítás meneteAMEX-fájlok fordítása hasonló ahhoz, mint amikor parancssoros fordítókat haszná-

31

Page 32: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

lunk (például gcc, lcc). A MATLAB parancsfelületen módosítsuk a munkakönyvtárun-kat a MEX forrásfájl könyvtárára, majd adjuk ki a következő parancsot mex fájlnév.c.A MATLAB ezután fordítót kér, amit kiválaszthatunk a számítógépre telepített for-dítók közül. A függvény neve az lesz, ami a MEX-fájl neve. Miután lefordítottuk, éslétrejön a MEX-bináris, a függvényünk ugyanúgy hívható, mint egy MATLAB beépí-tett függvény. A bináris fájl neve operációs rendszertől függ, így minden különbözőoperációs rendszerre le kell fordítani a MEX-fájlunkat.

3.2.5. Alkalmazás bemutatása, elért gyorsulások

Először vizsgáljuk meg, hogyan alakul a rekurziós képlet átírása fejsorozatok esetén.A következő táblázatban megtalálhatóak a rekurziós függvények futási idői, a rekurziómegvalósítása MEX segítségével C nyelven, az eredeti rekurziós képlet átírása iteráltalakká MATLAB, majd pedig MEX segítségével. Minden oszlopban addig szerepelneka futási adatok, amíg nem távolodnak el túlságosan a többi eredmény értékétől.

n Rekurziós képlet Rekurzió MEX Iterált alak MATLAB Iterált alak MEX

5 0.004197 seconds 0.003268 seconds 0.003545 seconds 0.000099 seconds10 0.074732 seconds 0.000170 seconds 0.022365 seconds 0.000151 seconds15 1.831641 seconds 0.000787 seconds 0.069216 seconds 0.000191 seconds20 46.103427 seconds 0.018086 seconds 0.154397 seconds 0.000280 seconds25 x 0.455444 seconds 0.296737 seconds 0.000446 seconds30 x 12.527989 seconds 0.496011 seconds 0.000732 seconds35 x x 0.781636 seconds 0.001465 seconds50 x x 2.256716 seconds 0.004180 seconds75 x x 14.026925 seconds 0.020407 seconds100 x x 47.924833 seconds 0.067935 seconds

A táblázat adataiból jól látható, hogy míg a MATLAB rutin C nyelvre való átiratajelentős sebességgyorsulást ért el, viszont láthatóan önmagában nem megfelelő, mivelugyanúgy igaz rá, hogy n növelésével körülbelül duplázódik a végrehajtási ideje a re-kurzió miatt. Ezért célszerű itt is megvalósítani iterált alakban a számítást, viszont alegjobb sebességet az iteratív alak C nyelven történő megírása adja, így célszerű elvé-gezni mindkét átalakítást.

Ezután vizsgáljuk meg a bármilyen sorozat hosszára vonatkozó adatokat ugyanúgy,mint az előző módon.

32

Page 33: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

n Rekurziós képlet Rekurzió MEX Iterált alak MATLAB Iterált alak MEX

5 0.003633 seconds 0.000150 seconds 0.002834 seconds 0.000076 seconds10 0.028432 seconds 0.000133 seconds 0.003553 seconds 0.000160 seconds15 1.7317445 seconds 0.001297 seconds 0.012953 seconds 0.000421 seconds20 73.444427 seconds 0.044313 seconds 0.027736 seconds 0.000896 seconds25 x 1.760836 seconds 0.053723 seconds 0.001324 seconds30 x 60.236106 seconds 0.089415 seconds 0.002622 seconds35 x x 0.140080 seconds 0.003842 seconds50 x x 0.433712 seconds 0.013997 seconds75 x x 1.502445 seconds 0.058515 seconds100 x x 3.783460 seconds 0.169286 seconds

Ezen táblázat adataiból is ugyanolyan jól látható, hogy bár a MEX-es átírás jelen-tős gyorsulást ér el, viszont egy rekurzív algoritmus megvalósításához jó sebességgelönmagában még kevés, ezért itt is meg kell valósítani az iterált alakká való átírást.

Tekintsük meg a program által adott szimulált eredményeket, összehasonlítva arekurziós eljárásból származó pontos eredményekkel! Mivel a rekurziós eljárás pontoseredményeket szolgáltat, és az iteratív átírásainak sebessége már használhatóvá teszi,így ezen ábrákon mellőzöm az aszimptotikus képletek megjelenítését, mivel azokról márkorábban megállapítottuk, hogy csak nagy n esetén közelítik meg a pontos eredményt.Tekintsük meg az eredményeket n = 50, p = 0.25 esetére, a szimulációt 100000-szervégrehajtva!

3.3. ábra. Leghosszabb szériák, n = 50, p = 0.25, 100000-es kísérletszám

Ismételjük meg ezt a kísérletet p = 0.85 értékre. Az első ábrán jól látható, hogyha a

fejek valószínűsége kisebb, mint1

2, akkor a fejsorozatok, és bármilyen sorozatok alakja

jelentős mértékben eltérhet egymástól, míg ha a valószínűség az egy értéket közelítimeg, akkor eltűnik az az egy oszlopos különbség, ami megfigyelhető p = 0.5 esetén,

33

Page 34: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

3.4. ábra. Leghosszabb szériák, n = 50, p = 0.85, 100000-es kísérletszám

mivel p = 0.85 valószínűség mellett nagyon kevés esetben lesz a leghosszabb bármilyensorozat értéke különböző, mint az adott sorozatban a leghosszabb fejsorozat értéke, ígyaz ábrázolás során a két ábra nagyon hasonló alakot vesz fel.

3.2.6. Hibaszámításos alkalmazás bemutatása

A pénzfeldobásos kísérlet során felmerülhet az a kérdés, hogy mi történik abban azesetben, ha az érmék eredményei között történik egy sérülés. Ilyen eset lehet példáulaz, hogy amikor a jelsorozatot zajos csatornán küldjük, akkor megváltozhatnak az érté-kek, vagy olyan értéket kaphatunk, amiről nem lehet eldönteni, hogy az fejet vagy írástjelentett eredetileg. Így lehet beszélni hibákról a sorozatokban. Érdemes megvizsgálni,hogy mi történik, ha az érmedobásos kísérlet során 1, 2, . . . hibát megengedünk. Enneka problémának a vizsgálatára készült el a hibás szériákat vizsgáló programrész, amiegy hisztogramon egymás mellett ábrázolja a hibátlan, egy, kettő illetve három hibátelfogadó eseteket. Fontos megemlíteni, hogy a program megírására használt algoritmusnemcsak ezekre a hibaszámokra szolgáltat eredményt, hanem nagyobb hibaszámokrais – a hibaszámok határa maga a játékszám lehet, viszont ha játékszámnyi hibát enge-dünk meg, akkor a maximális sorozatok egyértelműen játékszám hosszúak lesznek, deez ugyanígy igaz a játékszám - 1 értékre, mivel ha egy fej, vagy egy írás található, aminem sérült, amellé lehet írni játékszám - 1 megegyező jelet (természetesen, ha a nemsérült érménk írás volt, akkor csak játékszám - 1 nagyságú lehet a maximális fejszéria).Arra, hogy a program három hibáig jelenítse meg ezeket a hisztogramokat, azért esetta választás, mert négy egymás mögött található hisztogram egy ábrán még átlátható.

Vizsgáljuk meg hogyan alakulnak ezek a hisztogramok kísérletenkénti 100 játékotfeltételezve, a kísérletet 10000-szer megismételve. Először tekintsük meg a fejszériák ala-kulását! És tekintsük meg ugyanennek az ábrának a hátulról tekintett változatát, aholjobban lehet látni a hibásak eredményeit! Ezeken az eredményeken jól látható, hogyaz egyre növekvő megengedett hibaszámmal együtt változnak az eredmények várhatóértékei, szórásai. Jól megfigyelhető, hogy a különböző eredmények relatív gyakoriságaiközötti különbségek is folyamatosan csökkennek.

Ezután vizsgáljuk meg ugyanúgy 100 játékra, 10000-szeres kísérletszám mellett a

34

Page 35: Diplomamunka - midra.uni-miskolc.hu

3.2. Független kísérletsorozat

3.5. ábra. Leghosszabb hibás fejszériák, n = 100, 10000-es kísérletszám

3.6. ábra. Leghosszabb hibás fejszériák, n = 100, 10000-es kísérletszám

leghosszabb bármilyen szériák alakulását! Ezek az ábrák alapján itt is ugyanazt a kö-vetkeztetést vonhatjuk le, mint a fejszériák esetében, azaz a hisztogram egyre jobbanszétterül, azaz egyre nagyobb tartományt fog le a lehetséges hosszakból, míg a hibátlanfutások esetén tapasztalt görbe magassága is folyamatosan csökken.

35

Page 36: Diplomamunka - midra.uni-miskolc.hu

3.3. Nem független kísérletsorozat

3.7. ábra. Leghosszabb hibás bármilyen szériák, n = 100, 10000-es kísérletszám

3.8. ábra. Leghosszabb hibás bármilyen szériák, n = 100, 10000-es kísérletszám

3.3. Nem független kísérletsorozatGardner [13] könyvében szerepel az alábbi állítás: „Az 52 lapos összekevert kártya-

csomagban majdnem mindig lesz 6 egyforma színű egymás után.” Ahogyan ez Bloom[3] művében is szerepel, elvégezve többször is ezt a kísérletet nem ezt az eredményttapasztaljuk, hanem hatnál általában kevesebb elemű szériák adódnak. Felmerül a kér-dés, hogy nem volt szerencsénk, vagy pedig Gardner tévedett?

Ha egy halmaz kétféle tulajdonságú elemet tartalmaz, az egyikből m, a másikból kdarabot, mi a valószínűsége, hogy m+ k elemet sorban egymás után kihúzva visszate-vés nélkül, lesz t hosszúságú széria, vagyis akármelyik tulajdonságú elemből legalább tkövetkezik egymás után?

Az egyszerűség kedvéért a két tulajdonságú elem legyen piros (ebbőlm darab van) ésfekete (ebből k darab), és jelölje a keresett valószínűséget Pt(m, k). Meghatározásához

36

Page 37: Diplomamunka - midra.uni-miskolc.hu

3.3. Nem független kísérletsorozat

vizsgáljuk az esemény komplementérének valószínűségét, vagyis annak az eseménynek,hogy nincs t hosszúságú széria az m+ k elem sorozatában. Ez legyen Pt(m, k), amineka segítségével a Pt(m, k) = 1− Pt(m, k) képlet alapján adódik a válasz a kérdésünkre.Pt(m, k)-nek klasszikus képlettel való kiszámításához vizsgáljuk először az összes elemiesemény számát: az m + k elemet kell sorbarendezni, melyek között m darab piros ésk darab fekete található. Az ilyen sorozatok száma nem más mint:

(m+km

).

Ezután a keresett hányados számlálójának meghatározásához össze kell számolnunkazon sorozatok számát, amelyben nincs t hosszúságú széria. Jelöljük ezt Ct(m, k)-val.

3.11. lemma. (Bloom [3], 369. o.) Ha m = k = 0, akkor definíció szerint legyenCt(0, 0) = 1. Ha m vagy k negatív, akkor pedig definíció szerint Ct(m, k) = 0.

Ct(m, k) =t−1∑i=0

Ct(m− 1, k − i)−t−1∑i=1

Ct(m− t, k − i) + et(m, k),

ahol Ct(m, k) jelenti az m darab piros és k darab fekete elem olyan sorbarendezéseinekszámát, ahol nincs t hosszúságú széria (t ≥ 2), valamint

et(m, k) =

1, ha m = 0 és 0 ≤ k < t

−1, ha m = t és 0 ≤ k < t

0, különben.

Az eredeti kérdésünkre a választ a Pt(m, k) = 1− Ct(m, k)(m+kk

) képletbe való behelyet-

tesítés szolgáltatja.A Ct(m, k) értékére Bloom [3] könyvének 371. oldalán egy olyan formulát is ad,

amely az m, k és t értékétől függetlenül mindig hat tagból áll.

3.12. tétel. (Bloom [3] 371. o.) t ≥ 2 esetén

Ct(m, k) = Ct(m− 1, k) + Ct(m, k − 1)− Ct(m− t, k − 1)− Ct(m− 1, k − t)+

+Ct(m− t, k − t) + e∗t (m, k),

ahol

e∗t (m, k) =

1, ha m = k = 0, vagy m = k = t,

−1, ha m = 0 és k = t vagy m = t és k = 0,

0, különben.

A peremfeltételeink megegyeznek az előző állításéival, azaz ha m = k = 0, akkor definí-ció szerint Ct(0, 0) = 1, ha m vagy k negatív, akkor pedig definíció szerint Ct(m, k) = 0.

Bizonyítás. (Fazekas-Karácsony-Liborné [8] 16. o.)Kezdődhet a sorozatunk 1 piros vagy 1 fekete elemmel:

P . . . P . . . F . . .︸ ︷︷ ︸m− 1 piros és k fekete

ezek száma: Ct(m− 1, k);F . . . P . . . F . . .︸ ︷︷ ︸

m piros és k − 1 fekete

37

Page 38: Diplomamunka - midra.uni-miskolc.hu

3.4. Néhány matematikai alkalmazás

ezek száma pedig: Ct(m, k − 1).Ezekből le kell vonni azokat, melyekben az első jel után is ugyanolyan következik

összesen t hosszan, utána egy másmilyen, és utána nincsen t széria:

P . . . P︸ ︷︷ ︸t piros

F . . . P . . . F . . .︸ ︷︷ ︸m− t piros és k − 1 fekete

ezek száma: Ct(m− t, k − 1);

F . . . F︸ ︷︷ ︸t fekete

P . . . P . . . F . . .︸ ︷︷ ︸m− 1 piros és k − t fekete

ezek száma: Ct(m− 1, k − t).De ezekben benne szerepelnek a következő sorozatok is.A t piros, t fekete, utána pirossal kezdődően olyan m− t piros és k− t fekete elemű

sorozat, melyben nincs t széria. Ezek száma C(p)t (m − t, k − t). Illetve – fordítva – t

fekete, t piros, utána feketével kezdődő olyan sorozat, melyben nincs t széria. Ezekszáma C(f)

t (m− t, k − t). Ezen két tag összege éppen Ct(m− t, k − t).Összegezve tehát megkapjuk az állítást. �

A szakasz elején említett kártyás példát megvizsgálva azt tapasztaljuk, hogy mígP6(26, 26) = 0, 464, (annak a valószínűsége, hogy az 52 lapos kártyacsomag lapjaitegymás után kirakva lesz benne egymás után 6 egyforma színű csak 0, 464), addig aP4(26, 26) = 0, 974. Vagyis sokkal valószínűbb a négyes széria, így Gardner tévedett[13] könyvében, amikor azt állította, hogy majdnem mindig kapunk hatos szériát.

3.3.1. Szimuláció bemutatása

A fent említett kísérletre diplomamunkám keretében készítettem egy programot,ami egy pakli kártyából (52 lap) szimulál adott számú kártya kihúzását, és ezt hajtjavégre sokszor. Ahhoz, hogy Gardner fentebbi állításának hamis voltát belássuk, szimu-láljuk 52 kártya húzását, és ezt a kísérletet ismételjük meg 20000-szer!

Ezen az ábrán (3.9. ábra.) láthatóak mind a maximális piros szériák, mind a maxi-mális bármelyik szériák eredményei. A független esethez hasonlóan itt is megfigyelhető,hogy a leghosszabb bármely szériák ábrája nagyon hasonílt a leghosszabb fejszériá-kéhoz, csak 1 értékkel nagyobb helyen vannak a megfelelő oszlopok. Az ábrából jólleolvasható, hogy 52 kártyát kihúzva a legnagyobb valószínűséggel 4 piros kártyát hú-zunk egymást után, és 5 hosszúságú lesz a leghosszabb bármelyik széria nagysága, haa pakli kártya 26 fekete és 26 piros kártyát tartalmaz, azaz a szimuláció segítségével isbelátható, hogy Gardner tévedett.

3.4. Néhány matematikai alkalmazásAz eredmények felhasználhatóak a különböző gazdasági, sorbanállási problémák,

Markov-láncok (lásd Samarova [24], Schuster [26] vagy Schwager [27] cikkét), tőzsdeieseménysorok vizsgálatában (lásd Binswanger és Embrechts [2] cikkének 4.2. fejeze-tét). Az alkalmazásnak jelentős szerepe van a műszaki és a biológiai folyamatokban,kutatásokban. Sok egyéb területén, például a grafológiában is felhasználhatóak ezekaz eredmények (lásd Arazi [1] cikkét). Révész [23] a számítástechnikában felmerülő,

38

Page 39: Diplomamunka - midra.uni-miskolc.hu

3.4. Néhány matematikai alkalmazás

3.9. ábra. 52 kártya kihúzása, 20000-es kísérletszám

véletlen számsorozat számítógép általi létrehozását említi hasznos alkalmazási terület-ként. Már több módszert is kidolgoztak, melyek véletlen fej-írás sorozatokat generálnakvalamilyen módon. Nehéz azonban eldönteni, hogy a kapott véletlen sorozat valóbanolyan-e, mintha igazi dobássorozatot írtunk volna. A legtöbbször attól kell tartani, hogyvalamilyen számunkra esetleg ismeretlen periódus van a felírt sorozatban. A legtöbbstatisztikai módszer nem alkalmas ennek a hibának a kiszűrésére. Egy, a leghosszabbfejszéria hosszán alapuló próba alkalmas arra, hogy a sorozatnak a periodicitás okoztanem véletlen voltát kimutassa.

39

Page 40: Diplomamunka - midra.uni-miskolc.hu

4. fejezet

Szentpétervári paradoxon

4.1. A szentpétervári paradoxonKét játékos (nevezzük őket Péternek és Pálnak) a következő játékot játszák. Péter

addig dobál egy szabályos pénzérmét, amíg az fej nem lesz, és 2k dukátot kap Páltól,ha az első fej a k-adik dobásra jelenik meg. A kérdés, hogy mennyit kell Péternekfizetnie, hogy a játék igazságos legyen, azaz egyik fél se gazdagodjon a másik kárára. Amegoldás erre végtelen sok dukát lenne, de „még a féleszű ember is eladná a játékhozvaló jogát negyven dukátért”, ahogy ezt Nicolaus Bernoulli írt 1728. augusztus 27-énaz unoköccsének, Daniel Bernoullinak. (ld. Csörgő Sándor cikke [4]) Ezt a problémátnevezik szentpétervári paradoxonnak.

Ha Péter nyereményét vizsgáljuk, ahol jelölje ξ a nyereményt, akkor ξ lehetségesértékei 2, 4, 8, 16, . . . , vagyis 21, 22, 23, 24, . . . számok. Bármely k ∈ N esetén a P (ξ =2k) a valószínűsége annak, hogy egymás után (k − 1)-szer írást dob Péter, és végülk-adikra fejet, azaz P{ξ = 2k} = 0.5k, feltételezve a dobások függetlenségét. Mivel

∞∑k=1

P (ξ = 2k) =∞∑k=1

2−k = 1

teljesül, így majdnem biztosan, azaz 1 valószínűséggel a játék véges számú lépésbenvéget ér, azaz Péter nyereménye majdnem biztosan véges. Pál ötlete, ami alapján Pé-ternek végtelen számú dukátot kellene fizetnie a játékról onnan jön, hogy ξ várhatóértéke a következőképpen írható fel.

E(ξ) =∞∑k=1

2kP (ξ = 2k) =∞∑k=1

1 =∞.

Péter szempontjából figyelve ez túlzás lenne, mert tetszőleges x ≥ 2 esetén,

P (ξ ≤ x) =x∑

k:2k

1

2k=

[log x]∑k=1

1

2k=

1

2

[log x]−1∑j=0

1

2j= 1− 1

2[log x],

ahol [y] az y ∈ R szám egészrésze, és [log y] az y > 0 szám kettes alapú logaritmusa.Ezek alapján felírható a ξ nyeremény jobbról folytonos eloszlásfüggvénye:

F (x) = P (ξ ≤ x) =

{0, ha x < 2,

1− 2−[log x], ha x ≥ 2.

40

Page 41: Diplomamunka - midra.uni-miskolc.hu

4.2. A paradoxon előtörténete

Azaz a nyeremény várhatóan végtelen nagy lesz, a nyeremény kis eséllyel haladmeg egy x ≥ 2 összeget. Például, a Bernoulli családhoz visszatérve P (ξ > 40) =1

32= 0, 03125. Ha Péter nagyobb összegekre gondolna, akkor beláthatja, hogy P (ξ >

3000) = 2−11 = 0, 00048828125, azaz nemhogy végtelen sok dukátot nem adna egyilyen nyereségért, amivel amúgysem rendelkezik, hanem egy elég nagy véges összeg isnagy kockázattal járna.

4.2. A paradoxon előtörténeteA valószínűség-számítás kezdeteinek Blaise Pascal és Pierre de Fermat híres levelezé-

sét tekinthetjük. A leveleikben tárgyalt kérdések mind szerencsejátékokra vonatkoztak,és ezen témák ismeretében írt Christiaan Huygens egy tizenhat oldalas füzetet, ami-ben a saját maga, Pascaléval megegyező megoldásait jelentette meg holland nyelven.Huygens ismertette Pascal és Fermat levelezésében előforduló feladatokat, illetve kibő-vítette olyan feladatokkal, amikben a játékosok esélyei számának aránya a kérdése. Avalószínűség-számítás ebben a kezdeti állapotában főleg a várható érték fogalma ját-szott fontos szerepet.

A következő nagy lépés Jacob Bernoulli 1713-ban megjelent Ars conjectandi címűkönyve jelentette. Ennek a könyvnek az első része teljes egészében tartalmazta Huygensfüzetét kommentárokkal és általánosításokkal. A második rész a permutációk és kombi-nációk elmélete volt, a harmadik része pedig ezek alkalmazása a legkülönbözőbb, főlegkockával és kártyával játszott szerencsejátékokra. Nagy jelentősége van ennek a műnek,mivel itt található meg az első kijelentése és bizonyítása a Bernoulli-féle törvénynek,azaz a nagy számok gyenge törvényének.

Jacob Bernoulli unokaöccse, Nicolaus Bernoulli fogalmazta meg először a ma szent-pétervári paradoxonnak nevezett problémát. A feladat első megfogalmazása Bernoulliegy Pierre Rémond de Montmort nevű matematikusnak írott levelében (1713. szep-tember 9.) jelenik meg öt hasonló probléma mellett, az egyik probléma aleseteként. Aprobléma itt még az első hatosig történő kockadobásra vonatkozik, viszont az ebbőlfakadó feladat ugyanaz, mint amikor pénzt dobálunk. Ebben az esetben a nyeremény

bármely k ∈ N esetén5k−1

6kvalószínűséggel veszi fel a 2k értéket, és

∑∞k=1

5k−1

3k= ∞.

(lásd Csörgő [4])A kérdés tovább foglalkoztatta Bernoullit, aki megismertette a feladatot Gabriel

Cramer tanítványával. Cramer 1728. május 21-én írt levelében egyszerűség kedvéért akérdést kockadobásról érmedobásra fogalmazta át, tehát a paradoxon ismertetett alak-ja tőle ered. A levélben azt az ötletet veti fel, hogy nagy k ∈ N esetén bármilyen 2k-tólnagyobb nyereményről van szó, az már a 2k dukát által szolgáltatott örömtől nagyobbörömöt nem tud nyújtani, így a hétköznapi ember becslése a játék értékére

k∑j=1

2j 1

2j+

∞∑j=k+1

2k 1

2j= k + 1

dukát. Cramer a k = 24 érték választást javasolta, mivel 224 = 16777216 dukátnálnagyobb nyeremény a hétköznapi embernek ugyanannyi hasznot hoz, mint 16777216dukát. Vagyis az értéket 25-re becsülte.

A felvetett ötlet nem nyerte el Nicolaus Bernoulli tetszését, aki az unokaöccsének,

41

Page 42: Diplomamunka - midra.uni-miskolc.hu

4.2. A paradoxon előtörténete

Daniel Bernoullinak Szentpétervárra írt levelében megfogalmazta, hogy Cramer máradott egy megoldást, viszont ő ezzel nem ért egyet. Levelezéseik után Daniel a szentpé-tervári akadémiára benyújtott dolgozatában (Commentarii 1730-31-es kötet, 1738-banjelent meg) a Crameréhez hasonló megoldást ad, melyhez megjegyzésként hozzátesziNicolaus kritikáit.

Daniel Bernoulli továbbfejlesztette Cramer gondoltait, bevezette a hasznosság fo-galmát, mellyel a közgazdaságtan és a pszichológia is elkezdett foglalkozni. Véleménye

szerint egy x összeg dx-szel való növekedése csak du =b ∗ dxx

hasznosság növekedésseljár, ahol b > 0 valamilyen kontans. Azaz minél több pénze van a játékosnak, annál ki-sebb egy kis növekedés feletti öröme, haszna. Így ha a játékosnak eredetileg α dukátjavan, egy x nyeremény morális haszna (hasznossága) u(x) = b ∗ ln

α + x

α. Így Péter mo-

rális várható haszna nem E(x) = ∞, hanem M(X) = E(u(X)) = b ∗ E(lnα + x

α). Ez

az átlagos haszon a következőképpen számolható. Az x nyeremény 2k alakú összegeketjelent, melyekhez 2−k valószínűségek tartoznak. Felhasználva a logaritmus azonossá-gait, valamint, hogy

∑∞k=1 2−k = 1 azt kapjuk, hogy az átlagos haszon a következő

alakban írható fel:

M(X) = b∞∑k=1

ln(α + 2k)− lnα

2k= b ∗ ln(

∞∏k=1

(α + 2k)2−k

)− b ∗ lnα.

Ez viszont egyenlő a morális haszonnal, amiből rendezéssel azt kapjuk, hogy:

x(α) =∞∏k=1

(α + 2k)2−k − α

ahol tehát x(α) az eredeti α tőke morális értékének játékból hozzáadódó növekedésétjelenti.

Néhány kezdőtőkére így például az alábbi értékek adódnak. Ha a kezdőtőke α = 0,akkor 4 dukát, míg például 1000 dukátból álló kezdőtőke esetén is csak 11 dukát ajáték díja. Így Daniel Bernoulli a matematikai problémát pszichológiai és gazdaságisíkra is átvitte, és felvetette, hogy a különböző gazdasági és pszichológiai magatartá-sokban szintén törvények uralkodnak, amelyek esetleg különböznek a matematikábanmegfogalmazottaktól (lásd Liborné [18] értekezése). Erre a problémára hasonló megol-dást adott Euler is, de mivel nem akart a Bernoulli család ügyeibe beavatkozni (hiszenDaniel apja volt a tanára, és Daniel szerezte neki a szentpétervári munkahelyét), ered-ményeit nem hozta nyilvánosságra. Halála után 81 évvel jelent csak meg a témáról szólódolgozata. Nicoulaus Bernoulli-nak Daniel megközelítése sem tetszett, mivel szerinte amorális várhatóság „ nem az egyenlőségnek és igazságosságnak megfelelően értékeli kiminden játékos esélyét egyaránt” (lásd Csörgő [4] cikke). Szerinte mindenki számáraegyformán k dukátot kell, hogy érjen a játék, a játékos általános diszpozíciójától füg-getlenül. De mekkora legyen ez a k érték? Elfogadhatóbbnak tartja, ha azt mondjuk,hogy nagy k esetén már olyan kicsi a hozzá tartozó valószínűség, hogy gyakorlatilag0-nak tekinthető. De ki mondja meg, hogy mekkora ez a kis valószínűség, amitől márnem foglalkozunk vele? Erre a kérdésre nem született több eredmény a Bernoulli családrészéről.

A kérdés csak 1754-ben került újra elő d’Alembert Fej vagy írás című, az Enciklo-pédiában megjelent cikkében. Mivel d’Alembert és Daniel Bernoulli között nem volt jó

42

Page 43: Diplomamunka - midra.uni-miskolc.hu

4.2. A paradoxon előtörténete

viszony, a paradoxonról írott munkáiban egyszer sem említi meg a Bernoulli nevet. Aproblémát először elég körülményesen: „ probleme proposé dans le Tome V des Mémo-ires de l’académie de Petersbourg” néven említi, majd a továbbiakban ezt egyszerűsítveeljut a „probleme de Petersbourg” elnevezésig. A paradoxon elnevezése valószínűleg in-nen eredeztethető. A megoldással kapcsolatban Lagrange-nak írott levelében bevallja,hogy a „a pétervári probléma megoldása számomra a jelenleg ismert fogalomkörbenlehetetlennek tűnik” (lásd [4]) Többek érdeklődését is felkeltik munkái, de érdemle-ges eredmény nem születik. Megemlíthető Whitworth érdekes elgondálása a problémamegoldásával kapcsolatban. Szerinte nem egy állandó összeget, hanem minden játék-ban az adott, aktuális tőkének egy fix hányadát kell fizetni. Erről a gondolatról sajátmaga is belátta, hogy nem tökéletes. A különböző megoldások legfőbb hibáit az okozta,hogy a valószínűség matematikai törvényeit megpróbálták egyedi véletlen eseményekrealkalmazni. A törvényekből arra akartak közvetkeztetni, hogy mi fog történni legköze-lebb egy teljesen konkrét egyedi esetben. A nagy számok törvényének valódi jelentésenem volt jelen még a matematikusok gondolkodásában sem. Erre egyedül de Condor-cet francia márki érez rá, szerinte Péternek végtelen sok játékot kellene játszani ahhoz,hogy végtelen várható értéke realizálódjon. „A probléma maga nem értelmes, hanemhasonnemű még értelmes kérdések limesze” [4]. Amikor n játékot játszunk, a válaszunkfüggni fog n értékétől, így a kérdés az, hogy milyen n-re lehet a két játékos egyenlőségételérni. Ez volt az egyedüli jó irány, viszont a kortársai figyelmen kívül hagyták.

A következő matematikus, aki érdemben foglalkozott a kérdéssel, Buffon volt. Ő azelső, aki lejegyzetten a játékot ténylegesen lejátszatta egy gyerekkel 2048-szor. Ekkor

Péter összes nyereménye 20104 dukát volt, vagyis egy játékra átlagosan20104

2048= 9, 82,

vagyis körülbelül 10 dukát jutott. Ez szerinte „érvényes és jó, mivel nagyszámú kí-sérletre alapul, továbbá megegyezik egy olyan gondolatmenet eredményével is, amelymatematikai és kikezdhetetlen” [4]. A 2048 játék során észlelt eredményeket mutatjaaz alábbi táblázat:

Az első fej (k) 1 2 3 4 5 6 7 8 9

A gyakorisága 1061 494 232 137 56 29 25 8 6

A nyeremény (2k) 2 4 8 16 32 64 128 256 512

A táblázatban szereplő adatainkat szemléltetve látható, hogy annak a bekövetke-zése, hogy csak a sokadik dobásra kapunk először fejet, egyre kevésbé várható. Buf-fon matematikai levezetésével arra a következtetésre jutott, hogy n játékért n log2 ndukát jár, vagyis ha n játékot játszunk, játékonként log2 n díjat kell fizetnünk. Gon-dolatmenete a következő volt. Ha n = 2k játékot játszunk, akkor az esetek felében(2k−1) lesz elsőre fej. A nyeremény minden esetben 2 dukát, így ez összesen 2k dukátoteredményez. 2k−1 esetben a második dobásra lesz az első fej, ez 4 dukát nyereménytjelent, így ez is 2k nyereményt hoz. Folytatva a gondolatmenetet, és felhasználva a2k−1 + 2k−2 + · · ·+ 2 + 1 = 2k− 1 összefüggést, marad még egy játék, ami folytatódhat,de ennek már kicsi a valűszínűsége. Összesen tehát n játék lejátszása után kapunk k∗2k

dukátot, ami egyenlő n ∗ log2 n értékével, mivel n = 2k. Ez azt jelenti, hogy játékon-ként log2 n dukát lesz a nyeremény. Méltányos játéknál tehát tekinthető ez az összeg ajáték játékonkénti díjának is. Buffon észrevette, hogy ha sok, például 1048575 játékotjátszunk, akkor ez az összeg már 20 körülire adódik, de mivel ennyi játék lejátszásakörülbelül 30 évig tartana, így szerinte ezzel a realitás szintjén nem kell foglalkozni.Szerinte tehát 10 dukát az az ár, amelyet játékonként fizetni kell, ha igazságosak aka-

43

Page 44: Diplomamunka - midra.uni-miskolc.hu

4.2. A paradoxon előtörténete

runk lenni.Laplace a paradoxon megoldásához nem jutott közelebb, de egyéb eredményei, me-

lyeket A valószínűségek analítikus elmélete című művében közölt, nagy technikai előre-lépést jelentettek. Összegezte mindazt, amit a tárgyban tudott arról, hogy az adott fel-tételek melletti valószínűségeket, várható értékeket és eloszlásokat hogyan lehet számol-ni, közelíteni. A paradoxon tekintetében számottevő, új eredmény sokáig nem született,a már meglévő eredményeket próbálták fejlesztgetni, bizonyítani. Többen is valamilyenésszerű, emberi léptékű határok közé próbálták szorítani a megnyerhető összeget, pél-dául úgy, hogy feltételezték, hogy a banknak nincs végtelen sok pénze. Módosítsuk ajátékszabályt úgy, hogy a megnyerhető összeg maximális 1 millió dukát. Mivel 220 mártöbb, mint 1 millió, így a nyeremény várható értéke a következő alakban írható fel:

1

2∗ 2 +

1

4∗ 4 +

1

219∗ 219 + (

1

220+

1

221+ . . . ) ∗ 106 ≈ 21, . . .

Vagyis 22 dukátos árral még jól jár a bank. 1872-ben A Budget of Paradoxes cí-mű könyvében de Morgan beszámol arról, hogy Buffonhoz hasonlóan ő is lejátszottaa játékot, és arra a megállapításra jutott, hogy „Ha Buffon ezerszer többször probáltavolna, akkor az eredmény nemcsak több lett volna, de játékonként több. A nagyobbháló nem csak több halat, hanem több fajta halat fogott volna, és kétmillió játékbanazt is várhatnánk, hogy néhány esetben a fej a huszadik dobásig sem mutatkozik” [4]. ADaniel Bernoulli-féle utilitási vonalat ebben a korban több kutató is felhasználta. Ilyenvolt Fechner, a kísérleti pszichológia megalapítója, aki felállította a Weber-Fechner féleempirikus törvényt, mely szerint az S stimulus által kiválasztott R reakció nagyságaR = C lnS, ahol C a vizsgált érzékeléstől függő pozitív konstans. Az utilitási vonal má-sik felhasználása az elméleti közgazdaságtan területén hozott új eredményeket. Mengervizsgálatai során az u(x) hasznosság-függvényre belátta, hogy az u(x) = C lnx meg-oldás nem helyes. Ezek a vizsgálatok alapozták meg Neumann János munkásságát ahasznosság axiomatizálásáig, mely a modern közgazdaságelmélet egyik megalapozásavolt (ld. [18].)

A szentpétervári paradoxon vizsgálatában a következő nagy áttörést Feller 1945-öseredményei jelentették. Az már korábban is egyértelmű volt, hogy a játszmánként fixösszeg nem lehet jó, hiszen akármilyen nagy is ez az összeg, a bank mindig rosszul járna,hiszen a nyeremények várható értéke végtelen nagy. A részvételi díj tehát nem egy kons-tans, hanem n növekedésével nő, mégpedig a már többek által megadott log2 n kapcsolatszerint. Feller szintén erre az összefüggésre jutott vizsgálatai során. Ha X1, X2, . . . Pé-ter nyereményei az első, második, . . . szentpétervári játékban, és Sn = X1+X2+ . . . Xn

Péter össznyereménye n játék során, akkor az X várható értékének végességét feltéte-lezve egy játékot akkor nevezünk igazságosnak, ha nagy n esetén az Sn össznyereménya várható érték n-szerese körül lesz. Vagyis nE(X) ≈ Sn, amiből azt kapjuk, hogy a

játékonkénti nyeremény a várható érték körüli lesz, vagyis nagy n-reSn

n≈ E(X), illet-

veSn

n→ E(X) majdnem biztosan. Feller belátja cikkeiben ([10],[11]), hogy ha még X

szórása is véges, akkor a centrális határeloszlás tétel miatt:

P (Sn − nE(X) > 0)→ 1

2← P (Sn − nE(X) < 0),

vagyis nagy n esetén az esetek kb. felében az egyik játékos, míg az esetek másik felébena másik nyer, és a nyeremények is körülbelül szimmetrikusan oszlanának el. Feller be-

látja, hogySn

n ∗ log2 nsztochasztikusan tart 1-hez, amiből következik, hogy n játékért

44

Page 45: Diplomamunka - midra.uni-miskolc.hu

4.2. A paradoxon előtörténete

n∗ log2 n összeg a méltányos. Sajnos azonban a problémában sem szórás, sem a várhatóérték nem véges, éppen ez volt a probléma eddig is.

Az előző tétel és Feller dolgozata alapján Steinhaus teszi meg a következő nagylépést. A [28] cikkében írja, hogy „a paradoxon feloldásához nem egy egyedik játékot,hanem játékok egy sorozatát kell nézni”. Egy determinisztikus sorozattal próbálja imi-tálni Péter véletlen nyereményeit. Ehhez vegyük először 2-eseknek és üres helyeknekegy alternáló sorozatát:

2_2_2_2_2_2_2_2_2_2_2_2_2_2_2_ . . .

Ezután írjunk az első, majd minden második üres helyre 4-est:

242_242_242_242_242_242_242_24 . . .

Ehhez hasonlóan írjunk 8-asokat, majd 16-osokat, és így tovább:

242824216242824232242824216242824

Ezt azért gondolhatjuk helyesnek, mert a játékban az esetek felében 2 dukát a nye-remény, a megmaradtak felében 4, az ezután megmaradtak felében 8, és így tovább.Felírva ezen sorozatok n-edik empirikus eloszlásfüggvényét, kiderül, hogy ez igen gyor-san (egyenletesen) tart a szenpétervári eloszlásfüggvényhez. Ha #A-val jelöljük az Ahalmaz elemeinek számát, akkor a Steinhaus sorozat n-edik eloszlásfüggvénye a követ-kező:

Fn(x) =#{xj ≤ x|1 ≤ j ≤ n}

n.

Ez a függvény tehát azt fogja megmutatni minden valós x-nél, hogy a sorozat első nelemének hányad része nem nagyobb, mint x. Ha F (x) a szenpétervári játékban szereplőnyeremények eloszlásfüggvénye, akkor Steinhaus törvénye a kövekező alakú lesz:

Dn∗ = supx∈R|Fn(x)− F (x)| → 0.

Vagyis Steinhaus szerint a játék akkor lesz igazságos, ha az egyes játszmákért a fentisorozat elemei szerinti összegeket fizetjük. Ez azt jelenti, hogy ha Fn(x) jelöli a legfeljebbx nagyságú befizetések relatív gyakoriságait, akkor Fn(x) annak a valószínűségéhezkonvergál, hogy Pál legfeljebb x nagyságú összeget fizet ki.

A további eredmények tekintetében ki kell emelnünk Csörgő Sándor, és csapatamunkásságát, akik a problémán sikerrel dolgoztak tovább. Az alábbi tételeket sikerültbizonyítaniuk:

lim infn→∞

Sn

n log2 n= 1,

lim supn→∞

Sn

n log2 n=∞

majdnem biztosan.Ez azt jelenti, hogy Péter halmozott nyereményeinek Sn sorozata determinisztikus

sorozatokkal nem egyensúlyozható ki úgy, hogy véges pozitív határértéket kapjunkmajdnem biztosan. Eszerint egyik díjsorozat sem lehet elég nagy. Ennek oka az időnkéntelőforduló nagy nyeremény (lásd [5].) Tekintsük n játék esetén Péter nyereményeink

45

Page 46: Diplomamunka - midra.uni-miskolc.hu

4.3. A paradoxon módosítási lehetőségei

nagyság szerinti sorbarendezését Xn,1 ≤ · · · ≤ Xn,n. Rögzített m esetén n > m játékotjátszva Péter nyereménye legyen:

Sn(m) =n−m∑j=1

Xn,j

vagyis Péter lemond az elvileg létező m legnagyobb nyereményeiről, és így az eddigi Sn

dukát helyett Sn(m) dukátot kap n játékért. Azt gondolnánk, hogy minél nagyobb azm, annál kevesebbet kell fizetnie Sn(m)-ért, mint korábban Sn-élrt. Azonban Csörgőés Simons [6]-ben bebizonyítják, hogy

Sn(m)

n log2 n→ 1

majdnem biztosan minden rögzített m ∈ N esetén.Tehát a nagy számok törvényei csak annyit mondanak, hogy az Sn és az Sn(m) vé-

letlen nyeremények értéke is n ∗ log2 n körül lesz. A megoldáshoz tehát Sn eloszlásánaka megismerése vihet közelebb. Csörgő Sándor belátta, hogy határeloszlás nincs ([4]).

Akárhogyan is választunk Cn, An > 0 konstansokat, a P(Sn − Cn

An

≤ x

)sorozat nem

konvergál egy olyan G(x) eloszlásfüggvényhez, amely nem egy konstans eloszlásfügg-vénye, így a szentpétervári eloszlás nem tartozik bele semmilyen eloszlás vonzástarto-mányába. Martin-Löf [19] cikkében {2k}∞k=1 ⊂ N részsorozat esetére megad egy határ-

eloszlástételt. Bebizonyítja, hogyha k → ∞, akkor a P{S2k

2k≤ x + k

}valószínűségek

konvergálnak egy G1(x) nemdegenerált eloszlásfüggvény értékeihez. Közelítőformulát

is ad, miszerint nagy k és nagy m esetén P{S2k > 2k(2k + k)} ≈ 1 − G1(2m) ≈ 1, 8

2m.

Tehát ha Péter 2k játékért 2k(2m+k) dukátot fizet, akkor Pál nagy valószínűséggel nemmegy csődbe. Csörgő és Simons munkássága alapján ([6]) független, egyforma eloszlásúvéletlen változók részletösszegeinek létezhet határeloszlása a természetes számok vég-telenbe tartó részsorozatai mentén úgy, hogy minden n ∈ N számot érintve ilyen nincs.Azt mondjuk, hogy az illető eloszlás benne van a részsorozat mentén nyert határelosz-lás parciális vonzástartományában. Vagyis Martin-Löf tétele szerint a szentpétervárieloszlásfüggvény benne van a G1 eloszlásfüggvény paricális vonzástartományában. Egyeloszlásfüggvényre három állítás valamelyike teljesülhet:

• semmilyen eloszlás parciális vonzástartományában nincs benne, azaz még részso-rozatok mentén sincs határeloszlás,

• pontosan egy típus parciális vonzástartományában van benne, ez a típus szük-ségképpen stabilis,

• benne van egy nem stabilis eloszlás parciális vonzástartományában, mely esetbenszükségképpen benne kell legyen eloszlások kontinuum számosságú különböző tí-pusának parciális vonzástartományában.

Mivel a G1 függvény nem stabilis, így a szentpétervári eloszlásfüggvény a harmadikkategóriába esik. Ebből viszont az következik, hogy kontinuum számosságú határelosz-lás létezik, vagyis azért nincs határeloszlás, mert végtelenül sok van.

46

Page 47: Diplomamunka - midra.uni-miskolc.hu

4.3. A paradoxon módosítási lehetőségei

4.3. A paradoxon módosítási lehetőségeiLiborné [18] cikkében a szenpétervári paradoxonnak több módosított változata is

ismertetésre kerül. Ezek közül az egyik eset az, amikor több játékos játszik a bankkalszemben. Kezdetben legyen két játékos, akik megegyeznek abban, hogy a megnyertösszeget fele-fele arányban osztják el a játék végén. Vagyis, ha az egyik játékos nyerX1 dukátot, a másik pedig X2 dukátot, akkor a játék végén mindkettőjük nyereményeX1 +X2

2dukát lesz. Belátható erről, hogy az együttes stratégia mindkettőjük szá-

mára nagyobb nyereményt eredményez, mintha X1 és X2 összeget kapnának a játékvégén. Ezt az esetet nevezik a szakirodalomban „két-Péteres paradoxonnak”. Célszerűmegvizsgálni, hogy mennyivel jobb ez az átlagoló stratégia.

P{X1 ≥ 2k|X2 = 2k} = P{X1 ≥ 2k} = 1−k−1∑j=1

1

2j= 1−

[1− 1

2k−1

]=

2

2k

minden természetes k esetén, ezért viszont

P{X1 ≥ X2|X2} =2

X2

amivel pedig a várható érték a következő lesz:

E(X2I{X2 ≤ X1}) = E(X2P{X1 ≥ X2|X2}) = E(X2

2

X2

)= 2.

Vagyis ha ezt megfelezzük, akkor 1-1 dukáttal lesz jobb ez az átlagoló stratégia akülön-külön elért eredményekhez képest.

A következő vizsgálandó eset legyen az, hogy hárman játszanak a bank ellen, ésvizsgáljuk azt, hogy így is jó ez az átlagoló stratégia. Csörgő és Simons munkásságábólkiderül, hogy az előző átlagoló stratégiát kiszámítva nem lesznek összehasonlíthatóaka várható értékek, viszont ha mindegyik játékos átadja a nyereményét a másik két játé-kosnak fele-fele arányban, akkor szintén 1-1 dukáttal jobb lesz a nyereményük. Ha ezt astratégiát követjük, akkor megállapítható, hogyha mindegyik játékos a nyereményéneka felét osztja csak szét a másik két játékos között fele-fele arányban, akkor már 1.5 du-káttal lesz több minden játékos nyereménye. Általános felírva, ha P = (p1, p2, p3) úgy,hogy p1 + p2 + p3 = 1, akkor az osztozkodó stratégiával a három játékos nyereménye akövetkező módon alakul: (lásd [18])

p1X1 + p2X2 + p3X3,

p3X1 + p1X2 + p2X3,

p2X1 + p3X2 + p1X3.

Ez a játék természetesen kiterjeszthető több játékosra is, mint három. Ha speci-álisan n = 2k játékos játszik, a nyereményük X1, X2, . . . Xn dukát, vagyis az átlag,

amit a végén külön-külön mindegyikük nyerX1 +X2 + · · ·+Xn

ndukátot. Az átlago-

ló stratégiával minden k ∈ N esetén E[S2k

2k,X1

]= k adódik. Ha a játékosok száma

bármilyen pozitív egész n szám, akkor a következőket lehet állítani. A háromjátékos

47

Page 48: Diplomamunka - midra.uni-miskolc.hu

4.4. Alkalmazás bemutatása

esethez hasonlóan legyen Pn = (p1, p2, . . . , pn), ami a játékosok közötti osztozkodásiarányokat jelenti, azaz mindegyik játékos külön-külön a nyereményének hányad részétadja a többi játékosnak. Ezt akkor tekintjük elfogadhatónak, ha minden komponensevagy 0 vagy 2 negatív egész hatványa. Ilyen Pn esetén kimondható, hogy a hozzáadottérték egyenlő lesz Pn entrópiájával, vagyis

H(Pn) = −{p1l log2 p1 + · · ·+ pn log2 pn}

Továbbá belátható, hogy ezen entrópia felső határát a következő kifejezés adja.

Hn = [log2 n] + 2{log2 n} − 1.

4.4. Alkalmazás bemutatásaA szentpétervári paradoxonból ismertetett kétszemélyes játék elkészült szimuláció-

ját szeretném ismertetni ebben az alfejezetben. Az alkalmazás során kezdetben meg-adjuk azt, hogy hány játékot szeretnénk lejátszani egy kísérlet során, majd megadjuk,hányszor kívánjuk megismételteni a játéksorozatot. Mivel a játékok esetén nem egyér-telmű, mennyi egy játék pontos hossza, így a program véletlenszámgenerátora mindenjátéksorozatra több véletlenszámot generál, hogy nagyon magas valószínűséggel befeje-ződjön mindegyik játék. A program futása elején megadunk egy dukát értéket, ami aztjelenti, hogy mennyi dukáttal óhajtunk játszani, azaz mennyi dukát értéket fizetünk bemindegyik játékért. Ezek után megadunk egy elérendő célösszeget.

A program megállapítja, hogy pontosan hány dukátnál lesz igazságos a játék. Eztúgy számítjuk ki, hogy minden egyes sorozat lefuttatásakor a végösszeget leosztjuka játékszámmal, és a végén ezeket az értékeket átlagoljuk. Ezeknek az értékeknek azábrázolása megtörténik hisztogramon is. Ezen ábrához meg kell jegyezni, hogy előfor-dulnak értékek 2 magasabb hatványai körül is, viszont ezek relatív gyakoriságai egyrealacsonyabbak, ezért került az egytől százig tartó tartomány ábrázolása. A programezen kívül két relatív gyakorisági értéket is megjelenít, az egyik az, hogy az előre meg-adott dukát alapján mennyi a nyereséges játékok relatív gyakorisága (nyereséges játékaz, ahol a végösszeg nulla vagy pozitív). A második érték az adott dukát mellett acélnyeremény elérésének relatív gyakoriságát vizsgálja.

A megjelenített grafikus felületen található még egy ábra, ami az adott dukát mel-letti kifizetődés (payout) mértékét óhajtott szimulálni. Ennek a szimulációjához min-den egyes kísérletnél a végösszegeket összeadjuk, és szakaszosan ábrázoljuk az összeskísérletre. Az ábrán piros vonallal van jelölve az x tengely, azaz hogy a kísérletsorozatkifizetődő-e (nyereséges), vagy nem kifizetődő.

Vizsgáljuk meg először 100 játék esetére, tízezres kísérletszámra 40 dukátos értékkel.A célnyeremény legyen 1000. Ekkor a következő eredmények tapasztalhatóak:

48

Page 49: Diplomamunka - midra.uni-miskolc.hu

4.4. Alkalmazás bemutatása

4.1. ábra. Szentpétervári kísérlet, 100 játék, 10000 kísérlet, 40 dukát

Ezen az ábrán jól látható, hogy az igazságos dukát értéke 23.9157-re adódik, az-az tekintsük meg ugyanígy száz játékra, 10000 kísérlet esetére, 24-es dukát értékkel.Többször lefuttatva a programot lehet látni, hogy az a dukát, amely mellett a játék

4.2. ábra. Szentpétervári kísérlet, 100 játék, 10000 kísérlet, 24 dukát

49

Page 50: Diplomamunka - midra.uni-miskolc.hu

4.5. További alkalmazások

igazságos, nem választható ki egyértelműen, mivel ez nem egy egzakt érték, amiheztart a szimulált érték.

4.5. További alkalmazások

4.5.1. Martingál szerencsejáték stratégia

A szentpétervári paradoxonnal áll szoros kapcsolatban a martingál (halmozási) stra-tégia. Ebben a stratégiában a mai napig rengeteg szerencsejátékos hisz, és ennek hatásá-ra mennek tönkre. A probléma alapját egy olyan játék szolgálja, hogy a játékos a bankelleni játszik, és a játékban ötven-ötven százalék esélye van a nyerésnek és a vesztésnekis. Ha az első játékban veszít a játékos, akkor megduplázza a tétet. Ha a másodikbanis veszít, akkor ugyanígy megduplázza az előző tétet, és így tovább, amíg nem nyer ajátékos. Ha a legelső tét A forint, és az első n−1 játszmában nem nyert a játékos, de azn.-ben már igen, akkor összesen kifizetett A(1+2+4+ · · ·+2n−1) = A(2n−1) forintot,míg a nyeremény összege A2n forint lesz. Így tehát összesen A nyereségre tett szert ajátékos. Mivel 1 valószínűséggel valamikor nyert a játékos, ez a stratégia biztosnak lát-szik. Viszont fontos megemlíteni, hogy ez csak látszat. Mivel lehet, hogy csak a sokadikjátékban nyer a játékos, így lehet még azelőtt elveszíti az összes pénzét, mielőtt lettvolna lehetősége nyerni. Másik irányból nézve, ha korlátlan sok pénze van a játékosnak,akkor ahhoz képest elenyésző az A forintnyi nyereség. Ezenkívül fontos megemlíteni,hogy a kaszinók már ismerik ezt a stratégiát, és a használatát úgy korlátozzák, hogymaximalizálják a tétek nagyságát, tehát akármeddig nem folytatható ez a stratégia, ésigaz, hogy ez a maximumösszeg nagyon nagy, mégis teljesen használhatatlanná tesziezt a stratégiát.

Ezen korlátozó tényezőket szeretném bemutatni az általam készített szimulációban,ami egy olyan helyzetet mutat be, hogy a játékos a martingál stratégiát követve adottkezdőösszegről adott számú játékot játszik, és korlátozva van a maximális tét, amit ajátékos egy játék során feltehet.

Tekintsük meg a szimulációt! Induljunk ki 1000 forint kezdőösszegről, és játszunk100 játékot! Ismételjük meg ezt a kísérletsorozatot 10000-szer úgy, hogy a kaszinó általmeghatározott maximális tét legyen 250 forint.

Jól látható az ábrán, hogy 0.903 lesz a relatív gyakorisága a nyertes kimenetelek-nek, azaz az esetek körülbelül 10%-ában ez a módszer ilyen paraméterek mellett vesz-teséges. A maximális nyeremény értéke pedig 67 forintra adódik, ami az 1000 forintoskezdőösszeg mellett nagyon kicsi növekedés, azaz belátható, hogy egyrészt nem biztosmódszer a martingál stratégia, másrészt az elért nyeremény csekély a kezdőösszeghezképest. A program futása során ábrázolja a kísérletek végén elért nyeremények hisztog-ramját, amin ebben az esetben jól látható, hogy az értékek, amelyek nem 1000 körültalálhatóak, azok rendszerint 0, 250, 500, és 750 környékén találhatóak, azaz nagy va-lószínűség szerint már elvesztettek egy vagy több maximális tét értékű játékot. Azábráról ezen kívül leolvasható, hogy mennyi a kísérletenkénti átlagnyeremény értéke,ami 0.35-re adódik, azaz nagyon csekély a várható nyeremény játékonként.

4.5.2. Egyék alkalmazások

Ha a játékok körében vizsgálódunk, akkor kiderül, hogy a „Legyen Ön is millio-mos!” televíziós vetélkedő is egy módosított szentpétervári paradoxon alkalmazásának

50

Page 51: Diplomamunka - midra.uni-miskolc.hu

4.5. További alkalmazások

4.3. ábra. Martingál stratégia, 100 játék, 10000 kísérlet, 1000 forint kezdőöösszeg, 250maximális tét

tekinthető. Itt minden kérdésnél négy válaszlehetőség közül kell az egyetlen helyesetkiválasztani, és a játékos dönthet, hogy helyes válasz esetén tovább játszik, vagy eltá-vozik az addig megnyert összeggel. Ha tovább játszik, és veszít, akkor az összes addiginyereményét elveszítheti, viszont ha nyer, akkor a pénze megduplázódik.

A paradoxon gazdasági alkalmazásai közül több említésre kerül Libor Józsefné dok-tori disszertációjában ([18]). Ilyen alkalmazások között meg kell említeni, hogy DanielBernoulli a szentpétervári paradoxonból kiindulva jutott el a hasznosság formulájá-

hoz (U = k ∗ ln

(x

c

), ahol k egy pozitív konstans, c pedig a létezéshez minimálisan

szükséges vagyon nagysága). Bernoulli munkássága a paradoxonnal kapcsolatban kétalapgondolatot tartalmazott, amiből az egyik a csökkenő határhaszon törvényéhez ve-zetett, a másik pedig arra vonatkozott, hogy bizonytalan vagyoni körülmények közöttaz egyén várható helyzetét nem a várható vagyonhoz tartozó egyéni értékelés, hanemaz egyes vagyoni helyzetekhez tartozó egyéni értékelések várható nagysága határozzameg.

Szintén a szentpétervári paradoxon volt az alapja több olyan pénzügyi ötletnek is,amelyek szinte minden esetben csődbe juttatták az adott vállalatot, céget. Ilyen példá-ul egy gazdasági társaság nagy arányú növekedése, amelynek olyan kilátásai vannak,hogy szinte végtelennek tűnnek az elérhető nyereségek. Felmerül a kérdés, hogy haképesek vagyunk korlátlanul előre jelezni a vállalat bevételeit, akkor mennyit érhet avállalat részvénye. Végtelen összeget? Ezeket az álmokat sok befektető követte a 60-as,70-es években. Úgy gondolták, hogy a jövendő nyereség és osztalék igazolni fogja abefektetést, bármekkora is a vételár. A valóságban azonban a nyereség jóval kisebbnekbizonyult, mint a várt végtelenül nagy összeg. Ennek a problémának részletes leírását,példákkal és matematikai levezetéssel együtt megtalálhatjuk [18] értekezésében.

51

Page 52: Diplomamunka - midra.uni-miskolc.hu

5. fejezet

GUI tervezés MATLABprogramcsomagban

A MATLAB programcsomag segítségével lehetőségünk van GUI (Graphical UserInterface) készítésére. Egy GUI egy grafikus ablak vagy ablakok, amelyeken vezérlőelemek vannak, amik segítségével a felhasználónak lehetősége van interaktív feladatokvégrehajtására, és ehhez nincs szüksége szkriptek készítésére, vagy parancsok beírásá-ra a parancssorba. Ehhez a GUIDE-t (Graphical User Interface Design Environment)használjuk. Ennek segítségével lehetőségünk van GUI létrehozására, illetve szerkeszté-sére .fig típusú fájlokból, és ezen felületek kezelésére. A funkció eléréséhez egyszerűengépeljük be a parancssorba a guide parancsot. Ezzel meghívódik a guide függvény, ésa MATLAB feldob egy ablakot (Quick Start Dialog), ahol lehetőségünk van kiválasz-tani, hogy milyen új GUI-t készítsünk, illetve mely már korábban elkészítettet nyissukmeg. A MATLAB több mintát biztosít GUI létrehozására, illetve létrehozhatunk egyGUI-t teljesen önállóan is.

Ha a guide parancs paraméterébe megadjuk a már korábban elkészített interfé-szünk nevét, akkor megnyitja a MATLAB, ha a megfelelő munkakönyvtárban van. Hanincs ott, akkor lehetőségünk van a guide parancs paraméterének teljes elérési útvona-lat megadni. Például a guide(proba) parancs megnyitja a proba.fig interfészünket.

Ismerkedjünk meg a GUI-k működésével! A legtöbb GUI a felhasználótól függ, a fel-használótól várja a vezérlők kezelését, és erre ad válaszokat. Minden egyes vezérlőnek,és magának a GUI-nak is van legalább egy rutinja, ami gyakorlatilag egy végrehajthatóMATLAB kód. Ezek a rutinok callback néven ismertek, mivel gyakorlatilag egy hívástintéznek a MATLAB felé, hogy az végrehajtsa a megfelelő feladatot. Ezen callbackrutinok mind a felhasználó tevékenységétől függően aktiválódnak, például a felhasználómegnyom egy gombot, kattint az egérrel, kiválaszt egy elemet egy legördülő menüből,begépel egy értéket, vagy csak egyszerűen egy vezérlő felett elhúzza az egeret. Ezeketeseményeknek nevezzük, és ezek bekövetkezésekor a GUI válaszeseményt generál. Ezt atípusú programozást eseményvezérelt programozásnak nevezzük. A callback rutinokaszinkron működésűek, a szoftvertől független események váltják ki őket. MATLABesetében a legtöbb esemény a felhasználó GUI-val való interakciójának eredménye, devan lehetőségünk úgy megírni az interfészünket, hogy az más események hatására vál-tódjon ki, például egy fájl létrehozására, megnyitására.

MATLAB-ban kétféle módon írhatjuk meg ezeket a rutinokat. Az egyik lehető-ség MATLAB függvényekként, amik a MATLAB nyelvén íródtak, és .m kiterjesztésűfájlokban tárolódnak le. A másik lehetőség sztringekben tárolt MATLAB kifejezések,

52

Page 53: Diplomamunka - midra.uni-miskolc.hu

parancsok formájában történhet. Például: ’c=sqrt(a*a+b*b);’. A két módszer közüla függvények használása az ajánlottabb, mivel függvények használatával több paramé-tert tudunk kezelni, több lehetőségünk van, és sokkal rugalmasabb.

Mielőtt elkezdenénk elkészíteni az interfészünket, meg kell terveznünk azt. El kelldöntenünk, hogy milyen felhasználók fogják használni a GUI-t, pontosan milyen felada-tok ellátására akarjuk használni, hogyan használják a felhasználók a GUI-t, és milyenvezérlőkre van szükségünk a használatához. Pontosan meg kell tervezni, hogy milyenbemeneti adatokra van szükségünk, illetve milyen kimenetet akarunk belőle készíteni,hogyan kérjük be az adatokat, illetve milyen formában jelenítsük meg a kimenetet,hogyan viselkedjen a GUI a különböző vezérlőkön kiváltott eseményekre. Miután atervezéssel készen vagyunk, kezdhetjük meg ténylegesen az interfészünk elkészítését,leprogramozását.

Kétféleképpen lehet felépíteni a MATLAB grafikus interfészünket, ennek egyik mód-ja a GUIDE használata, a másik pedig a GUI programozása. Mindkét módszernekvannak előnyei, illetve hátrányai, így a legcélszerűbb a kettőt együtt, egymás melletthasználni. Első megközelítésként használjuk a GUIDE-t. A GUIDE létrehoz nekünk egyalap interfészt, ha a blank GUI lehetőséget választottuk. A felugró ablak jobb oldalántalálható egy eszköztár, ahonnan lehetőségünk van vezérlők létrehozására. Tekintsükmeg ezeket!

• Push button: egy nyomógombot hoz létre.

• Slider: az interfészen való navigálásra „csúszkát” hozhatunk létre.

• Radio button: több választási lehetőség esetén ezzel tudunk egyet kiválasztani.

• Check box: több választási lehetőség esetén ezzel többet is kiválaszthatunk.

• Edit text: szöveges beviteli mezőt hozunk létre.

• Static text: felhasználó által nem változtatható szöveges mezőt hozunk létre.

• Pop-up menu: felnyit egy választási listát, ahonnan a felhasználó az egérrel vá-laszthat egyet.

• Listbox: egy elemlistát hozunk vele létre, ahonnan a felhasználónak lehetőségevan több elem kiválasztására is.

• Toggle button: létrehoz egy nyomógombot, aminek két állapota van. Ha a fel-használó rákattint, benyomódik, és így is marad, míg a felhasználó nem kattintrá megint.

• Table: egy táblázatot tudunk ezzel a paranccsal létrehozni.

• Axes: képek és MATLAB által készített függvények megjelenítésére szolgáló ve-zérlő.

• Panel: ezen vezérlő segítségével tudunk más vezérlőket egy csoportba rendezni.Ha a vezérlő elemeket panelekbe rendezzük, akkor egyszerűbben értelmezhető, ésátláthatóbb GUI-t készíthetünk.

• Button group: ezen vezérlő hasonlít a Panel vezérlőhöz, viszont az külön Radiobutton és Toggle button vezérlők összefoglalására használható.

53

Page 54: Diplomamunka - midra.uni-miskolc.hu

• ActiveX control: ActiveX vezérlőket hozhatunk vele létre.

Nézzük meg pár általános használható tulajdonságát ezeknek a vezérlőknek! Halétrehoztunk egy vezérlőt, és kétszer kattintunk rajta, felnyílik a property inspectornevű menü, ahol lehetőségünk van a vezérlő tulajdonságait módosítani. Lehetőségünkvan a vezérlők háttérszínének megváltoztatására, ahol választhatunk a MATLAB általelőredefiniált színek közül, vagy RGB komponenseit megadva a színnek létrehozhatjuksaját színünket. Lehetőségünk van itt megírni a függvényeket, amik az adott vezérlőeseményeit kezelik, vagy ha alapértelmezetten hagyjuk, akkor a GUIDE létrehoz egyfüggvénykeretet, amit később szerkeszthetünk. Beállíthatjuk, hogy az adott vezérlő el-érhető legyen a felhasználó számára, vagy sem, továbbá a gombokon megjelenő feliratokesetében a betűtípust, betűméretet, betűk színét, a szöveg dőltségét, félkövérségét, il-letve beállíthatjuk, hogyan helyezkedjen el a szöveg horizontálisan, illetve vertikálisan.Lehetőségünk van beállítani, hogy az adott vezérlő mikor legyen látható, például egyfeladat leírása csak akkor legyen látható, ha a felhasználó azt a feladatot választottaki. Lehetőségünk van a vezérlők elhelyezkedését is beállítani, illetve a méretüket. Avezérlőknek adhatunk saját nevet, amivel könnyebben tudjuk megkeresni programozássorán, illetve a feliratot is be lehet állítani, ami egy vezérlőn megjelenik, pl. egy gom-bon, vagy egy szöveges mezőn.

Ha mindent beállítottunk itt, akkor tekintsük meg a programozás részét! Ehhezannyit kell tenni, hogy rákattintunk az M-file Editor gombra. Ha még nem mentet-tük el az interfészünket, a MATLAB most felajánlja a mentést. Ha elmentettük, akkormegjelenik az eddig elkészített GUI kódja. Használjuk a függvény ikont, és tekintsükmeg a MATLAB által létrehozott függvényeket! A MATLAB minden vezérlőhöz, ésmagához a GUI-hoz is létrehoz egy OpeningFcn nevezetű függvényt, ami még azelőttfut le, hogy az adott vezérlőnk láthatóvá válik. Itt tudjuk megadni legegyszerűbben,hogy mi legyen látható, amikor az adott vezérlő megjelenik, például ha rákattintunkegy gombra, akkor ennek hatására jelenjenek meg más vezérlők, vagy váljanak nemláthatóvá a felhasználó számára. A MATLAB ezenkívül minden vezérlőhöz létrehozzaa callback rutint. Ideírva a megfelelő kódrészleteket, tudjuk vezérelni az eseménye-ket, hogy mi történjen, ha az bekövetkezik. Például ha egy gombot lenyomunk, akkorolvassa be a megfelelő értékeket, ellenőrizze őket, és az ellenőrzés eredménye alapjánváltson ki új eseményeket.

A MATLAB nyelvben a vezérlők értékek bekérésére, illetve beállítására a get ésset parancspáros szolgál. A get parancs lekéri az adott objektum paramétereit. Eztértékek beolvasására szokás felhasználni. Ezt egy kis példával illusztrálom. Tegyük fel,hogy van egy szövegbeviteli mező, amibe a felhasználó különböző értékeket írhat be.Legyen ez a mező mellett egy gomb, aminek lenyomására a program beolvassa az adottbeviteli mező értékét. Ezt úgy valósítjuk meg, hogy a gomb callback függvényébenvégrehajtjuk a beviteli mező lekérését a következőképpen:a=get(handles.bevitelimezo,’String’);

Ekkor az a változó értékébe letároltuk a beviteli mező aktuális értékét, szövegként.Ha ezt nem szöveg formában akarjuk letárolni, akkor típuskonverziós függvényeket kellhasználnunk. Például, ha ez az érték, amit beolvasunk valós szám, akkor a beolvasásta következő módon kell végrehajtanunk:a=str2double(get(handles.bevitelimezo,’String’));

Ezzel az a változóba letároltuk a beviteli mező értékét, ami valós szám volt. Viszont,a programot fel kell készíteni arra az esetre is, hogy a felhasználó hibás értéket ad meg,például egy szöveget ír oda, ahol valós számot várunk, vagy valós számot oda, ahol

54

Page 55: Diplomamunka - midra.uni-miskolc.hu

csak egészeket fogadunk el. Ezeket az ellenőrzéseket a bekérés után tudjuk végrehajta-ni, azaz jelen példánkban a gomb lenyomása után, így a gomb callback függvényénekmeghívásakor. Minden beviteli mező esetén, ahol vannak értékmegkötéseink, írnunk kellegy hibaellenőrzést. Például, ha egy pozitív egész számot akarunk bekérni, akkor ellen-őriznünk kell, hogy az adott szám pozitív-e, és azt, hogy egész szám-e. Egy egyszerűellenőrzés kinézhet a következőképpen is:

if(a<10)msgbox({’Az a változó értéke nem lehet tíznél kisebb’},’Hiba1’);

end

Ebben az esetben a MATLAB egy felugró ablakot fog létrehozni, ha a változó értékétrosszul állítottuk be. Fontos, hogy a programunkat ne engedjük hibás paraméterekkelfuttatni, azaz a hibaellenőrzésnek hamarabb kell megtörténnie, mint a program lefut-tatásának. Erre egy egyszerű megoldás az, hogy a gomb lenyomásakor végrehajtódnakaz ellenőrzések, ha hibát kapunk, felugró ablakban közöljük a felhasználóval, és egyváltozóban eltároljuk, hogy hibát kaptunk. Ezek után, miután minden ellenőrzés lezaj-lott, megvizsgáljuk a hibát jelző változók értékeit, és ha nem kaptunk hibát, meghívjuka feladatot megoldó függvényt.

Vezérlők értékének beállítására a set parancs szolgál. Ennek segítségével beállít-hatjuk a programunkból egy szöveges beviteli mező értékét, vagy egy statikus szövegértékét átírhatjuk (a programunk változtathatja a Static text értékét, csak a felhasz-náló nem), elrejthetünk vezérlőket, vagy megjeleníthetjük őket, megváltoztathatjuktulajdonságaikat. Tekintsünk meg ezek közül néhányat!

Ahhoz, hogy a GUI átlátható legyen, célszerű, hogy a felhasználó ne lássa egyszerreaz összes vezérlőt, ha azok nem egy témához tartoznak, a feleslegeseket rejtsük el, mertzavaró lehet. Ezért célszerű a GUI készítésekor létrehozni Panel elemeket, mert ebbenaz esetben nem kell minden egyes vezérlőt egyesével elrejteni, hanem elég a panelt el-rejteni. Ahhoz, hogy felhasználó általa nem láthatóva tegyünk egy panelt, a következőparancsot kell megadnunk:set(handles.panel1,’Visible’,’off’);

Ezzel a paranccsal a panel1 nevű panelt, rajta az összes vezérlővel, nem láthatóvátettük. Ha ugyanezt on értékkel adjuk meg, akkor az adott panel látható lesz. Így ha apanelek megjelenését gombokkal szabályozzuk, akkor minden egyes gomb lenyomásáraelrejti az összes panelt, ami nem kell, és láthatóvá teszi azokat, amik kellenek.

Set parancs használatával tudunk értéket adni egy beviteli mezőnek. Például tu-dunk adni egy lehetséges kezdőértéket, amit a programból állítunk be, ha a felhasználócsak először használja a programot, akkor legyen lehetősége megfelelő paraméterek mel-lett megtekinteni a program futását. Hibaellenőrzésnél is hasznos tud ez lenni, ha azegyik beviteli mező értéke nem volt helyes, akkor egyszerűen beállítjuk üresre az adottbeviteli mező értékét, így a felhasználó rögtön látja, hol vétett hibát, és a hibaüzenetsegítségével tudja javítani. Az értékadásnak a kódja a következőképpen néz ki:set(handles.text1,’String’,’15’);

Ezzel a MATLAB beállítja a text1 szöveges mezőnk értékét tizenötre. Ha üres-re szeretnénk állítani a mezőt, akkor ’’ legyen az utolsó paraméterünk. A MATLABprogramcsomag lehetőséget biztosít többsoros beviteli mező készítésére, aminek se-gítségével lehetőségünk van többsoros szövegeket létrehozni, például egy leírást. Ez akövetkezőképpen programozható:

set(handles.text1,’String’,{’Többsoros bevitel, első sora’;’’;

55

Page 56: Diplomamunka - midra.uni-miskolc.hu

’Kihagytunk egy üres sort, ez már a harmadik sor;});

Ekkor a text1 értéke három sorból fog állni, amiből a második sor egy üres sor.Ezenkívül érdemes megemlíteni, hogy van lehetőség menük létrehozására is. Eh-

hez a Menu Editor funkciót kell használni, ahol megadhatóak a menük nevei, és ahozzá tartozó azonosító értékek, amik segítségével már lehetőség van programozni.

Ennek a fejezetnek a zárásaként szeretnék bemutatni egy egyszerűbb grafikus inter-fészt, és a rajta szereplő elemeket megnevezni. Ez a minta a Szentpétervári program-

5.1. ábra. Minta GUI

részhez elkészült GUI-t mutatja kitöltés nélkül. Az ábra bal oldalán lehet látni háromStatic Text mezőt és alattuk három Edit Text elemet. Az ábra jobb oldalán láthatókét Axes objektum, amire a grafikus eredményeket tudjuk megrajzolni. Az ábrán talál-ható Kilépés gomb a Menu Editor segítségével létrehozott menüpont, és rákattintvabezárhatjuk a GUI ablakot.

56

Page 57: Diplomamunka - midra.uni-miskolc.hu

6. fejezet

Összefoglalás

Diplomamunkám témájául leghosszabb szériák vizsgálatát és ehhez a témakörhöztartozó szentpétervári paradoxonnal kapcsolatos feladatot választottam. Diplomamun-kám legelején egy rövid áttekintésben ismertetem a valószínűség-számítás, és a MAT-LAB történeti hátterét, és definiálok pár alapfogalmat, amiket a diplomamunkám többifejezetében használok. Emellett bemutatok pár eloszlást, amit szintén felhasználok aszimulációk során. Ezek után bemutatom a fogadásos feladatot, ami egy ismert való-színűségi érték alapján történő játéksorozatra történő fogadás eredményeit mutatja be.Ez a program egyszerűsége és érthetősége miatt jó bevezetést nyújt a diplomamunkatöbbi részéhez.

A harmadik fejezetben a címben is szereplő leghosszabb szériákkal foglalkoztam. Eb-ben a fejezetben ismertetem a független, és függő mintavételezés esetén a leghosszabbfej/piros és a leghosszabb bármely szériák alakulását. A független mintavételezés ese-tén kitérek mind a szabályos, mind a szabálytalan pénzérme esetére, és ezen esetekrevonatkozó rekurzív és aszimptotikus tételeket ismertetek, amelyek közül néhánynak abizonyítását is közlöm. Ebben a fejezetben a MATLAB gyorsítási lehetőségeire tértemki, ezek közül is a kézenfekvőbb, de több számítást igénylő iteratív átírásra, és az egy-szerűbb, de önmagában még nem biztos, hogy megfelelő C nyelvű átírásra. A C nyelvűátírás esetén ismertettem a MEX programozás alapjait, aminek segítségével C, C++és Fortran nyelvű programokat lehet MATLAB függvényekké alakítani. Az iteratív át-írás során az átírás menetét is ismertettem, és kitértem az elért sebességjavulásokra. Asebességek alapján jól látható, hogy a szabálytalan pénzérme esetén, ahol megtörténtaz iteratív és a MEX átírás is, a legcélszerűbb az iteratív algoritmus C nyelvű megva-lósítását választani, mivel azzal érhetőek el a legjobb eredmények. Ebben a fejezetbenmind a független, mind a függő mintavételezésre ismertettem programot, és bemutat-tam azt, hogyan változnak a független mintavételezés értékei akkor, ha engedélyezünkhibákat a jelek között.

A negyedik fejezetben ismertettem a szentpétervári paradoxon alapjául szolgálójátékot. Ezután áttekintettem a paradoxon történetét a kialakulásától a jelenig. Ismer-tettem a paradoxon néhány módosítási lehetőségeit, és kitértem a paradoxon alkalma-zásaira is. Itt bemutattam egy szimulációt, ami Bernoulli híres állítását („még a féleszűember is eladná a játékhoz való jogát negyven dukátért”) hívatott bemutatni. Ezutánismertettem a martingál szerencsejáték stratégia hibáit bemutató programrészt, amiszimulálja, hogy miért nem biztos ez a stratégia.

Diplomamunkám utolsó fejezetében kitértem a MATLAB GUI fejlesztési lehetősé-geire, és ezt mutattam be egy rövid példával.

57

Page 58: Diplomamunka - midra.uni-miskolc.hu

A diplomamunkám továbbfejlesztésének több lehetőségét is látom. Célszerű meg-vizsgálni, hogy általános algoritmusok esetén a MEX segítségével történő C nyelvreátírás milyen sebességjavulásokat hoz (a programban használt rekurziónál körülbelül50-szeresnek nevezhető a gyorsulás), és ennek segítségével gyorsabbá tehetőek egy-részről a szimulációk, másrészről a körülményesen kiszámítandó elméleti értékek. Ezenkívül a hibás szériák esetén érdemes vizsgálódni, hogy milyen aszimptotikus vagy rekur-zív elméleti értékeket lehet megállapítani ezekhez az értékekhez. Harmadrészt érdemesmegvizsgálni a leghosszabb szériás probléma több dimenzióra való kiterjesztését, leg-nagyobb terület illetve térfogat vizsgálatát.

58

Page 59: Diplomamunka - midra.uni-miskolc.hu

Irodalomjegyzék

[1] Arazi, B.:Handwriting identification by means of run-length measurements. IEEETranactions on Systems, Man and Cybernetics, 7 (12), 1977, pp. 878-881

[2] Binswanger, K. - Embrechts, P.:Longest runs in coin tossing. Insurance Math. Eco-nom. 15, no. 2-3,. 1994, pp. 139-149.

[3] Bloom, D. M.:Probabilities of Clumps in a Binary Sequence. Mathematics Magazi-ne, 69, no. 5, 1996.

[4] Csörgő, S.: A szentpétervári paradoxon, Polygon V. kötet 1. szám 1995.

[5] Csörgő, S., Simons, G.:On Steinhaus’Resolution of the St. Petersburg Paradox, Pro-bability and Mathematical Statisctics, Vol. 14, Fasc. 2, 1993, pp. 157-172.

[6] Csörgő, S., Simons, G.:A strong law of large numbers for trimmed sums, with app-lications to generalized St. Petersburg games, Statictics & Probability Letters Vol.26, issue 1, 1996, pp. 65-73.

[7] Fazekas, I.: Valószínűségszámítás, Kossuth Egyetemi Kiadó, Debrecen, 2000.

[8] Fazekas, I., Karácsony, Zs., Libor, J.: A leghosszabb szériák vizsgálata, 2010. decem-ber 8.

[9] Fegyverneki, S.: Valószínűség-számítás és matematikai statisztika, Elektronikusjegyzet, Miskolc, 2007.

[10] Feller, W.:Note on the Law of Large Numbers and „Fair” Games, Annals of Ma-thematical Statistics, Vol. 16, Num. 3 (1945) pp. 301-304

[11] Feller W.:Bevezetés a valűszínűségszámításba és alkalmazásaiba, Műszaki Könyv-kiadó, Budapest, 1978.

[12] Földes, A.: The limit distribution of the length of the longest head-run, Period.Math. Hungar. 10, no. 4, 1979, pp. 301-310.

[13] Gardner, M.:aha! Gotcha, Freeman, New York, 1982.

[14] Gisbert, S : MATLAB frissített kiadás, Typotex Kiadó, Budapest, 2005.

[15] Gordon, L. - Schilling, M. F. - Waterman, M. S.:An extreme value theory for longhead runs. Probab. Theory Relat. Fields, 72, no. 2, 1986, pp. 279-287.

[16] Kopocinski, B.: On the distribution of the longest success-run in Bernoulli trials.Roczniki Polsklego Towarzystwa Matematycznego, Seria III, Matematyka Stosowa-na XXXIV, 1991.

59

Page 60: Diplomamunka - midra.uni-miskolc.hu

[17] Laska, J.:Writing C Functions in MATLAB, cnx.org/content/m12348/latest/

[18] Libor, J.:Rekurziós eljárások, Monte Carlo módszerek és aszimptotikus eredményekoktatási célú összehasonlító elemzése, PhD értekezés, Debreceni Egyetem, 2011.

[19] Martin-Löf, A.:A limit theorem which clarifies the ’Petersburg paradox’, Journalof Applied Probality 22, 1985, pp. 634-643.

[20] MathWorks: MATLAB documentation, http://www.mathworks.com/help/techdoc/

[21] Muselli, M.: Useful inequalities for the longest run distribution. Statis. Probab.Lett. 46, no. 3, 2000, pp. 239-249.

[22] Révész, P.: Strong theorems on coin tossing, Proceedings of the International Cong-ress of Mathematicians, Helsinki, 1978.

[23] Révész, P.: Mennyire véletlen a véletlen? Akadémiai székfoglaló, Akadémiai Kiadó,Budapest, 1982.

[24] Sararova, S. S.:On the asymptotic behaviour of the marinal sojourn time of andergodic Markov chain in a fixed state. Russian Math Surveys 35 (6), 1980, pp.103-104.

[25] Schilling, M. F.: The Longest Run of Heads, The College Mathematics Journal1990. vol. 21. no.3

[26] Schuster, E. F.:On overwhelming numerical evidence in the settling of Kinney’swaiting time conjecture. SIAM Jou4rnal of Statistical Computing, 6 (4), 1985. pp.977-982.

[27] Schwager, S. J.:Run probabilities in sequence of Markow-dependent trials. Journalof the American Statistical Association, 78, 1983. pp. 168-175.

[28] Steinhaus, H.:The so-called Petersburg Paradox, Colloquium Mathematicum 2,1949, pp. 56-58.

[29] Szászné Simon, J.: A sztochasztika középiskolai oktatása, PhD értekezés, DebreceniEgyetem, 2005.

60

Page 61: Diplomamunka - midra.uni-miskolc.hu

Adathordozó használati útmutató

Az adathordozón álló program több részből tevődik össze. A központi rész a kö-vetkező két fájlban található: diplomamunka.m és diplomamunka.fig. Ezek a fájloktartalmazzák a program központi részét és a grafikus felülelet, és ez a program hívjameg a többi fájlt. A diplomamunka.m fájl tartalmazza a tényleges programot, ennekmegnyitásával megtekinthető a forráskód, és futtatható az állomány.

A program megnyitásához szükséges szoftver: MATLAB Version: 7, vagy újabb. Afejlesztés MATLAB 7.14.0.739 (R2012a) programváltozaton történt.

A MEX-es programrészekhez szükséges az adott operációs rendszerre a fordítás.Windows 7 x64 rendszerre a lefordított állományok mellékelése megtörtént, más rend-szerekre a Mexfunctions nevű mappában mellékelt két fájlt kell a diplomamunkám 3. fe-jezetében ismertetett módon kell lefordítani, és a lefordított fájlokat a diplomamunka.mállomány mellé másolni. Fordítók:

• 32 bites rendszer esetén a MATLAB beépített lcc fordítója

• 64 bites Windows rendszer esetén a Windows SDK 7.1-es vagy újabb változataingyenesen letölthető

• Microsoft Visual C++ 2010, vagy 2008 SP1 és Windows SDK 6.1

• Microsoft .NET Framework SDK 2.0, 3.0, 3.5

A program megnyitása:

• Nyissa meg a MATLAB programcsomagot!

• File menü Open parancsával, vagy az Open file parancssal nyissa meg az adat-hordozón található diplomamunka.m fájlt!

• Ekkor látható a program kódja, amelyet futtasson le!

• Szükség lehet a MATLAB elérési útjának beállítására, válassza az Add path le-hetőséget!

• Ekkor elindul a program. A menüsorban elérhető egy Súgó menü, amivel meg-jelenítheti a programokhoz tartozó súgót. A főpanelen válassza ki a megfelelőprogramot, és adja meg az értékeket, majd kattintson a Számol gombra!

• Miután lefut a program, az eredmények a feladatnak megfelelő grafikus ábránmegjelennek.

• A program hasonlóan működik mindegyik feladat esetén.

• A fenti menüsorban megtalálható a program névjegye.

61

Page 62: Diplomamunka - midra.uni-miskolc.hu

• A programból illetve a felugró GUI ablakokból a Kilépés gombbal léphet ki,ahol ez implementálásra kerül, ahol nem, ott a pirox X segítségével zárható beaz adott ablak.

A CD-n megtalálható a diplomamunkám teljes szövege pdf állományban, és a reportmappában a LATEXforráskódok.

Mellékelt MATLAB állományok:

• diplomamunka.m : a főprogram forráskódja,

• diplomamunka.fig : a főprogram GUI-jának kinézete,

• fogadasGUI.m : a fogadásos programrész GUI-jának kódja,

• fogadasGUI.fig : a fogadásos program GUI-ja,

• martingalGUI.m : a martingál program GUI-jának kódja,

• martingalGUI.fig : a marintgál program GUI-ja,

• sugo.m : a program súgójának kódja,

• sugo.fig : a program súgójának GUI-ja,

• szentpetervariGUI.m : a szentpétervári programrész GUI-jának kódja,

• szentptervariGUI.fig : a szentpétervári programrész GUI-ja.

62