(763315A), kevät 2015 - Noppa
Transcription
(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