lauantai 30. maaliskuuta 2024

Vaihtoehtoisia ratkaisutapoja: algebra, geometria, tietokone

Tammikuun blogissani (11.1.2024) esittelin American Mathematical Societyn seinäkalenteria ja muun ohella joulukuun 30. päivän geometrista tehtävää. Tässä oli annettuna neliö alaltaan 60 yksikköä ja annetulla geometrisella konstruktiolla muodostettiin neliö, jonka ala piti määrittää. Tehtävän teki tavallisuudesta hieman poikkeavaksi 60 yksikön neliön asento, jota ei kiinnitetty, vaan sitä voitiin kiertää vapaasti nurkkapisteensä ympäri.


Kalenterin tehtävien vastauksena on (useimmiten) kyseisen päivän numero, tässä siis 30. Ongelmana varsinaisesti on, miten tulos voidaan laskea tai päätellä, ja mitä erilaisia vaihtoehtoja tähän on. En tuolloin ryhtynyt itse miettimään asiaa. Myöhemmin kokeilin, miten GeoGebra taipuu ongelman käsittelyyn, ja hyvinhän se onnistui: lähtökohtana olevaa neliötä saattoi kiertää, ja kysytty ala oli aina 30 yksikköä. Neliön kokoa saattoi myös suurentaa, ja pinta-alojen suhde oli aina 2.

Tehtävän saattoi siis ratkaista GeoGebralla. Voidaan tietenkin keskustella siitä, onko tämä hyväksyttävä tapa, koska ratkaisu on tehty tietokoneella, joka vieläpä on laskenut asiat numeerisesti. Tietokoneen voi kuitenkin panna laskemaan laskut symbolisesti ja ns. tarkoilla arvoilla, jolloin päättelystä tulee periaatteessa pätevä. Kyse onkin siitä, mihin kaikkeen tietokonetta saa matematiikassa käyttää. Opetuksellisista tai muista syistä eri yhteyksissä voi olla erilaisia vaatimuksia. 

Käsin laskettaessa tarvittava algebra on aika yksinkertaista. Jos piste $O$ on origo, pisteen $B'$ koordinaatit ovat $(z,z)$, vihreän lähtökohtaneliön sivun pituus on $s$ ja kiertokulma $t$, niin pisteen $A'$ koordinaatit ovat \[(z + s\cos(t), z + s\sin(t)).\] Punaisen neliön keskipisteen $K$ koordinaatit ovat puolet näistä. Nämä ovat myös vektorin $\vec{OK}$ komponentit ja vektorin $\vec{KA}$ komponentit saadaan vaihtamalla järjestys ja jälkimmäisen merkki. Pisteen $A$ koordinaatit saadaan vektorisummasta $\vec{OK} + \vec{KA}$: \[(z + s(\cos(t)+\sin(t))/2,-s(\cos(t)-\sin(t))/2).\] Jäljellä on saadun pisteen $A$ ja pisteen $B = (z,0)$ etäisyyden laskeminen. Sievennyksen jälkeen tulokseksi tulee $s/\sqrt{2}$.

Tehtävä on kuitenkin tyypiltään sellainen, että sen luontevin ratkaisu ainakin vielä puoli vuosisataa sitten olisi ollut puhtaan geometrinen. Jukka Liukkonen kommentoi minulle sähköpostissa ratkaisua tästä näkökulmasta. Edellä oleva kuvio (johon olen lisännyt pisteen $K$) on hänen käsialaansa. Oleellista tällaisissa geometrisissa ratkaisuissa usein on sopivan apupiirroksen löytäminen. Tässä tapauksessa apupiirroksen muodostavat mustalla viivalla piirretyt kolmiot $OA'B'$ ja $OAB$. Näissä kulmat $A'OB'$ ja $AOB$ ovat yhtä suuret, koska niiden vasempien kylkien välinen kulma on $45^\circ$ neliön sivun ja lävistäjän välisenä kulmana, ja sama koskee oikeiden kylkien välistä kulmaa. Sivujen $OA'$ ja $OA$ välinen suhde on $\sqrt{2}$ neliön lävistäjän ja sivun suhteena. Sama koskee sivuja $OB'$ ja $OB$. Tällöin kolmiot ovat yhdenmuotoiset ja kolmansien sivujen $A'B'$ ja $AB$ suhde on myös $\sqrt{2}$.

Tehtävän ratkaisemiseen on siis tarjolla kolme eri tapaa: ohjelmiston käyttö, algebra (lausekkeiden manipulointi) ja geometria (Eukleideen tapaan). Mikä näistä on paras?

Olen joskus esittänyt, että koulumatematiikan tavoitteet pitäisi pohtia uudelleen. Sen jälkeen harkita sisällöt ja luoda esitystavalle johdonmukainen punainen lanka. Matematiikka on kumulatiivista eikä detaljikokoelma. Edellä esitetyt ratkaisuvaihtoehdot nostavat esiin erilaiset vaihtoehdot tavoitteiden asettelussa. Oleellista ei ole miettiä parasta vaan sitä, millaisesta näkökulmasta matematiikka halutaan esittää.

Ohjelmiston käyttö painottaa ennen kaikkea tietotekniikan käyttöä. Yleinen kyky tulla toimeen erilaisten ohjelmistojen kanssa onkin epäilemättä hyödyksi riippumatta siitä, onko kyseessä edes matematiikka. On opittava jotakin yleisempää kuin tietyn ohjelmiston tietyt yksityiskohdat. Matematiikkaohjelmistot antavat myös mahdollisuuden tarkastella matemaattisia ongelmia eri näkökulmista ja luoda erilaisia havainnollistuksia. Oleellista on tutkivan asenteen syntyminen. Ohjelmiston pintapuolinen käyttö — kuten esimerkissä — ei kuitenkaan paljoa opeta. Kyseessä ei oikeastaan ole matematiikka lainkaan, eikä yleisempää näkemystäkään synny.

