Sovitusartikkeli Dimensiossa — Mikon fysiikka ja matikka

Pari viikkoa sitten Dimensiossa julkaistiin listatrilogiani toinen osa. Ensimmäinen oli viimeisessä paperiversiossa. Linkki artikkeliin.

via Sovitusartikkeli Dimensiossa — Mikon fysiikka ja matikka

Mainokset

Jono GeoGebrassa

Päivitän tämän tarinan lopullista versiota omaan blogiini. Siellä tullee olemaan myös tarinan lopullisen version pdf-tiedosto.

Tämä on kolmas osa trilogiastani, joka liittyy GeoGebran listoihin. Aikaisemmat  osat: Listat GeoGebrassa ja Sovituskomennot GeoGebrassa.

GeoGebran Jono-komento (Sequence) vastaa perinteisissä ohjelmointikielissä for-next -silmukkaa. Sen avulla saadaan luotua tarvittaessa pitkiäkin listoja, joiden jäseninä voi olla muita GeoGebran objekteja; lukuja, pisteitä, yhtälöitä, taso- ja 3D geometrian objekteja jne.

Jonon kielioppi

Jonoa voi käyttää monella eri syntaksilla, sillä voi olla 1 – 5 syötettä. Tutustutaan näihin esimerkkien avulla. Kirjoitan seuraavassa komennot GeoGebra Classic 5:n CAS:iin tai Syöttökenttään. GeoGebra 6:n CAS:issa komennot toimivat täsmälleen samalla tavoin.

Kun syötteenä on yksi luku n, niin Jono tuottaa listan, jonka alkioina ovat luvut 1, …, n.

Jono(5)
→ {1, 2, 3, 4, 5}

Kun syötteenä on kaksi lukua ja n, niin Jono tulostaa listan, jonka alkioina ovat luvut m, …, n.

Jono(3,8)
→{3, 4, 5, 6, 7, 8}
Jono(8, 3)
→ {8, 7, 6, 5, 4, 3}

Kun syötteenä on kolme lukua m, ja k, niin Jono tulostaa listan, jonka alkioina ovat luvut m:stä n:ään siten, että m:stä alkaen otetaan joka k:s luku n:ään asti. Listan alkiot muodostavat aritmeettisen jonon.

Jono(2,13,3)
→ {2, 5, 8, 11}
Jono(1/2, 42/13, 1/3)
→ {0.5, 0.833, 1.167, 1.5, 1.833, 2.167, 2.5, 2.833, 3.167}

Kun Jonon syötteessä on viisi oliota, niistä ensimmäinen on muuttujan sisältävä lauseke, toinen on muuttuja, kolmas muuttujan ensimmäinen arvo, neljäs muuttujan viimeinen arvo ja viides askelväli. Viimeisen voi jättää pois, jolloin askeleen pituus on yksi. Jos käyttää muuttujaa Jonon lausekkeessa, niin GeoGebra pyrkii tuottamaan tuloste listaansa tarkat arvot.

Jono(k^2, k, -3, 3)
→ {9, 4, 1, 0, 1, 4, 9}
L1: =Jono(k,k,1/2,42/13,1/3)
→ L1≔{1/2, 5/6, 7/6, 3/2, 11/6, 13/6, 5/2, 17/6, 19/6}
Summa(L1)
→ 33/2

Komento Summa laskee syötelistan alkioiden summan.

Katsotaan muutamia esimerkkejä, mitä Jonolla saa aikaiseksi. Luodaan ensin liu’ut ala, ylä ja väli. Niiden avulla voidaan säätää Jonon muuttujia. Luodaan ensin kaksi suoraparvea: = k x ja = k. Kirjoitetaan CAS:iin tai syöttökenttään

ala≔5
→ ala:=5
ylä:=5
→ ylä:=5
väli:=5
→ väli:=5

Kun klikataan Algebraikkunassa tai CAS:issa vasemmalla olevaan ympyrään, niin liu’ut ilmestyvät näkyviin piirtoalueelle. Luodaan origon kautta kulkevista suorista lista1 ja y-akselin suuntaisista suorista lista2.

lista1:=Jono(y = k x,k,ala,ylä,väli)
→ lista1:={y = (-5 / 2 * x), y = (-11/ 5 * x), …, y = 19/5}

ja y-akselin suuntaiset suorat

lista2:=Jono(x = k,k,ala,ylä,väli)
→ lista2:={x = -5 / 2, x = -11 / 5, … , x = 19 / 5}

Esimerkki

Edellisessä esimerkissä tuotettiin suoria, luodaan seuraavaksi (x, y) pisteitä koordinaatistoon. Michael Borcherds’n ja Dag Oscar Madsenin LinkedIn keskustelusta löytyi seuraava mielenkiitoisia kuvioita tuottava yhden rivin pisteistö. Tässä inc-liukusäädin saa Ominaisuudet -ikkunassa arvoja: Min: 0.01,Max:1, ja Askelväli: 0.01. Kun muuttujan inc arvoa muuttaa, pisteet näyttävät joillain arvoilla tuottavan kauniita käyriä. Miksiköhän?

