torstai 29. syyskuuta 2016

Verkkodokumentit ja matematiikan kaavat

Matemaattisten kaavojen sisällyttäminen verkkodokumentteihin ei vielä nykyäänkään ole ongelmatonta, vaikka vuosien kuluessa on moniakin ratkaisuja esitetty.  Kirjoittamisessa on kaksi päävaihtoehtoa: symbolien poimiminen valikosta tai kaavan koodaaminen tavallisilla kirjoittuvilla merkeillä. Tämän jälkeen tarvitaan jokin ohjelma (jota käyttäjä ei välttämättä näe), jolla kaavasta muodostetaan dokumenttiin liitettävä kuva tai jolla tarvittavat fontit liitetään dokumenttiin.

Tavalliselle käyttäjälle ehkä helpoimmin omaksuttava kirjoittamistapa on jokin valikoita käyttävä kaavaeditori. Jos kirjoitettavaa on vähän enemmän, kaavojen koodaaminen on nopeampaa, mutta aloituskynnys on korkeampi. Ammattimatemaatikot yleensä koodaavat kaavat käyttäen LaTeX-järjestelmää; ks. esim.  https://www.latex-project.org/ tai tekemääni LaTeX-opasta http://matta.hut.fi/matta/latexopas/.

Tarve kaavojen littämiseen sähköisiin dokumentteihin on lisääntymässä.  Matematiikan ylioppilaskokeen muuttuminen sähköiseksi keväällä 2019 edellyttää yksinkertaista ja helposti ymmärrettävää ratkaisua kaavojen kirjoittamiseen.  Valintaa ei helpota se, että sillä on kytköksensä kokeessa käytettäviin laskentaohjelmistoihin. Sama ongelma on sähköisissä oppimateriaaleissa, mikäli ne ovat muutakin kuin sähköisiä sivunkääntöympäristöjä.

