MAA 11 kurssin GeoGebra-komentoja

[edit. 18.3. Lisäsin luvun ”lukujen esittäminen eri lukujärjestelmissä” tuonne loppupuolelle tarinaa, korjasin pari kirjootusvihrettä. Lisäsin linkin GeoGebraWikin funktiosivulle.]

Pitkän matematiikan kurssi Algoritmit ja lukuteoria MAA11 on mielenkiintoinen kurssi meille nörteille. Tutkiskelin hieman erään kustantajan oppikirjaa ja samalla pohdiskelin, miten GeoGebraa voisi käyttää kurssin sisältöjen oppimisen/opettamisen apuna.

Muistin virkistämiseksi laitan tähän lainauksen raamatusta.

MAA11 Algoritmit ja lukuteoria (2 op)

Tavoitteet

Moduulin tavoitteena on, että opiskelija

• tietää, mikä on algoritmi, sekä oppii tutkimaan, kuinka algoritmit toimivat

• oppii toteuttamaan yksinkertaisia algoritmeja ohjelmoimalla

• perehtyy logiikan käsitteisiin

• hallitsee lukuteorian peruskäsitteet ja perehtyy alkulukujen ominaisuuksiin

• osaa tutkia kokonaislukujen jaollisuutta.

Keskeiset sisällöt

• algoritmisen ajattelun peruskäsitteet: peräkkäisyys, valinta ja toisto

• vuokaavio

• yksinkertaisten algoritmien, lajittelualgoritmien tai yhtälön numeeriseen ratkaisuun liittyvän algoritmin ohjelmointi

• konnektiivit ja totuusarvot

• kokonaislukujen jaollisuus, jakoyhtälö ja kongruenssi

• Eukleideen algoritmi

• aritmetiikan peruslause

GeoGebra-komentoja

En ota kantaa OPSin sisältöön, vasitenkaan kun en tule tätä kurssia koskaan opettamaan. Käytän esimerkkilukuna aluksi piitä, se kun ei ole luonnollinen luku. Matematiikan lukutaitoa omaavat ymmärtänevät esimerkkien viestin.

GeoGebrassa on muutamia matikan funktioita, jotka ovat sisäänrakennettuja ohjelmaan. Ne löytyvät helpoimmin kun klikkaa syöttökentän oikeassa reunassa olevaan kysymysmerkkiin.

Tätä kirjoitettaessa klikkaaminen ”Näytä online-ohjeeseen” tuottaa virheilmoituksen – niinpä mailailen Mikelle. Linkki funktiosivulle https://wiki.geogebra.org/en/Predefined_Functions_and_Operators

Näitä ei ole käännetty suomenkielelle, paitsi MurtoOsa ja nJuuri, en muista miksi. Oheisesta taulukosta puuttuvat, div ja mod -funktiot, joiden pitäisi olla tuossa listassa.

Luvun ominaisuuksia, pyöristäminen jne.

Lukuteoriaa

Kurssissa tarvitaan varmaankin luonnollisten lukujen jakolaskua ja jakojäännöksiä. Alla muutama komento aiheeseen liittyen. Tässä yhteydessä muistuttaisin, että negatiivisten lukujen kanssa pitää olla tarkkana, ettei mokaile kun funktio ei toimi niin kuin itse odottaisi.

totuus kevyesti

Totuuden testaaminen tuottaa tulokseksi true tai false. Yhtäsuuruuden testaamisessa pitää muistaa kaksi yhtäsuuruusmerkkiä, ==. Tässä kohdassa kannattaa miostaa, että GeoGebran mielestä true = 1 ja false = 0.

alkuluvut

Hyvä on. Sovitaan, että joku on keksinyt algoritmin, jolla tuottaa alkulukuja. Käytetään sitä tai jonkun muun tuottamaa algoritmia.

lukujen esittäminen eri lukujärjestelmissä

Eipä näitä komentoja muista ulkoa, jos ei ole käyttänyt niitä vähään aikaan. Englanniksi nämä ovat ToBase ja FromBase. Onneksi noita englanninkielisiä komentoja voi käyttää aina.

pym ja syt

Kuinkakohan paljon aikaa murrosikäsiltä oppilaita on mennyt, kun he näitäkin juttuja ovat pohdiskelleet? Joku on tykännyt (niinku minä pikkupoikana), aika moni on ollut ihan pihalla (mihinnöitöoikestitarvitaanainiimurtolukujenyhteenlaskuujasitteosittaisintegraatioonjaeuklideenalgoritmiin). Nyt tämä vehje tekee sen, kun se algoritmi on tuolla koneen sisuksissa.


Palaan Boolen algebraan, eli konnektiiveihin ja totuusarvoihin lähiaikoina.

Monty Hall Pythonilla – osa 3 

