Johdatus f90/95 ohjelmointiin. H, R & R luvut 1-3



Samankaltaiset tiedostot
BJ30A1000 Kemiantekniikan tietotekniikka Fortran

Fortran 90/95. + sopii erityisesti numeriikkaan:

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

Ohjelmoinnin peruskurssi Y1

Yhtälön ratkaiseminen

Juha Haataja, Jussi Rahola ja Juha Ruokolainen

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Numeeriset menetelmät

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne

Ohjelmoinnin perusteet Y Python

Kielioppia: toisin kuin Javassa

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

FUNKTIOITA. Sisällysluettelo

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Demot Timo Männikkö

811120P Diskreetit rakenteet

Ohjelmoinnin peruskurssi Y1

Numeerinen integrointi

PHP tehtävä 3 Atte Pekarinen TIKT13A

Verkkokurssin tuotantoprosessi

Harjoitus 1 -- Ratkaisut

9 VEROTUS, TALLETUKSET JA LAINAT

Algoritmit 1. Demot Timo Männikkö

Harjoitus 4 -- Ratkaisut

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Harjoitus 1 -- Ratkaisut

Ohjelmoinnin perusteet Y Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python

Matematiikka vuosiluokat 7 9

Johdatus Ohjelmointiin

Numeeriset menetelmät

Numeerinen integrointi ja derivointi

Java-kielen perusteita

811120P Diskreetit rakenteet

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

TEHTÄVIEN RATKAISUT. Luku a) Merkintä f (5) tarkoittaa lukua, jonka funktio tuottaa, kun siihen syötetään luku 5.

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)

diskonttaus ja summamerkintä, L6

MATEMATIIKAN KOE, LYHYT OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

Jaksolliset suoritukset, L13

Viimeinen erä on korot+koko laina eli 666, , 67AC.

MS-A0107 Differentiaali- ja integraalilaskenta 1 (CHEM)

Numeriikan kirjastoja

Algebra. 1. Ovatko alla olevat väittämät tosia? Perustele tai anna vastaesimerkki. 2. Laske. a) Luku 2 on luonnollinen luku.

TIEA341 Funktio-ohjelmointi 1, kevät 2008

SISÄLTÖ. Vuokko Vanhala-Nurmi, 2009 Excel jatko

Talousmatematiikan perusteet: Luento 5. Käänteisfunktio Yhdistetty funktio Raja-arvot ja jatkuvuus

ITKP102 Ohjelmointi 1 (6 op)

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

10 Liiketaloudellisia algoritmeja

Luento 5. Timo Savola. 28. huhtikuuta 2006

Aloitustunti MAA22 Starttikurssi pitkän matematiikan opiskeluun

3. Muuttujat ja operaatiot 3.1

Esimerkki: Laskin (alkua) TIEA341 Funktio ohjelmointi 1 Syksy 2005

Strukturoitu ohjelmointi

Numeeriset menetelmät

Funktioiden approksimointi ja interpolointi

Rinnakkaistietokoneet luento S

Numeerinen analyysi Harjoitus 3 / Kevät 2017

Harjoitus 3 -- Ratkaisut

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Tietotyypit ja operaattorit

1 Ensimmäisen asteen polynomifunktio

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä

Kirjoita, tallenna, käännä ja suorita alla esitelty ohjelma, joka tervehtii käyttäjäänsä.

Muotoinosa tulkitaan vasta suoritushtkellä.

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Mat Investointiteoria - Kotitehtävät

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Talousmatematiikan perusteet: Luento 2. Sarjat Sovelluksia korkolaskentaan

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

Hannu Mäkiö. kertolasku * jakolasku / potenssiin korotus ^ Syöte Geogebran vastaus

Ohjelmoinnin peruskurssi Y1

Lainaosuusarviolaskurin Esimerkki 4 Annuiteettilainan koko elinkaari yhdessä laskelmassa

Ohjelmoinnin perusteet Y Python

Merkitse kertolasku potenssin avulla ja laske sen arvo.

Oletetaan ensin, että tangenttitaso on olemassa. Nyt pinnalla S on koordinaattiesitys ψ, jolle pätee että kaikilla x V U

2. Eukleideen algoritmi

Luento 2: Viivan toteutus

Ohjelmien analysointi. ER-kaaviot

3 Yleinen toisen asteen yhtälö ja epäyhtälö

Ohjelmoinnin peruskurssi Y1

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Tilastotieteessä aikasarja tarkoittaa yleensä sarjaa, jossa peräkkäisten havaintojen aikaväli on aina sama.

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Makrojen mystinen maailma lyhyt oppimäärä