Jono((ln(n), sin(n)), n, 1, 1000, inc)

Tähti

Joskus kaukaisessa menneisyydessä 1980-luvun lopussa tutustuin Logo-ohjelmointiin. Logon kilpikonnagrafiikan avulla sai yksinkertaisilla ohjelmanpätkillä mielenkiintoisia kuvia tasolle. Logon innoittaman innostuin tutkimaan tähtikuvioita ihan omaksi ilokseni.

Tehdään sovellus, jonka avulla voi tutkia tähtikuvioita, joiden kärjet ovat yksikköympyrään piirretyn säännöllisen monikulmion kärkipisteissä. Aluksi luodaan liukusäätimet ja m. Liukujen asetuksissa saa arvot Min:3, Max:50, Animaatioaskel:1 ja arvot Min:1, Max: n-1 ja Animaatioaskel: 1. Luodaan seuraavaksi yksikköympyrään lista karjet säännöllisen monikulmion kärkipisteistä. Puolipiste pisteen erottimena tuottaa pisteet napakoordinaateissa.

karjet = Jono((1; aa 2π / n), aa, 1, n)

Monikulmio(A, B, n)-komento tuottaa säännöllisen n-kulmion, siten, että yksi sivu on jana AB. Komento karjet(x) tuottaa karjet listan x:n jäsenen.

kuvio1 = Monikulmio(karjet(1), karjet(2), n)

Tähtikuvion kärkiä varten tarvitaan jakojäännöksiä. Otetaan karjet listasta joka m:s jäsen, toistetaan tätä kertaa. Annetaan listalle nimi tkarjet. Koska listan jäsenet numeroidaan 1, …, pitää jakojäännökseen lisätä 1, jotta järjestysnumeroksi ei tulisi nolla.

tkarjet = Jono(karjet(Jakojäännös(i, n) + 1), i, 1, n m, m)

Kun Monikulmio-komennossa on syötteenä lista, niin se tuottaa monikulmion siten, että listan pisteet ovat kärkipisteinä. Tähtikuvio syntyy komennolla

Monikulmio(tkarjet)

Joillain muuttujien arvoilla ja syntyy tähtikuvioita. Esimerkiksi m= 5 ja n= 2 tuottaa pentagrammin. Usein kirjallisuudessa käytetään merkintää säännölliselle viisikulmiolle {5/1} ja pentagrammille {5/2}. Aina ei synny tähtikuviota {6/2} on kolmio ja {6/3} on jana. Joskus syntyy tähtikuvio, mutta siinä ei välttämättä ole kappaletta kärkipisteitä, {18/4} on tähtikuvio, jossa on 9 kärkeä.

Tästähän saa mielenkiintoisen tutkimustehtävän oppilaille. Milloin tulee tähtiä, milloin säännöllisiä monikulmioita ja milloin janoja? Itse asiassa ennen tätä oppilaat voisivat luokitella minkä tyyppisiä kuvioita eri n:n ja m:n arvot tuottavat. Millä n:n arvoilla ei synny lainkaan tähtiä? Millaiset n:n arvot tuottavat tähtiä kaikilla m:n arvoilla 1 < < n– 1? Lahjakkaammat oppilaat ja opettajat voivat myös pohtia löytämiensä lauseiden todistuksia.

Monte Carlon sammakko

Monte Carlo -menetelmässä käytetään satunnaislukuja, kun simuloidaan hankalan ongelman ratkaisua. Anders Skjäl esitti MAOL eKerhon Facebook-ryhmässä syyslomahupitehtävän: ”Sammakko hyppää yhden pituusyksikön satunnaiseen suuntaan ja sen jälkeen puoli pituusyksikköä uudessa satunnaisessa suunnassa. … Määritä sammakon lopullisen sijainnin todennäköisyysjakauma.” Hetken aikaa ongelmaa pohdittuani totesin, että tuo vaikuttaa ilkeältä integroimisongelmalta, niinpä päätin simuloida sammakon hyppelyä.

Luodaan hyppelyjä kuvaava muuttuja n. Toki tästä voi tehdä myös liu’un, mutta kannattaa pitää sen yläraja mielekkäässä kokoluokassa. Järkevä maksimikokoluokka on noin 10000-100000 riippuen koneen tehosta ja GeoGebra-versiosta.

n = 100

Ensin sammakko hyppää satunnaiseen pisteeseen, jonka napakoordinaatit ovat (1, α), missä kulma α valitaan satunnaisesti väliltä 0 ≤ α< 2 π. Sen jälkeen se hyppää samalla logiikalla (½, β). GeoGebra osaa laskea tämän tyyppisen vektoreiden yhteenlaskun pisteiden välisenä yhteenlaskuna. GeoGebran random()-funktio tuottaa satunnaisluvun. Niinpä sammakon hypyt saadaan simuloitua komennolla

