Tässä ja muutamassa tulevassa tarinassa kerron, miten GeoGebralla voi simuloida nopanheittoa. Tutkitaan ensin yhden nopan heittoa, tulevissa artikkeleissa tutkitaan kahden ja useamman nopan heiton summan todennäköisyysjakaumaa simuloimalla ja laskemalla.
Heitetään yhtä noppaa n kertaa. Tuotetaan frekvenssijakauma. Kirjoita kaikki komennot Syöttökenttään, näin saat vikkelämmän sovelluksen kuin CASia käytettäessä.
Luo muuttuja n ja tee siitä liuku
n = 100
Arvo nopat
nopat = Jono(Satunnaisluku(1, 6), nn, 1, n)
Tuota jakauman reunat
reunat = Jono(0.5, 6.5, 1)
Laske jakauma. Frekvenssikomento laskee nopan arvojen lukumäärän ja tuottaa listan, jossa ensimmäisenä on ykkösten lukumäärä, sitten kakkosten jne. Kun listan jakaa n:llä, niin saadaan suoraan lista, jossa on arvojen suhteelliset osuudet.
arvot = Frekvenssi(nopat) / n
Tee histogrammi
histo = Histogrammi(reunat, arvot)
Piirrä teoreettinen arvo eli ⅙.
y = 1/6
Säädä piirtoalue nätiksi.
Toinen tapa tuottaa kuvaaja koordinaatistoon olisi ollut käyttää Pylväskaavio( Raakadatalista, Palkin leveys, Pystysuora skaalaustekijä (valinnainen)) – komentoa suoraan tuohon nopat dataan.
Tässä video miten tuon voi tuottaa GeoGebralla. Lähipäivinä kirjoitan tästä artikkelin tänne blogiini. Tämä on minusta aika ihmeellinen asia. Tosin kertovathan binomikertoimet kombinaatioiden lukumäärän.
Millä todennäköisyydellä kolmea noppaa heitettäessä saadaan summaksi 10? Havainnollistetaan tilannetta kolmiulotteisesti käyttämällä GeoGebran listoihin liittyviä komentoja. Teen sovellukseni GeoGebra 5:llä ja komennot kirjoitan Syöttökenttään.
Luodaan ensin kaikki tulosvaihtoehdot pisteiksi
kolmiulotteiseen koordinaatistoon käyttämällä kolmea sisäkkäistä Jono-komentoa.
Jos tämän kirjoittaa käsin, niin kannattaa ensin kirjoittaa
Paremman havainnollistuksen saa, kun katsoo listaa CAS-ikkunassa.
3D-piirtoalueella lista pisteet näyttää tältä.
Listan pisteet pituus on kuusi. Luodaan yksi lista, jossa pisteet ovat peräkkäin listana käyttämällä Tiivistä-komentoa. Se ikään kuin poistaa ylimääräiset sulkeet eli tässä tapauksessa turhat listat.
Jotta saamme ongelmastamme hieman yleisemmän, luodaan liuku
n. siten, että se saa kokonaislukuarvoja välillä [1, …, 20]. Tuossa on pari
ylimääräistä lukua, mutta ne toiminevat tarkastuksena, että menetemä on oikea.
Kirjoitetaan syöttökenttään
n = 10
ja klikataan Algebra-ikkunassa sen vasemmalla puolella olevaan pallukkaan. Klikkaamalla liukua hiiren oikealla painikkeella saadaan ominaisuudet ja Liukusäädin ikkunassa:
Seuraavaksi selvitetään, millä kaikki-listan pistellä summa on yhtä suuri kuin n.
Tässäkin voisi käyttää sisäkkäisiä jono-komentoja, mutta ehkä tyylikkäämpää on käyttää Zip-komentoa. Komennon yleinen syntaksi on seuraava
Selvennetään Zip-komentoa esimerkillä. Jos lista A = {1, 2, 3} ja B = {4, 5, 6, 7}, niin komento
testi = Zip((a, b), a, A, b, B)
tuottaa listan
testi = {(1, 4), (2, 5), (3, 6)}
Komennossa a on listan A alkioihin liittyvä sisäinen muuttuja ja b liittyy B:n alkioihin. Tässä tapauksessa (a, b) tuottaa pisteitä siten, että ensin otetaan ensimmäinen alkio A:sta ja ensimmäinen B:stä eli (1, 4), sitten toiset alkiot eli (2, 5) ja sitten kolmannet (3, 6). Nyt kaikki A:n alkiot on käyty läpi ja ei tuoteta lisää pisteitä. Yleisesti tällä komennolla voidaan suorittaa komentoja useille listoille. Syntyvän listan pituuden määrittää lyhin lista. Itse käytän Zipiä useimmiten, kun haluan käydä yhden listan kaikki alkiot kerralla.
Luodaan lista suotuisille tapauksille. Sisäinen muuttuja a käy läpi kaikki-listan alkiot. Jos-ehdon sisällä x(a) + y(a) + z(a) laskee a-pisteen koordinaattien summan.
suo = Zip(Jos(x(a) + y(a) + z(a) == n, a), a, kaikki)