Java-kielen perusteet

Lue tehtävänannot huolella. Tee pisteytysruudukko 1. konseptin yläreunaan. ILMAN LASKINTA -OSIO! LASKE KAIKKI SEURAAVAT TEHTÄVÄT:

Pienimmän neliösumman menetelmä

Transkriptio:

Johdatus f90/95 ohjelmointiin H, R & R luvut 1-3

Fortran-kieli ( 3.1-3) IBM 1954, FORmula TRANslator ISO/ANSI standardit f90, f95, f2003 tieteellinen & teknillinen laskenta rinnakkaislaskenta (HPF, openmp)

Fortran-kieltä voi käyttää taskulaskimen tapaan ( 3.4) PROGRAM lasku WRITE (*,*) 7*52 + 1 END PROGRAM lasku % pgf90 -o lasku lasku.f90 %./lasku

Merkkijonon tulostus ( 3.4) PROGRAM lasku WRITE (*,*) '7*52 + 1 = ', 7*52 + 1 END PROGRAM lasku

Reaalilukulaskuja ( 3.6) PROGRAM laskuja WRITE (*,*) 52./7. WRITE (*,*) 0.52e2/0.7e1 WRITE (*,*) 52/7 WRITE (*,*) 52/7. END PROGRAM laskuja

Sulkumerkkejä voi käyttää laskutoimitusten ryhmittelyyn ( 3.6) PROGRAM laskuja WRITE (*,*) 52.0/7.0+1.0, (52.0/7.0)+1.0, & 52.0/(7.0 + 1.0) END PROGRAM laskuja

Lainausmerkkien sisältävä merkkijono ( 3.6) PROGRAM tokaisu WRITE (*,*) 'yht''äkkiä oli kesä' WRITE (*,*) "yht'äkkiä oli kesä" END PROGRAM tokaisu

Muuttujia ( 3.7) PROGRAM kertolasku! Ohjelma lukee kaksi kokonaislukua sekä! laskee ja tulostaa niiden tulon. INTEGER :: i, j WRITE (*,*) 'Syötä luku i:' READ (*,*) i WRITE (*,*) 'Syötä luku j:' READ (*,*) j WRITE (*,*) 'Luku i:', i WRITE (*,*) 'Luku j:', j WRITE (*,*) 'Tulo i*j:', i*j END PROGRAM kertolasku https://extras.csc.fi/f95/esim-3.7.f90

Reaalilukutyypin muuttujia ( 3.8) PROGRAM potenssi! Ohjelma laskee ja tulostaa numeerisen lausekkeen arvon. REAL :: k, x INTEGER :: n WRITE (*,*) 'Syötä lausekkeen k*x**n luvut k, x ja n:' READ (*,*) k, x, n WRITE (*,*) 'Luku k:', k, ' Luku x:', x, ' Luku n:', n WRITE (*,*) 'Arvo k*x**n:', k*x**n END PROGRAM potenssi https://extras.csc.fi/f95/esim-3.8.f90

Sijoituslause ( 3.9) PROGRAM neliojuuri! Ohjelma laskee neliöjuurilausekkeen arvon. REAL :: x, y INTRINSIC SQRT WRITE (*,*) 'Syötä luku x:' READ (*,*) x y = x**2 + 1 WRITE (*,*) 'Luku x:', x WRITE (*,*) 'Arvo x**2 + 1:', y WRITE (*,*) 'Arvo SQRT(x**2 + 1):', SQRT(y) END PROGRAM neliojuuri https://extras.csc.fi/f95/esim-3.9.f90

Omien funktioiden määritteleminen ( 3.10) PROGRAM funktio_esimerkki! Ohjelma lukee reaaliluvun x ja tulostaa! funktion f arvon tässä pisteessä. REAL :: x WRITE (*,*) 'Syötä luku x:' READ (*,*) x WRITE (*,*) 'Luku x:', x WRITE (*,*) 'Arvo f(x):', f(x) CONTAINS FUNCTION f(a) RESULT(f_arvo) REAL :: a, f_arvo f_arvo = a**2 + 1 END FUNCTION f END PROGRAM funktio_esimerkki https://extras.csc.fi/f95/esim-3.10.f90

Toistorakenne: DO-silmukka ( 3.11) PROGRAM silmukka REAL :: x INTEGER :: i DO i = 1, 10 x = REAL(2**i) WRITE (*,*) 'arvot:', x, (1 + 1/x)**x END DO END PROGRAM silmukka https://extras.csc.fi/f95/esim-3.11.f90