sami = Jono((1; 2πrandom()) + (0.5; 2πrandom()), k, 1, n)
sami = {(1.42; 244.17°), (0.51; 119.69°), …, (1.46; 33.35°)}

Koordinaatistoon ilmestyy pisteitä ½ ja 3/2 -säteisten ympyröiden väliin. Koska sami-listan pisteet on esitetty napakoordinaateissa, niiden etäisyydet ovat sami-listan pisteiden ensimmäiset koordinaatit. Ne saa irrotettua napakoordinaateissa esitetystä pisteestä abs-komennolla, joka kertoo pisteen etäisyyden origosta. Vastaavasti suuntakulman saa arg-komennolla.

etlista = Jono(abs(sami(k)), k, 1, n)
etlista = {1.42, 0.51, …, 1.46}

Luodaan frekvenssien laskennassa tarvittavat välit listaan nimeltä luokat. Alaraja on 0,45, yläraja on 1,55 ja välin pituus 0,1.

luokat = Jono(0.45, 1.55, 0.1)
luokat = {0.45, 0.55, 0.65, 0.75, 0.85, 0.95, 1.05, 1.15, 1.25, 1.35, 1.45, 1.55}

Lasketaan etäisyyksien frekvenssit edellä luodun luokat-listan väleissä Frekvenssi(<Luokkarajalista>, <Datalista>)-komennolla.

f = Frekvenssi(luokat, etlista)
f = {17, 7, 4, 9, 2, 7, 8, 8, 6, 15, 17}

Frekvenssien arvot saa näkymään histogrammina Histogrammi(<Luokkarajalista>, <Korkeuslista>)- komennolla. Muutetaan arvot suhteelliseksi jakamalle ne luvulla n. Jotta pylväät näkyisivät nätisti, kerrotaan ne vielä luvulla 10. Nythän histogrammimonikulmion alaksi tuli 1! Miksi? Hannu Mäkiö laski tiheysfunktiolle sievän muodon.

histo = Histogrammi(luokat, 10 f / n)
tih(x) = Jos(0.5 ≤ x ≤ 1.5, (2x) / (π sqrt(1 - (5 / 4 - x²)²)))

Jätän lukijalle tämän tehtävän muokkaamisen kolmiulotteisen sammakon tapaukseen.

Brute force

Raa’an voiman eli Brute force -menetelmässä käytetään tietokoneen laskentatehoa numeeristen ongelmien ratkaisussa. Simo Kivelä vertaili blogikirjoituksessaan vuoden 1960 ylioppilastehtävän ratkaisemista erilaisilla ohjelmallisilla työkaluilla. Ratkaistaan GeoGebralla tehtävä: ”Laske kaikkien niiden positiivisten kolminumeroisten kokonaislukujen summa, jotka eivät ole jaollisia 9:llä eivätkä 11:llä.”.

Ratkaisussa tarvitaan hieman Boolen logiikkaa ja jaollisuusoppia. Komento Jakojäännös(<Jaettava>, <Jakaja>) antaa tulokseksi jakojäännöksen. Totuusehto ja merkitään GeoGebrassa joko && tai  ja erisuuruus != tai ≠. Niinpä saamme CAS:issa seuraavat totuudet eri luvuilla.

(Jakojäännös(99, 11)!=0)&&(Jakojäännös(99, 9)!=0)
→ false

Jakojäännös(22, 11) ≠ 0 ∧Jakojäännös(22, 9) ≠ 0
→ false

Jakojäännös(13, 11) ≠ 0 ∧Jakojäännös(13, 9) ≠ 0
→ true

Jos(<Ehto>, <Niin>, <Muuten>)-komento suorittaa Niin-kohdalla olevan komennon, mikäli Ehtoon tosi, muutoin suoritetaan Muuten-vaihtoehto. Muuten syötteen voi myös jättää pois. Luodaan lista yo, jossa on tehtävän annon luvut.

yo = Jono(Jos((Jakojäännös(n, 11)!=0)&&(Jakojäännös(n, 9)!=0),n,0), n, 100, 999)
yo = {100, 101, 102, 103, 104, 105, 106, 107, 0, 109, 0, …, 998, 0}

Summan saa laskettua Summa-komennolla, sen avulla olisi voinut laskea lukujen summan ilman Jono-komentoa.

Summa(yo)
a = 399996

Summa(Jos(Jakojäännös(n, 11) ≠ 0 ∧Jakojäännös(n, 9) ≠ 0, n, 0), n, 100, 999)
b = 399996

Brute force -menetelmä tuntuu meistä opettajista usein huijaukselta. Pitää muistaa, että todellisessa maailmassa on valtava määrä ongelmia, joita ei voi sievästi ratkaista koulussa opetetuilla siisteillä menetelmillä.

Sisäkkäiset silmukat

