perjantai 27. marraskuuta 2015

Alkeisgeometriaa ja kompleksilukuja

Yksikkösäteisen ympyrän kehälle asetetaan $n$ pistettä tasavälisesti.  Yksi pisteistä yhdistetään kaikkiin muihin, jolloin ympyrään syntyy $n-1$ jännettä. Mikä on näiden jänteiden pituuksien tulo?

Mikko Rahikan GeoGebra-sovelma (appletti) osoitteessa http://tube.geogebra.org/material/simple/id/92564 antaa aiheen arvella, että tulo olisi tasan $n$.

Varsin yksinkertainen geometrinen kuvio ja yksinkertaisen tuntuinen tulos, mutta miten sen voisi todistaa? Ja tietenkin, onko se näin?  Miten Eukleides olisi ongelmaa lähestynyt?

En tunne alkeisgeometrista todistusta, mutta tällainen voisi olla kiinnostava. Toivotan kommentin tervetulleeksi, jos joku lukijoista tuntee tai löytää todistuksen.

Kompleksiluvut tuovat usein mahdollisuuden todistaa geometrisia tuloksia, mutta aivan alkeellisina todistuksia ei voida pitää.  Ainakaan ne eivät olisi onnistuneet antiikin kreikkalaisille.  Tässäkin tapauksessa kompleksiluvuista on iloa:

Sijoitetaan ympyrä koordinaatistoon siten, että sen keskipiste on origossa ja erikoisasemassa oleva piste on $z_0 = (1,0)$ tai kompleksiluvuksi ajateltuna $z_0 = 1$. Muut pisteet ovat tällöin
\[
z_k = \cos(2k\pi/n) + i\sin(2k\pi/n), \quad k = 1,2,\dots,n-1.
\]
Jänteiden pituudet ovat $|z_k - z_0| = |1 - z_k|$, $k = 1,2,\dots,n-1$, ja näiden tulo
\[
\prod_{k=1}^{n-1}|1 - z_k| = \left|\prod_{k=1}^{n-1}(1 - z_k)\right|.
\]

Ympyrän kehällä olevat pisteet ovat luvun $1$ $n$:nnen juuren kaikki kompleksiset arvot, ts. polynomiyhtälön $z^n - 1 = 0$ ratkaisut.  Tällöin polynomi voidaan kirjoittaa muotoon
\[
z^n - 1 = (z - z_0)(z - z_1)\dots(z - z_{n-1}) = \prod_{k=0}^{n-1}(z - z_k).
\]
Jakamalla tekijällä $z - z_0$ ($= z - 1$) saadaan
\[
\frac{z^n - 1}{z - 1} = \prod_{k=1}^{n-1}(z - z_k).
\]
Vasen puoli voidaan tulkita geometriseksi summaksi, kun $z \neq 1$:
\[
\frac{z^n - 1}{z - 1} = 1 + z + z^2 + \dots + z^{n-1}.
\]
Tällöin
\[
\prod_{k=1}^{n-1}(z - z_k) = 1 + z + z^2 + \dots + z^{n-1}
\]
aina kun $z \neq 1$. Koska yhtälön kummallakin puolella on raja-arvo, kun $z \to 1$, täytyy raja-arvojenkin olla yhtä suuret. Siis
\[
\prod_{k=1}^{n-1}(1 - z_k) = n
\]
ja väite on saatu todistetuksi.

lauantai 21. marraskuuta 2015

Mitä symbolilaskentaohjelmalta voi odottaa ja mitä ei?


Matematiikan opiskelussa on alettu käyttää symbolisia laskentaohjelmia.  Näiden käyttö ei kuitenkaan ole aina sitä, mitä äkkiseltään voisi odottaa.  Ohjelman antamat tulokset voivat näyttää yllättäviltä, jopa vääriltä verrattuna matematiikassa totuttuun. Onkin syytä ajatella, että ohjelma elää omaa elämäänsä, vaikka sillä toki onkin läheinen suhde matematiikkaan.

Symbolisella laskennalla on ohjelmoinnin luonne, ja tämän takia olisi parempi käyttää laskennan syötteissä ohjelmointikielen tyyppisiä komentoja ja funktioita traditionaalisen matemaattisen notaation sijasta, vaikka aloituskynnyksestä ehkä tuleekin korkeampi. Matematiikan notaatio ei myöskään ole yksikäsitteistä, vaan tarvitsee asiaa ymmärtävän ihmisen tulkintaa.  Esimerkiksi $a(b+c)$ saattaa tarkoittaa summan $b+c$ kertomista luvulla $a$ tai funktion $a$ arvoa argumenttina $b+c$.

Paitsi että syötteiden ajatteleminen ohjelmointikielenä korostaa matematiikan ja ohjelmalla tehdyn laskennan eroa, se myös auttaa eteenpäin: yksinkertaiset syötteet on helpompaa oppia laajentamaan usean komennon jonoiksi, ts. pieniksi ohjelmiksi. Ainakin jos ohjelmoinnin perusidea on tuttu.

