Näytetään tekstit, joissa on tunniste CAS. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste CAS. Näytä kaikki tekstit

tiistai 27. syyskuuta 2022

Geometrian probleema ja sen moderni versio


Vanha geometrian tehtävä saattaa antaa aihetta monenlaisiin pohdiskeluihin, kun avuksi otetaan laskentaohjelmat.

Annettuna on yllä olevan kuvion mukainen tilanne, jossa $\alpha = 60^\circ$ ja $\beta = 45^\circ$. Kysytään kulman $\gamma$ suuruutta. Tämä on tyypillinen tehtävä omalta kouluajaltani. Vaikeutena on liikkeelle lähtö, sopivan idean — ja apupiirroksen — löytäminen. Jos idea löytyy, tehtävä on melko helppo, ellei, ei synny juuri mitään.

Piirretään pisteestä $A$ normaali janalle $BD$ ja yhdistetään sen kantapiste pisteeseen $C$. Tällöin syntyy ns. muistikolmioita ja tasakylkisiä kolmiota. Kulmia päästään laskemaan vaiheittain eikä tarvita muuta tietoa kuin kolmion kulmien summa. Tuloksena on $\gamma = 75^\circ$. Kuva alla.

Mutta miksi tyytyä vain kulmien arvoihin $\alpha = 60^\circ$, $\beta = 45^\circ$? Voihan $\alpha$ olla mitä tahansa väliltä $]0^\circ,180^\circ[$ ja $\beta$ jotakin $\alpha$:aa pienempää.

Sijoitetaan tilanne koordinaatistoon, piste $A$ origoon ja pisteet $B$ ja $C$ x-akselille. Otetaan tuntemattomiksi kulman $\gamma$ ohella pisteen $D$ koordinaatit $(x,y)$. Jos $\vec{i}$ on tavanomainen yksikkövektori, skalaaritulon avulla saadaan ehdot \[ \cos(\alpha) = \frac{-\vec{i}\cdot\vec{BD}}{|\vec{BD}|}, \quad \cos(\beta) = \frac{-\vec{i}\cdot\vec{CD}}{|\vec{CD}|}, \] jotka määrittävät tilanteen. Nämä tuottavat yhtälöt \[ \cos(\alpha) = \frac{2-x}{\sqrt{(2-x)^2 + y^2}}, \quad \cos(\beta) = \frac{3-x}{\sqrt{(3-x)^2 + y^2}}, \] joista voidaan ratkaista $x$ ja $y$. Ratkaiseminen käsin voi olla työlästä, mutta (ainakin hyvä) symbolisen laskennan ohjelma suoriutuu. Kokeilin Mathematicalla ja GeoGebralla. Kumpikin antaa neljä ratkaisua, GeoGebra tavattoman paljon hankalammat lausekkeet. Tuloksiin on syytä suhtautua rauhallisesti. Ei laskentaohjelma tee sitä, mitä käyttäjä haluaisi, vaan mitä se on ohjelmoitu tekemään, ja tulokset voivat olla mutkikkaita eivätkä aina edes oikeita. Ohjelma pyrkii ottamaan huomioon kaikki tapaukset, mutta ei välttämättä onnistu.

Sijoittamalla Mathematicassa tulokset takaisin yhtälöihin nähdään, että vain kaksi ratkaisuista toteuttaa yhtälöt. Kaksi muuta on ilmeisesti syntynyt neliöjuurien käsittelyn myötä. Vastaavasta sijoittamisesta ei ainakaan käyttämäni GeoGebran versio suoriutunut, mutta numeerisen tarkastelun perusteella tässäkin on kaksi oikeaa ja kaksi väärää ratkaisua. Oikeissa ratkaisuissa x-koordinaatit ovat samat, y-koordinaatit vastalukuja, joten toinen tarkoittaa vain kuvion peilaamista x-akselin alapuolelle.

Mathematican tapauksessa tulos on \[ x = \tfrac{1}{2}(5 - \csc(\alpha - \beta)\sin(\alpha + \beta)), \quad y = \csc(\alpha - \beta)\sin(\alpha)\sin(\beta). \] Suomalaiselle nämä saattavat näyttää hieman oudoilta $\csc$-funktion takia. Tämä on kosekantti, yksinkertaisesti sinin käänteisarvo. Vastaavasti $\sec$, sekantti on kosinin käänteisarvo. Monissa maissa ja sen seurauksena laskentaohjelmissa usein käytetään näitä.

Kun pisteen $D$ koordinaattien lausekkeet ovat käytettävissä, voidaan laskea kaikenlaista. Kulma $\gamma$ saadaan kaksiargumenttisella $\arctan(x,y)$-funktiolla, joka antaa pisteen $(x,y)$ napakulman ja joka on useimmissa ohjelmissa käytettävissä.

Sijoittamalla ratkaisuun esimerkiksi $\beta = \alpha - 15^\circ$ voidaan etsiä ne pisteet $D$, jotka vastaavat kulmien $\alpha$ ja $\beta$ 15 asteen erotusta. Pisteitä voi piirtää ohjelmasilmukalla tai parametrikäyränä, jota useimmat ohjelmistot tukevat. Alkeisgeometriansa hallitsevaa henkilöä ei yllätä, että kyseessä on ympyränkaari. Laskentaohjelma saattaa parametriesityksen perusteella kyetä löytämään myös ympyrälle yhtälön: $x^2 + y^2 - 5x - (2 + \sqrt{3})y + 6 = 0$. Kuva alla, pisteen $D$ mahdollinen sijainti punaisella.

Pienillä muutoksilla voidaan tutkia erilaisia tehtävän variaatioita, mikä usein johtaa algoritmiseen ajatteluun ja kirjoittamaan muutaman rivin ohjelmakoodeja. Edellytyksenä on, että laskentaohjelma tukee ainakin pienimuotoista ohjelmointia. Mathematicassa sujuu hyvin, GeoGebrassa on hankalaa. Mikä esimerkiksi olisi kulman $\gamma$ maksimiarvo, kun kulmien $\alpha$ ja $\beta$ erotus on vakio? Miten maksimiarvo riippuu erotuksen suuruudesta? Sopivatko nämä geometriseen havaintoon?



Ylhäällä: Pisteen $D$ sijainti tapauksessa $\beta = \alpha/3$. Alhaalla vasemmalla: Kulma $\gamma$ kulman $\alpha$ funktiona, kun $\beta = \alpha - 15^\circ$. Alhaalla oikealla: Kulma $\gamma$ kulmien $\alpha$ ja $\beta$ funktiona sekä edellä mainittu käyrä, joka sijaitsee pinnalla.

Erilaisen lähestymistavan tehtävään tarjoavat dynaamisen geometrian ohjelmat, joista GeoGebra lienee tunnetuin. Näissä tarkasteltava kuvio konstruoidaan ohjelman tarjoamien geometristen operaatioiden avulla piirtämällä, jolloin ohjelma laskee pisteiden koodinaatit ja suorien yhtälöt, usein myös perustyyppisten käyrien yhtälöt. Jälkikäteen kuviota voidaan muunnella pisteitä siirtämällä. Urakäyriä (locus) saadaan myös piirretyksi. Symbolisiin lausekkeisiin tai ns. tarkkoihin arvoihin (joita ehkä olisi parempi kutsua symbolisiksi arvoiksi, onhan kymmendesimaalinen likiarvokin jo kohtalaisen tarkka) ei yleensä päästä käsiksi ilman symbolista laskentaa.

maanantai 27. toukokuuta 2019

9999 potenssiin 9999

Silmiini osui tehtävä, jossa piti selvittää, kuinka monta numeroa on luvussa $9999^{9999}$ ja mitkä ovat kolme ensimmäistä numeroa. Ilmeisestikin kyseessä logaritmien harjoittelu ja käytettävissä laskin tai vastaava tietokoneohjelma.

Samantyyppisiä tehtäviä lienee aina käytetty logaritmien harjoittelemiseen. Klassikossa, K. Väisälän algebran kirjassakin on tehtävä, jossa kysytään luvun $9^{9^9}$ numeroiden lukumäärää. Tuolloin ei ollut laskimia, ainoastaan viisidesimaaliset logaritmitaulut.  Näilläkin tehtävän saattoi ainakin melkein ratkaista, numeroita oli noin 370 miljoonaa.  Paljon tarkempaan ei ollut mahdollista päästä eikä ensimmäisten numeroiden selvittämiseenkään tarkkuus riittänyt.

Potenssi $9999^{9999}$ on vaatimattomampi kuin $9^{9^9}$ ja ensimmäiseksi tekee mieli koettaa, selvittäisiinkö ilman logaritmeja, yksinkertaisesti laskemalla kokonaislukupotenssi suoraan normaalilla ohjelmiston aritmetiikalla. GeoGebralle ja TI-Nspirelle luku on liian suuri, GeoGebra antaa kysymysmerkin, TI-Nspire $\infty$-symbolin ja varoituksen ylivuodosta.

Mathematica sen sijaan laskee luvun ja antaa pitkän jonon numeroita. Näiden lukumäärän laskeminen olisi ikävä tehtävä, mutta tarkoitukseen on valmis funktio IntegerLength, jolla tulokseksi saadaan 39996 numeroa. Kolme ensimmäistä ovat 367. Mathematicaan pohjautuva verkossa toimiva Wolfram|Alpha ei anna suoraan kaikkia numeroita, mutta kertoo niiden lukumäärän. Onko enää tarpeen miettiäkään logaritmeja, jos laskentaohjelmien kapasiteetti kasvaa näinkin suureksi?

Jos kuitenkin käytetään logaritmeja, kannattaa aluksi laskea potenssin logaritmi muodosta $9999\lg(9999)$, missä $\lg$ tarkoittaa kymmenkantaista (Briggsin) logaritmia. GeoGebra antaa tulokseksi $39995.57$. Tämän kokonaisosa $39995$ on logaritmin ns. karakteristika.  Tämä on yhtä pienempi kuin luvun numeroiden määrä, joka siis on 39996. Desimaaliosa $0.57$ on logaritmin mantissa, jonka avulla saadaan luvun numeroiden alkupää. Tämä perustuu hajotelmaan
\[ 9999^{9999} = 10^{39995.56\dots} = 10^{39995} \cdot 10^{0.56\dots}. \]
GeoGebra kuitenkin tuottaa pienen yllätyksen: $10^{0.57} = 3.72$, mutta jos talletetaan muuttujaan alkuperäinen logaritmi, $s = 9999\lg(9999)$, ja lasketaan $10^{s-39995}$, saadaankin $3.68$. Ovatko oikeat alkupään numerot siis 372 vai 368?

Lasku GeoGebralla

TI-Nspirellä käy suurin piirtein samoin.

Selityksenä on, että ohjelmistojen numeerisessa laskennassa on käytössä huomattavasti enemmän desimaaleja kuin käyttäjälle normaalisti näytetään. Tarkkuuden säilyttämiseksi kannattaa siis tallettaa välitulokset muistiin eikä kopioida niitä uudelleen näytön mukaisina. Tämäkään ei poista kaikkia virheitä, koska laskennassa kuitenkin käytetään rajallista desimaalimäärää (tai oikeastaan bittimäärää). Jossakin tilanteessa virhe tulee aina esiin.

Olisiko logaritmien lisäksi jotakin muuta tapaa suoriutua tehtävästä, jos laskentaväline ei suoriudu suurista luvuista ilman ylivuotoa? Kantaluvun $9999$ voi skaalata jakamalla sen $10000$:lla. Tällöin syntyy luku $0.9999$, jonka korottaminen potenssiin $9999$ ei aiheuta ylivuotoa. Tulos on $0.36789\dots$, mikä antaa ensimmäiset numerot. Numeroiden lukumäärä saadaan kertomalla tämä skaalauksen takia tekijällä $10000^{9999} = 10^{39996}$.

Mitä kaikesta tästä — ja paljosta muusta vastaavasta — pitäisi oppia? Ohjelmisto on ensisijaisesti laskentaväline olipa kyse numeerisesta tai symbolisesta laskennasta. Se toimii omilla ehdoillaan eikä aina siten, kuin matemaattisessa mielessä pitäisi. Laskentaväline myös vaikuttaa siihen, millaista matematiikkaa on järkevää käyttää. Esimerkiksi logaritmitaulut ja ohjelmistot edellyttävät erilaista näkökulmaa.

maanantai 18. maaliskuuta 2019

Matematiikkaa kokeilemalla

Erinäisistä syistä tulin hiljattain syöttäneeksi laskentaohjelma Mathematicalle lausekkeen $(-1)^{i-1}$, missä $i$ tarkoittaa imaginaariyksikköä. Tämä sieveni muotoon $-e^{-\pi}$, ei tosin suoraan, mutta komennolla ComplexExpand ohjattuna. Saadun tuloksen korotin potenssiin $i$, siis $(-e^{-\pi})^i$, jolloin tulos oli uudelleen $-e^{-\pi}$.

Kyseessä on tietenkin hieman eksoottinen kompleksiluvuilla laskeminen ja on paikallaan pyrkiä verifioimaan tulokset jollakin tavoin. Yhtenä mahdollisuutena on miettiä, miten tällaiset potenssit oikeastaan pitäisi määritellä ja mitä määritelmä sitten antaisi. Myös kokeilemalla voi edetä ja testata ohjelmiston johdonmukaisuutta laskemalla vastaavat tulokset numeerisesti. Tällöin tulokset olivat seuraavat: \begin{align*} a &= (-1)^{i-1} \approx -0.0432139 - 5.29218 \cdot 10^{-18}\,i \ ,\\ b &= a^i \approx -23.1407 - 2.83392 \cdot 10^{-15}\,i\ . \end{align*} Edellinen näyttää hyvältä, sillä $e^{-\pi} \approx 0.0432139$ ja luokkaa $10^{-18}$ oleva imaginaariosa on $= 0$ numeerisen laskennan tarkkuudella. Jälkimmäinen sen sijaan on kummallinen, sillä $e^{\pi} \approx 23.1407$. Laskeeko Mathematica väärin?

Samat numeeriset tulokset antaa Matlab-klooni Octave. Olisiko Mathematican symbolisesti laskettu tulos väärin?

Kaikki on kuitenkin kunnossa ja Mathematica laskee sekä symbolisesti että numeerisesti juuri niin kuin pitääkin. Tämän ymmärtämiseksi on kuitenkin paneuduttava yleisen potenssin määrittelyyn.

Kompleksinen eksponenttifunktio voidaan määritellä joko sarjakehitelmällä tai hieman läpinäkymättömästi Eulerin kaavalla:
\[ e^z = \sum_{k=0}^\infty \frac{z^k}{k!} = e^x (\cos y + i\sin y), \] missä $z = x + iy$. Tämän käänteisfunktio on (luonnollinen) logaritmi $\log$, joka saadaan esittämällä $z$ napakoordinaateissa yhtälössä $e^w = z$ ja ratkaisemalla $w$: \[ w = \log z = \log|z| + i(\arg z + 2k\pi). \] Tässä $k$ on tavalliseen tapaan kokonaisluku ja $\arg$ tarkoittaa kompleksiluvun argumenttia eli napakulmaa, joka valitaan väliltä $]-\pi,\pi]$. $\log|z|$ on positiivisen reaaliluvun logaritmi ja määritelty reaalialueelta tunnetulla tavalla. (Kompleksianalyysissa on yleisesti tapana käyttää funktion nimenä $\log$ eikä $\ln$. Funktioiden määrittelystä tarkemmin esimerkiksi dokumentissa http://matta.hut.fi/matta/kompleksiluvut/cluvut.pdf.)

Jos valitaan $k = 0$, jolloin imaginaariosa on välillä $]-\pi,\pi]$, kyseessä on funktion päähaara.