Tutkitaan seuraavaksi, miten Jono-komennolla saa sisäkkäisiä silmukoita. Tuotetaan koordinaatiston kokonaislukukukoordinaatteihin pisteitä. Koska komennosta tulee aika monimutkaisen näköinen kannattaa tehdä se osissa. Luodaan ensin pisteitä vaakasuunnassa.

pisteet=Jono( (i, 2), i, 1, 5)

Kopioidaan tämä komento ja kirjoitetaan sen ulkopuolelle uusi Jono-komento ja muutetaan pisteen y-koordinaatti.

pisteet2 = Jono(Jono( (i, j), i, 1, 5), j, 2, 4)

Jätän lukijalle tehtäväksi tuottaa suorakulmaisen särmiön kolmiulotteiseen avaruuteen tällä menetelmällä.

Tuotetaan seuraavaksi Pythagoraan kolmioita eli yhtälön  x^2 + y^2 = z^2 kokonaislukuratkaisuja z:n arvolla 13. Tälle ongelmalle löytyy useita eri ratkaisumenetelmiä. Käytetään brute force menetelmää sen kummemmin yrittämättä optimoida koodia. Käydään läpi kaikki arvot neliössä, jonka kärkien koordinaatit ovat (-13, -13), (-13, 13), (13, 13) ja (13, -13). Ehtolausekkeessa tarvittava yhtäsuuruusehto näppäillään = = tai ≟.

pyt = Jono(Jono(Jos((i² + j²) = = 169, (i, j)), i, -13, 13), j, -13, 13)

Komento tuottaa listaan paljon (?, ?) pisteitä ja sisäkkäiset kaarisulkeet.  Kaarisulkeista pääsee eroon Tiivistä-komennolla ja määrittelemättömistä pisteistä PoistaMäärittelemätön-komennolla.

pyt1 = Tiivistä(pyt)
pyt2 = PoistaMäärittelemätön(pyt1)

Yhdellä rivillä koodi olisi aika haastavaa lukea.

pyt3 = PoistaMäärittelemätön(Tiivistä(Jono(Jono(Jos(i² + j² ≟169, (i, j)), i, -13, 13), j, -13, 13)))

Jätän tämänkin ongelman yleistyksen 3D avaruuteen lukijalle kotitehtäväksi. Samalla kehotan kokeilemaan miten kuvan reikäinen kuutio tai marmelaadipyramidi on tuotettu. Voit myös pohtia mitä komento

janat = Jono(Jana((1, 0), Kärkipiste(Monikulmio((1; (360°) / n), (1; 2(360°) / n), n), m)), m, 1, n - 1, 1)

tekee ja miksi Tulo(janat) = n, kun on luonnollinen luku ja suurempi kuin 2? Komento Kärkipiste( Monikulmio, i)tuottaa monikulmion i:nen kärkipisteen.

 

 

Seuraavaksi kirjoittanen Zip-komennosta. Zip-komento vastaa monissa ohjelmointikielissä olevaa map-funktiota. Sen avulla voidaan käydä läpi kaikki syötelistojen jäsenet ja suorittaa niille komentoja. Moni Jono-komento muuttuu yksinkertaisemmaksi Zipin avulla.

Lue lisää

Korhonen, Luoma-aho, Rahikka. Geogebra -opas. MFKA 2012.

Reykjavikin luennon materiaali
https://www.geogebra.org/m/afbRGctJ – material/TWhJhFyC

Simo Kivelän blogiartikkeli
http://simokivela.blogspot.com/2017/11/ylioppilastehtava-ennen-ja-nyt.html

Lista GeoGebrassa blogiartikkelini
https://mikonfysiikka.wordpress.com/2018/05/15/listat-geogebrassa/

Star polygon MathWorldissa http://mathworld.wolfram.com/StarPolygon.html

Sammakko-ongelma Facebookissa
https://www.facebook.com/groups/155873227301/permalink/10156656313137302/

 

Sovituskomennot GeoGebrassa

Funktion sovittaminen pisteistöön on tyypillinen ongelma, jonka ratkaisemiseminen onnistuu mukavahkosti tietokoneohjelmien avulla. GeoGebrassa on oma työkalu sovitusongelmien ratkaisuun. Lisäksi ohjelmassa on runsaasti sovitus -komentoja.

Kahden muuttujan regressio -työkalu

Tutkitaan ensin Kahden muuttujan regressio -työkalua. Seuraavissa esimerkeissä käytetään kuvan taulukkolaskennan lukuja.

Kuva1.png

Valitaan taulukkolaskennan alue B1:G2 ja työkalu Kahden muuttujan regressioanalyysi. Avautuvassa ikkunassa valitaan Analysoija GeoGebra avaa Data-analyysi-ikkunan. Regressiomalli-valikosta voi valita erilaisia sovituksia: Lineaarinen, Logaritminen, Polynomi, Potenssi, Eksponentiaalinen, Kasvu, Sin ja Logistinen.

