GeoGebra versio 724 – mitä uutta

Edellisellä kerralla, toukokuussa GeoGebran versionumero oli 703. Katsotaan näin syyslukukauden aluksi mitä uutta GeoGebra-ohjelmistoversioihin on tullut. Syksyn 2022 Abittissa on mukana versiot 5.0.668.0 ja 6.0.639.0. Nämä korjaukset eivät tunnu kovin merkittäviltä tavalliselle käyttäjälle. Changelog löytyy osoitteesta https://wiki.geogebra.org/en/Reference:Changelog_6.0

704

Differentiaaliyhtälöiden ODE()-komennon vakiotermin c_1 toimintaa on parannettu.

706

Ääriarvopisteet-komentoa korjattu, liittyen eksponenttifunktioihin.

Korjaus Työkalu-valikkokomennon toimintaan, näköjään noita kutsutaan nykyään makroiksi. Työkalut löytyvät GeoGebra 5:ssä Työkalut-valikosta, niiden avulla voi luoda uusia funktioita/työkalupainikkeita.

Korjaus Play-näppäimen toimintaan kosketusnäytöllä varustetuissa laitteissa. Ainakin iPhonessa play-näppäin ei aina suostunut toimimaan ja oli välillä piilossa.

707

Korjaus reunaviivan paksuuteen 3D-objektien näkyvyydessä tasossa. Minusta tämä sotkee koordinaatistoruudukon 3D:ssä, kai se on ominaisuus? Kun jaksan, tutkin tätä paremmin.

LaTexia korjattu 3D:ssä.

709

Korjaus läpinäkyvyyteen scripteissä.

Korjaus hyperbelien täytössä.

Korjaus Integraali-komentoon.

Korjaus On Update-scriptikomentoon.

Uusi komento Tyyppi. Lukuarvojen ohje löytyy sivulta https://wiki.geogebra.org/en/Type_Command

Korjauksia kahden näytön sekoiluun zoomauksessa.

715

Korjaus AsetaPeittävyys-komentoon.

718

Parannuksia LähinPiste(piste, funktio) toimintaan.

Korjaus Derivaatta(f, 0)-komennon toimintaan.

Korjaus Otos.komennon toimintaan.

Mukauta Työkalupalkkia valikkokomennon ikkunasta löytyy nyt vapaan piirron työkalu.

Korjaus LeikkausPolku(suora, kolmio)-komennon toimintaan, kun käytetään riippuvia pisteitä.

Korjauksia Play yms. -painikkeiden paikkoihin koko ruudun näytössä.

720

Uusi komento NIntegraali(funktio, xlku, yalku, xloppu), tätä minä en ymmärrä.

721

Korjaus CASin Ratkaise-komentoon.

Korjauksia uuteen Taulukkotoimintoon uusissa GeoGebroisssa..

Korjauksia ikoneihin kosketusnäytössä.

722

Korjauksia desimaalien näyttöön uusissa versioissa >5.

723

Korjaus 3D painikkeihin.

724

Korjauksia Jono ja NSolve-komentoihin.

Korjaus objektin nimen näkyvyydelle Piirtoalueella, kun x:y suhde ei ole 1:1.

Päivitys GoogleToolKitiin.

Korjaus ShowGrid-skriptikomennon toimintaan.

Lähteet

Abitti-koejärjestelmässä käytettävissä olevat ohjelmat, luettu 12.8.2022
https://www.ylioppilastutkinto.fi/ylioppilastutkinto/digitaalinen-ylioppilastutkinto/koejarjestelman-ohjelmat

Uusi parempi turtle-kirjasto Colabin Pythoniin

Colab on Googlen tuottama ohjelmointiympäristö Python-kielen opiskelun avuksi. Aiemmin julkaistu Colabin kilpikonnagrafiikka-kirjasto (ColabTurtle) oli hieman puutteellinen, koska se ei toiminut kuten perinteiset Logo/Python-turtlet. ColabTurtlePlus on uusi kirjasto, sen toiminta vastaa ”virallista” Pythonin Turtle-kirjastoa, joka toimii vaikkapa Idlessä ja Replissä (https://replit.com/ ). Ymmärtämykseni mukaan joissakin yläasteen matikan kirjoissakin käytetyt PythonTurtlekoodipätkät toimivat ColabTurtlePlussassa.

Minä ainakin olen melkoisen innostunut ColabTurtlePlussasta, koordinaatiston origo on keskellä näyttöä ja xy-koordinaatisto toimii ”oikein”. Uskoisin, että tästä on apua opettajille/oppilaille, jotka käyttävät kilpikonnagrafiikkaa Pythonin oppimiseen. Minä aloitin kilpikonnalla koodaamisen opiskelun Logolla ja kilpikonnagrafiikalla noin vuonna 1983, kun olin auskultoimassa Helsingin yliopistossa. Jotenkin tämä liittyi konstruktivismiin :o)

