Nopat GeoGebralla – kolme noppaa

Edellisissä artikkeleissani kerroin miten GeoGebralla saa simuloitua yhden ja kahden nopan heittoa. Kolmen nopan simulointi syntyy samalla tavalla muutamalla komennolla. GeoGebra-komentojen toiminnan olen esittänyt aiemmissa artikkeleissani, niinpä jätän sen vähemmälle tässä artikkelissa.

Kahden nopan heitossa pääteltiin tuloksen todennäköisyys käyttämällä tasoon piirrettyä pisteistöä, kolmen nopan heitossa hypätään 3D-kuutioon.

simulointi

Simuloidaan kolmen nopan heittoa ja tuotetaan jakauma kuvaajaksi.

Kolmen nopan heittojen lukumäärä on n, summat-listaan lasketaan kolmen nopan summia n kappaletta. Pylväsdiagrammi laskee jakauman ja tuottaa jakauman kuvaajan.

n = 20000
summat = Jono(Satunnaisluku(1, 6) + Satunnaisluku(1, 6) + Satunnaisluku(1, 6), nn, 1, n)
pylväs = Pylväskaavio(summat, 1, 1 / n)

Miten tämä voi olla näin yksinkertaista?

todennäköisyysjakauma

Lasketaan kunkin summan todennäköisyyden arvo käyttämällä 3D-mallia. Tätä aiheesta olen kirjoittanut jo aiemmin. Tuossa tarinassa selitän tarkemmin komentojen syntaksia. Mikäli sisäkkäisten Jono-komentojen tai Zip-komennon syntaksi on hakusessa, niin lue tuo. Katso https://mikonfysiikka.wordpress.com/2019/08/27/kolme-noppaa-ja-zip-komento/

Listaan kaikki lasketaan kolmen nopan eri vaihtoehdot, tyyliin x-koordinaatti on ensimmäisen nopan tulos, y-koordinaatti toisen ja z-koordinaatti kolmannen. Listassa kaikkisummat on summien arvot ja tnjakauma on pylväskaavio jakaumasta. Liuku m kertoo suotuisan tapauksen arvon ja suotuisat-listassa on m:ää vastaavat pisteet. Ne väritetään punaiseksi.

kaikki = Tiivistä(Jono(Jono(Jono((aa, bb, cc), aa, 1, 6), bb, 1, 6), cc, 1, 6))

kaikkisummat = Zip(x(a) + y(a) + z(a), a, kaikki)

tnjakauma = Pylväskaavio(kaikkisummat, 1, 1 / 216)

m = 10

suotuisat = PoistaMäärittelemätön(Zip(Jos(x(a) + y(a) + z(a) == m, a), a, kaikki))

Kuva, joka sisältää kohteen kartta

Kuvaus luotu automaattisesti

Nytpä pystymme tekemään saman päättelyn kuin Galilei noin 1620. Tuloksen ”10” todennäköisyys on suurempi kuin tuloksen ”9”. 

Esimerkkitiedosto GeoGebra-materiaaleissa. https://www.geogebra.org/m/ew4weg6u

lähteet

Anders Hald. A History of Probability and Statistics and Their Applications before 1750, Wiley, Luku 4.4 Galileo and the distribution of the sum of points of three dice, c 1620.

Saul Stahl, Paul E. Johnson. Understanding Modern Mathematics. Jones Bartlett. Luku 1.2 Galileo Galile ( A historical interlude)

Galilein artikkeli englanniksi. Käsittääkseni kyseessä on kirje pomolle, Toscanan suurherttualle Cosimo de’ Medicille.
https://www.leidenuniv.nl/fsw/verduin/stathist/galileo.htm


kaksi noppaa, https://mikonfysiikka.wordpress.com/2020/04/24/nopat-geogebralla-kaksi-noppaa/

yksi noppa, https://mikonfysiikka.wordpress.com/2020/04/23/nopat-geogebralla-yksi-noppa/

kolme noppaa ja zip-komento, https://mikonfysiikka.wordpress.com/2019/08/27/kolme-noppaa-ja-zip-komento/