Yleisen potenssin määrittely perustuu eksponenttifunktion ja logaritmifunktion käyttöön: \[ a^b = (e^{\log a})^b = e^{b\log a}, \] missä käytetään logaritmin päähaaraa.

Tällöin on \begin{align*} (-1)^{i-1} &= (e^{i\pi})^{i-1} = e^{(-1-i)\pi} = e^{-\pi}\,e^{-i\pi} = -e^{-\pi}\ ,\\ (-e^{-\pi})^i &= (e^{\log(-e^{-\pi})})^i = (e^{\log(e^{-\pi}) + i\pi})^i = (e^{-\pi + i\pi})^i = e^{-i\pi}\,e^{-\pi} = -e^{-\pi}\ . \end{align*} Symboliset tulokset ovat siis oikein.

Entä numeeriset? Luvun $-e^{-\pi}$ napakulma on $\pi$, sillä napakulma valitaan väliltä $]-\pi,\pi]$. Sen numeerisen approksimaation $-0.0432139 - 5.29218 \cdot 10^{-18}\,i$ napakulma sen sijaan on hyvin lähellä arvoa $-\pi$ negatiivisen, vaikkakin lähellä nollaa olevan imaginaariosan takia. Napakulmalla on $2\pi$:n suuruinen hyppyepäjatkuvuus negatiivista reaaliakselia ylitettäessä. Tämä muuttaa tilannetta numeerisessa laskennassa ja tulos on likimain \[ (e^{-\pi - i\pi})^i = e^{-i\pi}\,e^{\pi} = -e^{\pi} \approx -23.1407. \]
Kokeilevan matematiikan harrastaja piirtää vielä mielellään funktion $z^i = (x + iy)^i$ reaaliosan kuvaajan. Tämä on tavallinen kahden reaalimuuttujan reaaliarvoinen funktio $f(x,y) = \text{Re}(x + iy)^i$, jonka kuvaajasta epäjatkuvuuskohta selvästi näkyy:

lauantai 16. helmikuuta 2019

Sieventäminen ei aina mene niin kuin luulisi

GeoGebran CAS

Potenssilausekkeen (herätteenä K. Väisälän algebran kirjan harjoitustehtävä, joskaan ei ihan tässä muodossa)
\[
x^{1+n} (x^{n-1})^n (x^n)^{-n}
\]
sieventäminen on useimmille lukiolaisille yksinkertainen juttu: tulos on $x$. GeoGebrakin sieventää sen ongelmitta: pelkän lausekkeen syöttäminen tosin antaa kesken jääneen tuloksen mutta lausekkeen uudelleen kutsuminen (tai suoraan Simplify/Sievennä-komennon käyttö) antaa tuloksen $x$.

Mathematica ei kuitenkaan suostu sieventämään lauseketta Simplify-komennolla, vaan palauttaa sen muuttumattomana. Mitä tästä pitäisi ajatella? Sievennys kyllä onnistuu, jos asetetaan sopiva lisäehto, esimerkiksi Simplify[lsk,x>0] tai Simplify[lsk,Element[n,Integers]], missä lsk tarkoittaa kyseistä lauseketta ja komennon jälkimmäinen argumentti määrittelee $x$:n positiiviseksi reaaliluvuksi tai $n$:n kokonaisluvuksi. Eikö sievennys pädekään rajoituksitta?

Mathematican oletuksena on, että symbolit ovat kompleksilukuja (joiden osajoukkona tietenkin ovat reaaliluvut). Tällöin siis $x$, $n$ tai laskennan välitulokset voivat olla kompleksilukuja, ellei toisin ilmoiteta. GeoGebra sen sijaan ei kompleksilukualgebraa kaikissa suhteissa käytä eikä ota huomioon mahdollisia kompleksiarvoja.

Onko sitten olemassa joitakin arvoja luvuille $x$ ja $n$, joilla lausekkeen arvo ei olekaan $x$?  Ehkä helpoin tapa lähteä tutkimaan asiaa on ajatella lauseke kahden muuttujan, $x$ ja $n$ funktioksi ja piirtää sen kuvaaja, ts. kolmiulotteisen avaruuden pinta. Tähän on olemassa komento, ja tulos on oheisen kuvan mukainen. Mitä ovat pinnan liuskat ja niiden välissä olevat tyhjät tilat?

Plot3D[lsk, {x, -2, 2}, {n, -5, 5}]

Komento Plot3D piirtää reaaliarvoisten funktioiden kuvaajia. Jos arvo on jossakin pisteessä kompleksinen, se jätetään yksinkertaisesti piirtämättä. Lausekkeen reaaliosa ja imaginaariosa ovat kuitenkin reaaliarvoisia:

Plot3D[Re[lsk], {x, -2, 2}, {n, -5, 5}]

Plot3D[Im[lsk], {x, -2, 2}, {n, -5, 5}]

Vaikuttaa siis siltä, että esimerkiksi arvolla $n = -1/5$ funktion arvot ovat kompleksisia, jos $x < 0$. Näin onkin. Arvoksi saadaan Mathematicalla laskettuna
\[
\left(\frac{\sqrt{5}-1}{4} - i\sqrt{\frac{\sqrt{5}+5}{8}}\right)x.
\]
Jos $n = -1/2$ ja $x < 0$, tulos on $-x$.

Lukija ehkä kysyy, miten murtopotenssit — tai niiden päähaarat — on tällöin määritelty ja voiko olla varma, että Mathematica laskee oikein. Tai että ylipäätään jokin laskentaohjelma laskee oikein. Varovaisuus on paikallaan. Mikään ihmisen tekemä ei yleensä ole täysin virheetöntä eivätkä määritelmätkään ole aina samoja. Saman laskun voikin varmuuden vuoksi laskea useammalla ohjelmalla. Ihan itse käsin laskeminen on lisäksi opettavaista, mutta saattaa olla työlästä eikä sekään aina virheetöntä.

Onko edellä oleva sitten laskettu oikein? Ainakin Matlab-klooni Octave laskee samoin.

maanantai 4. helmikuuta 2019

Sieventämisen kauneus ja kauheus


Lupauduin auttamaan lukiolaista matematiikan kertaamisessa ja taitojen testaamiseksi annoin ratkaistavaksi muutaman sievennystehtävän. Tällaisiahan on hieno kokoelma Kalle Väisälän klassikossa, Algebran oppi- ja esimerkkikirjan ensimmäisessä osassa, jota aikoinani itse käytin. Sievennystehtäviä ratkaistiin keskikoulun viimeisellä luokalla vastaten nykyistä peruskoulun viimeistä vuotta.

Sievennystehtävissä tuli kerratuksi polynomien ja rationaalilausekkeiden perusalgebra.  Niistä opittiin jotakin yleisempääkin: Yhtä ainoaa tietä lausekkeen sieventämiseen ei ole, vaan voidaan edetä montaa erilaista reittiä joko paljon työtä tehden tai hyvän oikotien löytäen. Lopputuloskaan ei ole yksikäsitteinen, vaan sievyys riippuu mieltymyksistä ja siitä, mitä lausekkeella on seuraavaksi tarkoitus tehdä.