Viime vuoden puolella julkaisin kaksi artikkelia liittyen Monty Hall -probleemaan. Lupasin tehdä simulaation yleisestä tapauksesta, jossa vuohia on vähintään kaksi kappaletta ja autoja vähintään yksi. Lasketaan sellaisen tapauksen todennäköisyyksiä, että kilpailija aina vaihtaa valintansa, kun yksi vuohi on paljastettu.

Mikäli et ole lukenut aikaisempia tarinoita, niin katso täältä.

https://mikkorahikka.blog/2021/10/08/monty-hall-pythonilla/

https://mikkorahikka.blog/2021/10/29/monty-hall-pythonilla-osa-2/

Laitetaan tähän vielä muistin virkistykseksi Wikipediasta Monty Hall -pelin määritelmä: ”Monty Hallin ongelmassa kilpailijalla on edessään kolme ovea. Yhden oven takana on palkintona auto, kahden muun takana vuohi. Kilpailija, joka ei tiedä minkä oven takana mikin palkinto on, saa valita ovista yhden. Valittuaan oven hän ei vielä avaa sitä. Jäljelle jääneistä kahdesta ovesta avataan toinen, ja sen takana on aina vuohi. Tämän jälkeen kilpailija saa valita, vaihtaako ensin valitsemansa oven toiseen jäljellä olevaan suljettuun oveen, vai pitääkö ensin valitsemansa oven.”

python

Kolmen vuohen ja kahden auton tapauksessa vaikutti siltä, että todennäköisyys oli noin 8/15. 

Tehdään ohjelma, jossa vuohien ja autojen määrää voi muuttaa. Vuohia pitää olla vähintään kaksi, jotta peliä voi pelata ja autoja vähintään yksi. Kuvan koodi on Spyder-ohjelmointiympäristöstä.

Selitän rivillä 50 olevan yleisen kaavan johtamisen tarina loppupuolella.

Kuva, joka sisältää kohteen teksti

Kuvaus luotu automaattisesti

Alla tulos Spyderin konsolista.

Nyt kun koodi näyttää toimivan, niin pakkohan sitä on kokeilla ylioppilaskoejärjestelmässä. Kopioin koodista rivit 10-52 ja sijoitin ne osoitteessa https://cheat.abitti.fi/build/index.html?fi&programming olevaan YTL:n Pythoniin. Ohjelma toimi, niin kuin sen pitikin.

Kuva, joka sisältää kohteen teksti

Kuvaus luotu automaattisesti

kuvaaja

3D-kuvaajan piirtäminen onnistuu helpoimmin, kun käyttää numpy-kirjastoa. Sillä saa kerralla laskettua funktion arvot matriisiin (2D taulukkoon), ohjelmakoodissa muuttuja Z rivillä 19. En kommentoi sen tarkemmin mitä kukin rivi tekee, jos haluat oppia, niin kokeile. Joskus opiskelen matplotlib ja numpy-kirjastot siten, että osaisin selittää miten ne oikeasti toimivat. Nyt olen vielä aloittelija niiden kanssa touhutessa. Useimmiten saan kuvaajat haluamikseni yrityksellä ja erehdyksellä.

Kuva, joka sisältää kohteen teksti

Kuvaus luotu automaattisesti

Alla tuotos.

Tätä koodia ei voi suorittaa YTL:n Pythonissa, sillä se ei tuota kuvia. Alla vihreilmoitus osoitteessa https://cheat.abitti.fi/build/index.html?fi&programming

Kuva, joka sisältää kohteen teksti

Kuvaus luotu automaattisesti

kuvaaja GeoGebralla

Edellisestä kuvasta on mielestäni hankala hahmottaa millaisilla arvoilla pelaaja voittaa. Niinpä päädyin käyttämään GeoGebraa.

Alla 3D-kuva

Loin sen kirjoittamalla GeoGebra 5:n syöttökenttään

p(x, y) = (x y + y (y – 1)) / ((x + y) (x + y – 2))

pp(x, y) = Jos(1 ≤ x < 11 ∧ 2 <= y < =11, p(x, y))

z=1/2

Piilotin p:n kuvaajasta. Ei tuonkaan kuvan pyörittely hahmota minulle, millainen alue on kyseessä.

Piirtoalueen xy-tasolle saa alueen, jossa p ≥ ½, näkyville seuraavasti. Jouduin hieman auttamaan GeoGebraa, jotta se osasi värittää epäyhtälön alueen.

Kuva, joka sisältää kohteen teksti

Kuvaus luotu automaattisesti

Matikkanörtit voivat tutkia, millaiseta käyrästä on kyse.

ratkaisu kirjainlaskennolla

Koodeissa näkyvä yleisen ratkaisun lauseke voidaan johtaa oheisen puukaavion avulla.

Merkitään vuohien lukumäärää v:llä ja autojen a:lla.

Pelaaja voitttaa, jos toinen valinta on a. 

Jos hän valitsee vuohen ensin, niin sen todennäköisyys on v/(a + v). Tässä tapauksessa hän saa auton todennäköisyydellä a/(a + v – 2). Mahdollisuudet vähenevät kahdella, sillä hän ei voi valita samaa kuin ennen ja yksi vuohi on vähemmän.