Kuva2

Ikkunan vasemman yläreunan käsi -ikonin avulla voi muuttaa valittua lukualuetta taulukkolaskennassa, seuraava ∑x -painike näyttää tilastollisia tunnuslukuja liittyen sovitukseen, seuraava painike näyttää mittausdatan, seuraava jäännöskuvion ja viimeinen vaihtaa datan x– ja y-koordinaatit keskenään. Data-ikkunassa voi poistaa yksittäisiä pisteitä ja Jäännöskuvio kertoo pisteiden y-koordinaattien poikkeaman pystysuunnassa valitusta sovituskäyrästä. Oikean yläkulman pienen kolmion takaa löytyy ikkuna, jossa voi lisätä viivadiagrammin, ruudukon ja muuttaa kuvaajan mittasuhteita. Kolmion oikealla puolella olevan pikkuneliön avulla saa kuvaa kopioitua suoraan piirtoalueelle. Siellä on helpompi muokata akseleita ja lisätä akseleille nimet ja yksiköt. Samalla kun kuvaaja siirtyy piirtoalueelle, niin myös Algebra-ikkunaan ilmestyy sovitettu funktio.

Kuva3

Sovituskomennot

Tarkastellaan sitten syöttökentässä ja CASissa käytettäviä sovituskomentoja. Kahden muuttujan regressio -työkalun regressiomallifunktiot käyttäytyvät samalla tavoin kuin sovituskomennot. Komennot tarvitsevat syötteekseen pistelistan. Ennen kuin pistelista luodaan, niin kannattaa käydä valitsemassa Asetukset -> Nimeäminen -> Nimeäminen pois.  Näin pisteiden nimet eivät ilmesty piirtoalueelle. Valitaan taulukkolaskennan alue B1:G2 ja työkalu Luo pistelista.

Kuva4

Avautuvassa ikkunassa voi muuttaa pistelistan nimen, oletuksena se on l1. Annetaan pistelistalle nimi ”pisteet”. Komento SovitaSuora(pisteet) (FitLine) sovittaa pienimmän neliösumman avulla suoran pisteisiin ja antaa sille nimen f. Komento SovitaSuoraX(pisteet) (FitLineX) tekee saman sovituksen, mutta suorat vaihtaa x– ja y-koordinaatit sovitusalgoritmissa. Normaalitilanteessa pienimmän neliösumman sovituksessa ajatellaan, että x-koordinaatit ovat riippumattomia (selittäviä) ja y- koordinaatit riippuvia (selitettäviä) muuttujia. SovitaSuoraX muuttaa y-koordinaatit riippumattomiksi sovitusalgoritmiin.

Kuva5

Sovitetun suoran kulmakertoimen arvon (kuvassa muuttuja a) saa komennolla Kulmakerroin(f)ja vakiotermin arvon (kuvassa muuttuja b) hieman hankalammin Alkio(Kertoimet(f(x),2)).Kertoimetluo listan polynomin f(x)kertoimista ja Alkio(lista, 2)poimii listan toisen jäsenen eli tässä tapauksessa vakiotermin. SovitaSuora-komento poikkeaa muista sovita-komennoista, sillä se tuottaa suoran yhtälön, muut sovita-komennot tuottavat funktion.

Polynomisovitukset tuotetaan komennolla SovitaPolynomi( <Pistelista>, <Polynomin asteluku> ) (FitPoly). Komento SovitaPolynomi(pisteet, 2)luo toisen asteen funktion. Pistelistan tilalla voi olla myös vapaalla kädellä piirretty funktio. Sellaisen saa luotua Piirtoalueen Vapaakäsi-työkalulla. Kuvassa f(x) on toisen asteen sovitus ja p(x) viidennen asteen sovitus pisteet listaan. Funktio h(x) on paraabelisovitus vapaalla kädellä piirrettyyn funktioon g(x).

Algebraikkunassa olevia funktioita voi derivoida, integroida Syöttökentässä tai CAS:issa ja myös niiden ominaisuuksia voi tutkia Funktion-analysointi työkalulla. Se löytyy Piirtoalueen työkaluista Kulma-työkalun ”takaa”.

Kuva6

Eksponentiaalista kasvua varten on sovitukset SovitaEksp(FitExp) ja SovitaKasvu (FitGrowth). SovitaEksp(pisteet)tuottaa muotoa f(x) = a·eb·xolevan funktion ja SovitaKasvutyyliin g(x) = a·bx. GeoGebran kannalta kyseessä on sama funktio, vain esitystapa on erilainen. Mikäli tarvitset laskuissasi luonnollisen logaritmin kantalukua e, niin sen saa GeoGebrassa näppäinkomennolla Alt-e tai Syöttökentän oikean reunan symbolivalikosta. GeoGebra 6:ssa ja π löytyvät myös virtuaalinäppäimistöltä. Näiden komentojen syötelistan y-koordinaattien tulee olla samanmerkkisiä.