Väisälällä on yhtenä esimerkkinä lauseke
\[ \frac{x^2 + \frac{1 }{x^2} + 2}{x + \frac{1}{x}}, \] jossa osoittaja ja nimittäjä voidaan ensin saattaa samannimiseiksi ja sitten suorittaa murtolausekkeiden jakolasku:
\[ \frac{\dfrac{x^4 + 1 + 2x^2}{x^2}}{\dfrac{x^2 + 1}{x}} = \frac{x(x^4 + 1 + 2x^2)}{x^2(x^2 + 1)}. \] Tekijällä $x$ voidaan supistaa ja osoittaja tunnistaa binomin neliöksi:
\[ \frac{(x^2 + 1)^2}{x(x^2 + 1)} = \frac{x^2 + 1}{x}. \]
Hieman suorempaan olisi päästy laventamalla alkuperäinen murtolauseke tekijällä $x^2$ ja tunnistamalla binomin neliö (tai suorittamalla polynomien jakolasku):
\[ \frac{x^4 + 1 + 2x^2}{x^3 + x} = \frac{(x^2 + 1)^2}{x(x^2 + 1)} = \frac{x^2 + 1}{x}. \]
Lyhin tie kuitenkin varmaan olisi tunnistaa alkuperäisen lausekkeen osoittaja binomin neliöksi:
\[ \frac{\left(x + \frac{1}{x}\right)^2}{x + \frac{1}{x}} = x + \frac{1}{x} \] Lopputulos on hieman erinäköinen kuin edellä, mutta kuitenkin yhtäpitävä. Molempia voidaan pitää kohtuullisen sievinä.

Tällaisia sievennyksiä ei nykyään enää taideta koulussa juurikaan opetella. Pitäisikö kuitenkin?

Pelkkä lausekkeiden sieventäminen sujuu kyllä helposti symbolisilla ohjelmilla. Tällöin ei kuitenkaan kehity laskijan taito hahmottaa rakenteita ja tarpeen tullen muuntaa lauseke johonkin muuhun kuin ohjelman sievänä pitämään muotoon. Arvelen, ettei Väisäläkään pitänyt tärkeänä konstikkaiden lausekkeiden sieventämistä sinänsä vaan taitoa yleensä muokata lausekkeita, ja tähän sievennystehtävät olivat hyvää harjoitusta. Aivan kuten polkupyörällä temppuilu johtaa varmuuteen pyörän hallitsemisessa yllättävissäkin tilanteissa.

Symbolisissa laskentaohjelmissakaan lausekkeen muokkaus ei ole aina suoraviivaista.  Esimerkiksi Mathematica tarjoaa yleiskäyttöisen Simplify-komennon lisäksi joukon spesiaalimpia muokkauskomentoja: Expand, ExpandAll, TrigExpand, PowerExpand, ComplexExpand, FunctionExpand, Reduce, TrigReduce, ExpToTrig, TrigToExp, Together, Apart, Cancel, ... Näiden käyttö edellyttää näkemystä siitä, mitä on tekemässä. Mekaanisen työn ne kyllä hoitavat.

sunnuntai 25. maaliskuuta 2018

CAS: luonne ja käyttötapa

Laskettaessa integraalia
\[
\int_0^{2\pi} \frac{dx}{2+\cos x}
\]
perinteinen menettely on hakea ensin integraalifunktio ja sijoittaa sitten rajat tähän.

Standardisijoituksella $u = \tan(x/2)$ saadaan integraali muotoon
\[
\int \frac{2du}{3+u^2},
\]
josta saadaan integraalifunktio
\[
\frac{2}{\sqrt{3}}\arctan\left(\frac{1}{\sqrt{3}}\tan(\frac{x}{2})\right).
\]
Saman voi tietenkin saada symbolisella ohjelmalla, ja tuloksen voi verifioida derivoimalla.

Sijoittamalla tähän rajat $0$ ja $2\pi$ saadaan kummassakin tapauksessa $0$, ja määrätty integraali siis näyttäisi olevan $0$.

Ajattelevalla laskijalla pitäisi tällöin hälytyskellojen soida: Eihän se näin voi olla, koska integraalifunktio $1/(2+\cos x)$ on koko integroimisvälillä aidosti positiivinen.

Ongelman syy paljastuu piirtämällä integraalifunktion kuvaaja: kohdassa $x = \pi$ näyttää olevan epäjatkuvuus. Tällaistahan integraalifunktiolla ei saisi olla, sen pitää olla jatkuva.

Sininen:funktio $1/(2+\cos x)$; punainen: edellä saatu integraalifuntkio

Kovin kaukana ratkaisusta ei kuitenkaan olla, koska integraalifunktioon voidaan aina liittää additiivinen vakio $C$. Jos vakio kohdan $x = \pi$ vasemmalla puolella on $0$ ja oikealla puolella käytetään hypyn suuruista arvoa $2\pi/\sqrt{3}$, saadaan jatkuva integraalifunktio ja tämän avulla määrätyn integraalin arvoksi $2\pi/\sqrt{3}$.

Tähän tulokseen päästäänkin useimmilla symbolisilla ohjelmilla suoraan, kun lasketaan määrätty integraali.

Onko saatua integraalifunktiota sitten pidettävä virheellisenä? Riippuu siitä, mitä integraalifunktiolla tarkoitetaan. Useimmille ohjelmille (kuten kynä-paperi-laskijoillekin) se on antiderivaatta, ts. funktio, joka on derivoituva mahdollisesti yksittäisiä pisteitä lukuunottamatta ja derivaatta yhtyy alkuperäiseen funktioon.

Toisaalta ohjelmat saattavat myös huolehtia integraalifunktion jatkuvuudesta. Esimerkiksi Nspire näyttää lisäävän em. lausekkeeseen hieman kryptiseltä näyttävän termin
\[
-\frac{1}{\sqrt{3}} \left(\mathrm{mod}(x-\pi,2\pi) - x\right),
\]
mikä tekee funktiosta jatkuvan.

Symbolisia ohjelmia pidetään usein välineinä, joilla pitäisi ratkaista matemaattisia tehtäviä samassa hengessä kuin kynällä ja paperilla tavoitteena tehtävän ainoa oikeaoppinen ratkaisu. Asennetta on syytä muuttaa.

Ohjelmilla on oma käsitteistönsä ja oma logiikkansa, joka ei aina ole sama kuin totutussa matematiikan opetuksessa. Vain yhtä oikeaoppista ratkaisuakaan ei ole. Samaa ongelmaa voidaan lähestyä monella eri tavalla, joista toiset ehkä kertovat tilanteesta enemmän kuin toiset, mutta kaikilla on ansionsa.

Ohjelmia on ajateltava enemmän välineinä tutkimisessa ja kokeilemisessa, ei niinkään valmiin ratkaisun laatimisessa. Niitä ei ehkä edes tarvita, jos tehtävät ovat perinteisen kaltaisia.

maanantai 26. helmikuuta 2018

$(-1)^\pi$ ja muita kummallisuuksia

Yleisen potenssin $a^r$ määrittelyssä yleensä oletetaan, että $a$ on positiivinen.  Eksponentti $r$ voi olla mikä tahansa reaaliluku. Määrittely etenee sallimalla $r$:lle aluksi positiiviset kokonaisluvut, sitten kaikki kokonaisluvut, rationaaliluvut ja lopuksi reaaliluvut. Siten esimerkiksi $5^{1/2} = \sqrt{5} = 2.236\dots$ ja $e^{-\pi} = 0.0432\dots$ tulevat määritellyiksi.

