Arvosteluun vaikuttavat mm. ratkaisun selkeys ja tehtävän jäsentely sopiviin aliohjelmiin, havainnollisuus (muuttujien nimet, kommentit jne.), yleisyys, tulostuksen luettavuus ja helppokäyttöisyys.
Muualta kopioidut/sovelletut koodin osat täytyy ilmaista selvästi sekä itse ohjelmassa että sanallisesti työselostuksessa.
Jos kyseessä on esim. integrointirutiini, jolle parametrina annetaan jokin käyttäjän funktio, testaa sitä useilla eri funktioilla. Taaskin muutama tapaus pitää olla laskettavissa analyyttisesti, jotta tulos voidaan tarkistaa, mutta kokeile myös hankalampia tapauksia.
Hannu Karttunen, Tuorlan Observatorio, Väisäläntie 20, 21500 Piikkiö.
Jos lähetät työn sähköpostilla, helpointa olisi koota kaikki asiaan kuuluvat tiedostot yhteen hakemistoon, paketoida hakemisto tar-tiedostoksi ja toimittaa liitetiedostona.
Sähköpostitse neuvoja voi kysyä milloin tahansa. Henk. koht. neuvoja voi kysellä luentojen yhteydessä. Käyn kurssin jälkeenkin aika usein Helsingissä, joten voidaan tavata tarvittaessa Observatoriolla tai kampuksella.
Työ on palautettava viimeistään syyskuun loppuun mennessä. Jos tarvitset jatkoaikaa, sovi asiasta hyvissä ajoin.
Seuraava kappale koskee lähinnä Turussa pidettävää kurssia, mutta voivat hesalaisetkin tulla tutustumaan laitokseen: Tuorlassa voi myös käydä henk.koht. Noin 12 km Turun keskustasta vanhaa Helsingin tietä 110; heti Kaarinan ja Piikkiön rajan jälkeen oikealle lähtee tie Tuorlan maatalousoppilaitokseen ja Tuorlan observatorioon. Heti risteyksen jälkeen on myös bussipysäkki. Lyhyen puistokujan jälkeen käänny vasemmalle ja jatka suoraan tietä pitkin ja ylös mäkeä, kunnes vastaan tulee tähtitorneja ja niiden jälkeen laitoksen päärakennus. Helsingistä tultaessa kannattaa ajaa moottoritietä Raadelman liittymään, josta käännytään vasemmalle moottoritien yli ja aivan pian tullaan vanhalle Helsinki-Turku-tielle 110, jota jatketaan oikealle kohti Turkua lyhyen matkaa (vajaa km?) ja sitten käännytään vasemmalle koivukujalle Tuorlaan.
Työt voi tehdä 2 hengen ryhmissä, jolloin molemille työntekijöille annetaan sama arvosana. Työt pyritään jakamaan siten että samaa työtä ei anneta kovin monelle ryhmälle.
Yhtälöiden tiedot luetaan tiedostosta, mutta ohjelma voi myös tuottaa satunnaisia kertoimia testausta varten.
Tutki, miten suoritusaika riippuu yhtälöiden määrästä (oltava aika iso, jotta tämä tulee selvästi esille),
Kertoimien lisäksi aliohjelmien on palautettava myös niiden virheet sekä yhden pisteen keskimääräinen residuaali ja suurin poikkeama sovitetusta funktiosta.
Pyri varautumaan mahdollisimman moniin virhetilanteisiin, joista on myös välitettävä tieto kutsuvalle ohjelmalle.
Pyri varautumaan mahdollisimman moniin virhetilanteisiin, joista on myös välitettävä tieto kutsuvalle ohjelmalle.
Käytä tulosten esittämiseen jotakin piirto-ohjelmaa tai grafiikkakirjastoa.
Moniaskelmenetelmien tarvitsemat alkuarvot lasketaan ensin yksiaskelmenetelmällä.
Sovella menetelmiä esimerkiksi lineaarisen harmonisen oskillaattorin yhtälöön ja vertaa tuloksia tarkkaan ratkaisuun.
Moniaskelmenetelmien tarvitsemat alkuarvot lasketaan ensin yksiaskelmenetelmällä.
Sovella menetelmiä esimerkiksi lineaarisen harmonisen oskillaattorin yhtälöön ja vertaa tuloksia tarkkaan ratkaisuun.
Testaa funktioita riittävän monilla eri arvoilla. Tutki tuloksen tarkkuutta ja riippuvuutta paramatreista ja selvitä, millä välillä funktiot ovat käyttökelpoisia.
Ensimmäiset Legendren polynomit ovat
P0(x) = 1,
P1(x) = x,
P2(x) =
(1/2) (3x2-1),
P3(x) =
(1/2) (5x2-3x),
P4(x) =
(1/8) (35x4-30x2+3).
Legendren polynomien arvot voidaan laskea palautuskaavoista
P0(x) = 1,
P1(x) = x,
(2n+1)xPn(x) =
(n+1)Pn+1(x) +
nPn-1(x).
Gaussin kvadratuurissa tarvittavat pisteet ovat juuri Legendren polynomien nollakohtia.
Lisätietoja erikoisfunktioista on runsaasti mm. teoksissa
Arfken: Mathematical methods for physicists, Academic Press,
Abramowitz, Stegun: Handbook of mathematical functions, Dover.
Testaa funktioita riittävän monilla eri arvoilla. Tutki tuloksen tarkkuutta ja riippuvuutta paramatreista ja selvitä, millä välillä funktiot ovat käyttökelpoisia.
Ensimmäisen lajin elliptinen integraali voidaan määritellä kaavalla
F(x | m) = \int0x [(1-t2) (1-mt2)]-1/2 d t, 0 <= m < 1,
ja toisen lajin elliptinen integraali kaavalla
E(x | m) = \int0x [ (1-mt2) / (1-t2) ]1/2 d t, 0 <= m <= 1.
Besselin funktio Jk(x) on
Jk(x) = (1 / 2\pi) \int02\pi cos(kt - x sin t) d t.
Besselin funktiot voidaan laskea myös sarjakehitelmistä
J0(x) = 1-(x/2)2 + (1/4) (x/2)4 - ... + [(-1)n / n!]2 (x/2)2n + ...
Jk(x) =
(x/2)k (1/k !) [
1 - (1 / k+1) ((x/2)2 + ... +
((-1)n / n !)
(k+1)(k+2) ... (k+n)
(x/2)2n
+ ... ].
Ensimmäisten Besselin funktioiden likimääräiset lausekkeet ovat
J0(x) =
1 - x2/4 + x4/64 +
O(x6),
J1(x) =
x/2 - x3/16 +
O(x5),
J2(x) =
x2/8 - x4/96 +
O(x6),
J3(x) =
x3/48 + O(x5),
J4(x) =
x4/384 + O(x6).
Lisätietoja erikoisfunktioista on runsaasti mm. teoksissa
Arfken: Mathematical methods for physicists, Academic Press,
Abramowitz, Stegun: Handbook of mathematical functions, Dover.
Testaa funktioita riittävän monilla eri arvoilla. Tutki tuloksen tarkkuutta ja riippuvuutta paramatreista ja selvitä, millä välillä funktiot ovat käyttökelpoisia.
Tshebyshevin polynomi Tn määritellään kaavalla
Tn(x) = cos n \phi = cos(n arccos x).
T0(x) = cos 0 = 1,
T1(x) = cos arccos x = x,
T2(x) = cos (2 arccos x) = cos 2\phi
= 2 cos2 \phi - 1
= 2 x2 - 1,
T3(x) = 4x3 - 3x,
T4(x) = 8x4 - 8x2 + 1
T5(x) = 16x5 - 20x3 +
5x.
Koska funktion cos \phi nollakohdat ovat \phi=(2k+1)\pi/2, k=0,1,..., funktion cos n\phi nollakohdat ovat
\phi = ((2k + 1) / n) (\pi / 2), k=0, 1, ...
Koska Tn(x)=cos n phi, nämä ovat samalla polynomin Tn nollakohtia. Muuttujan x avulla lausuttuina nollakohdat ovat
xk = cos [ ((2kk+1)/n) (\pi/2)], k=0, 1, ... , n-1.
Lisätietoja erikoisfunktioista on runsaasti mm. teoksissa
Arfken: Mathematical methods for physicists, Academic Press,
Abramowitz, Stegun: Handbook of mathematical functions, Dover.
Autokorrelaatiofuntkio
Nykyisen havainnon ja k aika-askelta myöhemmän havainnon välistä riippuvuutta kuvaa autokorrelaatio
R(k) = (1 / (N-k-1)) \sumi=1N-k fi fi+k,
missä N on havaintojen määrä. Kun tämä lasketaan viiveen k eri arvoilla, k=1, ..., N-2, saadaan autokorrelaatiofunktio.
Etsityn jakson monikerrat näkyvät aina autokorrelaatiofunktiossa.
Jos havainnot ovat puhdasta valkoista kohinaa, peräkkäiset arvot eivät ole lainkaan korreloituneita. Jos aineistossa esiintyy ajan suhteen jatkuvaa vaihtelua, peräkkäiset arvot ovat lähellä toisiaan, ja voimakkain korrelaatio vallitsee peräkkäisten pisteiden (k=1) välillä. Pieniä k:n arvoja vastaavat suuret korrelaatiot eivät kuitenkaan johdu mistään jaksollisuudesta. Vasta seuraava paikallinen maksimi on osoitus ilmiön jaksollisuudesta.
Rakennefuntkio
Tutkitaan erotusta x(t+\tau)-x(t). Ensimmäisen asteen rakennefunktio (structure function) on
D(\tau) = (1/N) \sum [ x(t+\tau) - x(t]2.
Rakennefunktio on määritelty aikasarjalle myös, jos keskiarvo ja varianssi eivät ole määriteltyjä. Rakennefunktioita voidaan siis soveltaa useampaan aikasarjaan kuin autokorrelaatiofunktioita.
Toteuta seuraavat jakaumat:
Normaalijakauman tiheysfunktio on
f(x) = 1 / (\sqrt(2\pi)\sigma) exp( -(x-\mu)2 / \sigma2),
missä \mu on odotusarvo ja \sigma2 varianssi.
Normaalijakauman kertymäfunktio
P(x) = (1 / \sqrt(2\pi)) \int-\inftyx exp( - t2 / 2) d t
ei ole laskettavissa analyyttisesti. Sille on kuitenkin johdettu erilaisia approksimaatioita. (0, 1)-normaalijakauman kertymäfunktio on likimain
P(x) = 1 - exp( -x2/2 / \sqrt(2\pi)) (0.4361836t-0.1201676t2+0.9372980t3),
missä t=1/(1+0.33267x).
(Abramowitz, Stegun: Handbook of mathematical functions, Dover)
d x/d t = a(y-x)
d y/d t = -xz+bz-y
d z/d t = xy-cz,
missä a=10, b=28 ja c=8/3.
Valitse jokin sopiva alkupiste. Piirrä x (tai y) ajan funktiona. Piirrä samaan kuvaan useita kuvaajia muuttamalla x:n (tai y:n) arvoa vähän. Käytä sopivaa värikoodausta. Mitä havaitset?
Piirrä sitten kuvaaja, josta ilmenee esim. y:n käyttäytyminen x:n fuktiona. Tarkastele miten tämä kuvaaja muuttuu muuttaessasi vakioiden a, b ja c arvoja.