Listat ovat GeoGebran tapa muodostaa kokoelmia erilaista objekteista. Esimerkiksi yhtälön ratkaisujoukko on GeoGebrassa lista. Mikäli haluaa oppia tekemään monimutkaisempia sovelluksia, niin kannattaa opiskella mitä listoilla voi tehdä.
Tämän pitkähkön artikkelin jatko-osana tullee ilmestymään artikkelit Sovitus-, Jono- ja Zip -komennoista.
Lista
Lista on kokoelma GeoGebran objekteja. Listan jäsenet eli alkiot erotellaan pilkuilla ja ympärille laitetaan aaltosulkeet {}. Matematiikassa listaa vastaa lähinnä jono, ohjelmointia harrastaneille listan syntaksi on perinteinen. Listassa voi olla sama objekti jäsenenä useamman kerran ja listan jäsenten järjestyksellä on väliä.
{1, 2} == {2, 1} → false
Yllä olevassa esimerkissä kaksi peräkkäistä =-merkkiä tuottaa GeoGebrassa totuusarvon. Pyrin kirjoittamaan siten, että GeoGebran komennot (eli funktiot) kirjoitetaan GeoGebra 5-version CAS:iin ja ne laatikoituna. GeoGebran CAS solun tulosteessa näkyy nuoli →. Kun tekstissä viittaan GeoGebran komentoon, niin laitan komennon nimen lihavoituna ja englanninkielisen version lihavoituna kursiivilla. Komennot voi toki kirjoittaa myös syöttökenttään ja GeoGebran 6-versiosta lähtien näkyy Algebraikkunassa tuloste selkeästi. On muutamia listakomentoja, jotka eivät toimi CAS-ikkunassa.
Määritellään CAS:issa lista nimeltä L. GeoGebrassa muuttujan tai funktion määrittely tehdään merkkiparin ≔ avulla.
L := {-5, -2, 1, 4} → L:={-5, -2, 1, 4}
Tässä yhteydessä on hyvä oppia kolme eri merkitystä matematiikan yhtäsuuruusmerkille. GeoGebran CAS:issa ”=” tarkoittaa yhtälön yhtäsuuruutta y = 2 x + 1; yhtälöiden kuvaajat näkyvät piirtoalueella ja yhtälöistä voi CAS:issa ratkaista kirjainmuuttujia, ”≔” on muuttujan tai funktion määrittelyssä oleva merkki tyyliin; a≔5 tai f(x)≔ 2x – 5 ja ==- tutkii totuutta 2==3. Seuraavissa esimerkeissä käytetään muuttujan L arvona kyseistä listaa. Listassa L on neljä alkiota eli sen Pituus (Lenght) on neljä.
Pituus(L) → 4
Listoille voi tehdä erilaisia matemaattisia operaatioita. Kannattaa kokeilla miten eri laskutoimitukset vaikuttavat listaan. Ja tietysti komennot Summa(Sum) ja Tulo(Product) toimivat.
2*L → {(-10), (-4), 2, 8} L+L → {(-10), (-4), 2, 8} L^2 → {25, 4, 1, 16} sin(L°) → {(-0.08715574274766), (-0.03489949670252), 0.01745240643728, 0.06975647374412} Summa(L) → -2 Tulo(L) → 40
Listan n:s alkio saadaan Alkio-komennolla (Element). Alkio-komennossa on kaksi muuttujaa, lista ja järjestysluku.
Alkio(L, 3) → 1
Edellistä voi käyttää esimerkiksi seuraavasti. GeoGebran Ratkaise(Solve) komento ratkaisee yhtälön ja tuottaa ratkaisun listana, jossa ratkaisut ovat yhtälöinä. Tämä vastaa samaa, jos käytetään CAS:in Ratkaise-työkalua. Ratkaisut(Solutions)-komento tuottaa yhtälön ratkaisun tarkat arvot listana. Tutkitaan toisen asteen yhtälöä ja sen ratkaisuja. Laiskuuksissani määritän ensin funktion f ja käytän sitä komennoissa. Bonuksena GeoGebra piirtää kuvaajan Piirtoalueelle. Ratkaisut-komennon ratkaisulle käytän muuttujaa, jonka nimeän R:ksi.
f(x):=2x² - 4x – 5 → f(x):=2x² - 4x – 5 Ra ≔ Ratkaise(f(x)=0) {x = (-sqrt(14) + 2) / 2, x = (sqrt(14) + 2) / 2} R:=Ratkaisut(f(x)=0) {(-sqrt(14) + 2) / 2, (sqrt(14) + 2) / 2}
Lasketaan tarkistuksen vuoksi funktion arvo nollakohdissa ja yhtälön ratkaisujen tulo.
f(R) → {0, 0} Alkio(R, 1)*Alkio(R,2) → -5/2
Toki edellisen olisi saanut laskettua tulon avulla.
Tulo(R) → -5/2
Tai käyttämällä yhtälöitä kertomalla yhtälöt puolittain.
Tulo(Ra) x^(2)= -5/2
Jono-komennon (Sequence) avulla voi helposti tuottaa erilaisia jonoja. Palaan Jono-komennon syvällisempään käyttöön ja sen syntaksiin tulevassa artikkelissa. Jono vastaa for-next -silmukkaa perinteisessä ohjelmoinnissa. Seuraavan esimerkin Jono-komennon ensimmäinen muuttuja on lauseke, tässä tapauksessa koordinaatiston piste (n, n^2), seuraavassa kerrotaan muuttuja nimi n, kolmas muuttuja on alkuarvo 0 ja viimeinen loppuarvo 5. Luodaan pisteitä koordinaatistoon.
Pisteet: = Jono(n,n^2), n, 0, 5) → {(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)}
Koska lista Pisteet koostuu koordinaatiston pisteistä, niin sitä kutsutaan pistelistaksi. Taulukkolaskennassa on helppoa tuottaa pistelistoja. Valitaan kaksi saraketta ja hiiren oikean painikkeen valikosta Luo -> Pistelista. Kun tehdään toisen asteen polynomisovitus listan pisteille, saadaan tietysti alkuperäistä lauseketta vastaava polynomi. Fysiikan ja kemian opettajille GeoGebran Sovita-alkuiset komennot ovat aika mukavia, kun tutkitaan mittaustuloksia, palaan tähän aiheeseen myöhemmin.
SovitaPolynomi(Pisteet, 2) → x^2
Poimiminen ja lisääminen
Ensimmäinen(First)-komento tuottaa listan ensimmäisen alkion listana. Muistin virkistyksenä Alkio palauttaa alkion jäsenen, ei listaa. Useimmiten itse käytän Alkio-komentoa kun tarvitsen listan ensimmäistä arvoa.
Ensimmäinen(L) → {-5} Alkio(L, 1) →-5
Viimeinen(Last) toimii kuten Ensimmäinen. Jostain kummasta syystä tätä kirjoitettaessa Alkio(L, Pituus(L)) tuottaa virheilmoituksen. Pitää selvittää asiaa.
Viimeinen(L) →{4} Alkio(L, 4) →4
Liitos (Append) lisää objektin listan loppuun, jostain kumman syystä se ei toimi etupuolelle, vaikka GeoGebran ohje niin kertookin.
Liitos(L,0) → {-5, -2, 1, 4, 0}
Liitä (Join) liittää yhden tai useamman lista yhdeksi.
Liitä({1, 2, 3},{9, 8, 7}) → {1, 2, 3, 9, 8, 7}
LisääListaan-komennon (Insert) avulla saa lisättyä alkioita haluamaansa paikkaan. Mikäli paikan järjestysluku on negatiivinen, niin paikka lasketaan lopusta alkaen Pythonin tyyliin.
LisääListaan( 13, {2, 4, 6, 8, 10}, 3) → {2, 4, 13, 6, 8, 10} LisääListaan( {13, 42}, {2, 4, 6, 8, 10}, -3) → {2, 4, 6, 13, 42, 8, 10}
Poimi (Take) valitsee listasta alkioita. Ensimmäisessä esimerkissä poimitaan listan alkiot neljännestä alkiosta loppuun ja toisessa alkiot alemmassa toisesta neljänteen.
Poimi( {2, 4, 6, 8, 10}, 4) → {8, 10} Poimi({2, 4, 6, 8, 10}, 2,4) → {4, 6, 8}
Poista(Remove)-komennon avulla voi poistaa alkioita jotka ovat toisessa listassa. Vain ensimmäinen alkio poistetaan.
Poista({1, 2, 2, 2, 3, 4, 5, 6, 7}, {2, 4, 6} ) → {1, 2, 2, 3, 5, 7}
Edellisessä esimerkissä Poista-komento poisti toisen listan alkiot vain yhden kerran. Jos haluaa, että lista käyttäytyy kuin joukko-opillinen joukko, niin pitää käyttää apuna Yksinkertainen(Unique)-komentoa.
Yksinkertainen({1, 2, 2, 3, 4, 5, 6, 6}) → {1, 2, 3, 4, 5, 6}
Joskus Jos-ehtoa käytettäessä Jono-komennon kanssa syntyy listoja, joissa on määrittelemättömiä alkioita. Ne saa pois PoistaMäärittelemätön(RemoveUndefined) -komennon avulla. Alla on etsitty kolmella jaollisia lukuja.
Lista:=Jono(Jos(mod(n, 3)==0,n), n, 10, 20) → {?, ?, 12, ?, ?, 15, ?, ?, 18, ?, ?} PoistaMäärittelemätön(Lista) → {12, 15, 18}
Sekoittaminen ja arpominen
Sekoita(Shuffle)-komento sekoittaa listan alkiot ja tuottaa uuden listan niistä.
Sekoita({"pataA", "herttaA", "ristiA", "ruutuA" }) → {"herttaA", "ristiA", "pataA", "ruutuA"}
SatunnainenAlkio(RandomElement)-komento poimii satunnaisen alkion.
SatunnainenAlkio({"pataA", "herttaA", "ristiA", "ruutuA"}) → pataA
Arpominen luvuista 1, 2, …, 666 olisi onnistunut myös komennolla
Satunnaisluku(1, 666) → 42
Lajittele (Sort) lajittelee, sen muuttujana olevan listan pienemmyysjärjestykseen. Jos listan alkiot ovat tekstiä, niin ne aakkostetaan.
Lajittele({3, 2, 1}) → {1, 2, 3}
Järjestysarvo(OrdinalRank)-komento liittyy lukuarvojen suuruusjärjestykseen. Minulle ei tule mieleen tilannetta, jossa tätä tarvitsee käyttää, mutta ehkäpä jonain päivänä tätäkin tarvitaan. Järjestysarvo kertoo sen järjestysluvun, mikä alkioilla olisi ollut kun ne järjestetään pienemmyysjärjestykseen. Tasapelejä ei sallita. Oletetaan, että meillä on arvosanoja listassa ja käytetään Järjestysarvo-komentoa.
arvosanat:={4, 8, 5, 7, 7, 10, 7, 9} → arvosanat:={4, 8, 5, 7, 7, 10, 7, 9} Järjestysarvo(arvosanat) → {1, 6, 2, 3, 4, 8, 5, 7}
Nyt tiedän, että arvosana 4 on pienin eli ensimmäinen, arvosana 8 on kuudes, arvosana 5 on toinen kyseisessä listassa.
Käytetään samaa listaa JaettuSijoitus(TiedRank)-komennolla. Nyt tasapelit on sallittu.
JaettuSijoitus(arvosanat) → {1, 6, 2, 4, 4, 8, 4, 7}
JaettuSijoitus-komennon luvut 4 kertovat, että arvosanat 7 ovat tasapelillä sijalla 4 ja arvosana 8 (joka oli toisena ensimmäisessä listassa) on sijalla 6.
Summa ja tulo
Summa(Sum) laskee jonon alkioiden summan. Summassa voi käyttää myös Jono-komennon kaltaista syntaksia Summa( <Lauseke>, <Muuttuja>, <Alkuarvo>, <Loppuarvo> ).
L → {(-5), (-2), 1, 4} Summa(L) → -2 Summa(Jono(1, 42)) → 903 Summa(i, i, 1, 42) → 903
Tulo(Product) on kertolaskua, se toimii kuten Summa-komento.
Tulo(L) 40 Tulo(i, i, 1, 42) → 1405006117752879898543142606244511569936384000000000
Yhdiste ja leikkaus
Tiivistä(Flatten)-komento tekee yhden lista useamman listan alkiosta. Käytännössä Tiivistä poistaa kaikki sisemmät aaltosulkeet listojen listasta.
Tiivistä({L, {L,{L}}, {1,2,3, {3, 2,1}}}) → {(-5), (-2), 1, 4, (-5), (-2), 1, 4, (-5), (-2), 1, 4, 1, 2, 3, 3, 2, 1}
Yhdiste(Union) vastaa joukko-opin yhdistettä. Se yhdistää listat ja samalla poistaa ylimääräiset samat alkiot.
Yhdiste({1,2,2,3,3,3},{2, 3, 4, 5, 5}) → {1, 2, 3, 4, 5}
YhteisetAlkiot(Intersection) vastaa joukko-opin leikkausta. Se tuottaa listan niistä alkioista, jotka ovat molemmissa listoissa.
YhteisetAlkiot({1,2,2,3,3,3},{2, 3, 4, 5, 5}) → {2, 3}
Frekvenssi ja histogrammi
Frekvenssi(Frequency)-komento palauttaa listan, jossa on syötelistan alkioiden lukumäärät. Tällä komennolla on runsaasti erilaisia syötemahdollisuuksia.
Frekvenssi({(-5), (-2), 1, 4, (-5), (-2), 1, 4, (-5), (-2), 1, 4, 1, 2, 3, 3, 2, 1}) →{3, 3, 5, 2, 2, 3}
Nyt tiedän, että lukuja -5 on 3 kappaletta, lukuja -2 on 3 kappaletta, ykkösiä on 5 ja niin edelleen. Luodaan luokkarajalista Jono-komennolla ja käytetään sitä frekvenssi-komennon ensimmäisenä syötteenä.
rajat:=Jono(n-.5,n, -5, 5) →rajat:={-5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5} arvot≔Frekvenssi(rajat, {(-5), (-2), 1, 4, (-5), (-2), 1, 4, (-5), (-2), 1, 4, 1, 2, 3, 3, 2, 1} ) →arvot≔{3, 0, 0, 3, 0, 0, 5, 2, 2, 3}
Näin saatuja listoja voi käyttää Histogrammi(Histogram)-komennon kanssa tuottamaan jakauman histogrammin piirtoalueelle.
Histogrammi(rajat,arvot) →18
Histogrammin saa näkymään CASissa kun klikkaa solun vasemmassa reunassa olevaa pallukkaa. Luku 18 on histogrammin muodostaman monikulmion pinta-ala.
Tässä vaiheessa on muistutettava, että GeoGebran taulukkolaskenta ja Yhden muuttujan analyysi -työkalu helpottaa huomattavasti tilastollisen aineiston käsittelyä.
Datafunktio
Datafunktio(Datafunction) tuli GeoGebraan sensorit-hankkeen myötä. Fysiikan ja kemian opettajien kannattaa tutustua tähän funktioon, vaikka sen toiminnallisuus ei hivele täydellisyyttä. Ajatuksena on ollut käyttää mobiililaitteista saatavaa anturidataa GeoGebran kanssa. Unkarilainen hanke on ollut käsittääkseni jäissä EU-rahoituksen puutteen myötä muutaman vuoden. Komento piirtää x-koordinaatti- ja y-koordinaatti -listasta kuvaajan ja muodostaa murtoviivan pisteiden välille. Peräkkäisten mittauspisteiden muodostavien janojen avulla saadaan integroituva, mutta ei derivoituva funktio. Tämä on yleinen tapa runsasta mittausdataa käyttävien ohjelmien kanssa. Datafunktion luomaa funktiota voi tutkia myös Funktion analysointi -työkalulla.
Luodaan paikka-niminen lista taulukkolaskentaan tuodusta mittausdatasta. Tätä funktiota tutkiessani havaitsin, että se ei toimi CAS:issa määriteltynä siten kuin haluan. Tämänkin ymmärtää, että runsaan datamäärän kanssa työskennellessä tarkat arvot eivät ole enää mielenkiintoisia. Niinpä pitää käyttää syöttökenttää. Alla oleva mittausdata on tuotu taulukkolaskentaan (hiiren oikea painike ja Tuo datatiedosto…). Sieltä valittu alue on määritelty paikka-nimiseksi pistelistaksi Luo pistelista-työkalun avulla.
paikka → { (0, 0.029), (0.05, 0.029), (0.1, 0.036), (0.15, 0.044), (0.2, 0.062), (0.25, 0.082), (0.3, 0.104), (0.35, 0.114), (0.4, 0.135), (0.45, 0.138), (0.5, 0.14)}
Datafunktio vaatii syötteekseen x-koordinaattilistan ja y-koordinaattilistan.
Datafunktio(x(paikka), y(paikka)) → f(x) := Datafunktio[x]
Piirtoalueelle ilmestyy pisteet näkyy kuvaaja ja Algebraikkunassa näkyy uusi funktio.
Tälle funktiolle voi laske arvoja ja määrittää integraaleja. Jostain kumman syystä reunat eivät voi olla päätepisteiden x-arvojen suuruisia. Tämän funktion tutkiminen käynee helpoimmin Funktion analysointi-työkalun avulla. Syöttökenttä tuottaa
f(0.2) → 0.062 Integraali(f, 0.1, 0.49) ≈ 0.037
Pudotusvalikko
Listan saa toimimaan pudotusvalikkona. Määritellään ensin lista, jossa on eri funktioita
arvot≔ {x, 2x, x², 2x²} → arvot≔ {x, 2x, x², 2x²}
Listasta saa pudotusvalikon, kun avaa Algebraikkunassa hiiren oikean painikkeen avulla lista ominaisuudet ja ruksaa kohdan Lista pudotusvalikkona. Piirtoalueelle ilmestyy pudotusvalikko. Komentojen ValittuAlkio(SelctedElement), ja ValittuIndeksi(SelectedIndex) avulla saadaan pudotusvalikosta valittu alkio tai sen indeksi muuttujan arvoksi. Jos arvot -pudotusvalikosta on valittuna x2 , niin
f(x):=ValittuAlkio(arvot) → f(x)≔ x² indeksi:=ValittuIndeksi(arvot) → indeksi:=3
Samalla piirtoalueelle ilmestyy funktion f(x) = x² kuvaaja.
[17.5. korjasin kirjoitusvirheitä ja muokkasin Datafunktio-lukua]
6 Replies to “Listat GeoGebrassa”