Algebrallinen näkökulma painottaa matematiikan työkaluluonnetta. Tavoitteena on oppia algoritmeja ja menettelyjä ongelmien ratkaisemiseen. Huonoimmillaan tämä tarkoittaa standarditehtäviin keskittymistä ja niiden ulkoa opettelua, parhaimmillaan työkalupakin muodostamista ja kykyä poimia sieltä eri yhteyksiin ehkä sopivia työkaluja. Näihin kuuluu myös laskentaohjelmien käyttö ja ohjelmointi. Edellytyksenä on tieto lukuisista asioista, ymmärrys erilaisista lausekkeista ja kyky niiden käsittelyyn. Todelliset reaalimaailman tehtävät ovat yleensä laajoja ja vaikeita. Tyytyminen yksinkertaistettuihin versioihin kuitenkin johtaa herkästi kieroutuneeseen näkökulmaan: triviaalit tehtävät, mutta monipuoliset työkalut, joiden luonnetta ei opita ymmärtämään.

Euklidisen geometrian perusidea on johtaa päättelyllä geometrisia tuloksia lähtemällä yksinkertaisista perusoletuksista. Matemaattisen päättelyn idea painottuu. Ongelmat ovat avoimia: on mietittävä, mitä kaikkea on tarjolla ja mitä siitä voisi seurata. Tarvitaan jonkinlaista luovaa ajattelua enemmän kuin algebrallisessa työkalupakissa. Avoimuus tekee myös lähestymistavasta vaikean: Deduktiivisen päättelyn idea ei välttämättä aukea. Ei aina ole myöskään helppoa keksiä rakennetta tai kuviota, joka laukaisee ongelman. Toisaalta tietty määrä geometristen kuvioiden alkeisominaisuuksia kuulunee yleissivistykseen. Asioita voi havainnollistaa sopivalla piirtelyohjelmalla.

Edellä esitetty tehtävä tarjoaa yhden esimerkin näkökulman pohdiskeluun. Itse asiassa kaikkia näkökulmia tarvitaan, mutta minkä ajatuksen varaan matematiikan opetus kannattaisi rakentaa? Vielä puoli vuosisataa sitten geometrialla oli merkittävä osuus. Miten nyt?

 

torstai 22. helmikuuta 2024

Koulumatematiikka ja alkeellinen ohjelmointi

Lukion opetussuunnitelman mukaan opiskelijan tulisi paljon muun ohella kehittyä hyödyntämään tietokoneohjelmistoja. Tarkemmin ei täsmennetä, mitä tämä oikeastaan tarkoittaa. Todetaan vain tavoitteeksi, että opiskelija osaa käyttä ohjelmistoja kunkin kurssin matemaattisissa tehtävissä. Huippuna on oppia ohjelmoimaan yksinkertaisia algoritmeja. Käytännössä tämä lienee johtanut melko triviaalien asioiden katsomiseen laskimista tai ohjelmistoista ja tutustumiseen muutamiin ohjelmistoihin, joita tuskin myöhemmissä opinnoissa tai elämässä yleensäkään tullaan käyttämään.

Kuitenkin matematiikka voisi tarjota ympäristön, jossa olisi luontevaa oppia ymmärtämään ohjelmoinnin idea. Tällä puolestaan on merkitystä tietotekniikkaa vahvasti hyödyntävässä yhteiskunnassa myös ihmiselle, joka ei koskaan tulisi ohjelmoimaan yhtään mitään. Jonkinlaisena ohjelmoinnin synonyymina usein käytetään koodausta, mutta tämä johtaa minusta harhaan. Kyse ei ole siitä, että pitäisi oppia kirjoittamaan tietyn syntaksin mukaista koodia, vaan periaatteen ymmärtämisestä. Toki mikä tahansa ohjelmointi edellyttää oikeaa syntaksia, mutta tätä ei ole syytä painottaa välttämättömyyttä enempää. 

Mitä tällainen ohjelmointi sitten voisi olla? Viime syksyn pitkän matematiikan ylioppilaskokeen neljäs tehtävä muodostaa hyvän lähtökohdan pohdiskeluille:

Vektorit $\vec{u} = 3\vec{i}+\vec{j}-2\vec{k}$ ja $\vec{v} = \vec{i}+2\vec{j}-2\vec{k}$ virittävät origon kautta kulkevan tason $T$, eli ne ovat tason suuntavektoreita. Määritä pisteen $(6,7,1)$ etäisyys tasosta $T$.

Tämä on kokeen A-osan tehtävä ja sellaisena tarkoitettu ratkaistavaksi varsin perinteiseen tapaan. Se on kuitenkin tehtävä, jonka ratkaiseminen symbolista laskentaa (CAS) hyödyntäen olisi matematiikan oppimisen kannalta perusteltua. Tällöin numeeriset laskut jäävät toissijaisiksi (toisin sanoen ohjelman tehtäviksi), mutta laskija joutuu miettimään algoritminsa rakenteen. Oleellista on, että tehtävän oliot (vektorit, pisteet jne.) esitetään symboleilla, joilla niihin algoritmissa viitataan. Ratkaisu GeoGebralla voisi näyttää seuraavalta (kuvan saa suurennetuksi klikkaamalla):