Katso Colabiin liittyviä artikkeleita blogissani https://mikkorahikka.blog/?s=colab

Näytän pari esimerkkiä aiheeseen liittyen kuvankaappauksineen. Googlen Colaborary löytyy osoitteesta https://colab.research.google.com/ jos olet aloitelija, niin katso sivulta ohjeita. Käytän tässä pelkästään koodisoluja, esimerkkisivulla on mukana myös tekstisoluja. En laita koodin sekaan #kommentteja.

Koodi löytyy täältä https://colab.research.google.com/drive/1B3DJRc0RA7jY5Wci53h6OSB7AKuy45u1?usp=sharing

ColabTurtlePlus

Rivillä 1 asennetaan kirjasto Colabiin ja rivillä 2 luetaan se käyttöön. Nämä pitää olla suoritettuna ennen kuin konnaa voi käyttää Colab-sivulla.

Kun kaikki toimii, niin selaimessa (minulla Chrome) näkyy tällainen tuotos.

Piirretään konnalla neliö. Tätä kirjoittaessa en tajua, miksi tuonne koodirivien alapuolelle tulevat nuo aaltoviivat, liittynee Chromen asetuksiini, en tee siitä ongelmaa.

Rivillä 3 konna kulkee eteenpäin 200 askelta ja rivillä  4 se kääntyy 90 astetta oikealle.

Väritetään neliön sisusta ja reunaviiva. Rivillä 2 määritellään reunan ja sisustan väri, rivillä 3 määritellään sisuksen värittämisen alku. Riveillä 4-6 tuotetaan neliö (laiskuuksissani käytän lyhenteitä komennoille) ja rivillä 7 lopetetaan sisustan väritys.

Neliöt ovat tylsiä, piirretään pentagrammi. Tästä näkee, että väritys toimii kuten GeoGebrassa. 

Jos haluaa muuttaa täytön sellaiseksi, että koko sisusta täyttyy, niin apuna voi käyttää ”nonzero” muuttujaa begin_fill-funktion muuttujana, kuten rivillä 19. Rivillä 3 muutetaan konnan nopeus suurimmaksi, eli syntyy vain valmis kuva, tämä toiminto pitää päättää rivin 27 done():lla. Riveillä 6-8 siirretään konna hieman vasemmalle perinteisin menetelmin, tässä versiossa saman asian ajaa rivin 18 jumpto-funktio.

Tähti

Jostain kumman syystä olen ihastunut tähtikuvioihin. Tehdään pieni matemaattinen pähkinä aiheeseen liittyen.

Miksi tahti(300, 5, 2) tuottaa tähden, kuten myös tahti(300, 9, 2), mutta tahti(300, 9, 6) ei tuota tähteä. Millaisilla m:n ja n:n arvoilla syntyy tähti? Saman tyyppinen appi löytyy GeoGebralla tuotettuna sivulla https://www.geogebra.org/m/rgVYFJrS

Alla oleva kuva on tahti(200, 10, 3)


Palaan aiheeseen lähiaikoina ja piirtelen fraktaaleja, nyt kun on käytössä vikkelä tapa tuottaa niitä suht’ koht simppelisti.

Lähteet

Larryn ohjesivu kirjastoon
https://larryriddle.agnesscott.org/ColabTurtlePlus/documentation2.html

”virallisen” Pythonin turtlekirjastosivu
https://docs.python.org/3/library/turtle.html

Turtle graphics Wikipediassa
https://en.wikipedia.org/wiki/Turtle_graphics

Seymort Papert Wikipediassa

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

Lue

Seymort Papert : Lapset, tietokoneet, ajattelemisen taito, Kirjayhtymä, 1985

Game of Life – artikkeli MikroBitissä vuodelta 1987