Laskentaohjelmat antavat kuitenkin tuloksia myös tapauksissa, joissa $a$ on negatiivinen tai peräti kompleksinen. Myös $r$ voi kompleksiluku. Mitä nämä itse asiassa tarkoittavat?

Negatiivisen luvun kokonaislukupotenssi on ongelmaton.

Jos eksponentti on muotoa $1/n$, kyseessä on $n$:s juuri, ts. yhtälön $x^n = a$ ratkaisu $\sqrt[n]{a}$. Jos $a$ on positiivinen, tälle löytyy aina yksi reaalinen ratkaisu. Jos $a$ on negatiivinen, näkökulmaa täytyy hieman muuttaa ja tarkastella asiaa kompleksilukujoukossa.

Juuren ja juurifunktion käsitteet on tällöin syytä erottaa. Luvun $a$ $n$:s juuri on em.  yhtälön $x^n = a$ ratkaisu ja näitä on kompleksitasossa $n$ kappaletta. Jokin näistä kiinnitetään juuren päähaaraksi eli juurifunktioksi. Merkintä $\sqrt[n]{a}$ tai $a^{1/n}$ viittaa yleensä tähän. Yleensä juurifunktioksi kiinnitetään se, jonka napakulma on itseisarvoltaan pienin. Tämä voi olla kompleksinen, ja varsin usein onkin. Jos halutaan pysyä reaalialueella, voidaan kiinnittää reaalinen vaihtoehto, jos sellainen on olemassa. Siis:
\[
(-8)^{1/3} = \sqrt[3]{-8} = 1 + i\sqrt{3} \quad\text{tai}\quad
(-8)^{1/3} = \sqrt[3]{-8} = -2.
\]
Tietokoneohjelmissa voidaan yleensä valita, kumpaa kiinnitystä käytetään.

Kiinnittämisellä on kuitenkin haittansa: kaikki tavalliset laskusäännöt eivät enää päde. Yllä olevassa kuvassa on yksi esimerkki, toinen saadaan luvuista $a = -1 + i\sqrt{3}$, $b = i$, joille $\sqrt{a}\sqrt{b}$ ja $\sqrt{ab}$ ovat vastakkaismerkkiset eivätkä yhtä suuret.  Laskusäännöt ovat voimassa, jos juuri valitaan eri vaihtoehdoista tilanteeseen sopivalla tavalla.

Ongelmaa voidaan lähestyä myös kirjoittamalla potenssin mahdollisesti kompleksinen kantaluku napakoordinaattimuotoon:
\[
a = x +iy = |a| (\cos\varphi + i\sin\varphi) = |a| e^{i\varphi},
\] missä $\varphi$ on luvun $a$ napakulma, $-\pi < \varphi \le \pi$. Jos $a$ on negatiivinen (ja reaalinen), esitys on muotoa $a = |a| e^{i\pi}$, sillä $e^{i\pi} = -1$. Kompleksisen eksponenttifunktion $e^z$ määritelmä on luontevimmin sarjakehitelmä, mutta tässä yhteydessä riittää ajatella yhteyttä $e^{it} = \cos t + i\sin t$, $t$ reaalinen.

Napakoordnaattimuoto antaa mahdollisuuden potenssin yleiseen määrittelyyn:
\[
a^r = |a|^r e^{ir\varphi},
\] jolloin on määritelty, että kompleksinen eksponenttifunktio korotetaan potenssiin kertomalla eksponentit. Tällä tavoin saadaan lasketuiksi esimerkiksi oheisen kuvan potenssien likiarvot. Jätän tarkat arvot lukijan selvitettäviksi; edellä sanottu antaa eväät.
Miten napakoordinaattimuodon käyttö sitten suhtautuu juurten monikäsitteisyyteen?  Saadaanko kaikki juuren kaikki arvot sen avulla? Napakulma normeerataan yleensä välille $-\pi < \varphi \le \pi$, mutta periaatteessa ei ole estettä lisätä siihen mielivaltainen määrä luvun $2\pi$-termejä. Nämä antavat muut juuren arvot.  $n$:nnen juuren tapauksessa samat arvot alkavat toistua $2\pi$-termien määrän kasvaessa, joten eri suuria arvoja saadaan vain $n$ kappaletta. Lukija miettiköön, mitä tapahtuu, jos eksponentti on esimerkiksi $\pi$.

maanantai 25. syyskuuta 2017

Kolmion kulmien summa digitaaliaikana

Kolmion kulmien summa on tunnetusti 180 astetta tai radiaaneina ilmaistuna $\pi$. Perinteinen euklidisen geometrian todistus asialle perustuu alla olevaan kuvioon ja edellyttää paralleeliaksiooman voimassaoloa. Muutoinhan kyseessä ei olisikaan euklidinen geometria.

Digitaaliaika tai tarkemmin sanottuna laskentaohjelmat antavat mahdollisuuden muunkinlaiseen lähestymistapaan.

Kolmion sivut olkoot $a$, $b$ ja $c$. Kosinilause antaa tällöin kolmion kulmien suuruudet:
\begin{align*}
\alpha &= \arccos\frac{b^2+c^2-a^2}{2bc} \\
\beta  &= \arccos\frac{c^2+a^2-b^2}{2ca} \\
\gamma &= \arccos\frac{a^2+b^2-c^2}{2ab} \\
\end{align*}

Voitaisiinko näiden summa sieventää symbolisen laskennan ohjelmalla siten, että tulokseksi tulisi $\pi$?

Tehtävä on aika haastava enkä usko, että monikaan symbolinen ohjelma selviää siitä. Olen kokeillut vain Mathematicaa, joka ei siitä suoraan selviä. Periaatteessa kyse on siitä, että mikään symbolinen ohjelma tuskin hallitsee kaikkia menettelyjä, joita alykäs (?) ihminen saattaa tulla ajatelleeksi. Mutta symbolinen ohjelma on tehokas työkalu, jolla päästään pitkälle, kun sitä hieman autetaan.

Ei lasketakaan kulmien summaa, vaan summan kosinia. Sievennettävä lauseke on tällöin periaatteessa muotoa
\[
\cos(\arccos(\dots) + \arccos(\dots) + \arccos(\dots)).
\]
Voisi olla luonnollista käyttää kosinin yhteenlaskukaavaa, aluksi ensimmäisen termin ja kahden jälkimmäisen muodostamaan summaan, sitten uudelleen kahden jälkimmäisen muodostaman summan purkamiseen. Tähän tarvitaan lisäksi sinin yhteenlaskukaavaa.

Onneksi hyvissä ohjelmissa on mahdollisuus ohjata sieventämistä käskemällä käyttämään haluttuja kaavoja tai menettelyjä.

Tuloksessa on muotoa $\sin(\arccos(\dots))$ ja $\cos(\arccos(\dots))$ olevia termejä, joissa trigonometriset funktiot ja arcusfunktiot kumoutuvat. Jäljelle jää algebrallinen lauseke muuttujina $a$, $b$ ja $c$. Tällaisten sieventämisessä symboliset ohjelmat ovat yleensä vahvoja, ja tulokseksi saadaan $-1$, siis sivujen pituuksista riippumaton vakio.

Mutta tällöin ollaan perillä: jos kulman kosini on $-1$, niin kulma on $\pi$. Jaksoja vaille tosin, mutta muut mahdollisuudet eivät tule kyseeseen.

Joitakin kysymyksiä herää: Onko tämä pätevä todistus? Jos ei, niin miksi ei? Missä kohden tarvitaan paralleeliaksioomaa? Epäeuklidisessa geometriassahan tulos ei ole $\pi$. Eikö lasku edellytä, että kyseessä todella on kolmio? Kolmiossahan on aina kahden sivun summa suurempi ja erotus pienempi kuin kolmas sivu. Mitä tapahtuu, jos $a$, $b$ ja $c$ eivät täytä tätä ehtoa?