Tällaisena ratkaisu on oikeastaan ohjelmakoodi. Vaihtamalla tason virittäjävektorit ja tarkasteltava piste saadaan samantien tehtävä ratkaistuksi toisenlaisilla lähtötiedoilla. Näiden komponentit voivat jopa olla symboleja, jolloin tulos on jo aika pahannäköinen algebrallinen lauseke. Ohjelman syöttötietoina ovat siten vektorit $\vec{u}$ ja $\vec{v}$ sekä piste $P$, tuloksena saadaan pisteen etäisyys tasosta.


Luontevaa olisi tällöin kirjoittaa ohjelma erilliseksi tiedostoksi tai muodostaa siitä muusta laskennasta riippumaton itsenäinen funktio. Funktion määrittely näyttäisi periaatteessa seuraavalta:

etaisyys(u,v,p) = function{
q := r*u+s*v;
yhtalo := {dot(p-q,u)=0, dot(p-q,v)=0};
ratkaisu := solve(yhtalo,{r,s});
q1 := substitute(q,ratkaisu);
sqrt(dot(p-q1,p-q1))
}

(Olen siirtynyt englanninkielisiin termeihin, kuten ohjelmakoodissa on luontevaa.)

Käsittääkseni GeoGebra ei tue tämänkaltaista funktioiden määrittelyä eikä edellä oleva koodi ole minkään todellisen ohjelmointikielen mukaista. Riippuen ohjelmointikielen tavasta esittää vektorit funktion kutsu voisi olla edellä mainitun esimerkin tapauksessa

etaisyys((3,1,-2),(1,2,-2),(6,7,1))
tai vain
etaisyys(vec1,vec2,pst)
mikäli lähtötiedot on talletettu näihin symboleihin. Tuloksena saadaan kysytty etäisyys.

Valmiiksi ohjelmoitu funktio avaa tien monimutkaisempien tehtävien yksinkertaiseen ratkaisemiseen. Jos esimerkiksi pitäisi etsiä pisteen $(1,2,3)$ kautta kulkevalta vektorin $3\vec{i}-2\vec{j}+6\vec{k}$ suuntaiselta suoralta $s$ pisteet, jotka ovat etäisyydellä $2$ vektoreiden $\vec{u}$ ja $\vec{v}$ määräämästä tasosta, nämä saadaan muodostamalla ensin suoralla olevat pisteet parametrin $t$ funktiona ja ratkaisemalla sitten kyseeseen tulevat parametriarvot etäisyysfunktion avulla muodostetusta yhtälöstä:

suora := (1,2,3)+t*(3,-2,6)
solve(etaisyys(vec1,vec2,suora)=2, t)

Tämä antaa ratkaisuksi kaksi arvoa parametrille $t$ ja näiden avulla voidaan laskea kyseiset suoran pisteet.

Tällainen funktion määrittely voisi olla ensimmäinen askel ohjelmoinnin opetteluun. Kyseessä olisi luonnollinen osa matematiikan opiskelua. Tarpeen mukaan ohjelmointirakenteita voitaisiin ottaa käyttöön lisää painottamatta asiaa varsinaiseksi ohjelmointikielen syntaksin opetteluksi. Ohjelmoinnin kannalta tavoitteena olisi periaatteen ymmärtäminen, ei koodariksi opiskelu.

Matematiikan kannalta painottuisi kokonaisnäkemys tehtävän ratkaisemisen strategiasta laskun yksityiskohtiin keskittymisen sijasta. Tällaiseen työskentelyyn olisi yleensäkin hyvä oppia, ei yksinomaan matematiikassa. Se ehkä vastaisi myös paremmin opetussuunnitelman tavoitetta "kehittää laskemisen, luovan ajattelun sekä ilmiöiden mallintamisen, ennustamisen ja ongelmien ratkaisemisen taitoja".

Oleellinen edellytys on, että käytössä on laskentaohjelma, joka tukee edellä kuvattua menettelyä. En tarkoin tiedä, mikä tilanne on tavallisimmissa CAS-ohjelmissa. Jos GeoGebra ei tue, niin voisiko sitä kehittää?

Isot symbolilaskennan ohjelmistot kyllä tukevat menettelyä, mutta niiden koulukäyttö ei monestakaan syystä ole järkevää. Lopuksi esimerkki edellä olevista laskuista Mathematicalla suoritettuina.



torstai 11. tammikuuta 2024

Matemaattinen seinäkalenteri



American Mathematical Society (AMS) julkaisee vuosittain matemaattisen seinäkalenterin. Kiinnostuin ja tilasin, tuli kolmessa viikossa. EU:n ulkopuolelta tuleva lähetys piti tullata, mikä sujui kohtuullisen vaivattomasti netissä. Kulut: luottokortilla Amerikkaan 25 euroa (kalenteri ja postikulut), kotimaiselle postille ja tullille lisäksi 9 euroa.

Mitä sitten sain? Seinäkalenterin, jonka kuvat ovat upeita fraktaalikuvioita ja jossa on muutoin tavanomaiset kuukausilehdet, mutta jokaiselle päivälle on matemaattinen probleema. Tämän vastaus on tiedossa: se on kyseisen päivän numero. Tarkoitus ei siten ole vastauksen etsiminen, vaan sen pohdiskelu, miten tulokseen päästään tai mistä yleensä on kyse. Itse asiassa sain kaksi seinäkalenteria, vuosien 2023 ja 2024. Edellinen kaupanpäällisenä, koska niitä vielä oli jäljellä.