Kuva7

SovitaPotenssi(pisteet)(FitPow) sovittaa funktion, joka on muotoa f(x) = a·xb.Pistelistan x– ja y– koordinaattien tulee olla positiivisia.

SovitaLogist(pisteet)(FitLogistic) sovittaa muotoa f(x) = a/(1 + b e^(- k x)) olevan logistisen funktion. Pistelistan y-koordinaattien tulee olla positiivisia. Pisteiden pitää olla myös riittävästi S:n muotoisella käyrällä.

SovitaLog(pisteet)(FitLog) sovittaa muotoa p(x) = a+ bln(x) olevan funktion. Pisteiden x-koordinaattien tulee olla positiivisia.

Sin-sovitusta varten toin taulukkolaskentaan heiluriin liittyvää mittausdataa. Loin datasta pistelistan nimeltä heiluri. SovitaSini(heiluri)(FitSin)tuottaa muotoa h(x) = a+ bsin(c x+ d) olevan funktion. Kokemus osoittaa, että jos pisteitä on runsaasti, suuruusluokkaa satoja, niin komento ei toimi aina täydellisesti.

Kuva8

Usein kun sovitetaan mittausdataa, tulee tarve määrittää itse sovitusfunktio. Jos haluaa pakottaa sovitussuoran tai paraabelin kulkemaan origon kautta, niin komennolla Sovita( <Pistelista>, <Funktiolista> )(Fit) se onnistuu. GeoGebra määrittää funktiolistan kertoimet sovituskäyrälle. Niinpä Sovita(pisteet, {x})sovittaa origon kautta kulkevan suoran ja Sovita(pisteet, {x, x^2})origon kautta kulkevan toisen asteen polynomin.

Ehkä mielekkäämpi tapa käyttää Sovita-komentoa on kirjoittaa sovitettava lauseke komennon syötteeksi tyyliin Sovita( <Pistelista>, <Funktio> ). Origon kautta kulkeva suora olisi sovitettu komennolla Sovita(pisteet, k x).

Syksyn 18 fysiikan ylioppilaskokeessa oli tehtävä, jossa oli mittaustuloksia kahvin lämpötilasta ajan funktiona. Luodaan mittaustuloksista pistelista kahvi. Mittaustulokset näyttävät noudattavan Newtonin jäähtymislakia. Komento Sovita(kahvi, a b^x + c)tuottaa funktion, joka kulkee melkoisen hyvin pisteiden kautta. Tosin pisteiden alku- ja loppupäät poikkeavat selvästäsi mallin tuottamasta käyrästä. Komentoa käytettäessä GeoGebra luo vakioita vastaavat liu’ut. Lisäksi pitää tarkistaa Algebra-ikkunasta, että vakioina käytettävät muuttujat eivät ole aiemmin määriteltyjä.

Splini( <Pistelista> )-komento (Spline) luo pistelistan pisteiden kautta kulkevan splinikäyrän. Splini on paloitellusti määritelty parametrinen käyrä. Palat koostuvat kolmannen asteen käyristä siten, että liitoskohdissa käyrä on jatkuva ja derivoituva. Toki käyrän derivoiminen ei onnistu kovin helposti, koska kyseessä on parametrinen käyrä. Käyrälle voi piirtää tangentin jokaiseen pisteeseen. Korkeamman asteen splinejä saa syntaksilla Splini( <Pistelista>, <Asteluku ≥ 3> ). Splinejä ei kannata käyttää, jos mittaustuloksissa on paljon ”virhettä” koska käyrä kulkee kaikkien pisteiden kautta ilman pehmennystä.

Kuvassa f(x)=SovitaKasvu(kahvi),g(x)=Sovita(kahvi, a+b*c^(x))ja d: Splini(kahvi).

Kuva9

Implisiittinen sovitus

Implisiittinen sovittaminen pyrkii tuottamaan n:n asteen xy-tasokäyriä. Pisteiden lukumäärän tulee olla vähintään  pistettä. Yritetään piirtää vapaalla kädellä tietokoneen hiirellä yksikköympyrä mahdollisimman hyvin. Luodaan ensin piste A = (0,1). Jotta pisteen koordinaatit saadaan tallentumaan taulukkolaskentaan, sen ikkunan tulee olla näkyvissä.

Kuva91

Valitaan hiiren oikealla painikkeella piste A ja avautuvasta valikosta Tallenna taulukkoon. Kun avautuneen ikkunan sulkee, voi alkaa liikuttaa pistettä A ja pisteen koordinaatit tallentuvat taulukkolaskentaan. Kun taulukkolaskennassa valitaan A:n liikkuessa luodut pisteet jaLuo pistelista, niin pisteet ilmaantuvat piirtoalueelle ja oletuksena syntyy lista l1. Komennolla SovitaImplisiittisesti(l1, 2) (FitImplicit) ohjelma tuottaa toisen asteen käyrän. Algebraikkunassa GeoGebra ilmoittaa, että se on Implisiittinen käyrä.  Katsomalla sitä tunnistan tai paremminkin arvaan, että kyseessä on ellipsi. Kokeile itse korkeamman potenssin sovituksia ja jos olet rohkea, niin pohdi miten algoritmit ovat niihin päätyneet.