Jätän lukijalle pohdittavaksi. Ja kokeiltavaksi. Myös matematiikka voi olla empiiristä.

Esimerkki osoittaa, että symboliset ohjelmat eivät ole mustia laatikoita, jotka tekevät käyttäjän matemaattiset taidot tarpeettomiksi.  Sieventämisohjeiden antaminen ohjelmalle tuskin onnistuu, ellei käyttäjällä ole näkemystä.

sunnuntai 28. toukokuuta 2017

Suuteleva ympyrä

Ellipsi (sininen) ja sen kaarevuuskeskipisteiden ura (punainen).
Lisäksi yksi suuteleva ympyrä.
Jos kahden käyrällä olevan pisteen kautta asetetaan suora — käyrän sekantti — ja pisteiden annetaan sen jälkeen lähestyä toisiaan, suora muuttuu käyrän tangentiksi. Mitä tapahtuu, jos käyrällä onkin kolme pistettä, jolloin ne ainakin yleensä määräävät ympyrän, ja sitten annetaan pisteiden yhtyä yhdeksi pisteeksi? Miten ympyrä muuttuu?

Kevään 2011 pitkän matematiikan ylioppilastehtävässä 15 on käsitelty vahvasti yksinkertaistettua ongelman erikoistapausta, mutta yleinen tilannekaan ei ole kovin hankala symbolisella ohjelmalla laskettuna.

Yleisessä tapauksessa on luontevinta käyttää käyrälle parametriesitystä: $x = u(t)$, $y = v(t)$, missä $t$ on parametri. Käyrällä olevat kolme pistettä voivat tällöin olla $(u(t-h),v(t-h))$, $(u(t),v(t))$ ja $(u(t+h),v(t+h))$. Pisteiden yhtyminen merkitsee, että $h$ lähestyy nollaa.