Millaisia päivittäiset ongelmat sitten ovat? Skaala ulottuu yksinkertaisesta aritmetiikasta suunnilleen ensimmäisen yliopistovuoden matematiikan opintojen tasolle. Usein ongelmassa on jokin hieman yllättävä piirre, joka tuottaa ahaa-elämyksen: tällainenkin riippuvuus on, näinkin voi asiaa katsoa. Muutaman kerran olen törmännyt minulle ennestään tuntemattomaan käsitteeseen, ja lisäopiskelua on tarvittu. Googlesta on yleensä apua. Tekijät sanovatkin esipuheessa, että ideana on myös ollut tutustuttaa ennestään todennäköisesti tuntemattomiin asioihin.

Esimerkiksi tammikuun toisena päivänä tarjolla oli lauseke \[\left(\sum_{k=1}^{\infty}\frac{1}{(2n-1)(2n+1)}\right)^{-1}.\] Tämän arvo siis tietenkin on 2, mistä voi varmistua vaikkapa syöttämällä sen laskentaohjelmalle. Sarjan summeeraamista voi kuitenkin pohtia, eikä se kovin vaikeata käsin laskijallekaan ole.

Joulukuun 30. päivän tehtävä oli geometrinen:

Sinisen neliön ala on siis ilmeisesti 30, mutta missä asennossa neliöt oikein ovat ja miten tämän laskisi. Kuvio on helppoa piirrellä GeoGebraan siten, että neliöiden asentoa voi muuttaa, ja todellakin näyttää siltä, että neliöiden asennolla ei ole vaikutusta tulokseen. Sen voi tietenkin laskea analyyttisen geometrian tempuilla, mutta näkisikö sen jotenkin elegantimmin? En ole jäänyt pohtimaan.

Tammikuun 7. päivänä kysyttiin 'How many frieze patterns are there?' Ilmeisesti siis seitsemän kappaletta, mutta mitä ne ovat? Google löytää aiheesta useita viitteitä, vaikkapa Wikipediaan tai Virginia Commonwealth Universityn kurssimateriaaliin.

Joillakin ongelmilla on kompatehtävän luonne, esimerkiksi 'Half of the oddiest prime' kuluvan vuoden huhtikuun ensimmäisenä päivänä. Ehkäpä kakkonen sitten on parillisena oudoin alkuluku. Hämäräksi minulle on jäänyt viime marraskuun 23. päivän tehtävä:

Olisiko Thanksgiving Day jonkinlainen avain ongelmaan vai mistä on kyse? Jos jollakulla lukijalla on idea, niin kertokaa.

Tällainen kalenteri on erinomainen virittelemään kiinnostusta ja harrastusta matematiikkaan. Kun vastaukset kerran tiedetään, ei ole paineita tehtävien ratkaisemiseen. Voi rauhassa ihmetellä ja mietiskellä. Ei ole myöskään ylioppilaskokeeseen valmentautumisen henkeä, vaikka toki voi olla hyödyksi siinäkin. Tekisikö joku vastaavan kotimaisen? Tai hankkisi lisenssin, jos ei oma into riitä.


sunnuntai 17. joulukuuta 2023

Littlewoodin joulukranssi



Joulukoristeeksi sopii varmaankin yllä olevan kuvion mukainen kranssi. Ajattelin kutsua tätä englantilaisen matemaatikon John Edensor Littlewoodin  mukaan Littlewoodin kranssiksi. Toivon, että hänellä ei ole mitään nimitystä vastaan.

Kranssin vihreä osa esittää astetta 14 olevien Littlewoodin polynomien nollakohtia kompleksitasossa. Littlewoodin polynomi taas on polynomi, jonka kaikki kertoimet ovat lukuja $+1$ ja $-1$. Astetta 14 olevia polynomeja on tällöin rajallinen määrä, $2^{15} = 32768$ kappaletta, joten kaikkien nollakohdat on mahdollista laskea. Aivan kaikkia näitäkään ei tarvitse laskea, koska polynomin nollakohdat eivät muutu, kun se kerrotaan luvulla $-1$. Puolet voidaan siis jättää pois, ja riittää hakea $16384$ polynomin nollakohdat.

Laskin kuvion Mathematica-ohjelmistolla kotikoneessani. Aikaa meni vajaa minuutti. Ei siis mikään raskas laskentatyö, vaikka käsin laskettaessa aikaa epäilemättä hieman enemmän meneekin. Alla on hiomaton Mathematica-koodi. Tässä ei edes ole otettu huomioon polynomien määrän puolittamista. Varsin vähäisellä vaivalla voi tehdä matemaattisia kokeiluja tai leikittelyjä.





Polynomin asteluvun noustessa nollakohtien määrä kasvaa nopeasti ja niiden muodostama rengas tihenee. Nollakohdat pysyvät kuitenkin rajatulla alueella. Voidaan osoittaa, että kaikkien eriasteisten Littlewoodin polynomien nollakohtien joukko $D$ sijaitsee renkaassa $\{\frac{1}{2} < |z| < 2\}$. Rengas $\{2^{-1/4} < |z| < 2^{1/4}\}$ puolestaan sisältyy nollakohtien joukon sulkeumaan $\overline{D}$. Alla 10. asteen polynomista syntyvä kuvio.




Erilaisten kuvioiden muodostamista voidaan tietenkin jatkaa valitsemalla polynomien kertoimet jollakin muulla vastaavalla tavalla. Alla olevat kuviot syntyvät 12. asteen polynomista, jonka kertoimina ovat luvut $0$ ja $1$ (vasen kuvio) tai $i$ ja $1$ (oikea kuvio).

  



Toivotan lukijoille rauhallista joulua!

keskiviikko 29. marraskuuta 2023

MatTa-sivusto


