Harjoitus 7
Ratkaisut palautettava viimeistään luennolla 22.3.
1. Generoi joukko (0, 1)-normaalijakautuneita satunnaislukuja
a) laskemalla yhteen neljä tasaisesti jakautunutta satunnaislukua,
b) Box-Mullerin menetelmalla.
Tulosta kummankin jakauma
jakamalla luvut sopiviin luokkiin, esimerkiksi [-5,-4.5),
[-4.5, -4), ..., [4.5, 5).
2. Tee ohjelma, joka laskee n-ulotteisen pallon tilavuuden integroimalla Monte Carlo -menetelmällä. Tutki tarkkuuden paranemista pisteiden lukumäärän kasvaessa, kun n=3 ja 5. Pallon tilavuus on
Vn = Rn\pin/2 / (n/2)!,
missä R on pallon säde. Jos n on pariton, tarvitaan tietoa, että
(m+ 1/2)! = \sqrt(\pi) (2m+2)! /((m+1)! 4m+1).
3. Rationaalilukumoduulin koodi löytyy kurssin demo-ohjelmista. Täydennä maduulia niin, että myös muut laskutoimitukset (-, *, /) on määritelty, jos toinen operandi on kokonaisluku. Testaa moduulin toimivuutta omalla pääohjelmalla.
4. Kirjoita moduuli magnitudeilla laskemista varten. Testaa sitä esimerkiksi seuraavanlaisella pääohjelmalla:
program magtest\nl use magnit\nl implicit none\nl type (magnitude) :: m1, m2, mtot\nl real x\nl m1 = 1.0\nl m2 = 2.0\nl mtot = m1+m2\nl x=mtot\nl write(*,*) x\nl end program
Tässä siis magnitudien yhteenlasku sekä sijoitusoperaatiot realiluku = magnitudi ja magnitudi = reaaliluku on määriteltävä moduulissa.