Nopat GeoGebralla – kaksi noppaa

Edellisessä tarinassani (Nopat GeoGebralla – yksi noppa) esitin, miten simuloida GeoGebralla yhden nopan heittoa. Tehdään sama juttu nyt kahdelle nopalle. Tutkitaan noppien summan todennäköisyyksiä.

simulointi

Simuloidaan ensin nopan heittoa ja lasketaan summien suhteelliset osuudet ja piirretään jakauma. Laitan komennot tuohon avuksi, mieti itse mite kukin komento tekee ja miksi.

Luodaan ensin liuku n. Kuvassa n-liu’n asetukset.

n = 50000

Lasketaan summat-listaan kahden nopan summia, reunat listaan luodaan histogrammin pylväiden reunat, arvot-listaan lasketaan summien frekvenssit ja histo piirtää kuvaajan suhteellisista osuuksista.

summat = Jono(Satunnaisluku(1, 6) + Satunnaisluku(1, 6), nn, 1, n)
reunat = Jono(1.5, 12.5, 1)
arvot = Frekvenssi(summat)
histo = Histogrammi(reunat, arvot / n)

Pylväsdiagrammi-komennon avulla olisi säästänyt pari riviä.

summat = Jono(Satunnaisluku(1, 6) + Satunnaisluku(1, 6), nn, 1, n)
pylväs = Pylväskaavio(summat, 1, 1 / n)

teoreettinen arvo summataulukon avulla

Pohditaan sitten teoreettisia arvoja. Mallinnetaan noppien heitto 2d-taulukoksi, jossa vaaka-akselilla on 1. nopan tulos ja pystyakselilla 2. nopan tulos. Meille tulee 6*6 ruudukko, jossa jokaisessa ruudussa on lukujen summa. Tehdään se GeoGebran Piirtoalue2:lle.

Avaa Näytä-valikosta Piirtoalue2.

Nyt tarvitaan sisäkkäisiä silmukoita tuottamaan pisteitä koordinaatistoon. Lue https://mikonfysiikka.wordpress.com/2018/10/26/jono-geogebrassa/ tarinasta luku Sisäkkäiset silmukat. Pisteet-muuttujan määritelmässä Tiivistä poistaa turhat sisäkkäiset listat eli käytännössä poistaa liiat {,}-merkit. Kaksi sisäkkäistä Jono-komentoa tuottaa (xx, yy) pisteet koordinaatistoon.

pisteet = Tiivistä(Jono(Jono((xx, yy), xx, 1, 6), yy, 1, 6))

Mikäli pisteet syntyivät Piirtoalue 1:lle, niin mene asetuksiin ja ruksaa vain Piirtoalue2 Lisäasetukset-välilehdellä.

Lasketaan pisteet-listan pituus

a = Pituus(pisteet)

Luodaan liuku summia varten 

s = 5

Luodaan lista suot, jonne valitaan Zip-komennon avulla ne pisteet, joiden summa on s. Tässä tapauksessa Zip testaa jokaisen listan pisteet alkion, mikäli summa on s kirjoitetaan pisteen arvo listaan suot, muutoin sinne kirjoitetaan määrittelemätön piste eli (?, ?).

suot = Zip(Jos(x(aa) + y(aa) == s, aa), aa, pisteet)

Poistetaan ylimääräiset määrittelemättömät pisteet.

suotuisat = PoistaMäärittelemätön(suot)

Lasketaan summat jokaisessa pisteessä ja tuotetaan teoreettinen jakauma Piirtoalue1:lle

tnsummat = Jono(x(Alkio(pisteet, aa)) + y(Alkio(pisteet, aa)), aa, 1, 36)
tnarvot = Frekvenssi(tnsummat)
tnhisto = Histogrammi(reunat, tnarvot / 36)

Seuraavaksi mennään kolmeen noppaan. Olen tosin jo kirjoittanut siitä artikkelissa https://mikonfysiikka.wordpress.com/2019/08/27/kolme-noppaa-ja-zip-komento/