Aikaa eläkkeelle jäämisestäni on ehtinyt kulua seitsemäntoista vuotta. Viimeiset varsinaiset vuoteni työelämässä kuluivat matematiikan alan digitaalisten opiskelumateriaalien kehittelyssä Teknillisessä korkeakoulussa, Aalto-yliopiston edeltäjässä. Tuotokset julkaistiin verkossa osoitteessa http://matta.hut.fi. Projektin nimenä oli MatTa, jonkinlainen lyhenne sanoista MATematiikkaa TietokoneAvusteisesti.

Verkkosivut — MatTa-sivusto — ovat olleet olemassa tuosta ajasta lähtien. Kävin syksyllä vanhalla työpaikallani ja sivusto tuli puheeksi. Olisiko aika poistaa vai mitä sille tehtäisiin? Lokitiedot osoittivat kuitenkin, että ainakin osalla materiaaleista oli edelleen käyttäjiä. Olisiko revisiointi paikallaan? Lupasin katsoa.

Kävin sivuston lävitse. Oli isompi työ kuin kuvittelin. Piti palauttaa mieleen kahdenkymmenen vuoden takaisia ajatuksia. Osa materiaaleista oli auttamatta vanhentunutta, suuri osa animaatioita, jotka eivät enää olleet pitkään aikaan toimineet. Matemaattinen sisältö ei niinkään vanhene, tietotekniset ratkaisut kyllä. Karsin vanhentuneet pois, jätin jäljelle materiaalit, joilla jotenkin voi kuvitella olevan vielä käyttöä. Näihinkin toki jäi vanhentuneita linkkejä enkä ryhtynyt varsinaisiin paikkauksiin.

Sivustolla on nyt uusi osoite: https://matta.math.aalto.fi/. Ainakin jonkin aikaa vanhasta osoitteestakin ohjataan tänne.

Avaamalla osoitesivun lukija näkee parhaiten, millaisista materiaaleista on kyse. Lyhyesti sanottuna taso ulottuu lukion pitkästä matematiikasta yliopisto-opintojen ensimmäiseen, osittain ehkä toiseen vuoteen. Lisäksi on alkeisopas LaTeXin ja Mathematica-laskentaohjelman käyttöön. Lukion osalta on tosin ehkä todettava, että nykyisiin digikirjoihin tottuneet opiskelijat saattavat kokea materiaalin vanhentuneeksi ja haasteelliseksi (= vaikeaksi).



Lukiolaisen tietosanakirja Iso-M

Erikseen kannattaa mainita tavallisten differentiaaliyhtälöiden opiskelupaketti DelTa, joka voidaan räätälöidä erilaajuisten kurssien materiaaliksi. Kyseessä oli kokeilu digitaalimateriaalin mahdollisuuksista. Kovin paljoa sitä ei kuitenkaan ole käytetty. Räätälöinti ei ole aivan yksinkertaista, mutta jos kiinnostusta löytyy, voin auttaa. (Kun nyt kerran palautin asiat mieleeni.)



DelTa-paketti

Digitaalista opiskelumateriaalia on maailmanlaajuisesti saatavissa paljon, huolellisesti tehdyistä kirjoista fragmentaarisiin artikkeleihin, animaatioihin ja videoihin. Saatavissa rahalla tai ilman. Kieli on useimmiten englanti tai ainakaan muunkielisten löytämistä ei useinkaan edes yritetä. Suomeksikin löytyy kaikenlaista, mutta aika hajanaisesti. Käsittääkseni yliopistoissakin tuotetaan kyllä kurssimateriaaleja, mutta näiden jakelu kurssin ulkopuolelle on vähäistä. Syynä usein ehkä puuttuva viimeistely, jolloin laajemman jakelun kynnys nousee.

Helposti tarjolla oleva materiaali saattaisi lisätä kiinnostusta matematiikkaan. Jonkinlainen ohjaus ja sopivien kokonaisuuksien paketointi olisi tarpeen. Tällaisena asiasta tulee paljolti organisointiongelma. Kuka tai mikä — esimerkiksi yhdistys tai muu organisaatio — ottaa asian hoitaakseen? Rahaakin tietysti tarvitaan.


keskiviikko 15. marraskuuta 2023

Gauss ja 17-kulmio

Kaikkien aikojen merkittävimpänä matemaatikkonakin tunnettu Carl Friedrich Gauss (1777 – 1855) osoitti teoksessaan Disquisitiones Arithmeticae (julkaistu 1801) paljon muun ohella, että säännöllinen 17-kulmio on mahdollista konstruoida geometrisesti, ts. ainoastaan harppia ja viivoitinta käyttäen. Konstruktiota Gauss ei kuitenkaan esittänyt.

Säännöllisten monikulmioiden geometrinen konstruointi on kiinnostanut geometrikkoja antiikin ajoista lähtien. Esimerkiksi viisikulmion konstruktion esittää Eukleides Stoikheia- (Elementa-) teoksensa neljännessä kirjassa propositioina 10 ja 11. (Katso esimerkiksi englanninkielistä tai kreikankielistä esitystä.) Seitsemäntoistakulmion ongelmaa ei kuitenkaan kukaan ole ennen Gaussia ratkaissut.

Miten asiaa voisi nykyisillä työvälineillä tutkia?


Seitsemäntoistakulmio

Seitsemäntoistakulmion piirtäminen grafiikkaohjelmalla on helppoa: Koska piste $(\cos(t),\sin(t))$ sijaitsee origokeskisellä yksikköympyrällä kulman $t$ (radiaaneissa) suunnassa, saadaan 17 tasavälistä ympyrän pistettä lausekkeista \[(\cos(2\pi k/17),\sin(2\pi k/17)),\] missä $k$ saa arvot $0,\ 1,\ 2,\ \dots\,\ 16$. Antamalla $k$:lle lisäksi arvo $17$ saadaan ensimmäinen piste uudelleen. Piirtämällä murtoviiva näiden pisteiden kautta saadaan yksikköympyrän sisällä oleva säännöllinen 17-kulmio.