Kirjoitin artikkelin Elävää elämää vuonna 1987. Muistini mukaan olin sitä ennen kirjoittanut artikkelisarjan Logo-ohjelmoinnista, mutta se julkaistiin vasta tämän artikkelin jälkeen. Niinpä tämä on ensimmäinen julkaistu lehtijuttuni. Lehden toimittajan mukaan en syyllisty copyright-rikkomukseen, kun julkaisen sen täällä. Mikrobitin vanhat lehdet löytyvät osoitteesta https://www.mikrobitti.fi/retrobitti

Otin Retrobitistä löytyneestä lehdestä kuvankaappauksia ja avasin ne Macin Esikatselu-ohjelmassa. Se hallitsee OCR:ää melkoisen hyvin, niinpä sain kaapattua suurimman osan tekstistä Google Docsiin. Toki aika paljon piti korjata viallisia ja kadonneita sanoja.

En muokannut/korjannut tekstiä juuri ollenkaan. Lisäsin olioiden englanninkieliset nimet ja korjasin virheen missä viitattiin yksiulotteiseen soluautomaattiin kaksiulotteisena.

MikroBitti 6-7/87 kansi ja artikkelin ensimmäinen sivu

ELÄVÄÄ ELÄMÄÄ

Voiko tietokone luoda elollisen olennon? 

Alussa J. H. Conway ajatteli ruutupaperia, ja paperi oli autio ja tyhjä. Sitten hän loi elämän säännöt ja havaitsi, että ne olivat hyvät. Sitten hän erotteli elävät ruudut kuolleista ja alkoi pelata.

Vuonna 1970 julkaistiin amerikkalaisessa Scientific American -lehdessä artikkeli pelistä nimeltä Life (Elämä). Pelin oli kehittänyt englantilainen matemaatikko John Horton Conway. Lifen tietokoneharrastajien piirissa osakseen saamaa huomiota kuvaa hyvin se, että 1970-luvun alkuvuosina arvioitiin noin neljasosan maailman tietokoneista pelanneen Lifeä.

Elämää tietokoneessa

Ajatus tietokoneohjelmasta, joka luo elämää, tuntuu ensi alkuun järjettömältä. Mutta mitä elämä oikeastaan on; säännöstö, jonka perusteella jokin olio pystyy tekemään itsestään kopioita ja parhaassa tapauksessa muuttamaan muotoaan ja kehittymään.

Elävässä elämässä kyse on solujen lisääntymisestä. Tämä tapahtuu jakautumisen kautta ja lisääntymisen säännöt on sijoitettu solujen sisältämään DNA:han eräänlaisena kemiallisena ohjelmana. Jopa ihmisten lisääntymisen periaate voidaan johtaa yhden solun ensimmäiseen jakautumiseen. Vastaavasti on mahdollista luoda tietokoneohjelma, joka luo keinotekoisen maailman ja säännöstön sille, miten tuossa maailmassa olevat olennot käyttäytyvät ja lisääntyvät.

Elämän säännöt

Lifeä pelataan äärettömällä ruutupaperilla. Koska sellaista on vaikea löytää, pienempikin riittää. Äärettömyyttä voidaan matkia yhdistämällä paperin vasen ja oikea laita sekä ylä- ja alalaita. Oikeanreunimmaisen ruudun oikealla puolella oleva ruutu on siis paperin vasemmassa reunassa päinvastoin. Tästä seuraa tosin ongelmia isojen pelien vasemman ja oikean reunan sotkiessa toisiaan.

Aluksi osa paperin ruuduista täytetään esimerkiksi rasteilla. Syntynyttä kuviota kutsutaan ensimmäiseksi sukupolveksi. Täytettyjä ruutuja kutsutaan eläviksi ja tyhjiä kuolleiksi. Seuraava sukupolvi syntyy aina edellisen pohjalta sääntöjen pohjalta.

Syntymä: Kuollut ruutu muuttuu seuraavassa sukupolvessa eläväksi, jos tasan kolme sen ympärillä olevista kahdeksasta ruudusta on eläviä.

Kuolema ylikansoituksen johdosta: Elävä ruutu muuttuu seuraavassa sukupolvessa kuolleeksi, jos neljä tai useampia sen naapureista on eläviä.

Kuolema yksinäisyyden johdosta: Jos elävällä ruudulla on vähemmän kuin kaksi (yksi tai ei yhtään), elävää naapuria, niin ruutu kuolee.

On tärkeää huomata, että jokaisen ruudun tila riippuu vain edellisen sukupolven ruutujen tilasta, ja että syntymät ja kuolemat tapahtuvat samanaikaisesti.

