(763315A), kevät 2015 - Noppa

ATK II - Numeerinen mallintaminen
(763315A), kevät 2015
H. Vanhamäki
31. joulukuuta 2014
Tiivistelmä
Ensimmäisellä luennolla esitellään kurssin suuntaviivat ja tutustutaan
EX-dokumenttien tekemiseen sekä joihinkin Mathematican sovellutuksiin.
LAT
Luennoitsija: Heikki Vanhamäki (huone FY335, heikki.vanhamaki@oulu.fi)
Harjoitustyöt korjaa: Juho Montonen (juho.montonen@gmail.com)
Kurssin kotisivut: https://noppa.oulu.fi/noppa/kurssi/763315a/etusivu
Luennot/harjoitukset: 3 h/viikko, MA 13-16 tai TO 9-12, luokka YL124
(ei harjoituksia 16.3., 19.3. eikä 2.4.)
Toinen harjoitusryhmistä voidaan lopettaa kesken kurssin, mikäli osallistujamäärä jää pieneksi!
Byrokratiaa
Kurssilla on viikoittaisia luentoja/harjoituksia 13 viikon ajan. Varsinaisia viikoittain palautettavia kotitehtäviä ei ole, vaan harjoituksia tehdään luentojen yhteydessä mikroluokassa. Omatoiminen lisäharjoittelu on suotavaa, ja jopa välttämätöntä
mikäli kaikkia esimerkkejä ei ehditä käydä yhdessä läpi. Wanhoja versioita luentomonisteesta sekä harjoitustehtävistä (joskus myös ratkaisuineen!) ja esimerkkejä tenttikysymyksistä löytyy osoitteesta http://www.oulu.fi/tf/atkII/
1
Kurssilla ei ole välikokeita. Loppukoe järjestetään näillä näkymin tiistaina
5.5.2015 kello 14-18 salissa IT116. Tentti tehdään kynällä ja paperilla, materiaalia ei saa olla mukana. Varsinaista ohjelmointia ei siis ole, mutta joissain tehtävissä saatetaan pyytää kirjoittamaan lyhyt pätkä Mathematica-koodia paperille tai
kysytään millä LATEX-komennoilla tietyt asiat saa tehtyä. Oletusarvoisesti tentissä on 5 tehtävää, joista jokaisesta saa 6 pistettä. Kurssi arvostellaan1 asteikolla 0-5.
Kurssin aikana tehdään 3-4 harjoitustyötä, jotka palautetaan sähköpostilla harjoitusassistentille. Harjoitustöiden määrä ja aikataulu tulevat tarkentumaan kurssin kuluessa, mutta näillä näkymin töiden palauttamiselle asetetaan sopivat takarajat kurssin aikana. Jokaisesta takarajaan mennessä hyväksytysti palautetusta
harjoitustyöstä saa bonuspisteitä, jotka lisätään tentistä saatuun pistemäärään.
Jokaisesta ajallaan palautetusta harjoitustyöstä saa yhden (1) bonuspisteen, joilla
voi korottaa tentin arvosanaa. Efektiivisesti siis tentin maksimipistemäärä on 3334/30.
Harjoitustehtävät tulee palauttaa kuitenkin viimeistään ennen tenttiin ilmoittautumista. Annetun takarajan jälkeen palautetuista töistä ei saa bonuspisteitä.
Silloin kun mikroluokka YL124 ei ole varattuna opetuskäyttöön2 , se on opiskelijoiden vapaasti käytettävissä. Luokan koneissa on käytössä sekä Windows että
Linux, ja molemmissa ympäristöissä on Mathematica sekä LATEX käytettävissä.
1
Latex (tai LATEX)
Matemaattista tekstiä sisältävän dokumentin kirjoittaminen tavallisella tekstinkäsittelyohjelmalla (esim. LibreOffice Writer tai Microsoft Word) voi olla varsin
tuskallista. Väittäisin että yli 90% fysiikan ja matematiikan alojen tieteellisistä artikkeleista tehdäänkin LATEX:lla.
Tällä kurssilla ei LATEX:in käyttöön perehdytä kovin järjestelmällisesti, mutta muutamassa harjoitustyössä pitää vastaukseen sisällyttää LATEX:illa tehty lyhyt
dokumentti. Tarkoituksena on tutustuttaa opiskelijat tähän työkaluun, niin että he
voivat sen avulla helpommin kirjoittaa laboratoriotöiden selustuksia, muita kirjallisisa raportteja sekä jossain vaiheessa kandin tutkielman ja gradun.
1
2
ks. http://www.oulu.fi/yliopisto/opiskelu/arvostelu
ks. https://pooki.oulu.fi/, selaile kirjautumatta, valitse tilaryhmä TH mikroluokat
2
LATEX:in osalta kurssin tärkeimmän oppimateriaalin muodostaa tämän dokumentin “lähdekoodi”, jonka löydät kurssin kotisivulta tiedostossa ‘Aluksi.tex’. Lisäksi harjoitustehtäviä tehdessä kannattaa tutustua seuraaviin oppaisiin
• The not so Short Introduction to LaTeX,
http://www.ctan.org/tex-archive/info/lshort/english
• Y.o. oppaan suomenkielinen käännös on hieman vanhentunut, mutta pääosin täyttä asiaa,
http://www.ctan.org/tex-archive/info/lshort/finnish
• Latex wikibook, http://en.wikibooks.org/wiki/LaTeX
Yksittäisissä ongelmatilanteissa apua löytyy parhaiten Googlella, sillä LATEX:illa
on laaja ja aktiivinen käyttäjäkunta.
1.1
LATEX:in filosofia
LATEX ei oikeastaan ole tekstinkäsittelyohjelma, vaan ladontajärjestelmä TEX:in
päälle rakennettu makrokirjasto, joka sisältää suuren joukon työkaluja matemaattisten kaavojen kirjoittamiseen. Dokumentin kirjoittaminen LATEX:illa muistuttaa
hieman ohjelmointia, sillä kaikki tekstin ulkoasuun vaikuttavat säädöt tehdään kirjoittamalla LATEX:in ohjauskomentoja raakatekstin sekaan (esimerkiksi komento
\LaTeX tuottaa tekstin LATEX). Samoin kaavat, kuvat ja muut erikoistehosteet lisätään käyttämällä komentoja. Lopullinen julkaisukelpoinen dokumentti tehdään
kääntämällä tämä lähdekoodi LATEX-kääntäjällä pdf-tiedostoksi.
Kaavojen lisäksi LATEX soveltuu hyvin myös tavallisen tekstin tuottamiseen,
sillä se huolehtii automaattisesti esimerkiksi rivin- ja sivunjaosta, kuvien ja taulukoiden asettelusta, dokumentin sisäisistä viittauksista ja sisällysluettelosta. Dokumenttiin on myös helppo lisätä lähdeluettelo ja kirjallisuusviitteitä. Kirjoittaja saa
siis keskittyä itse sisältöön ja dokumentin loogiseen rakenteeseen, LATEX:in huolehtiessa ulkoasusta (lähes) automaattisesti.
LATEX-tiedoston voi kirjoittaa millä tahansa tekstinkäsittelyohjelmalla, mutta
se tulee tallentaa ASCII-muotoon (‘Plain text’ tai vastaava tiedostomuoto), esimerkiksi Microsoftin .doc-formaatti tai LibreOfficen .odt-tiedostot eivät kelpaa.
Lisäksi LATEX-tiedoston pääte pitää olla ‘.tex’. Tiedoston kirjoittamista auttaa jos
tekstieditori tunnistaa LATEX-komennot ja erottaa ne tavallisesta tekstistä esimerkiksi värikoodeilla, mutta tämä ei vaikuta lopputulokseen. Jos teksti sisältää muita
kuin 127 alkuperäistä ASCII-merkkiä, tulee olla tarkkana mitä ASCII-merkistön
3
laajennusta (encoding) tekstieditori käyttää tiedostoa tallentaessa.
1.2
Latex Linuxissa
Jonkinlainen LATEX-paketti on valmiiksi asennettuna useimmissa Linux-jakeluissa,
ainakin Ubuntussa. Perusversioon saattaa joutua lisäämään muita paketteja, mikäli haluaa käyttää joitain erikoistoimintoja (esimerkiksi suomalainen tavutus babellisäosalla). Näiden asennus on helpointa normaalin paketinhallinnan kautta, mikä
vaatii ylläpitäjän oikeudet. Jos LATEX:ia käyttää enemmän, pääsee (ainakin Ubuntussa) helpoimmalla asentamalla paketin ‘texlive-full’, joka sisältää kaikki saatavilla olevat komponentit. Luokan YL124 koneissa on toimiva kokonaisuus asennettuna.
LATEX-dokumentin voi Linuxissa kirjoittaa oikeastaan millä peruseditorilla tahansa, esimerkiksi gedit (Gnome-ympäristön oletuseditori) ja kate (KDE-ympäristön oletus) tunnistavat LATEX-komennot ja erottavat ne muusta tekstistä värikoodeilla. Nykyään UTF-8 on Linuxissa standardi tapa tallentaa ääkköset ja muut
erikoismerkit, joten sen ei pitäisi tuottaa ongelmia.
Jos LATEX-dokumentin kirjoittaa esimerkiksi edellä mainituilla editoreilla, pitää se erikseen kääntää pdf-tiedostoksi antamalla komentoriviltä komento ‘pdflatex Tiedosto.tex’. Näiden yleiseditorien lisäksi on myös saatavilla LATEX-dokumenttien tekoon räätälöityjä ohjelmia, kuten texmaker, jotka osaavat kääntää dokumentin nappia painamalla. Lisäksi ne sisältävät dokumentin kirjoittamista helpottavia ominaisuuksia, kuten valikoita joista yleisimmät LATEX-komennot löytyvät valmiina, jolloin niitä ei tarvitse kirjoittaa ulkomuistista.
1.3
Latex Windowsissa
Suositeltava LATEX-kokonaisuus Windows-käyttäjille on MiKTeX, joka sisältää
myös TeXworks editorin .tex dokumenttien kirjoittamiseen. MiKTeX osaa automaattisesti ladata netistä puuttuvat lisäosat, joten käyttäjän ei tarvitse huolehtia
niiden asentamisesta. Windowsissa .tex tiedostot on helpoin kirjoittaa TeXworks
editorilla, sillä muut ohjelmat eivät usein osaa auttaa kirjoittamista korostamalla
LATEX-komentoja ja ne saattavat tallentaa ääkkösiä sisältävän tiedoston käyttäen
jotain muuta kuin UTF-8 standardia3 . Katso http://www.miktex.org/.
3
Esimerkiksi suomenkielisen Windows 7:n notepad tallentaa sen (luullakseni) latin1 koodauksella
4
1.4
Latex Macissä
Suositeltava LATEX-kokonaisuus Mac-käyttäjille on MacTex.pkg, joka sisältää kaikki tarvittavat työkalut, mukaan lukien .tex dokumenttien tekemiseen räätälöidyn
editorin nimeltä TexShop. Katso http://www.tug.org/mactex/.
1.5
Esimerkkejä
Minimaalinen englannin kielinen LATEX-tiedosto on seuraava
\documentclass[a4paper,12pt]{article}
\begin{document}
English text.
\end{document}
Minimaalinen suomenkielinen tiedosto on hieman pidempi, sillä TEX suunniteltiin 70-luvulla yhdysvalloissa, eikä silloin mietitty ääkkösten tai vieraiden kielien kaltaisia toissijaisia seikkoja. Tämä ei toki ole pelkästään LATEX:in ongelma,
vaan lähes kaikkiin ohjelmistoihin ja käyttöjärjestelmiin periytynyt ominaisuus
tietokoneiden alkuajoilta.
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage[finnish]{babel}
\begin{document}
Suomalaista tekstiä.
\end{document}
Tämän dokumentin .tex-versiosta löytyy selitys y.o. komennoille.
Kaavoilla (1-2), kuvalla 1, taulukolla 1 ja viittauksella artikkeliin Amm (1997)
ei ole mitään muuta merkitystä, kuin toimia esimerkkeinä. Jatketaan näyttämällä
pari irrallista kaavaa
n
x + 1 6= x
n+1
,
2
2
cos θ + sin θ = 1,
1
a
b
2
r
=
a
.
b
(1)
Laitetaan myös tekstin sekaan kaava ex . Sitten testataan LATEX-koodin alussa määriteltyjä omia komentoja näyttämällä matriisin ja vektorin tulo M · x = y, ja listaamalla karteesisen koordinaatiston yksikkövektorit êx , êy , êz . Yksi Maxwellin
5
1.0
0.5
- 10
-5
5
10
- 0.5
- 1.0
Kuva 1: Mathematicalla tehty kuva sini- ja kosiniaalloista.
Team
P
Manchester United 6
Celtic
6
6
Benfica
6
FC Copenhagen
W
4
3
2
2
D
0
0
1
1
L
2
3
3
3
F A
10 5
8 9
7 8
5 8
Pts
12
9
7
7
Taulukko 1: Tämä varsin yksinkertainen esimerkki on kopioitu sivulta
http://en.wikibooks.org/wiki/LaTeX/Tables, missä on paljon muitakin hyödyllisiä
taulukkokikkoja.
yhtälöistä on
∇×E =−
∂B
.
∂t
Lopuksi esitetään yksinkertainen integraali,
Z ∞
0
α
απ
dx = √ .
2
β+x
2 β
(2)
Näiden kaavojen kirjoittamisessa tarvittavat komennot (ja paljon muita) on esitetty oppaan “Not so short introduction to latex” luvussa 3.
Harjoitustehtäviä
1. Tee yllä kuvattu minimaalinen englanninkielinen .tex tiedosto ja käännä se
pdf-dokumentiksi.
2. Tee sama minimaalisen suomenkielisen .tex tiedoston kanssa. Varmista että
ääkköset näkyvät oikein.
3. Toista kohdat 1) ja 2) sekä Windowsissa (käytä MikTex:in TeXworks-editoria)
että Linuxissa (käytä komentoriviltä komentoa “pdflatex tiedosto.tex”).
6
4. Hae kurssin kotisivulta tämän dokumentin latex-koodi (tiedosto Aluksi.tex)
ja tutustu sen sisältöön. Kokeile kääntää se pdf-dokumentiksi (kuvan lisäämiseksi tarvitset tiedoston Aluksi_kuva1.pdf kurssin kotisivulta).
5. Kopio esimerkkejä sisältävä pätkä osiosta 1.5 omaan tiedostoosi ja kokeile
muokata kaavoja sekä taulukkoa. Huomaa että komennot \omavec yms.
eivät kuulu LATEX:in vakiovarustukseen, vaan ne pitää erikseen määritellä
komennolla \newcommand tiedoston alussa.
Bonus Selvitä itsellesi mikä on ASCII-merkistö ja UTF-8. Selvitä myös miten rivinvaihto (siis enterin painallus) kirjoitetaan ASCII-muotoiseen tekstitiedostoon Windowsissa, Linuxissa ja Macissä.
2
Mathematica
Kurssilla keskitytään Mathematican käyttöön. Mathematica on symbolisen laskennan ohjelmisto, joka osaa käsitellä yhtälöitä analyyttisesti. Käytännössä kaikki
integraalit ja differentiaaliyhtälöt, jotka keskiverto fyysikko osaa ratkaista kynällä ja paperilla, voi laskea Mathematicalla muutamassa sekunnissa. Tämän lisäksi
Mathematicalla voi ratkoa vaikeampia yhtälöitä numeerisesti, piirtää näyttäviä kuvia ja kirjoittaa laskentaa sisältäviä raportteja tai interaktiivisia dokumentteja.
Tämän kurssin luentomoniste on Mathematicalla tehty notebook-tiedosto, jonka voi ladata kurssin kotisivulta. Siihen voi tulla pieniä päivityksiä kurssin kuluessa. Mathematica notebook on yhdistelmä tekstidokumenttia ja tietokoneohjelmaa.
Se voi sisältää tavallista tekstiä, Mathematicalla tehtäviä laskuja sekä ohjelman
piirtämiä kuvia, jotka kaikki ovat käyttäjän muokattavissa.
Luentomonisteen muokkaamiseen ja esimerkkilaskujen suorittamiseen tarvitset Mathematican, mutta pelkkä lukeminen sujuu ohjelmiston kehittäneen yhtiön
Wolfram Researhin sivuilta ladattavalla ilmaisohjelmalla4 .
2.1
Kurssin tarkoitus
Kurssilla esitettävissä esimerkkilaskuissa ei ole oikeastaan tärkeää niiden sisältö,
vaan tapa jolla ongelmat ratkaistaan. Osa esimerkeistä voi tuntua keinotekoisilta, ja sitä ne ovatkin. Tarkoitus on tutustuttaa opiskelijat työkaluun, jota he voivat
4
http://www.wolfram.com/cdf-player/
7
myöhemmin käyttää omien tehtäviensä ratkaisemisessa.
Käytännössä ainoa tapa päästä alkuun Mathematican (tai minkä tahansa laskentaohjelmiston) käytössä on tehdä tarpeeksi paljon erilaisia harjoituksia, jolloin
toivottavasti sisäistää ohjelmiston sisäisen logiikan, tutustuu kielen syntaksiin (eli
rakenteeseen ja tapaan jolla komennot kirjoitetaan) ja oppii tuntemaan riittävän
määrän peruskomentoja päästäkseen omin avuin eteenpäin5 .
Vaikka kurssilla keskitytään pelkästään Mathematican käyttöön, on tarkoituksena opettaa yleisemmin sovellettavissa olevia menetelmiä fysiikan ongelmien
ratkomiseksi tietokoneella. Mathematicalla on tässä mielessä etunsa ja haittansa: Symbolinen laskenta mahdollistaa varsin monimutkaisten ongelmien suoraviivaisen käsittelyn, mutta samojen menettelytapojen soveltaminen ei välttämättä
onnistu muissa ohjelmistoissa (ks. osio 3). Myös Mathematican notebookkien rakenne tekstiä, kuvia ja laskutoimituksina yhdistävinä dokumentteina ei ole kovin
tavanomainen.
Kuitenkin monet perusasiat (kuten vektoreiden ja matriisien käsittely, kuvien
tekeminen, interpolointi, datan lukeminen tiedostosta) ovat eri ohjelmistoissa luonteeltaan samankaltaisia, vaikkakin yksittäiset käskyt voivat olla hyvin erilaisia. Samoin monet ohjelmoinnin perusteet (kuten for-loopit ja if-lauseet) toistuvat pienin
variaatioin samanlaisina eri ohjelmissa.
2.2
Mathematica Oulun yliopistossa
Mathematica on varsin kallis ohjelmisto, ja Oulun yliopistolla on ainoastaan 16
lisenssiä opiskelijoiden ja tutkijoiden yhteiskäytössä6 . Opiskelijat voivat käyttää
Mathematicaa muun muassa luokassa YL124 (linux ja windows), mikrohallissa
PR106 (windows), sekä etäyhteydellä linux-palvelimessa haapa.oulu.fi.
Windowsin puolella Mathematican pitäisi löytyä aloitusvalikosta ja se käynnistyy myös napauttamalla notebook-tiedostoa (pääte .nb). Linuxin puolella ohjelmaa ei välttämättä löydy valikosta, mutta sen voi käynnistää komentoriviltä komennoilla ‘mathematica’ (normaali graafinen käyttöliittymä) tai ‘math’ (rajoittunut tekstitila, lopeta komennolla ‘Exit’). Jälkimmäisestä on hyötyä lähinnä hitaan
etäyhteyden yli käytettäessä.
5
Tämä muistuttaa vieraan kielen oppimista: Komennot=sanasto, syntaksi=kielioppi, ja sisäinen
logiikka kertoo miten monimutkaisetkin asiat on helpointa ilmaista sujuvasti ja luontevasti.
6
katso http://www.oulu.fi/tietohallinto/unix/mathematica.html
8
Graafisessa tilassa alkuun pääsee avaamalla uuden (tai olemassa olevan) notebookin. Notebook koostuu soluista, joihin voi sijoittaa tekstiä, kuvia tai laskuja.
Oletusarvoisesti jokaisen uuden solun tyyli on ‘input’, eli se sisältää laskuja tai
muita komentoja Mathematican suoritettavaksi. Solun tyyliä voi vaihtaa hiiren oikealla näppäimellä avautuvasta valikosta, format toolbaarista, tai näppäinoikotiellä (esim Alt + 7 on teksti, Alt + 9 on input). Huomaa että input-solussa vasta
Shift + Enter suorittaa laskun tai komennon, pelkkä Enter on rivinvaihto. Laskun tulos ilmestyy uuteen soluun, jonka tyyli on ‘output’.
2.3
Mathematica netissä
Mathematican joihinkin ominaisuuksiin voi tutustua ilmaiseksi kotikoneellaan kahden Wolfram Researhin ylläpitämän sivuston kautta:
• Integrator (http://integrals.wolfram.com/) laskee nimensä mukaan integraaleja. Se osaa integroida analyyttisesti kaikki samat integraalifunktiot kuin
Mathematicakin, mutta se ei laske määrättyjä integraaleja ja on rajoittunut
vain yhden muuttujan (weppipalvelussa aina x) funktioihin. Kannattaa tututstua varsinkin kohtaan “How to enter input” ja katsoa tulos myös muodossa “Input form”, sillä näitä komentoja voi käyttää suoraan varsinaisessa
Mathematicassa.
• Wolfram alpha (http://www.wolframalpha.com/) ei ole hakukone vaan “computational knowledge engine”. Sille voi antaa syötteeksi Mathematican komentoja, mutta myös vapaamuotoisia kysymyksiä tyyliin “integrate x*sin(
square root of x) from 0 to pi” tai “when is the next lunar eclipse visible in
Oulu”. Kannattaa tutustua erityisesti siviston matemaattisiin esimerkkeihin.
Ilmaisessa nettiversioissa on joitain rajoituksia, mutta täydelliseen versioon
pääsee käsiksi yliopiston Mathematicasta laittamalla rivin alkuun == .
Näistä kahdesta ilmaisesta työkalusta voi olla satunnaista hyötyä fysiikan opinnoissa, ainakin silloin kun varsinaiseen Mathematicaan ei pääse käsiksi. Niistä
voi myös olla hyötyä Mathematican käytön opettelussa, vaikkakin Wolfram alpha
käyttää hieman erilaista syntaksia kuin muut Mathematican funktiot, joten suora
hyödyntäminen ei aina ole mahdollista.
9
Harjoitustehtäviä
1. Laske nettisivulla http://integrals.wolfram.com/ seuraavat integraalit (sivun
linkistä “How to enter input” on varmasti apua, samoin muutaman satunnaisen esimerkin katsomisesta)
Z
x sin x dx,
Z
(2ax−x2 )−3/2 dx,
Z
√
sin x
dx,
1 + cos2 x
Z
log(x)e−x dx.
2. Ratkaise nettisivulla http://www.wolframalpha.com/ seuraavat tehtävät (linkin “Examples” kohdan “Mathematics” alta löytyvistä esimerkeistä on varmasti apua)
(a) Ratkaise kolmannen asteen yhtälö x3 + 2x2 + a = 0. Kokeile myös
arvolla a = 1.
(b) Ratkaise differentiaaliyhtälö y 00 + y 0 + x = 0.
(c) Laske integraali
Rπ
0
sin2 x dx.
(d) Onko 2101 + 1 alkuluku?
(e) Kuinka monta lammasta Suomessa on?
bonus Tutki kohdan 1) laskuissa esiintyvää Mathematica syntaksia. Saat sen esille
kohdasta “Input form”, joka tosin näyttää myös tuloksen sisältämät komennot. Koeta toistaa laskut näitä komentoja käyttämällä mikroluokan koneessa
olevalla Mathematicalla (huomaa että Mathematican graafisessa käyttöliittymässä Shift + Enter suorittaa käskyn).
3
Yleisesti matemaattisen mallinnuksen ohjelmista
Käytännössä kaikessa fysiikan tutkimuksessa tarvitaan matemaattista mallinnusta
aina kokeellisten laitteden suunnittelusta teoreettisen fysiikan yhtälöiden ratkaisuun ja approksimointiin. Hyvin usein fysiikassa käytettävien mallien yhtälöt eivät ole kynällä ja paperilla ratkeavia tai ratkaiseminen on erittäin työlästä. Tällöin
apukeinona käytetään tietokoneen laskentavoimaa. Numeeriseen ja analyyttiseen
työhön onkin vuosien saatossa kehitetty useita erilaisia ohjelmistoja ja rutiinikirjastoja. Seuraavassa muutamia yleisimmin käytettyjä ohjelmia ja (subjektiivisia)
kommentteja niiden hyvistä ja huonoista puolista.
Ohjelmointikielet voidaan jakaa käännettäviin ja tulkattaviin, vaikka raja ei
ole aivan terävä. Käännettäessä koko ohjelma tarvittavine kirjastoineen muutetaan
10
kerralla konekieleksi. Näin saatu ohjelma voidaan suorittaa itsenäisenä ohjelmana ilman kääntäjää. Tulkattaessa ohjelmakoodia käännetään pieni osa kerrallaan
(eikä yleensä edes konekielelle asti), suoritetaan se ja käännetään seuraava osa
ja niin edelleen. Ohjelman suoritus vaatii siis joka kerta tulkin. Alla luetelluista
kielistä C/C++ ja Fortran ovat käännettäviä, muut enemmän tai vähemmän tulkattavia. Yleisesti ottaen käännettävät ohjelmat ovat nopeampia ja ne voidaan siirtää
toisille käyttäjille itsenäisinä kokonaisuuksina. Tulkattavat kielet taas ovat yleensä nopeampia ohjelmoida ja helpompia muutella, mutta ohjelmien suorittaminen
vaatii aina käyttäjältä kyseisen ohjelmiston (joka voi olla kallis).
Todetaan vielä että se mitä työkalua kussakin tutkimusryhmässä tai tieteenalalla käytetään, tuntuu olevan hyvin satunnaisesti määräytynyt asia. Esimerkiksi tähtitieteilijät pitävät IDL:stä, monet fyysikot Matlabista ja tilastollista dataanalyysiä tekevät suosivat R:ää. Jotkut ryhmät kirjoittavat ohjelmansa Fortranilla
ja toiset C:llä. Usein tutkimusryhmässä käytetään sitä ohjelmistoa tai ohjelmointikieltä mitä ennenkin on käytetty, sillä silloin vanhoja ohjelmia voi hyödyntää
uusien ongelmien ratkaisemisessa.
Mathematica
+ Analyyttinen yhtälöiden ratkaisu, derivointi/integrointi ja sievennys. Valtava
määrä erilaisia sisäisiä funktioita. Tyylikäs ja laaja funktioiden piirtäminen. Mahdollisuus mielivaltaiseen numeeriseen tarkkuuteen.
- Laajojen taulukoiden käsittely hyvin hidasta. Ei sovi laajojen ohjelmakokonaisuuksien rakentamiseen. Epäkäytännöllinen kokeellisen datan käsittelyssä. Kaupallinen ja suhteellisen kallis hankkia.
Matlab
+ Erittäin laaja kokoelman valmiita funktioita ja ohjelmia datan käsittelyyn ja
visualisointiin. Lähempänä “oikeaa” ohjelmointia, jonka ansiosta soveltuu myös
laajojen kokonaisuuksien hallintaan. Käytetään laajalti, myös yksityisellä puolella. Soveltuu kokeellisen datan käsittelyyn. Voidaan linkittää C/C++ ja Fortran koodiin raskasta laskentaa varten.
- Analyyttiseen yhtälöiden käsittelyyn on lisämoduuli, mutta Mathematicaa rajoittuneempi. Kaupallinen, nykyään suhteellisen edullinen yliopistoille ja opiskelijoille, mutta kallis yksityisille.
11
Octave
+ Matlabin open source -versio, saatavilla ilmaiseksi. Usein yksinkertaiset Matlabohjelmat toimivat suoraan Octavessa.
- Ei niin laajaa numeerista kirjastoa kuin Matlabissa. Hankalampi käyttää kuin
Matlab (erityisesti kuvien tekeminen). Läheskään kaikki Matlab-ohjelmat eivät
toimi suoraan Octavessa.
IDL
+ Suosittu tähtitieteessä ja osassa avaruusfysiikkaa. Verrattavissa Matlabiin.
- Ei yhtä suosittu muilla aloilla. Kaupallinen ja kohtuullisen kallis.
R
+ Kehitetty tilastollista analyysiä varten, laaja kokoelma valmiita funktiota tähän
tarkoitukseen. Open source, vapaasti saatavilla. Verrattavissa Matlabiin.
- R on vielä kehittymässä, puutteita dokumentaatiossa ja yhteensopivuudessa vanhoihin versioihin.
Python
+ Nopeasti yleistyvä ohjelmointikieli numeerisessa mallinnuksessa, myös valmiit
ohjelmakirjastot jo varsin kattavia. Open source, saatavilla ilmaiseksi. Monien
mielestä hyvä balanssi Matlab-tyyppisen “high level” ja C/C++ -tyyppisen “low
level” ohjelmoinnin välillä. Ei välttämättä paras vaihtoehto moniin tehtäviin, mutta lähes kaikissa kohtuullinen.
- Ei vielä täysin kattavaa käyttäjäkuntaa/ohjelmakirjastoa/dokumentaatiota. Vaikka kohtuullinen työkalu moniin tehtäviin, ei välttämättä paras vaihtoehto mihinkään tiettyyn ongelmaan.
C/C++
+ True Klingon warriors program in C. Erittäin nopea raskaassa numeerisessa laskennassa. Ohjelmien hyvä siirrettävyys. Saatavissa laajoja numeerisia kirjastoja.
- True Klingon warriors program in C. Hidas pienten tehtävien tekemiseen. Koodatessa bugit vaivaavat ja niiden löytäminen on työlästä. Vaatii usein syvällistä
tietoa numeerisesta laskennasta nippelitasolla.
12
Fortran
+ Samat edut kuin C/C++:ssa. Merkittävä osa fysiikan mallinnusohjelmista on
kirjoitettu eri Fortranin versioilla (jo vuodesta 1957).
- Samat kuin C/C++:ssa (jo vuodesta 1957).
Viitteet
Amm O., “Ionospheric elementary current systems in spherical coordinates and
their application”, J. Geomag. Geoelec., 49, 947–955, 1997.
13