Toinen vaihtoehto on laskea vaikkapa valmiilla laskentaohjelman komennolla numeerinen ratkaisu polynomiyhtälölle $x^{17} - 1 = 0$. Tällä on 17 ratkaisua, joista yksi on reaalinen, $x = 1$, ja muut kompleksisia. Näiden reaali- ja imaginaariosat antavat samat 17-kulmion kärkipisteiden koordinaatit kuin edellä.

Gauss tutki 18-vuotiaana vuonna 1796 polynomiyhtälöiden ratkaisemista ratkaisukaavoilla, ts. neljän peruslaskutoimituksen ja juurenoton avulla. Toisen asteen yhtälön ratkaisukaavat olivat tunnettuja jo vanhalla ajalla, kolmannen ja neljännen asteen yhtälön ratkaisukaavat olivat löytyneet 1500-luvulla. Viidennen asteen yhtälölle oli yleistä ratkaisukaavaa yritetty menestyksettä löytää parin sadan vuoden ajan, ja alkoi vaikuttaa ilmeiseltä, että sellaista ei ehkä voitaisikaan löytää. Vuonna 1824 Nils Henrik Abel lopulta todisti, että viidennen ja korkeamman asteen yhtälöille ei yleistä ratkaisukaavaa ole.


Gaussin esitys Disquisitiones Arithmeticae -teoksessa. Juurilausekkeessa
on painovirhe: neljännen termin edessä tulee olla plusmerkki.

Ratkaisu peruslaskutoimitusten ja juurten ottojen avulla voi kuitenkin olla erikoistapauksissa mahdollista. Gauss tutki muun muassa muotoa $x^n - 1 = 0$ olevia yhtälöitä ja totesi, että eräissä tapauksissa niiden ratkaisut voidaan lausua juurilausekkeita käyttäen. Arvo $n = 17$ on tällainen. Siten esimerkiksi pisteen $P_1$ x-koordinaatille $\cos(2\pi/17)$ saadaan lauseke \[-\frac{1}{16}+\frac{\sqrt{17}}{16}+\frac{1}{16} \sqrt{34-2\sqrt{17}}+\frac{1}{8} \sqrt{17+3 \sqrt{17}-\sqrt{34-2\sqrt{17}}-2 \sqrt{34+2 \sqrt{17}}}.\] Tämän löytäminen ei ole aivan helppoa enkä paneudu siihen, en myöskään lukua $n$ koskeviin ehtoihin.

Symbolisen laskentaohjelman käyttäjä voi yrittää löytää edellä mainitun juurilausekkeen muokkaamalla kosinifunktion arvoa $\cos(2\pi/17)$. Laskentaohjelma Mathematican komento ToRadicals tuottaa lausekkeen \[\frac{1}{4 \sqrt{\frac{2}{15+\sqrt{17}-\sqrt{2\left(17-\sqrt{17}\right)}+\sqrt{2 \left(34+6\sqrt{17}+\sqrt{2 \left(17-\sqrt{17}\right)}-\sqrt{34\left(17-\sqrt{17}\right)}+8 \sqrt{2\left(17+\sqrt{17}\right)}\right)}}}}.\] En saanut Mathematicaa sieventämään tätä. Sen ja edellä saadun juurilausekkeen erotuksen ohjelma kuitenkin sieventää nollaksi, joten ne esittävät samaa lukua.

Mistä Gauss sitten päätteli, että 17-kulmio voidaan piirtää geometrisesti? Mainittu kosinin arvo riippuu vain yhteen-, vähennys-, kerto- ja jakolaskusta sekä neliöjuuren otosta, ja jokainen operaatio voidaan erikseen toteuttaa harpilla ja viivoittimella. Janojen $a$ ja $b$ yhteen- tai vähennyslasku tarkoittavat janojen asettamista samalle suoralle, kerto- ja jakolasku niiden sekä yksikköjanan asettamista kahdelle toisensa leikkaavalle suoralle ja nelijuuren otto suorakulmaisen kolmion piirtämistä puoliympyrän sisään; kuviot alla. Täten juurilausekkeen edustama pituus saadaan vaiheittain konstruoiduksi. Kun yhden 17-kulmion kärjen paikka on täten konstruoitu, loput saadaan harpilla helposti. Tällä tavoin tehty konstruktio ei ole kovin sujuva, mutta se osoittaa  geometrisen konstruktion mahdolliseksi. Gaussille riitti tämä. Myöhemmin on toki esitetty sujuvampiakin konstruktioita.

Juurilausekkeen konstruoinnissa tarvittavat geometriset alkeiskonstruktiot.

Tarkempia tietoja ja yksityiskohtia löytyy ainakin Wikipedia-artikkeleista Konstruoituva monikulmio ja Seitsentoistakulmio sekä niiden englannin- (tai muun-) kielisistä vastineista. (Näissä on eroja. Esimerkiksi saksankieliset näyttävät sisältävän materiaalia, jota muissa ei ole.) Artikkelit sisältävät myös animaatioita 17-kulmion geometrisesta konstruointiprosessista. Juurilausekkeen laskeminen löytyy tietenkin Disquisitiones Arithmeticae -teoksesta ja ainakin Jörg Bewersdorffin kirjasta Galois Theory for Beginners, varmaan muualtakin. Saksankielisessä Wikipedia-artikkelissa näyttää periaate myös olevan kuvattuna.