Oliot

Lifen kaksiulotteiselle maailmankaikkeudelle muodostuu sukupolvien vaihtuessa erilaisia olentoja, jotka käyttäytyvät omalla ominaisella tavallaan. Näitä öttimönkiaisia kutsutaan olioiksi.

Oliolla voidaan tarkoittaa joko koko ruudukkoa tai sitten vain yhtä sillä olevista olennoista. Olioista yksinkertaisimmat ovat vakaita. Ne eivät muutu mihinkään, kuten kuvan 1 Laatikko (Box).

ja kuvan 2 Hunajakenno (honey comb). 

Kuviin on myös merkitty kunkin ruudun naapurien määrä. Kuten näistä luvuista käy ilmi, ei millään elävällä solulla ole alle kahta tai yli kolmea elävää naapuria. Vastaavasti ei löydy tyhjää ruutua, jolla olisi kolme naapuria

Vakaat tilat eivät kuitenkaan ole kovin kiintoisia. Seuraavaksi monimutkaisemmat oliot ovat jaksollisia. Ne palaavat alkutilaan aina tietyn sukupolvimäärän jälkeen. Näistä on hyvä esimerkki kuvassa 3 esitetty Vilkku (Blinker). Vilkku palaa alkutilaansa aina kahden jakson jälkeen, eli sen niin kutsuttu jakson pituus on kaksi. 

Kuvissa 4, 5 ja 6 on mielenkiintoisia alkutiloja, kirjoilta jokin tässä lehdessä esitetyistä Lifen versioista tietokoneeseesi ja kokeile niitä.

Kuva 6 esittää erittäin mielenkiintoista ötökkää, jota kutsutaan nimellä Kulkuri (Glider). Se on periaatteessa jaksollinen olio, jonka jakson pituus on neljä, mutta se palaa alkutilaansa ruudun verran väärässä paikassa. Olio siis liikkuu kuvan 7 osoittamalla tavalla.

Kehitystä

Pelkkä jaksollisuus tai liikkumiskyky ei anna oikeutta kutsua jotakin olentoa eläväksi. Sen tulee kyetä muuttumaan ja lisääntymään. Monistumisen ongelma saatiin ratkaistua 1971, kun Massachusetts Institute of Technologyn tekoälyn tutkimusryhmä keksi kuvassa 8 esitetyn kulkuritykin. 

Valitettavasti vain tykki ei oikein mahdu toimimaan 25x 40 ruudun pelilaudalla. Se kannattaa sijoittaa keskelle ja lähelle alalaitaa.

Tykki on muilta osin täysin jaksollinen olio, mutta se ampuu kulkurin joka 30. sukupolvi. Myöhemmin on myös havaittu, että kolmetoista oikealla tavalle yhteen osuvaa kulkuria muodostaa kulkuritykin. Näin ollen voidaan kuvitella kulkurien ja kulkuritykkien olevan yhden lajin kaksi lajin eri kehitysvaihetta; aivan kuten perhoset ja toukat. Kulkuritykki munii kulkureita, jotka sitten äärettömässä kaksiulotteisessa avaruudessa törmäilevät toisiinsa muodostaen otollisten olosuhteiden vallitessa uusia kulkuritykkejä.

Kulkuritykki toiminnassa 2022, kuvaruutukaappaus nykyaikaisesta ohjelmasta

Edellä esitetyn lisäksi elämän kehitys vaatii vielä muita osatekijöitä. Mukaan täytyy satunnainen muutoselementti eli mutaatio. Sääntöjä täytyy muuttaa siten, että epämääräisin välein jokin kuollut ruutu saattaa muuttua itsestään eläväksi tai päinvastoin. Suurin osa näin syntyvistä muutoksista on tietenkin itsensä tuhoavia. Yksinäinen elävä ruutu tuhoutuu heti, mutta oikeassa paikassa mutaatio saattaa räjäyttää kulkuritykin tai sitten luoda jotakin aivan uutta ja arvaamatonta. Yritykseen ja erehdykseen luottavat mutaatiot ovat olleet ihmisenkin kehityksen perusta

Tietokone tietokoneessa