Jostain kumman syystä GeoGebra ei tunnista, että implisiittinen käyrä aon oikeasti kartioleikkaus. Niinpä Syöttökentän komennolla ymp = aohjelma luo kartioleikkauksen siten, että se toimii GeoGebran kartioleikkauskomentojen kanssa.  Kartioleikkausten symmetriakeskus saadaan komennolla Keskus(ymp),polttopisteetPolttopiste(ymp)ja ellipsin eksentrisyys komennolla Eksentrisyys(ymp).

Kuva92

 

Mikäli haluat tutusta monipuolisiin esimerkkeihin GeoGebra sovituskomennoista, niin kannattaa hankkia ruotsalaisten ystävieni Jonaksen ja Thomaksen ”Mathematical Modeling, Applications with GeoGebra” -kirja. Kirjassa on useita kymmeniä pisteistön sovittamiseen liittyviä esimerkkejä liittyen muun muassa kemiaan, fysiikkaan, lääketieteeseen ja taloustieteeseen. Tätäkin kirjoittaessa olen selannut kirjaa aika paljon.

Lue lisää

Korhonen, Luoma-aho, Rahikka. Geogebra -opas. MFKA-Kustannus 2012.

https://mikonfysiikka.wordpress.com/2018/05/15/listat-geogebrassa/

Hall, Lingejärd. Mathematical Modeling, Applications with GeoGebra. Wiley 2017.

Kirjan materiaalisivu. http://bcs.wiley.com/he-bcs/Books?action=index&itemId=1119102723&bcsId=10240

GeoGebran käyttöohjeen Fit-komennon wiki-sivu https://wiki.geogebra.org/en/Fit_Command

Spline Wikipediassa. https://en.wikipedia.org/wiki/Spline_(mathematics)

Tulostettava versio

tarina pdf-muodossa

GeoGebra Classic 5:n lataaminen

Windows -tietokoneille

Mene osoitteeseen http://www.geogebra.org ja sieltä vasemman palkin Appsien lataukset https://www.geogebra.org/download

GeoGebra_Classic_5_n_lataaminen_Windows_-laitteille_-_Google_Docs.png

Asentaja alkaa latautua koneellesi. Noudata asentajan ohjeita. Näin saat uusimman version koneeseesi.

Mac -tietokoneille

Mene osoitteeseen http://www.geogebra.org ja sieltä vasemman palkin Appsien lataukset https://www.geogebra.org/download

Valitse käyttöjärjestelmäsi mukainen versio.

Lataukset kansioon ilmestyy ”GeoGebra-MacOS-Installer-withJava-5-0-486-0.zip” niminen tiedosto (neljä viimeistä numeroa muuttuvat version mukaan). Kaksoisklikkaa tiedostoon, GeoGebra-niminen ohjelma ilmestyy Lataukset-kansioon. Siirrä GeoGebra ohjelmat-kansioon. Klikkaa Ohjelmat-kansiossa hiiren oikealla painikkeella GeoGebra-ohjelmaan (ensimmäisellä kerralla) ja valitse Avaa. Vastaa ”Avaa” käyttöjärjestelmän kysymykseen halustasi avata internetistä ladattu tiedosto.

Applen AppleStoresta asennetut versiot eivät päivity enää automaattisesti.

Tätä kirjoittaessa viimeisin versio oli GeoGebra Classic 5.0.486.0

Lue Macversiosta lisää täältä.

geogebra.org – Etusivu Uusiksi

GeoGebran verkkosivut uudistuivat. Tavoitteena on ollut yksinkertaisuus ja toimivuus erilaisilla laitteilla. Suomenkielinen käännös on 100% valmis, mutta haluamme palautetta mikäli koet, että jokin on huonosti käännetty. Varsinkin eri alasivuilla voi olla vihreitä. Antakaa palautetta vaikkapa Facebookissa tähän viestiin liitytyvällä sivulla. Tai sähköpostilla osoitteeseen geogebra@hyl.fi.

Merkittävin uutuus on ”Uutissyöte”. Kun löydät ”Materiaaleista” kiinnostavaa materiaalia, niin voit lisätä tekijän omaan syötteesi kun klikkaat tekijän nimeen ja ”Seuraa”. Voit myös lisätä henkilöitä Etusivun ”Ihmiset”-kohdasta. (Vai mikä tuo sana Ihmiset pitäisi olla). Kun lähetät viestin tapaan ”Uutissyötteeseen” niiin seuraajasi näkevät sen Facebookin tapaan.