Ympyrän yleinen yhtälö on muotoa $(x - a)^2 + (y - b)^2 = r^2$. Kolmen pisteen tulee toteuttaa tämä yhtälö, jolloin saadaan ehdot
\[\left\{
\begin{aligned}
&(u(t-h) - a)^2 + (v(t-h) - b)^2 = r^2\,, \\
&(u(t) - a)^2 + (v(t) - b)^2 = r^2\,, \\
&(u(t+h) - a)^2 + (v(t+h) - b)^2 = r^2\,.
\end{aligned}\right.\] Tämä on yhtälöryhmä, josta voidaan ratkaista $a$, $b$ ja $r$. Tuloksena on yksi ratkaisu, mutta lausekkeet ovat hieman monimutkaisia. Muuttujina ovat $t$ ja $h$.

Tämän jälkeen pitäisi muodostaa raja-arvot, kun $h \to 0$. Symbolisella ohjelmalla tämä on yleensä ongelmatonta, jos kyseessä on tietty käyrä, ts. $u(t)$ ja $v(t)$ ovat tunnettuja funktioita. Ympyrän keskipiste $(a,b)$ ja säde $r$ saadaan tällöin käyräparametrin $t$ funktioina. Kyseessä on parametriarvoa $t$ vastaava käyrän kaarevuusympyrä, jota myös oskuloivaksi ympyräksi kutsutaan (latinan verbistä osculari, suudella). Tämän säde on käyrän kaarevuussäde ja sen käänteisarvo käyrän kaarevuus kyseisessä kohdassa.

Esimerkiksi parametriesitys $u(t) = \cos(t)$, $v(t) = \frac{1}{2}\sin(t)$ esittää ellipsiä. Tällöin saadaan
\begin{align*} r(t) &= \tfrac{1}{8\sqrt{2}}\,(5 - 3\cos(2t))^{3/2}\,, \\a(t) &= \tfrac{3}{4}\cos(t)^3\,, \\b(t) &= -\tfrac{3}{2}\sin(t)^3\,.\end{align*} Funktiot $a(t)$ ja $b(t)$ puolestaan muodostavat erään käyrän parametriesityksen. Tämä on alkuperäisen ellipsin kaarevuuskeskipisteiden ura eli evoluutta. Kuva artikkelin alussa.

Jos $u(t)$ ja $v(t)$ eivät ole tunnettuja funktioita, vaan merkitsevät vain yleisesti käyrän parametriesitystä, ei rajaprosessi $h \to 0$ onnistu symbolisella ohjelmalla. Tällöinkin funktioille $a(t)$, $b(t)$ ja $r(t)$ voidaan kyllä johtaa yleiset lausekkeet, mutta nämä sisältävät funktioiden $u(t)$ ja $v(t)$ derivaattoja. Symbolinen ohjelma ei — aivan oikein — oleta, että esiintyvät tarkemmin määrittelemättömät funktiot olisivat derivoituvia, ja tällöin raja-arvoa ei saada muodostetuksi.

Ohjelmasta riippuen kiertotienä voi olla Taylorin kehitelmän käyttäminen, esimerkiksi
\[u(t+h) = u(t)+ hu'(t) + \tfrac{1}{2}h^2u''(t) + \tfrac{1}{6}h^3u'''(t) + O(h^4).\] Tällöin ohjelmalle annetaan lupa derivaattojen käyttämiseen ja lisäksi helpotetaan raja-arvon laskemista. Tällä tavoin esimerkiksi Mathematica suoriutuu tehtävästä. Tuloksena saadaan hieman monimutkaiset kaavat, joita en tässä toista. Löytyvät yleensä perusoppikirjoista.

Yleensä kaarevuustarkastelut johdetaan oppikirjoissa toisella tavalla. Yhdestä klassikosta, Ernst Lindelöfin kirjasta Differentiali- ja integralilasku ja sen sovellutukset I menettelyn idea kuitenkin löytyy. Aivan ongelmaton ei asia ole. Edellä pisteet valittiin symmetrisesti parametriarvon $t$ eri puolilta. Jätän pohdittavaksi, mitä tapahtuu, jos symmetriaa ei olekaan ja pisteistä kaksi lähestyy kolmatta toisistaan riippumatta.

sunnuntai 12. maaliskuuta 2017

Colosseumin eksentrisyys ja GeoGebra


Jonkin ohjelmiston käyttökelpoisuutta on usein hyvä yrittää testata ongelmalla, jossa todennäköisesti joudutaan ohjelmiston mahdollisuuksien rajoille. Ratkaisu ehkä voidaan löytää, mutta matkalla törmätään ohjelmiston ongelmakohtiin ja rajoituksiin.

Googlelta löytyy hyvä ilmakuva Rooman Colosseumista. Ääriviiva näyttää ellipsiltä. Miten tarkoin se on? Jos se on, niin mikä olisi eksentrisyys?

Kuvan saa vaivatta luetuksi GeoGebraan. Ellipsi tulee määrätyksi, jos tunnetaan viisi pistettä sen kehältä. GeoGebrasta löytyy valmis työkalu, ja naputtelemalla viisi pistettä Colosseumin reunalta saadaan piirretyksi ellipsi, joka hämmästyttävän hyvin yhtyy reunaan. Mitenkähän Colosseumin arkkitehti on rakennelman suunnitellut?

Seuraavassa käsittelen vain kuvassa olevaa ulompaa ellipsiä. Tämän yhtälö $c$ löytyy GeoGebran algebraikkunasta. Yhtälön avulla voidaan hakea ellipsin keskipiste, akselit ja eksentrisyys. Käytössä ovat grafiikka-, algebra- ja CAS-ikkunat. Laskenta voi ehkä olla yksinkertaisempaakin, joten otan mielelläni vastaan kommentteja.

Pohjana on analyyttinen geometria sellaisena kuin sitä aikoinaan yliopistoissa opetettiin. Nykyään ei enää. Referenssinä voi käyttää vanhoja yliopistotason oppikirjoja, joiden uusimmassa päässä on oma kirjani Algebra ja geometria.  En esitä seuraavassa teoriaa enkä perustele yhtälöiden muodostamista.

Geogebratiedosto sekä algebra- ja CAS-ikkunoiden pdf-kuvat löytyvät linkeistä http://www.elisanet.fi/simo.kivela/blg/colosseum.ggb
http://www.elisanet.fi/simo.kivela/blg/colosseumAlg.pdf
http://www.elisanet.fi/simo.kivela/blg/colosseumCAS.pdf

CAS-laskennan riveillä 1--4 on määritetty ellipsin keskipiste. Riveillä 5--6 on muodostettu ellipsin yhtälön toisen asteen osan, neliömuodon matriisi $a$. Riveillä 7--8 määritellyt vektorit ovat probleeman tuntemattomat, jotka tarkoittavat pääakselisuuntia. Näille muodostetaan neljä yhtälöä (rivit 9--12): Ensimmäinen vaatii, että kyseessä ovat liittosäteet. Toisen mukaan näiden tulee olla kohtisuoria, jolloin ne ovat akselisuuntia. Kolmas ja neljäs vaativat, että vektoreiden päätepisteet ovat ellipsin kehällä, kun alkupiste on ellipsin keskipisteessä.

Neljän tuntemattoman ja neljän epälineaarisen yhtälön ryhmän ratkaiseminen onnistuu rivillä 13 ja saadaan kahdeksan ratkaisua. Nämä ovat oleellisesti samoja ja eroavat ainoastaan vektoreiden järjestyksen ja vastakkaisuuden suhteen. Kun akselit tunnetaan, niiden pituudet ja eksentrisyys voidaan laskea (rivit 14--18). Colosseumin ulkokehän eksentrisyys on 0.60.

Ratkaiseminen siis onnistui. Millaisia olivat kokemukset?

Yrityksiä ja erehdyksiä tarvittiin paljon. GeoGebran dokumentaatiosta ei ollut aivan helppoa löytää tarjolla olevia funktioita tai komentoja ja niiden käyttöä tai merkitystä. Muutaman kerran GeoGebra kaatui ja hukkasi kaiken siihen mennessä lasketun. Aloinkin tallettaa tiedoston parin kolmen operaation välein.

Eksentrisyyden laskemisessa tuli yllätys. Laskua varten täytyy tietää, kumpi akseli on iso ja kumpi pieni. Useamman kerran laskettaessa tuli vaihdellen oikea tulos ja kompleksinen arvo. Syynä on, että GeoGebra ilmeisesti laskee ajoittain yhtälöryhmän ratkaisun uudelleen ja tulokset tulevat eri järjestyksessä.  Tämä johtaa ison ja pikku akselin roolien vaihtumiseen. Koodissa siis pitäisi testata, kumpi vektorinpituus on suurempi ennen eksentrisyyden laskemista.  Toisinaan yhtälöryhmälle tuli myös virheellinen ratkaisu.

Kyse on periaatteessa siitä, onko laskentadokumentti dynaaminen ja mikä muutos aiheuttaa sen uudelleen laskemisen. Luontevinta ehkä olisi, että se lasketaan uudelleen vain käyttäjän nimenomaisesta käskystä.

Laskenta on tehty paikallisesti asennetulla GeoGebralla. Verkkoversiossa en saanut yhtälöryhmän ratkaisua onnistumaan.

Luonteva ajatus olisi pakata laskennan vaiheet makroksi, jolla olisi yksi argumentti, nimittäin ellipsi, jota lähdetään tarkastelemaan. Tällöin saataisiin vähällä vaivalla esimerkiksi Colosseumin sisemmän ellipsin eksentrisyys.  GeoGebrassa voidaan tehdä komentoja sisältäviä skriptejä, jotka käynnistetään esimerkiksi painikkeesta. En kuitenkaan löytänyt tapaa antaa näille argumenttia (parametria). Joko se ei ole mahdollista tai dokumentaatio oli minulle liian vaikeaa.

GeoGebra on monessa suhteessa näppärä työkalu, mutta CAS-osio ei ole täysin onnistunut. Yksinkertaiset tehtävät kyllä sujuvat, mutta mahdollisuutta kasvaa sen mukana vaativampiin tehtäviin ei oikein ole. Sääli.

perjantai 3. maaliskuuta 2017

Matematiikan kai pitäisi olla matematiikkaa



Ymmärtämätön CAS-ohjelmistojen käyttö lukiomatematiikassa saattaa uhata matematiikan oppimista. Oheinen GeoGebra-kuvio voisi olla vastaus tehtävään, jossa annetaan yksi taso yhtälön avulla ja toinen kolmen pisteen avulla. Tehtävänä on määrittää toisenkin tason yhtälö ja tasojen välinen kulma.

GeoGebrassa niin kuin monessa muussakin CAS-ohjelmassa on tarjolla valmiita funktioita: Plane (suomeksi Taso) antaa tason yhtälön, kun argumentteina on kolme tason pistettä. Angle (Kulma) antaa tasojen välisen kulman radiaaneissa, kun argumentteina ovat yhtälöiden kertoimista saadut lukukolmikot. Tehtävän ratkaisemiseen riittää tietää, millaisia GeoGebra-funktioita on käytettävissä, niiden sisällä olevasta matematiikasta ei tarvitse tietää mitään. Radiaanit muunnetaan asteiksi maagisen näköisellä tempulla: kirjoitetaan kulman perään $/^\circ$.

Eihän tämä ole matematiikkaa. Kyseessä on erään ohjelman syntaksin ja makrojen opettelu.  Eikä ohjelmaa tarvitse enää missään, kun on valkolakin saanut. No, poikkeuksena matematiikan opettajat.

Yleensä ensimmäinen ajatus tilanteen korjaamiseksi on laatia ylioppilaskoetta varten säännöt, miten ohjelmaa saa tai ei saa käyttää ja millaisia lausumia tai perusteluja koesuoritukseen tulee sisällyttää. Matematiikan tunteja voidaan tietenkin käyttää näiden sääntöjen opetteluun, mutta ei sekään ole matematiikkaa.

Perusongelmana on, että matematiikan osaamista on perinteisesti testattu antamalla laskettavaksi joukko tehtäviä. Jos nämä on saatu edes likimain oikein, on katsottu, että matematiikan osaaminen on tullut näytetyksi. Laskentavälineiden aikakaudella näin ei kuitenkaan ole. Hyvillä ohjelmistoilla on mahdollista saada oikeita tuloksia mitään ymmärtämättä. Tosin myös täysiä päättömyyksiä.

Luontevaa olisi luopua ajatuksesta, että oikein laskettu lasku osoittaa ymmärtämistä.  Kysyttäköön sitä, mitä halutaan testata. Esimerkiksi on selostettava, millaisella algebrallisella menettelyllä saadaan tason yhtälö, kun kolme tason pistettä tunnetaan.  Mukaan itse laadittu esimerkki menettelyn soveltamisesta. Arvostelusta voi tulla vaikeampaa, mutta annetaanhan monissa reaaliaineissakin esseevastauksia.

Ohjelmakoodien kirjoittaminenkin soveltuisi tähän yhteyteen. Koodihan on tapa kuvata laskentamenettely.

Koulumaailmassa eniten käytettyjen CAS-ohjelmien (ei yksin GeoGebran) kehitys on ikävä kyllä edennyt väärään suuntaan. Valmiiden funktioiden, komentojen ja toimintojen määrä on suuri ja kasvaa jatkuvasti, mikä lisää kiusausta keskittyä matematiikan opinnoissa näiden opetteluun sen sijaan, että paneuduttaisiin peruskäsitteisiin ja -toimintoihin. Parempi olisi tyytyä melko harvoihin perustoimintoihin, joiden avulla tulisi itse ohjelmoida pidemmälle meneviä funktioita ja toimintoja. Tällöin opittaisiin asioita, joilla on käyttöä myöhemmässä elämässä.

Ohjelmakoodin kirjoittamisella on lisäksi kasvatuksellinen merkitys. Jos koodi ei toimi, se ei ole oikein. Virhe voi olla pieni, mutta se on korjattava eikä selitettävä tuotosta melkein oikeaksi.

perjantai 16. joulukuuta 2016

Funktioteoreettiset piparit

Joulun kunniaksi esittelen funktioteoreettisen sovelluksen piparimuottien valmistamiseen. Älköön kukaan kuitenkaan ajatelko, että tämä on esimerkki matematiikan soveltamisesta arkielämään tai osoitus matematiikan tarpeellisuudesta.  Jouluhan on sitä paitsi juhla eikä arkea.

Kompleksimuuttujan kompleksiarvoisia funktioita $f:\mathbb{C} \to \mathbb{C}$ voi tutkiskella selvittämällä, millaiseksi käyräksi kuvautuu sopivasti valittu lähtötason käyrä, esimerkiksi suora tai yksikköympyrä.

Funktion
\[
f(z) = \left(z^p + \frac{1}{2z^p}\right)^{1/p}
\]
tapauksessa sopiva käyrä on yksikköympyrä. Luontevinta on, että $p$ on luonnollinen luku, mutta myös puoliluvut $1/2$, $3/2$, $5/2$ jne. kelpaavat. Tuloksena on piparkakkumuottikäyriä:

$2p = 1,\ 2,\ 3,\ 4,\ 5,\ 6,\ 7,\ 8,\ 9,\ 10,\ 200$

Aivan ongelmaton tilanne ei ole, sillä piparkakkumuotin tulee olla umpinainen käyrä, mutta kompleksiluvun vaihekulman eli argumentin antava funktio $\arg$ saa arvonsa väliltä $]-\pi,\pi]$ ja jaksolliseksi laajennettuna sillä on hyppyepäjatkuvuus kohdissa $\pi + 2n\pi$ ($n$ kokonaisluku tavanomaiseen tapaan). Tämä on korjattava jatkuvaksi, jotta saadaan umpinainen piparkakkumuotti.  Saman asian voi tehdä valitsemalla sopiva arvo funktion lausekkeessa olevalle $p$:nnelle juurelle (eli potenssille $1/p$). Kompleksitasossahan $p$:nnellä juurella on $p$ eri suurta arvoa.