Jos hän valitsee auton ensin, niin sen todennäköisyys on a/(a + v). Auton todennäköisyys tämän jälkeen on (a -1)(a + v + 2).

koodi

Tarinassa esitetty koodi löytyy Colabista

https://colab.research.google.com/drive/1Y2ODH9KNV4NX5OJ_8AbzWEzYW4Mz5Uoc?usp=sharing

lähteitä

Monty Hall englanniksi Wikipediass

https://en.wikipedia.org/wiki/Monty_Hall_problem

ja suomeksi https://fi.wikipedia.org/wiki/Monty_Hallin_ongelma

Lisää pohdittavaa tässä artikkelissa

https://www.researchgate.net/publication/233565559_The_Monty_Hall_Problem_Reconsidered

Kertotaulu tai yhteenlaskulaskutaulu taulukkolaskennalla

Joskus tarvitsen yhteenlaskutaulukkoa, vaikkapa silloin, kun opetan kahden nopan summaan liittyviä todennäköisyyslaskennan laskuja. Esitän tässä, miten sellaisen luonti onnistuu suhteellisen helposti taulukkolaskentaohjelmissa.

Tehdään esimerkin vuoksi kahden nopan heiton summataulukko. Käytän tässä GeoGebra 5:n taulukkolaskentoa. Sama ohje toimii Excelissä, LibreOfficessa ja Google Sheetsissä.

yhteenlaskutaulukko

Laitetaan ensimmäisen nopan arvot Soluihin B1, …, G1 ja toisen A2, …, A7.

Syötetään soluun BC luku 1 ja C1 luku 2. Valitaan alue B1:C1 ja vedetään kahvasta (sininen pikkuneliö alueen oikeassa alakulmassa) oikealle soluun G1 saakka.

Kuva, joka sisältää kohteen pöytä

Kuvaus luotu automaattisesti

Luodaan samalla menetelmällä toisen nopan tulokset.

Kuva, joka sisältää kohteen pöytä

Kuvaus luotu automaattisesti

Varsinaista summataulukkoa varten tarvitsee luoda kaava, joka kopioituu oikein, kun kaavaa monistetaan oikealle tai alaspäin. Viittaukset liittyen rivi- ja saraketunnuksiin saa kiinnitettyä absoluuttisiksi käyttämällä dollari-merkkiä $.

Kirjoitetaan soluun B2 kaava =B$1 + $A2. Kertolaskutaulussa plussan tilalla olisi ollut kertomerkki. GeoGebrassa ei tarvitsisi laittaa taulukkolaskennan kaavan alkuun =-merkkiä, ei siitä haittaakaan ole. Muissa taulukkolaskentaohjelmissa sitä tarvitaan.

Kuva, joka sisältää kohteen pöytä

Kuvaus luotu automaattisesti

Valitaan solu B2 ja monistetaan kaava oikealle soluun G2 saakka.

Kuva, joka sisältää kohteen pöytä

Kuvaus luotu automaattisesti

Alue B2:G2 valittuna monistetaan rivin pätkä alaspäin kahvan avulla soluun G7 saakka.

Kuva, joka sisältää kohteen teksti, elektroniikka, näyttökuva

Kuvaus luotu automaattisesti

Samalla tavalla saa luotua kertolasku – tai jakolaskutaulukoita.

jakolaskutaulukko GeoGebralla 3D-pisteiksi

Tehdään ihan huvin vuoksi jakolaskutaulukko siten, että laskettuun soluun tulee 3D-pisteen koordinaatit (x, y, x/y).

Solussa B10 on kaava =(B$9, $A10, B$9 / $A10)

Kuva, joka sisältää kohteen pöytä

Kuvaus luotu automaattisesti

Rivillä 15 olevat kysymysmerkit viittavat nollalla jakamiseen.

Tässä vaiheessa voisi kuvitella, että nuo pisteet näkyisivät 3D-alueella. Jostain kummasta syystä ne eivät näy siellä. Pisteet saa näkyville, kun kopioi pisteet soluviitteinä uuteen taulukon alueeseen.

Kirjoitetaan soluun B22 soluviite eli kaava = B10. Monistetaan soluviitettä oikealle ja sitten alue B22:L22 alaspäin riittävän pitkälle.

Kuva pisteistä koordinaatistossa on vähän tylsä. 

Laitetaan se pyörimään.



lähteitä

Excel ohje liittyen soluviittauksiin
https://support.microsoft.com/fi-fi/office/suhteellisten-suorien-ja-sekaviittausten-v%C3%A4lill%C3%A4-vaihtaminen-dfec08cd-ae65-4f56-839e-5f0d8d0baca9

Malinin ohje GeoGebran taulukkolaskentaan http://www.malinc.se/math/geogebra/spreadsheeten.php