sunnuntai 18. kesäkuuta 2023

Tekoäly, faktat ja laskeminen

Helsingin korkein rakennus?
(© Joneikifi, CC BY-SA 4.0)

Jatkan edellisessä blogipostauksessa aloittamaani tekoälyn pohdiskelua. Viime aikoina paljon huomiota herättänyt tekoälybotti ChatGPT juttelee sujuvasti ja inhimillisesti, mutta faktat ja matemaattinen laskeminen eivät ole sen vahvoja puolia. Eikä muuta toki ole väitettykään, kyseessä on ennen muuta ns. kielimalli, ts. se on opetettu isolla tekstimassalla, minkä perusteella se rakentaa oman tekstinsä, mutta ajattelua tai edes faktakokoelmia sillä ei ole. Matematiikastakaan se ei kovin hyvin suoriudu, vaikka saa myös oikeita tuloksia; esimerkkinä vaikkapa YouTube-video Can ChatGPT Pass the Oxford University Admissions Test?.

ChatGPT muodostaa yhden askelen siinä jatkumossa, jonka tunnetuimpia palasia ovat hakukoneet, Wikipedia ja lukuisat muut verkon informaatiolähteet. Tällainen on myös kesäkuussa 1988 symbolisen laskennan ohjelmistona syntynyt Wolfram Researchin Mathematica. Historiansa aikana siihen on ympätty — usein ilmeisesti kokeellisina hankkeina — monenlaisia piirteitä: ohjelmointikieli (Wolfram Language) on monipuolistunut, on luotu käsite computable document format (CDF), tarjolla on alkeisgeometrista päättelyä, monenlaista dataa sisältäviä tietokantoja jne. Käyttöliittymänä on Mathematica-ohjelmiston lisäksi verkkosivusto Wolfram|Alpha.

Kovin kaukana ei ole ajatus yhdistää ChatGPT:n kielimalli ja Mathematican laskentakyky sekä Wolfram Researchin tietokannat. Tämä antaa mahdollisuuden paikata ChatGPT:n faktatiedoissa ja matemaattisissa kyvyissä olevia puutteita. Itse asiassa yhdistämiseen tarvittava plugin on olemassa, kuten Stephen Wolfram kirjoittaa blogissaan. Pluginin avulla ChatGPT käy tarvittaessa tutkimassa tietokantoja.  En ole kokeillut, ainakaan vielä. Ei ilmeisesti ole vapaasti käytettävissä.

ChatGPT pystyy myös ainakin periaatteessa kirjoittamaan ohjelmakoodia Wolfram Languagea käyttäen. Koodi voidaan sitten ajaa Mathematicalla tai Wolfram Researchin pilvipalvelussa (jonka käyttöön tarvitaan sopimus).

Wolfram Researchin resurssit eivät luonnollisestikaan ole ainoa mahdollisuus laajentaa tekoälyjärjestelmien kykyjä. Tähän suuntaan varmasti edetään emmekä vielä ole nähneet alkua enempää.

Missä sitten tällä hetkellä ollaan? Miten luotettavia vastauksia ja miten helposti tekoälyltä saadaan? Seuraavassa kuvaan muutamia kokeilujani.

Yksinkertaista faktaa koskeva kysymys

Esitin ChatGPT:lle kysymyksen: Which is the highest building in Helsinki? Se ilmoitti tietojensa ulottuvan vain syyskuuhun 2021 ja tällöin korkein rakennus oli 134 metriä korkea 'the Maamerkki Tower, also known as the Landmark Tower or Pasila Tripla Tower'. En kommentoinut vastausta, mutta kysyin uudelleen. Tällä kertaa vastaus oli 19-kerroksinen 'the Helsingin Pörssitalo (Helsinki Stock Exchange Building), also known as the KPMG Tower'. Kysyin kolmannen kerran, jolloin vastaukseksi tuli 70-metrinen 'Torni Hotel'.

Kysyin samaa asiaa Mathematicalla Wolfram Researchin tietokannoista. Saman voisi tehdä Wolfram|Alphaa käyttäen. Vastaukseksi tuli 74-metrinen Johanneksen kirkko.

Seuraavaksi kysyin kummaltakin, oliko Englannin kuningas Henrik VIII naimisissa. Molemmat antoivat oikean vastauksen ja luettelivat kaikki kuusi vaimoa avioliittovuosineen.

Epämääräisempi pyyntö

Pyysin luetteloa Helsingissä syntyneistä merkittävistä henkilöistä. (Give a list of the most notable persons born in Helsinki.) Tähän ei tietenkään ole yhtä oikeata vastausta, mutta tulos kertonee jotakin tekoälyn luotettavuudesta. Kärkikymmenikkö:

ChatGPT: Jean Sibelius, Linus Torvalds, Aki Kaurismäki, Tove Jansson, Renny Harlin, Armi Ratia, Tarja Halonen, Juha Kankkunen, Tom of Finland, Esa-Pekka Salonen.

Wolfram Research: Linus Torvalds, Ville Valo, Teemu Selänne, George Gaynes, Tarja Halonen, Tove Jansson, Sam Lake, Michael Monroe, Pihla Viitala, Lauri Ylönen.

Kysyin kummaltakin myös syitä Suomen kansalaissotaan. (What are the reasons for the Finnish civil war in 1918?) ChatGPT antoi noin 300-sanaisen jokseenkin paikkansapitävän selostuksen. Wolfram|Alpha antoi sekalaista faktatietoa sodasta,  kun kysymys tehtiin verkkosivulla, Mathematicasta lähetettyä kysymystä se ei ymmärtänyt.