Taulukko ( 3.12) PROGRAM keskiarvolasku INTEGER, PARAMETER :: lkm = 3 REAL, DIMENSION(lkm) :: arvosanat REAL :: keskiarvo INTRINSIC SUM arvosanat(1) = 7.25 arvosanat(2) = 7.0 arvosanat(3) = 9.5 keskiarvo = SUM(arvosanat)/lkm WRITE(*,*) keskiarvo END PROGRAM keskiarvolasku

Tulostuksen muotoilu ( 3.13) PROGRAM silmukka REAL :: x INTEGER :: i DO i = 1, 10 x = REAL(2**i) WRITE (*,'(A6,F7.1,F7.4)') 'arvot:',& x, (1 + 1/x)**x END DO END PROGRAM silmukka

Asuntolainan lyhennykset PROGRAM annuiteetti! Ohjelma laskee annuiteettilainan kuukausierän. REAL :: vuosikorko, kk_korko, lainasumma, kk_era INTEGER :: laina_aika WRITE (*,*) 'Anna vuosikorko prosentteina (%):' READ (*,*) vuosikorko WRITE (*,*) 'Anna alkuperäinen lainasumma (mk):' READ (*,*) lainasumma WRITE (*,*) 'Anna laina-aika kuukausissa (kk):' READ (*,*) laina_aika WRITE (*,'(A20, F12.2)') 'Vuosikorko (%):', vuosikorko WRITE (*,'(A20, F12.2)') 'Lainasumma (mk):', lainasumma WRITE (*,'(A20, I12)') 'Laina-aika (kk):', laina_aika IF (vuosikorko > 0.AND. lainasumma > 0 &.AND. laina_aika > 0) THEN! Syöttötiedot ovat kunnossa kk_korko = (vuosikorko/100.0)/12.0 kk_era = kk_korko*lainasumma/ & (1 - (1 + kk_korko)**(-laina_aika)) WRITE (*,'(A20,F12.2)') 'Kuukausimaksu (mk):', kk_era ELSE WRITE (*,*) 'Virhe: arvojen pitää olla positiivisia!' END IF END PROGRAM annuiteetti P = rl 1 (1+ r) m https://extras.csc.fi/f95/esim-3.14.f90

Simulointi PROGRAM pisteparit! Ohjelma simuloi pisteparin sijoittamista! yksikköneliöön. REAL, DIMENSION(2) :: a, b REAL :: d, s = 0.0 INTEGER :: i, n 1 WRITE (*,*) 'Anna lukuparien lkm:' READ (*,*) n WRITE (*,*) 'Pistepareja:', n, ' kpl' IF (n > 0) THEN DO i = 1, n CALL RANDOM_NUMBER(a) CALL RANDOM_NUMBER(b) s = s + SQRT(SUM((a - b)**2)) END DO d = s/n WRITE (*,*) 'Etäisyyden keskiarvo:', d ELSE WRITE (*,*) 'Lukumäärä negatiivinen!' END IF END PROGRAM pisteparit 0 0 a d b https://extras.csc.fi/f95/esim-3.16.f90 1

Moduulit MODULE taulukko_operaatiot CONTAINS FUNCTION jako(a, b, n) REAL :: a, b INTEGER :: n REAL, DIMENSION(n+1) :: jako REAL :: pituus INTEGER :: i pituus = ABS(a-b) jako = MIN(a,b) + (/ (i, i = 0, n) /)*pituus/n END FUNCTION jako END MODULE taulukko_operaatiot PROGRAM jakaminen USE taulukko_operaatiot INTEGER, PARAMETER :: n = 5 REAL, DIMENSION(n+1) :: arvot REAL :: pii pii = 4*ATAN(1.0) arvot = jako(0.0, pii, n) WRITE (*,*) 'arvot: ', arvot WRITE (*,*) 'SIN(arvot): ', SIN(arvot) END PROGRAM jakaminen https://extras.csc.fi/f95/esim-3.17.f90 % pgf90 -c taulukko_operaatiot.f90 % pgf90 jakaminen.f90 taulukko_operaatiot.o %./a.out

Harjoituksia Muuta ohjelmaa jakaminen siten, että sinifunktion arvo lasketaan pisteissä {-π, -9π/10, -8π/10,,0,,π}. Muuta ohjelmaa annuiteetti siten, että kuukausierän lisäksi tulostetaan kuukausittain jäljellä oleva lainapääoma. (Kuukausierään sisältyy sekä korkoa että lyhennystä.) Muuta simulointiohjelmaa pisteparit siten, että etäisyyden laskemiseen käytetään maksiminormia d = max( a 1 -b 1, a 2 -b 2 ) vihje: MAXVAL, ABS