GeoGebra___Ilmainen_matematiikkaohjelmisto_-_käyttäjinä_yli_100_miljoonaa_opiskelijaa_ja_opettajaa_maailmanlaajuisesti

Helppo menetelmä lisätä kieliä GeoGebra-työkirjaan

Maaliskuussa 2018 noin 10 pohjoismaista GeoGebra opettajaa saapui Helsinkiin Pohjoismaisen GeoGebra -verkoston seminaariin. Tapaamisemme liittyi Reykjavikin VIII Nordic/Baltic GeoGebra konferenssin teemaan siirtolaisuus ja matematiikan oppiminen.

Tapaamisemme merkittävin tuotos oli menetelmä, jonka avulla on suhteellisen helppoa lisätä eri kielien käännöksiä GeoGebra työkirjaan. Esitän tässä mitä keksimme. Käytän apuna fysiikan sovellusta ”Liikkeen perusprobleema” (kiitos Jussi alkuperäisestä ideasta, tämä on pieni häive siitä Java-ohjelmasta, jonka loit joskus 90-luvulla), jossa on kolme käännettävää tekstiä: kiihtyvyys, nopeus ja kuljettu matka. Unohdin käännättää kiihtyvyyden, joten unohdetaan se. Toki lopulliseen versioon oli tulossa yksiköt mukaan :o)

eka.png

Loimme seminaarissamme Google Sheets-tiedoston, jonne lisäsimme käännettäviä sanoja ja virkkeitä ja käänsimme ne omille äidinkielillimme. Teoriassa tämä tiedosto voisi olla julkinen tai ainakin julkinen kaikille kääntäjille. Minä lisäsin taulukkoon distance, matka, velocity, ja nopeus. Pohjoismaiset vieraamme käänsivät muut kielet.

Valitsin oheisessa taulukossa alueen A6:G7 ja kopioin sen.Help_us_translate_-_Google_Sheets.png

Avasin GeoGebran ja Näytä valikosta taulukkolaskennan. Sijoitin solusta B2 alkaen. Kopion Google Sheetsistä Alueen A1:G1 ja sijoitin GeoGebran taulukkoon soluun alueelle A1:G1.

Seuraavaksi loin tarvittavat listat, jossa käännökset ja kielten nimet ovat tekstinä. Tämä onnistui, kun valitsin GeoGebra työkirjassa alueen (miksiköhän tein ne tässä järjestyksessä, en muista) A2:G2 ja valitsin työkalun Luo Lista. Annoin listalle nimen L_1 eli L1. Vastaavalla tavalla loin listat L_2 (matka) ja L_3 (kieli). Algebraikkunassa näkyi listojen arvot.

kielet.png

Valitsin listanL_3 ja hiiren oikealla painikkeella sain näkyviin listan ominaisuudet. Sieltä klikkasin Piirrä pudotusvalikkona. Piirtoalueelle ilmestyi pudotusvalikko.

listan ominaisuudet.png

Seuraavaksi loin muuttujan, joka kertoi pudotusvalikosta valitun kielen indeksin. Kirjoitin syöttökenttään
a = ValittuIndeksi(L_3). Kun islanninkieli oli valittuna a:n arvo oli 4.

Valittua kieltä vastaavat käännöksille annoin nimet mat ja nope. Ne määriteltiin Alkio-komennolla. Alkio(lista, n) valitsee lista-nimisen listan n:n alkion.
mat = Alkio(L_1, a) ja nop = Alkio(L_2, a).

Tekstialueelle valitsin Objektit-valikosta muuttujan mat, kirjoitin =-merkin ja Objektit valikosta nopeus-muuttujan, joka oli jo aiemmin määritelty nopeuden arvo. Lisäsin myös yksikön. Valitsin ruksin Latex-kaavan kohdalle, näin varmistan, että poikkiviivat \\ tuottavat rivinsiirron ja Latex koodi \; on välilyönti. Samalla tavoin määritin nopeusrivin.

Teksti_ja_material-NpTdSgF4_ggb_ja_Edit_Post_‹_Mikon_fysiikka_ja_matikka_—_WordPress_com.png

Lopuksi suljin ylimääräiset ikkunat ja julkaisin työkirjan GeoGebra Materiaaleissa. Tiedosto löytyy osoitteesta https://ggbm.at/rDy3FTV2. Lataa tiedosto omalle koneellesi ja tutki tiedostoa.

Speed__distance_translated_-_GeoGebra

Kiitokset tämän menetelmän luomisesta kuuluvat kaikille GeoGebra-seminaarissa olleille: Freyja, Susanne, Per Magnus, Sirje, Kaja, Hannes, Janika, Camilla, Jonas, Anders, Svetlana, Hannu, Lauri ja minä.

Meinasi unohtua, Svetlana ja Anders käänsivät yhden oman hieman monimutkaisemman tiedoston ja tekivät oheen videon miten käännös tuotettiin. https://ggbm.at/hXAkT8p8

Mikko