Tähän blogiin olen kirjoittanut kaavat LaTeXilla koodaamalla (esimerkiksi http://simokivela.blogspot.fi/2016/08/kokeellisen-matemaatikon-painajainen.html). Seuraavassa kuvaan, miten tämä on tehty.

LaTeX on erittäin monipuolinen ja paljon erilaisia laajennuksia sisältävä järjestelmä dokumenttien — yksittäisistä kaavoista kirjoihin — kirjoittamiseen. Sen avulla voidaan hallita kaavojen kirjoittamisen ohella kuvien liittäminen tekstiin, sisäiset ja ulkoiset linkitykset, sisällysluettelot ja hakemistot, haluttaessa myös viivakuvioiden piirtäminen (väreineen), nuotit, šakkilaudan kuvat jne.

Muutamien kaavojen kirjoittaminen verkkodokumenttiin (kuten tähän blogiin) ei kuitenkaan edellytä syvällistä LaTeXin koristeluihin ja kummallisuuksiin perehtymistä. Ainoa tieto, joka tarvitaan, on tavallisten matemaattisten kaavojen koodaus. Tekstirivillä olevat kaavat (inline-kaavat) sijoitetaan merkkien $\backslash(\,...\,\backslash)$ väliin (tai $ \$\,...\,\$ $), erillisillä kaavariveillä olevat (display-kaavat) merkkien $\backslash[\,...\,\backslash]$ väliin. Kaiken tämän olen kirjoittanut muun tekstin sekaan.

Koodin muuntaminen dokumentissa näkyviksi kaavoiksi perustuu MathJax-ohjelmistoon (https://www.mathjax.org/), joka otetaan käyttöön liittämällä verkkodokumenttiin (HTML-dokumenttiin) muutaman rivin skriptimäärittely. Minulla on Googlen blogiympäristössä (Malli → Muokkaa HTML-koodia) blogin koodin <head>-osioon lisättynä seuraavat rivit:

<script type="text/x-mathjax-config">
MathJax.Hub.Config({tex2jax:
  {inlineMath: [['$\$ $','$\$ $'], ['$\backslash\backslash($','$\backslash\backslash)$']]}});
</script>
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?
  config=TeX-AMS-MML_HTMLorMML">
</script>

MathJax-ohjelmisto haetaan tässä osoitteesta http://cdn.mathjax.org/mathjax/latest/.  Config-rivi ilmaisee, että tekstirivillä olevat kaavat (inline-kaavat) voidaan sulkea joko merkkien $ \$\,...\,\$ $ tai $\backslash(\,...\,\backslash)$ sisään. MathJax-ohjelmisto on mahdollista asentaa myös omalle palvelimelle tai omalle koneelle, jolloin verkkoyhteyttä ei tarvita.

Kaavojen koodeja voi katsella klikkaamalla  valmiissa dokumentissa hiiren kakkosnäppäimellä kaavaa (esimerkiksi blogipostauksessani), jolloin näkyviin tulee valikko. Tästä voi valita nähtäväksi esimerkiksi kaavan tekemiseen tarvitun koodin (Show Math As → TeX Commands). Muitakin vaihtoehtoja on. Valikon avulla voi myös tehdä asetuksen, jolla kaavan saa suurennettuna (Math Settings → Zoom Trigger → ...). Tämä on suureksi avuksi, jos esimerkiksi kaavan pienikokoisia indeksejä on vaikeata erottaa.

keskiviikko 7. syyskuuta 2016

Eläkeläisen matemaattinen lelu

Animoi!
Eläkkeelle jäämisestäni tuli syyskuun alkaessa täyteen kymmenen vuotta. Oli aika lopullisesti irtautua vanhasta työpaikastani Teknillisen korkeakoulun matematiikan laitoksesta. Olihan oppilaitoksen nimikin muuttunut Aalto-yliopistoksi.

Kevättalveen saakka olin laitoksen henkilökuntalistalla, teinhän siellä jotakin hyödyllistäkin. Käyttäjätunnukset tietokoneisiin ja ohjelmistoihin olivat voimassa. Irtautuessani menetin nämä.

Mathematicaa — alunperin symbolisen laskennan ohjelmistoa, myöhemmin paljon muutakin — olen käyttänyt sen ensimmäisestä versiosta vuodesta 1988 lähtien ja vuosien kuluessa tehnyt sillä kaikenlaista hyödyllistä ja/tai hauskaa. Se on myös sopiva lelu minunkaltaiselleni eläkeläiselle.

Hintava Mathematica tunnetusti on, mutta onneksi tarjolla on myös Home and Hobby -versio, jonka käyttöä mihinkään rahaa tuottavaan toimintaan lisenssiehdot eivät salli. Hinta on kuitenkin kohtuullisen siedettävä, 295 euroa lisättynä kotimaisella ALV:lla, yhteensä 365 euroa. Eläkeläinen hankki siis itselleen lelun.

Ohjelmistojen kehityksestä Mathematica on kiintoisa esimerkki.  Kaupalliset syyt edellyttävät jotakin uutta ja mielellään mullistavaa jokaiseen versioon. Ja kyllä näitä ominaisuuksia ja aluevaltauksia on kertynytkin. Monet kiinnostavia ja varmasti hyödyllisiäkin, mutta joukossa myös kokeellisia piirteitä, joiden käyttö ei ole yleistynyt ja joiden kehittämisestä ilmeisesti on luovuttu. Joissakin tapauksissa ei ehkä ole väärin sanoa, että mopo on päässyt karkaamaan käsistä.

Toisaalta panostus ei oikein ole riittänyt alkuperäisen idean, symbolisen laskennan kehittämiseen ja hiomiseen. Symbolisen laskennan algoritmit eivät aina ole yksinkertaisia ja täydellisyyteen tuskin on mahdollista koskaan päästä, mutta vähän liian helposti syntyy virheellisiä tai puutteellisia tuloksia. Ei toki yksinkertaisissa perustehtävissä, mutta vaativammissa tapauksissa käyttäjän täytyy olla kriittinen ja varmistaa tuloksensa jollakin riippumattomalla tavalla. Sinänsä hyvä periaate yleisemminkin.

Mammutti Mathematicasta on tullut. Hieman sääli on, että tällaisena sillä ei ole sijaa koulumaailmassa. Jokin Mathematican version 5 tasoinen (nykyinen versio on 11) paketti saattaisi monessa suhteessa olla hyvä työkalu lukion pitkään matematiikkaan. Parempi kuin nykyään tarjottavat ohjelmistot: ei liikaa valmista, mutta suhteellisen helppoa ohjelmoida itse omia työkaluja. Oppia samalla matematiikkaa, kokonaisuuksien hallintaa ja dokumentointia. Tällaista versiota vain ei myydä. En ymmärrä, miksi.

Mikä yllä oleva kuvio sitten on? Katenoidin voi venyttämättä ja kokoon puristamatta vääntää helikoidiksi, ts. ruuvipinnaksi.  Animaation kuvat on tehty Mathematicalla. Helposti voi myös laskea, että muuntamisen aikana kahta pistettä pintaa pitkin yhdistävän käyrän pituus säilyy.