Esitän seuraavassa joitakin esimerkkejä hieman yllättävistä tilanteista.  Nämä on laskettu Mathematicalla; pdf-muotoinen laskentadokumentti löytyy osoitteesta http://www.elisanet.fi/simo.kivela/blg/SymbLask.pdf .  Eri ohjelmat ovat erilaisia. Ilmiö, joka esiintyy yhdessä, ei ehkä esiinny toisessa. Kaikissa kuitenkin on jotakin yllättävää, mikä on osoitus symbolisen laskennan vaikeudesta: tuskin mikään algoritmi on täydellinen. Kyse voi myös olla tasapainoilusta täydellisyyden ja kohtuullisen laskenta-ajan välillä.

Jos joku on kiinnostunut ratkaisemaan samat esimerkit jollakin muulla ohjelmalla, julkaisen dokumentin mielelläni.

Neljännen asteen yhtälö

Jos yhtälöstä $ax^4 + bx^3 + cx^2 + dx + e = 0$ ratkaistaan $x$ symbolisella ohjelmalla, saadaan periaatteessa neljännen asteen yhtälön ratkaisukaavat.  Kertoimille voidaan sijoittaa numeeriset arvot joko yhtälöön tai ratkaisukaavoihin. Edellisessä tapauksessa ratkaisualgoritmia sovelletaan numerokertoimiseen yhtälöön, jälkimmäisessä vain sijoitetaan arvot valmiisiin lausekkeisiin.

Tulosten tietenkin pitäisi olla samat. Useimmiten näin toki onkin, mutta toisinkin voi käydä: Jos $a = 1$, $b = c = d = 0$ ja $e = -1$ ja nämä sijoitetaan yhtälöön, on ratkaistavana yhtälö $x^4 - 1 = 0$. Mathematica antaa oikean tuloksen $\pm 1$, $\pm i$. Ratkaisukaavoihin sijoittamalla saadaan neljään kertaan Indeterminate. Jos kertoimen $b$ arvoa hieman muutetaan, $b = 1/1000000$, molemmat tavat antavat saman oikean tuloksen.

Oikeastaan tilanne ei ole kovin kummallinen: eivät toisen asteen yhtälön ratkaisukaavatkaan toimi, jos $a = 0$.

Yliharmoninen sarja

Sarja $\displaystyle\sum_{n=1}^{\infty}\frac{1}{n^s}$ suppenee, jos $s > 1$ (jos kompleksiset arvot sallitaan, niin tulee olla $\mathrm{re}(s) > 1$).

Mikäli symbolinen ohjelma yleensä pystyy laskemaan sarjan summan, se saattaa antaa tulokseksi zeta(s). Kyseessä on Riemannin $\zeta$-funktio. Tapauksessa $s = 2$, on $\zeta(2) = \dfrac{\pi^2}{6}$, mikä on oikea sarjan summa. Tapauksessa $s = -1$ saataisiin sarjan summaksi $\zeta(-1) = -\dfrac{1}{12}$, jolloin siis luonnollisten lukujen summa olisi $1 + 2 + 3 + 4 + \dots = -\dfrac{1}{12}$.

Toimintoa on pidettävä virheellisenä. Summaan zeta(s) tulisi liittyä rajoitus $\mathrm{re}(s) > 1$. Riemannin $\zeta$-funktio on nimittäin näillä arvoilla määriteltävissä sarjan summana, mutta vaikka se muilla keinoilla voidaankin määritellä myös negatiivisella puolella, harmonistyyppisestä sarjasta sitä ei saada.

Syynä omituiseen summaukseen saattaa olla, että symbolisissa ohjelmissa usein esitetään tulos ns. yleisessä tapauksessa jättäen poikkeukselliset arvot huomiotta.  Tässä tapauksessa poikkeusarvoja on kuitenkin paljon.

Itseisarvoyhtälö

Yhtälön $|z - a| = |z - b|$ ratkaisuksi usein saadaan $z = \frac{1}{2}(a + b)$, mikä on tietenkin oikea tulos, mutta ei kata tapausta $a = b$. Tulos ei ole riittävä myöskään kompleksialueella, missä jokainen pisteitä $a$ ja $b$ yhdistävän janan keskinormaalin piste on ratkaisu.

Symbolisessa ohjelmassa saattaa olla yhtälön ratkaisemiseen tarkoitetun solve-funktion lisäksi jokin muu funktio tilanteen tarkempaa analyysia varten. Tämän avulla ehkä saadaan myös kompleksialueella pätevä ratkaisu, joka kuitenkin voi olla monimutkainen eikä kovinkaan helposti hahmotettavissa.

Trigonometrinen yhtälö