Esimerkkitiedosto löytyy GeoGebra-materiaaleista.

https://www.geogebra.org/m/kku5be5c

Kevät 20 pitkän matikan tehtävä 12.2 GeoGebralla

[edit 23.3. Lisäsin tarinan loppuun pari eri tapaa ratkaista tehtävän ja kuvan pisteistä.]

Kevään 20 pitkän matikan tehtävässä piti selvittää luonnollisiin lukuihin liittyvä lukumäärälasku. Tämähän on meille ATKnörteille simppeli ohjelmointiongelma.


Jollain ”oikealla” ohjelmointikielellä tuo taitaa olla muutaman rivin ohjelma. Ratkaistaan 2.-kohta GeoGebralla. Tässä tulee 100*100 lukua eli ei kannata käyttää CASia, veikkaan, että kone hyytynee. Käytetään Algebra-ikkunaa. Teenpä tämän GeoGebra 6:lla ihan testatakseni miten se toimii. Kokeilin tätä GG 5:llä ja tehtävä ratkesi ihan OK, mutta ohjelma alkoi himpun verran jumittaa koska listan koko on 10000.

Komento

Jono(Jono(sqrt(a b), a, 1, 100), b, 1, 100)

tuottaa listan matriisin m1. GeoGebra 5:ssä Algebraikkunassa matriisi näkyy matriisin näköisenä, GG6:ssa voi arvata, että se on matriisi sillä alussa näkyy kaksi kaarisulkua. Toisaalta sisäkkäiset Jono-komennot tuottavat aina matriiseja. Matriisin m1 pituus (eli oikeasti m1 listan pituus saadaan komennolla

Pituus(m1)
-> 100

tuottaa luvun a = 100. Matriisin sisällä olevat ”turhat” kaarisulkeet saa pois Tiivistä-komennolla

Tiivistä(m1)

tuottaa listan l1, jonka pituus on

b = Pituus(l1)
-> 100

Selvitetään, mikä näistä luvuista on luonnollinen luku. Ehto

floor(luku) == luku

antaa tulosteeksi true, jos luvun kokonaisosa on yhtäsuuri kuin luku itse eli onko luku kokonaisluku. Käydään läpi kaikki luvut listassa l1 ja tutkitaan mitkä ovat luonnollisia lukuja

l2 = Zip(Jos(floor(aa) == aa, aa), aa, l1)
-> {1, ?, ?, 2, ?, ...

Nuo kysymysmerkit vastaavat niitä lukuja, joilla ehto ei ole voimassa. Poistetaan määrittelemättömän lista oliot eli nuo kysymysmerkit komennolla

l3 = PoistaMäärittelemätön(l2)
-> {1, 2, 3, 4, ...
c = Pituus (l3)
-> 310

Kysytty todennäköisyys on

d = c/b

-> 31/1000

GeoGebra 6:ssa isojen listojen käsittely tuntuu sutjakkaammalta kuin GeoGebra 5:ssä. Tosin molemmissa ohjelmissa ratkaisu onnistui MacBookissani.

Lisäys 22.3.20

En malttanut olla kokeilematta paria muuta tapaa. Idea tuli Edwardilta Facebookista.

m2 = Jono(Jono(Jos(floor(sqrt(a b)) ≟ sqrt(a b), 1, 0), a, 1, 100), b, 1, 100)

tuottaa lista, matriisin, jossa on paljon nollia ja ykkösiä.

l5=Summa(m2)

tuottaa lista, jossa on vaakarivien summat {10, 7, …

Summa(l5) = 310

Toisaalta yhdellä rivillä

Jono(Jono(Jos(floor(sqrt(a b)) ≟ sqrt(a b), 1, 0), a, 1, 100), b, 1, 100) = 310

Jos olisi halunnut nuo pisteet koordinaatistoon, niin sen saa komennolla

Jono(Jono(Jos(floor(sqrt(a b)) ≟ sqrt(a b), (a, b)), a, 1, 100), b, 1, 100)