Ohjelmakoodit

Wolfram|Alpha-spesialisti Michael Trottin artikkelissa 100+ ChatGPT-generated Wolfram Language codes on esimerkkejä ChatGPT:n generoimista koodeista erilaisiin laskentatehtäviin. Ohjelmointikielenä on Mathematican käyttämä Wolfram Language.

Yhtenä esimerkkinä on Wolfram Researchin tietokantoja hyödyntävä koodi, joka tuottaa kartan Saksan dorf-, bach-, berg-, burg- ja feld-loppuisista kaupungeista eri väreillä merkittyinä. Trottin mukaan koodi on ChatGPT:n generoima. Kokeilin vastaavaa Suomen mäki-, järvi-, joki-, salmi- ja lahti-loppuisiin kuntiin sovellettuna. Pyysin ChatGPT:tä kirjoittamaan Wolfram Language -koodin tällaisen kartan tekemiseen käyttäen samoja ilmaisuja kuin Trott. Koodi tuli hetkessä ja siirsin sen ajettavaksi Mathematicaan. Ei toiminut, syntaksivirheitä. Valitin tästä ChatGPT:lle, se pyysi anteeksi ja teki uuden koodin. Ei taaskaan toiminut. Tämä toistui muutaman kerran eikä lopultakaan syntynyt toimivaa. Olisin voinut paikata koodin itse, mutta sen sekavuuden takia muunsin mieluummin Trottin esittämän koodin Suomea koskevaksi. Tulos alla.



Todennäköisesti Trottilla on ollut käytössään uudempi versio ChatGPT:stä, joten hän on voinut saada suoraan toimivan koodin. Toisaalta ChatGPT ei ole deterministinen, vaan se tekee samaankin pyyntöön eri kerroilla erilaisia koodeja. Virheellinenkin koodi voi tietenkin antaa hyvän pohjan kehittelyyn, mikäli sen rakenne on selkeä.

Esimerkki osoittaa myös tietokantojen mukaan kytkemisen mahdollisuudet. Koodi hakee ensin tietokannasta kaikki Suomen kunnat ('cities'). Wolfram Language tarjoaa suhteellisen valmiin keinon verrata näiden nimiä tarkasteltuihin loppuihin. Tietokannasta löytyvät myös kuntien maantieteelliset koordinaatit ja Wolfram Languagesta työkalut karttaprojektioihin ja grafiikkaan. Alla kuva koodista joki-päätteen osalta.



Toisena esimerkkinä pyysin ChatGPT:tä tekemään kartan lyhimmästä reitistä, jolla kierretään kaikki Euroopan pääkaupungit. Mathematica, Wolfram Language ja tietokannat antavat tähän tarvikkeet, myös valmiin funktion lyhimmän reitin laskemiseen. Tämäkään ei onnistunut. En saanut toimivaa koodia, vaikka yritin antaa yksityiskohtaisia ohjeita koodin kirjoittamiseen. Tein sitten itse. Ei ollut ihan helppoa, sillä vaikka Wolfram Languagessa tarvikkeet ovat olemassa, niiden logiikan hahmottaminen ei ole selkeää. (Lieneekö ChatGPT:lläkin ollut tässä vaikeuksia?) Kuva alla.



Miten luotettavia tekoälyn vastaukset sitten ovat?

Helsingin korkeinta rakennusta koskeva kysymys ei mennyt hyvin, mutta Henrik VIII:n vaimot olivat oikein. Erona tietenkin on, että jälkimmäinen on jo pysyvää tietoa, edellisessä täytyy pysyä ajan tasalla. Kriittisyyden merkitys korostuu, ja tieto lähteestä ja sen ajankohdasta olisi tarpeen. Epämääräisempiin kysymyksiin saadaan tietenkin epämääräisiä vastauksia, mutta ne saattavat olla kelvollisia lähtökohtia omalle pohdiskelulle. Faktoihin ja näkökulmiin ei kuitenkaan voi luottaa ja muitakin lähteitä on syytä katsoa. ChatGPT vähät välitti vaatimuksesta, että olisi pitänyt syntyä Helsingissä, mutta ei esittänyt mitään varauksia.

Ohjelmakoodin generointi ei esimerkeissä sujunut. Riittävän yksinkertaisissa tapauksissa kuitenkin syntyy toimivaa koodia, tai ainakin koodia, joka kelpaa kehittelyn pohjaksi. Wolfram Languagen liittymä tietokantoihin ei minusta myöskään ole selkeä, jolloin edellä olevat esimerkit saattoivat olla hieman epäreiluja ChatGPT:llekin.

Tarkkaavainen lukija on saattanut havaita, että kartta tiettyihin päätteisiin liittyvistä kunnista ei vastaa nykyistä kuntajakoa. Tietokantojen perusteella muodostettu kuntalista on nimittäin vanhentunut. Ongelmallista on myös, mihin termi 'city' oikeastaan viittaa. Ns. ääkkösissä on myös horjuvuutta. Esimerkin kaltaisissa tilanteissa tällaiset puutteet eivät ole kovin merkityksellisiä, mutta tietokannoissa on paljon dataa, joka on pidettävä ajan tasalla (tai lähteistettävä tarkasti). Suhtaudun tietyllä epäluulolla Wolfram Researchin tietokantoihin.

Kaikkiaan: Tekoälyllä on hauska leikkiä, ja hyötyäkin siitä on sopivissa tehtävissä, mutta kriittisyyttä ei pidä unohtaa. Tulevaisuutta varmasti on, mutta luotettavuuden ja käyttökelpoisuuden hyväksi on vielä paljon tehtävää.