Yhtälöllä $\sin(x) = \sin(x + \frac{\pi}{5})$ on yksinkertainen ratkaisu $x = \frac{2\pi}{5} + n\pi$, mikä on käsinlaskulla helposti löydettävissä. Symbolinen ohjelma saattaa kuitenkin antaa monimutkaisempaa:
\[
x = \arctan\left(\frac{\sqrt{2(5 - \sqrt{5})}}{3 - \sqrt{5}}\right) + 2n\pi,
\quad
x = \arctan\left(\frac{\sqrt{2(5 - \sqrt{5})}}{3 - \sqrt{5}}\right) - \pi + 2n\pi.
\] Tulos on sinänsä oikea. Jos ohjelma pystyy sieventämään sen, päästään samaan kuin käsinlaskulla.

Miksi sitten näin monimutkaista? Yhtälön ratkaisualgoritmi varautuu paljon hankalampiinkin yhtälöihin eikä siten aina löydä optimaalista ratkaisutapaa. Hyvä ohje onkin yrittää sieventää, jos lauseke näyttää kovin mutkikkaalta. Tämä tosin voi johtaa huomattavan kauan kestävään laskentaan, mahdollisesti päättymättömään. Käyttäjän on syytä tietää, millä loputon laskenta voidaan katkaista.

torstai 5. marraskuuta 2015

Geometrista todistamista vai koodaamista

Olen eläkepäivinäni ryhtynyt opiskelemaan latinaa ja siten paikkaamaan sivistyksessäni ammottavaa aukkoa. Viime tunnilla minulla oli esitelmä — toki suomeksi — jonka aiheeksi valitsin Eukleideen Elementan. Alunperinhän se on kirjoitettu kreikaksi, mutta geometriaa on opetettu sen pohjalta vuosisatojen kuluessa käyttäen latinaksi kirjoitettuja kirjoja. Näitä pääsee nykyään myös helposti lukemaan: skannattuja verkkodokumentteja on paljon.


Vuonna 1620 Duacumissa (nykyään Douai Pohjois-Ranskassa) ilmestyneen jesuiitta Carolus Malapertiuksen kirjan nimilehdellä luvataan pyrkiä helpompaan omaksumiseen oheisen kuvan mukaisesti.  Ja sitten aloitetaan pudottamalla määritelmät opiskelijan ihmeteltäviksi (toinen kuva). Jäin miettimään, mitä tästä on aikakauden opiskelija mahtanut saada irti. Ehkä hän on lähinnä opetellut tekstit ulkoa. Eikä tästä kauhean paljon poikennut sekään geometrian opetus, jota itse nautin 50-luvulla, paitsi että kirja oli suomeksi.

Ulkoa opittu tieto on silti saattanut vähitellen kypsyä ymmärrykseksi ainakin osalla opiskelijoista. Tässä tietenkin on geometrian opetuksen idea: johdatus deduktiiviseen päättelyyn ja logiikkaan. Mistään välittömästi hyödynnettävästä työelämätaidosta ei koskaan ollut kyse. Poikkeuksena ehkä matematiikan opettajat.

Euklidisen geometrian opetus koulussa on jäänyt historiaan. Jotakin johdonmukaiseen ajatteluun ja logiikkaan johdattavaa kuitenkin kaivataan. Todistamisen opettaminen differentiaali- ja integraalilaskennan yhteydessä ei oikein toimi: joko tilanteet ovat opiskelijan näkökulmasta niin yksinkertaisia, että todistamiseen ei ole tarvetta, tai sitten olisi sukellettava niin syvälle reaalilukujen ja analyysin perusteisiin, että se ei lukiossa ole perusteltua. Mitä siis tilalle?

Uusissa opetussuunitelmissa tarjotaan ns. koodaamista. Puhuisin kuitenkin mieluummin ohjelmoinnista. Nimitys koodaaminen painottaa minusta liiaksi oikeaa syntaksia perusidean sijasta. Tietenkin syntaksi on tärkeätä, jos halutaan saada jotakin toimivaa, mutta sen oppiminen ei ole varsinainen tavoite. Ei tarkoitus ole opettaa työelämässä hyödynnettävää taitoa puhumattakaan peliteollisuuden edistämisestä. Tavoitteena on oppia kuvaamaan jokin rakenne johdonmukaisella tavalla ja ottamaan kokonaisuus hallintaan. Logiikan alkeet tulevat siinä sivussa. Yksinkertainen jakolaskuesimerkki alla.


Tällä tavoin ymmärrettynä koodaamisen tavoitteet rinnastuvat geometriseen päättelyyn tavalla, joka sopii tietotekniikkaa hyödyntävään maailmaan.  Opettajanakin tietokone on lahjomaton: jos koodi ei toimi, virhe on etsittävä ja korjattava.

Edellytyksenä on kuitenkin, että opetuksen varsinaista tavoitetta ei unohdeta.  Kyse on tietoteknisen aikakauden yleissivistyksestä, ei työelämävalmennuksesta eikä muutaman vuoden kuluttua unholaan siirtyvän syntaksin opettelusta.