Life on myös siitä mielenkiintoinen peli, että sen avulla voidaan itse asiassa rakentaa tietokone. Kulkurien ja muiden olioiden avulla voidaan siirtää tietoa ruudukon eri osien välillä. Lisäksi voidaan luoda loogisia ja (AND), ei (NOT) sekä tai (OR) -portteja, joiden avulla tietoa voidaan muokata. Lifen kehittäjä Conway on osoittanut, että on mahdollista tehdä (suuri) alkutila, joka toimii kuin tietokone. Tämä alkutila  koostuu Life-tietokoneesta ja ruudukolle elävien solujen avulla luodusta ohjelmasta. Tällainen tietokone pystyisi ratkaise maan matemaattisla ongelma aivan yhtä hyvin kuin mikä tahansa binaarilukujen siirtelyyn ja muokkaamiseen perustuva laite.

Elämää ja elämää

Life ei ole suinkaan ainoa säännöstö tai tietokoneohjelma, jonka voidaan väittää matkivan elämän peruslakeja. Itse asiassa se on vain eräs yksinkertaisimmista.

Ensinnäkään ruutujen eli solujen ei välttämättä tarvitse olla joko eläviä tai kuolleita. Elämää vol olla monta eri lajia, ja sitä voidaan kuvata joko eri väreillä tai numeroilla. Säännöt, joilla solut vaihtavat väriä vaihtelevat mutta tärkeintä on se, että aina on kyse vain solun lähinaapurin ja kenties sen omasta tilasta, kun sen tulevaa tilaa lasketaan.

Elämä ei ole myöskään puristettu pelkästään kahteen ulottuvuuteen. Kolmiulotteisessa maailmankaikkeudessa ei ole muuta eroa kuin enemmän naapureita (kaksikymmentäkuusi). Vastaavasti kaksiulotteisessa [edit. tuossa on vikaa, pitää olla yksiulotteinen avaruus, tässä naapureiksi lasketaan kaksi naapuria molemmilta puolilta] vain neljä. Kuva 9 kuvaa kaksiyksiulotteisen mallin kehitystä ensimmäisten sukupolvien aikana.

Säännöstö on sellainen, että ensin lasketaan edellisestä sukupolvesta taulukossa molemmilla puolilla olevat luvut sekä samassa paikassa ollut luku yhteen ja sitten katsotaan oheisesta taulukosta mikä luku seuraavaan sukupolveen tulee.

summa:    0 1 2 3 4 5 6 7 8 9

seuraava: 0 2 0 0 1 0 0 0 0 0

Elämä on arvaamatonta

Pienen Life-ohjelmalla näpertelyn jälkeen, jokainen on valmis allekirjoittamaan viisaiden matemaatikkojen esittämän teoreeman, että on olemassa sellaisia alkutiloja, joista on mahdotonta päätellä laajenevatko ne ikuisesti, kuolevatko joskus vai muuttuvatko ne aikanaan jaksollisiksi. Voidaan siis olettaa, että kenen tahansa on mahdollista luoda alkutila, josta riittävän monen sukupolven aikana kehittyy älyllinen kaksiulotteinen olento. Kuka tietää, ettemme me vain pyöri jonkun suunnattoman tietokoneen sisuksissa, tai kuten Isaac Asimov totesi novellissaan The Final Question: ”Ja Multivac sanoi, tulkoon valkeus,  ja valkeus tuli”.


Artikkelin lopussa oli ohjelmia eri mikrotietokoneille, Pekka Niemen koodi MSX:lle, Vesa Ylitolvanan koodi Spectrumille ja Henrik Peschin koodi C-64:lle. Itse pelasin Lifeä Hyllin Apple II:lla. 

Nykypäivänä Game of Lifestä löytyy useita eri versioita tietokoneille ja mobiililaitteille. Minä itse käytän Macissäni App Storesta löytyvää Game of Life -ohjelmaa, se pitää sisällään noin 800 erilaista oliota. https://xs-labs.com/en/apps/game-of-life/overview/

Ehkä kuuluisin ohjelma (Windows/Mac/Linux ja mobiiliversiot) on Golly http://golly.sourceforge.net Gollyssä voi myös käyttää eri sääntöjä soluautomaattien luomisessa.

Kirjassa Berlekamp, Conway, Guy: Winning Ways Volume 2 luvussa 25 on esitetty todistus sille, että Lifellä voi luoda ”Universaalin Turingin tietokoneen”. Tämä tarkoittaa sitä, teoriassa Game of Lifella luotu tietokone on laskennallisesti yhtä vahva kuin nykyajan tietokoneet.

John Horton Conway kuoli 2020.

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