Jotkut ratkovat ristisanatehtäviä aikansa kuluksi. Matemaattisemmin orientoituneet henkilöt saattavat olla kiinnostuneita matemaattisen ohjelmakoodin selvittelystä. Tarjoan pohdittavaksi Mathematica-koodin, joka piirtää piparimuotteja. Ongelmana siis on, mitä mikäkin koodirivi tekee.


Vihjeeksi Mathematica-ohjelmiston käyttämän kielen, ns. Wolfram Languagen verkkodokumentti: http://reference.wolfram.com/language/.

Tämän jälkeen voikin ryhtyä tekemään piparkakkumuotteja 3D-tulostuksella.  Minulla itselläni on vanhemmalla tekniikalla tehdyt: peltiä leikkaamalla ja taivuttelemalla.



Lopuksi toivotan kaikille riemullista joulujuhlaa.

torstai 17. marraskuuta 2016

GeoGebra ja CAS

Edellisessä postauksessani kritisoin GeoGebran CAS-osiota. Hieman laajempaa ongelmaa tutkiessani johduin uudelleen ihmettelemään sen piirteitä. Seuraava on mahdollisimman yksinkertainen esimerkki CAS-osion ja dynaamisen geometrian osion välisistä suhteista. (CAS = Computer Algebra System)

En ole hirveän hyvin perehtynyt GeoGebran sielunelämään. Joku viisaampi voi varmaan kommentoida havaintojani.


Lähtökohtana on piirtonäyttöön piirretty origokeskinen yksikköympyrä, suora $y = x$ ja näiden leikkauspisteet $C$ ja $D$. Kaikki muodostettu dynaamisen geometrian työkaluilla.

Objektit löytyvät myös CAS-puolelta: ympyrän ja suoran yhtälöt objektien nimillä, pisteet samoin. Jälkimmäisille on saatu murtolukuesitys tarkkojen arvojen painikkeella (korostettu sinisellä).

Leikkauspisteet voidaan tietenkin myös löytää ratkaisemalla ympyrän ja suoran yhtälöiden muodostama yhtälöpari. Tätä on yritetty rivillä 5, mutta tulos on omituinen. Jos Solve-komentoon sen sijaan kirjoitetaan yhtälöt niiden nimien sijasta, oikeat ratkaisut löytyvät. Ongelmana lienee, minkä nimiä $c$ ja $f$ oikeastaan ovat. Odottaisin, että nimet kelpaavat symbolisessa laskennassa.

Yhtälöpari voidaan ratkaista myös aktivoimalla rivit 1 ja 2 ja painamalla tarkan ratkaisun painiketta. Saadaan rivin 6 oikea tulos. Tämän perusteella voidaan muodostaa pisteet $C1$ ja $D1$ (rivit 7 ja 8). Nämä ilmestyvät myös piirtonäyttöön (kuvassa ne on piilotettu).

Hämäävää on, että leikkauspisteille on saatu kaksi esitystä, molemmat ns. tarkkoja ratkaisuja. Tämän perusteella täytyisi olla
\[
\frac{\sqrt{2}}{2} = \frac{470832}{665857},
\]
 ts. kakkosen neliöjuuri olisi rationaalinen.

Selitys luonnollisesti on, että leikkauspisteet on laskettu kahdella eri algoritmilla, dynaamisen geometrian numeerisella algoritmilla ja CASin symbolisella. Myös edellistä CAS kuitenkin käsittelee tarkkana arvona.

Dynaamisen geometrian idea, kuvion muunneltavuus, toimii kaikkialla: Jos suoraa muutetaan piirtonäytössä pisteitä $A$ ja $B$ siirtelemällä, kaikki CAS-puolen tulokset muuttuvat vastaavasti, myös pisteiden $C1$ ja $D1$ koordinaatit, joihin ilmestyy tilanteen mukaan mutkikkaita juurilausekkeita.  Tämä ei luonnollisestikaan enää päde, jos rivillä 5 syötetään ympyrän ja suoran yhtälöt Solve-komentoon. Niillähän ei tällöin enää ole kytkentää piirtonäytön objekteihin.

Esimerkki tuo esiin CAS-ohjelmien sudenkuopat. Yhtenäisyyden saavuttaminen ei ole helppoa. Ohjelman kehityksen alussa tehdyt valinnat voivat olla esteenä myöhemmin ilmenevien epäjohdonmukaisuuksien korjaamiseen. Tämä ei ole niinkään harvinaista: tie eteenpäin kulkee usein aloittamalla uusi projekti, jossa luodaan uusi ohjelma ja hyödynnetään tehtyjen virheiden antamat opetukset.

Tavallaan GeoGebrakin on tällainen uusi projekti. Aiemmat (Cabri, Cinderella, ...)  eivät käsittääkseni ole yrittäneetkään symbolilaskennan valtausta.