Ohjelmointi ja tilastolliset menetelmät

Koko: px
Aloita esitys sivulta:

Download "Ohjelmointi ja tilastolliset menetelmät"

Transkriptio

1 Ohjelmointi ja tilastolliset menetelmät Jarmo Hurri Teknologiateollisuuden 100-vuotissäätiö Vaisala Oyj Helsingin Suomalainen Yhteiskoulu

2

3 Ohjelmointi ja tilastolliset menetelmät i Teoksen kirjoittamista on rahoittanut Teknologiateollisuuden 100-vuotissäätiö. Sivun 87 tehtävä on kehitetty yhteistyössä Vaisalan kanssa. Visuaalisen ilmeen suunnittelussa on avustanut Jenni Hurri. Työ on tehty avoimen lähdekoodin ohjelmistoilla. Tämän teoksen tekijä on Jarmo Hurri. Teos on tehty vuosina Teos on lisensoitu Creative Commons Attribution-ShareAlike 3.0 Unported -lisenssillä. Lisenssin tarkka määrittely löytyy sivulta Alla olevat rivit sisältävät dokumentin lähdetiedoston versionhallintatiedon sekä aikaleiman. $Id: otm.tex,v /01/16 14:32:25 jarmo Exp $ $Modified: Wed Jan 16 14:29:27 UTC 2013 by jarmo $

4 Lukijalle Kenelle kurssi on tarkoitettu? Kurssi on tarkoitettu sellaisille lukion pitkän matematiikan opiskelijoille, jotka ovat kiinnostuneita tietokoneohjelmista sekä niiden soveltamisesta lukuaineistojen käsittelyyn. Kurssi voidaan opiskella pakollisten kurssien kuudennen kurssin (todennäköisyys ja tilastot) jälkeen. Tämä kirja sopii sekä itseopiskeluun että opiskeluun opettajan johdolla. Ohjelmointi Ohjelmointitaitoja tarvitaan silloin, kun valmiiden tietokoneohjelmien ominaisuudet eivät riitä. Ohjelmointitaidoille on kysyntää, sillä uusia ongelmia ratkotaan jatkuvasti uusin tavoin. Matematiikan soveltaminen todellisiin ongelmiin sisältää tyypillisesti myös ohjelmointia. Tilastolliset menetelmät Yhteiskunta tuottaa valtavasti digitaalista aineistoa ja hyödyntää sitä yhä enenevässä määrin. Tilastollisissa menetelmissä näitä aineistoja käsitellään ja analysoidaan matematiikan, erityisesti todennäköisyyslaskennan avulla. Koska aineistot ovat suuria, tietokoneiden käyttö on välttämätöntä. Koska ongelmat ja aineistot ovat uusia, joudutaan kirjoittamaan uusia tietokoneohjelmia. Tilastolliset menetelmät ovat useiden alojen kulmakivi. Näihin aloihin kuuluvat mm. bioinformatiikka, tiedon louhinta, koneoppiminen, liiketoimintatiedon hallinta ja data-analyysi. Tilastolliset menetelmät ovat myös tärkeitä kokeellisten tieteiden työkaluja. Kurssin tavoitteet ja keskeiset sisällöt Kurssin tavoitteena on, että opiskelija oppii muodostamaan tietokoneohjelmien lausekkeita käsittelemään lukuaineistoja lausekkeiden avulla ii

5 Ohjelmointi ja tilastolliset menetelmät iii toteuttamaan monimutkaisempia toimintoja algoritmien ja kontrollirakenteiden avulla ymmärtämään ja soveltamaan keskeisiä tilastollisia menetetelmiä. Kurssin keskeisen sisällön muodostavat lauseke, muuttuja, funktio algoritmi ehdollinen suorittaminen, toistorakenteet ja rekursio pienimmän neliösumman menetelmä hypoteestin testaus luottamusväli. Mikä R on? Ohjelmointikielenä kurssilla käytetään R-kieltä, joka on keskeinen tilastollisten menetelmien ohjelmointikieli. R:n erityinen soveltuvuus tilastollisiin menetelmiin ei ole varsinainen syy sen käyttöön tällä kurssilla, vaan valinta johtuu R:n useista hyödyllisistä ominaisuuksista. R on tulkattu eli interaktiivinen ohjelmointiympäristö, mikä helpottaa ohjelmoinnin aloittamista ja kannustaa kokeilemiseen sekä aineiston monipuoliseen tarkasteluun. Kielen korkea abstraktiotaso vapauttaa aloittavan ohjelmoijan teknisistä yksityiskohdista. Vektorisoiduilla laskutoimituksilla ja valmiilla grafiikkafunktioilla on mahdollista saada paljon aikaiseksi lyhyessä ajassa. Mitä kurssin suorittamiseen tarvitaan? Kurssin suorittamiseen tarvitaan tietokone ja verkkoyhteys. Käytetyt ohjelmistot ovat ilmaisia; asennusohjeet yleisimpiin käyttöjärjestelmiin löytyvät liitteestä D sivulta 146. Tämän kirjan uusin versio on aina ladattavissa kurssin kotisivulta osoitteesta Kirjaa voi lukea näytöltä tai sen voi tulostaa. Koska värillinen tulostaminen on suhteellisen kallista, kirja on suunniteltu mustavalkoiseksi lukuunottamatta PDF-tiedostossa olevia linkkejä, jotka mustavalkotulosteessa näkyvät joko mustina tai harmaina. Jotta kopioimalla saataisiin korkealaatuinen lopputulos, harmaasävykuvien määrä on mahdollisimman pieni (poikkeukset sivuilla 71 sekä 188). Kirja on tarkoitettu tulostettavaksi / kopioitavaksi kaksipuolisena; yksipuolisessa tulosteessa jotkut sivut jäävät tyhjiksi.

6 iv Lukijalle Ajankäyttöehdotus aihe tuntimäärä lauseke, muuttuja ja funktiokutsu 3 vektori 2 matriisi 1 funktio ja algoritmi 4 toistorakenteet 2 rekursio 2 pienimmän neliösumman menetelmä 4 satunnaismuuttujia R:llä 1 hypoteesin testaus 4 keskeinen raja-arvolause 2 luottamusväli 4 yhteensä 29

7 Sisältö Lukijalle ii 1 Lauseke, muuttuja ja funktiokutsu 2 2 Vektori 12 3 Matriisi 26 4 Funktio ja algoritmi 34 5 Toistorakenteet 48 6 Rekursio 60 7 Pienimmän neliösumman menetelmä 70 8 Satunnaismuuttujia R:llä 90 9 Hypoteesin testaus Keskeinen raja-arvolause Luottamusväli 118 Liitteet 129 A P-arvo 130 B Bayesiläinen päättely 134 C Todistuksia 142 D Ohjelmistojen asentaminen 146 E Tehtävien ratkaisut 150 F Kirjan muutoshistoria 199 Yleisesti käytettyjä R-lausekkeita 201 Muutamia hyödyllisiä Emacs-komentoja 202 1

8 1 Lauseke, muuttuja ja funktiokutsu Valmistelevat toimenpiteet 1. Varmista, että tietokoneeseesi on asennettu R, Emacs sekä ESS (Emacs Speaks Statistics). Mikäli näin ei ole, seuraa asennusohjeita liitteestä D sivulta Mikäli luet kirjaa tietokoneen näytöltä, mutta käytössäsi on tulostin, tulosta hyödyllisten R-lausekkeiden sekä Emacs-komentojen taulukot sivuilta Käynnistä Emacs. 4. Käynnistä R Emacsissa seuraavasti. Pidä näppäin Alt pohjassa, paina ja vapauta näppäin x ja vapauta sen jälkeen Alt. Tästä näppäinyhdistelmästä käytetään lyhennysmerkintää M-x. Kursori siirtyy ikkunan alareunassa olevalle riville. Kirjoita riville R ja paina rivinvaihtonäppäintä ê. 5. Emacs kysyy, missä hakemistossa R:ää halutaan ajaa; voit valita oletusarvoisen hakemiston. (Halutessasi voit myös luoda erityisen hakemiston tätä kurssia varten ja ajaa R:ää uudessa hakemistossasi.) Lauseke R suorittaa lausekkeita, aivan kuten laskinkin. Lauseke on jokin laskutoimitus tai toimenpide, joka suoritetaan painamalla rivinvaihtonäppäintä ê. Alla on muutamia esimerkkejä lausekkeista sekä R:n tulostamat vastaukset. > [1] > 12 * 64 / 6 [1] 128 > (-2)^3 [1] -8 2

9 Ohjelmointi ja tilastolliset menetelmät 3 R:n ensimmäiseen lausekkeeseen antama vastaus [1] tarkoittaa, että tulos on lukujono, jonka ensimmäinen luku, tässä tapauksessa ainoa luku, on 11,6. Seuraavan esimerkin lauseke palauttaa lukujonon, jossa on 41 lukua. Tällöin hakasuluissa oleva luku rivin vasemmassa reunassa kertoo, missä kohdassa lukujonoa R on tulostuksessa menossa. > -20:20 [1] [18] [35] Ohjelmiin kirjoitetaan usein tekstiä selventämään, mitä ohjelma tekee. Tällaista tekstiä kutsutaan kommentiksi. R-kielessä kommentti kirjoitetaan #-merkin perään: R jättää #- merkin perässä olevan tekstin huomiotta rivin loppuun saakka. > sqrt (196) # luvun 196 neliöjuuri [1] 14 > 2^2-5 < 0 # lausekkeella voi olla totuusarvo TRUE tai FALSE [1] TRUE > "Ja katso, niin koitti uusi aamu." # arvo voi olla merkkijono (teksti) [1] "Ja katso, niin koitti uusi aamu." > ((9^2-3) )/3*2 # välilyöntejä ei tarvita väleissä... [1] > ((9^2-3) ) / 3 * 2 #... mutta ne voivat auttaa luettavuutta [1] R-ikkunassa näppäinkomento M-p (eli Alt ja p) hakee komentohistoriasta edellisen komennon 1 ; tässä p tulee sanasta previous, edellinen. Jos vahingossa päädytään historiassa liian kauas, niin näppäinkomennolla M-n (eli Alt ja n, sanasta next eli seuraava) saadaan komentohistoriasta seuraava komento. Komentojen täydentäminen Jos R:n komentorivillä painetaan tabulaattorinäppäintä, R pyrkii täydentämään kirjoitettavana olevan merkkijonon parhaan tietonsa mukaan etsimällä funktioita, muuttujia tai tiedostonnimiä, jotka alkavat kirjoitetuilla kirjaimilla. R:ssä ainoa kirjaimilla sq alkava funktio on sqrt. Kirjoita R:n komentoriville kirjaimet 1 Mikäli käytät Mac OS X tai Linux-käyttöjärjestelmää ja olet seurannut liitteen D ohjeita, näppäinyhdistelmä M-p hakee historiasta edellisen komennon, joka alkaa samoilla kirjaimilla kuin mitä komentoriville on jo kirjoitettu. Tämä on näppärä tapa toistaa usein käytettyjä komentoja kirjoittamalla niistä vain muutama ensimmäinen kirjain. Näppäinyhdistelmän M-n vaikutus muuttuu vastaavalla tavalla.

10 4 Luku 1. Lauseke, muuttuja ja funktiokutsu sq ja paina tabulaattoria. Tällöin R täydentää funktion nimen. Kirjaimilla name alkavia funktioita on R:ssä useampia. Jos kirjoitat R-ikkunaan name ja painat tabulaattoria, niin R täydentää komennon muotoon names ja ilmoittaa Partially completed, eli Osittain täydennetty. Kaikki name-alkuiset funktiot alkavat names, ja lisäksi on olemassa funktio nimeltä names. Kun nyt painat tabulaattoria toisen kerran, R jakaa ikkunan kahteen osaan ja näyttää alemmassa osassa kaikki mahdolliset kirjaimilla names alkavat funktiot. Suljetaan seuraavaksi ikkunan alempi osa. Kun kursori on R-osassa, alemman osan voi sulkea valikosta FileÑRemove Other Windows (tai vanhemmissa Emacs-versioissa Remove Splits) tai näppäinkomennolla C-x 1, missä C-x tarkoittaa, että pidetään Ctrl-näppäin pohjassa, painetaan ja vapautetaan näppäin x ja vapautetaan Ctrl. Muuttuja Muuttuja on nimetty muistipaikka, johon voidaan tallentaa tietoa sijoittamalla muuttujaan jonkin arvo ja jota voidaan käyttää myöhemmin ohjelmassa. R ei oletusarvoisesti tulosta sijoituksen tulosta; tilastoja pyöritellessä muuttujiin sijoitetaan usein tuhansien lukujen pituisia lukujonoja, joiden vilinää ei ole mukava katsella tietokoneen näytöllä. Muuttujaan sijoittaminen tehdään R-kielessä operaattorilla <- tai operaattorilla -> seuraavaan tapaan: 2 > x <- 3 # sijoitetaan muuttujaan x luku 3 > x # sijoittamisella ei ole arvoa, mutta arvo voidaan tarkistaa näin [1] 3 > y <- -5; y # puolipisteen avulla saa monta lauseketta riville [1] -5 > (y <- -5) # sama kuin edellinen rivi: sijoitus suluissa tulostaa arvon [1] -5 > -5 -> y; y # sama kuin edellinen sijoitus [1] -5 > (katu <- "Isonnevantie") # muuttujiin voi tallentaa merkkijonoja 2 R:ssä voidaan useissa tapauksissa sijoittaa muuttujaan arvo myös operaattorilla =, mutta tästä voi seurata hankaluuksia, koska operaattorilla = määritetään myös funktioiden parametrien arvoja, kuten myöhemmin nähdään.

11 Ohjelmointi ja tilastolliset menetelmät 5 [1] "Isonnevantie" > ((x - y) / (x + y) -> z) # lasketaan uuden muuttujan arvo [1] -4 R:ssä käytetään usein pistettä erottamaan muuttujan nimien ja funktion nimien osia. > x <- -3 > (x^2 -> x.nelio) # muuttujan nimessä voi olla piste erottamassa sanoja [1] 9 > (x > 0 -> x.on.positiivinen) # muuttujiin voi tallentaa totuusarvoja [1] FALSE > (x.1 <- 4); x.1^3 # nimessä voi olla numeroita; se alkaa kirjaimella [1] 4 [1] 64 Varoituksen sana on tässä paikallaan: useissa ohjelmointikielissä piste on varattu erityiseen käyttöön, joten niissä muuttujan nimen osat erotetaan toisistaan eri tavoin. Esimerkkejä vaihtoehtoisista tavoista erottaa osat toisistaan ovat isot kirjaimet (xnelio) ja alaviiva (x_nelio). Tiedot muuttujiin Ohjelmoinnissa informaatiota ei kopioida useisiin paikkoihin. Jos samaa arvoa käytetään useammassa kohdassa, niin arvo sijoitetaan aina muuttujaan. Tämä helpottaa ohjelman kirjoittamista, parantaa ohjelman ymmärrettävyyttä sekä helpottaa muutosten tekemistä. Joissain tapauksissa luku sijoitetaan muuttujaan, vaikka lukua käytettäisiin vain kerrankin, koska näin voidaan välttää mystisten lukujen esiintymistä ohjelmassa. Alla on kaksi eri versiota samasta laskutoimituksesta, ja jälkimmäinen saattaa näyttää ymmärrettävämmältä, kun ohjelman kirjoittamisesta on kulunut muutama vuosi. > (hinta < * 1.23 * 1.04) [1] > > veroton.hinta < ; alv.kerroin <- 1.23; tulli.kerroin < > (hinta <- veroton.hinta * alv.kerroin * tulli.kerroin) [1]

12 6 Luku 1. Lauseke, muuttuja ja funktiokutsu Funktiokutsu R-kielessä on paljon valmiita funktioita usein toistuvia laskutoimituksia ja toimintoja varten. Edellä näimme jo funktion sqrt (x), joka laskee luvun x neliöjuuren. Seuraavassa on muutamia esimerkkejä R:n funktioista. 3 > max (2, 3) # suurempi luvuista 2 ja 3 [1] 3 > min (5, # lauseketta voi jatkaa usealle riville, + -7) # jolloin R kertoo plus-merkillä, että lauseke on kesken [1] -7 > runif (1) # yksi satunnaisluku väliltä [0,1] (Random UNIForm) [1] > runif (1) # toinen samanlainen [1] > choose (5, 2) # valitaan viidestä kaksi, siis 5 yli 2 [1] 10 Seuraava funktiokutsu näyttää kuvaajan tietokoneen ruudulla: > curve (x^(2/3), 0, 1) # funktion f(x) = x^(2/3) kuvaaja välillä [0,1] x^(2/3) x Katsotaanpa, mitä funktiosta curve () sanotaan R:n aputiedostossa aputiedosto saadaan näkyviin komennolla >?curve # aputiedoston saa myös komennolla help (curve) 3 Välilyönnit funktiokutsussa ovat makuasia: max(2,3) ajaa saman asian kuin max (2, 3).

13 Ohjelmointi ja tilastolliset menetelmät 7 Komento jakaa ikkunan kahteen osaan, ja aputeksti tulee alempaan osaan. Kursoria voi siirtää osien välillä hiirellä. Keskitytään tulkitsemaan funktion kutsun kuvauksen curve(expr, from = NULL, to = NULL, n = 101, add = FALSE, type = "l", xname = "x", xlab = xname, ylab = NULL, log = NULL, xlim = NULL,...) ensimmäistä riviä muun aputekstin avulla: expr: The name of a function, or a call or an expression written as a function of x which will evaluate to an object of the same length as x. from, to: the range over which the function will be plotted. n: integer; the number of x values at which to evaluate. Sulkujen sisällä olevat, pilkuilla erotetut expr, from = NULL jne. ovat funktion curve () parametrien kuvauksia. Parametri on muuttuja, jota käytetään välittämään tietoja funktiolle. Funktion curve () aputiedostossa sanotaan, että ensimmäinen parametri expr on joko funktion nimi tai muuttujan x lauseke (englanniksi expression), jota vastaavan funktion kuvaaja piirretään. Parametrit from ja to määrittävät sen välin, jolla kuvaaja piirretään. Funktiokutsussa curve (x^(2/3), 0, 1) parametreille asetetaan tietyt arvot: esimerkiksi parametrin expr arvoksi asetetaan lauseke x^(2/3). Näitä funktiokutsussa parametreille annettuja arvoja kutsutaan argumenteiksi; yllä funktion curve () argumentit ovat siis lauseke x^(2/3) sekä luvut 0 ja 1. Koska käsitteiden parametri ja argumentti ero on vähäinen, käytännössä sekä puheessa että kirjoitetussa tekstissä molemmat viittaavat sekä funktiokutsun muuttujien nimiin että näiden muuttujien arvoihin. Funktion curve () parametri n määrää sen, kuinka monessa pisteessä lausekkeen arvo lasketaan piirrettäessä. Parametrin kuvaus n = 101 tarkoittaa sitä, että parametrin oletusarvo on 101; jos toisin ei määritetä, piirrettäessä arvo lasketaan 101:ssä välin pisteessä. Parametrikuvauksessa from = NULL oletusarvo NULL tarkoittaa, että parametrin oletusarvo on tyhjä, määrittämätön, ja sen arvo päätellään tilanteen mukaan (kuvattu tarkemmin aputekstissä). Oletusarvoisesti parametrit ja argumentit yhdistetään toisiinsa järjestyksen perusteella: ensimmäinen argumentti on ensimmäisen parametrin arvo jne. R tukee myös nimettyjä argumentteja; edellinen funktiokutsu olisi voitu tehdä myös vaikkapa näin:

14 8 Luku 1. Lauseke, muuttuja ja funktiokutsu curve (to = 1, from = 0, expr = x^(2/3)) tai näin curve (x^(2/3), to = 1, from = 0) Funktio Ohjelmoinnissa funktiolla tarkoitetaan ohjelman osaa, joka tekee tietyn toiminnon. Matematiikassa, jos vaikkapa fpxq? x ` 4, niin fp2q on funktion f arvo, joka lasketaan muuttujan arvon x 2 perusteella. Ohjelmoinnissa funktio on monimutkaisempi olio kuin matematiikassa, koska ohjelmoinnissa funktiolla voi olla lasketun arvon lisäksi sivuvaikutuksia. Esimerkiksi R:n funktiokutsussa q () funktio q () ei laske eikä palauta mitään arvoa, mutta sivuvaikutuksenaan se lopettaa R:n suorituksen. Kun tällä kurssilla käsitellään funktioita, niihin viitataan välillä ilman parametrien listaamista tapaan sqrt () ja välillä parametrien kanssa tapaan sqrt (x) riippuen siitä, miten olennaisessa roolissa parametrit kulloinkin ovat. Ohjelmakoodin uudelleenkäyttö Samaa ohjelmakoodia ei kirjoiteta useaan kertaan: yksi tietotekniikan käytön päämääristä on manuaalisen työn vähentäminen. Tästä syystä useampaan kertaan tehtävät komentosarjat kirjoitetaan tiedostoon, josta ne voidaan tarvittaessa toistaa. Myös kertaalleen suoritettavat komentosarjat kannattaa usein kirjoittaa tiedostoon, jos komentosarjat ovat monimutkaisia: usein komentosarjoihin jää virheitä, joita karsittaessa joudutaan käytännössä ajamaan samat komennot useaan kertaan. Ohjelmakoodin kirjoittamisesta tiedostoon on myös se etu, että tällöin jää talteen jälki oikeasta ratkaisusta. Kun R:ssä ratkotaan pieniä ongelmia ohjelmilla, joiden pituus on 1 2 riviä, voidaan komentohistoriaa käyttää väliaikaisena tallennuspaikkana tiedoston sijasta oikeaa ratkaisua etsittäessä. Ohjelmakoodin suorittaminen tiedostosta Harjoitellaan ohjelmakoodin suorittamista tiedostosta. Lasketaan lausekkeiden 3x 3 5x ja x 2? 5 3 x arvoja eri x:n arvoilla. 1. Avaa Emacsissa uusi ikkuna valikosta FileÑNew Frame. 4 4 Uusi ikkuna aukeaa myös näppäinkomennolla C-x 5 2.

15 Ohjelmointi ja tilastolliset menetelmät 9 2. Avaa uuteen ikkunaan uusi tiedosto lausekkeiden.arvot.r valitsemalla valikosta FileÑVisit New File Lasketaan ensin lausekkeiden arvot, kun x 1. Kirjoita tiedostoon seuraavat lausekkeet: 1 -> x 3 * x^3-5 * x x^(-2 / 5) - 3 * sqrt (x) 4. Tiedoston kaikki lausekkeet voidaan suorittaa eli evaluoida toisessa ikkunassa olevassa R:ssä valitsemalla valikosta ESSÑESS EvalÑEval buffer tai lyhyemmin näppäinkomennolla C-c C-b. Tätä toimintoa tarvitaan niin usein, että kannattaa opetella käyttämään näppäinkomentoa. 5. Jos lausekkeiden arvot halutaan laskea toisella muuttujan x arvolla, riittää että muutetaan tiedoston ensimmäistä riviä ja evaluoidaan lausekkeet uudelleen. 6. Tiedosto voidaan tallentaa valikosta FileÑSave; lyhyemmin C-x C-s Mikäli halutaan suorittaa vain osa tiedostossa olevasta ohjelmakoodista, maalataan hiirellä alue ja valitaan sen jälkeen valikosta ESSÑESS EvalÑEval region. (Lyhyemmin C-c C-r.) Myöhemmin opimme laskemaan lausekkeiden arvoja eri muuttujien arvoilla helpommin itse määriteltyjen funktioiden avulla. 5 Vastaava näppäinkomento on C-x C-f. 6 Kun lausekkeet on tallennettu tiedostoon lausekkeiden.arvot.r, ne voidaan suorittaa myös R:n komentoriviltä funktion source () avulla seuraavaan tapaan (alla sekä funktiokutsu että kutsun tulos): > source ("lausekkeiden.arvot.r", echo = TRUE) > x <- 1 > 3 * x^3-5 * x [1] -2 > x^(-2/5) - 3 * sqrt(x) [1] -2 Funktiokutsussa argumentti echo = TRUE (echo: kaikua, kauiuttaa) näyttää suoritettavat lausekkeet sekä niiden tulokset.

16 10 Luku 1. Lauseke, muuttuja ja funktiokutsu Tehtävät 1. Laske R:llä seuraavien lausekkeiden arvot: a) b `?b 2 4ac, kun a 12, b 52 ja c 35 2a b) ? ? ˆ5 ˆ5 3 ` 4 2 c) ˆ8 5 d) x 2 4x ` 5 ă 6x? x, kun x Funktiokutsu plot (x, y) piirtää grafiikkaikkunaan pienen ympyrän kohtaan px, yq. Piirrä grafiikkaikkunaan piste p0,25; 0,5q ja lisää kuvaan funktion fpxq? x kuvaaja. Funktion curve () argumentti add = TRUE aiheuttaa sen, että kuvaaja lisätään koordinaatistoon, eli jo piirretty piste säilytetään. Grafiikkaikkuna voidaan sulkea komennolla graphics.off (). 3. Lauseke ls () (sanasta list) näyttää R:n muistissa olevat muuttujat, ja muuttujia voi poistaa funktion rm () avulla (sanasta remove). Funktiolle rm () annetaan poistettavan muuttujan nimi merkkijonona lainausmerkkien sisällä (tyyliin "x"). Listaa muistissa olevat muuttujat. Tallenna jokin luku uuteen muuttujaan c, ja poista sen jälkeen tämä uusi muuttuja funktion rm () avulla. (R:ssä on hieman riskaabelia käyttää muuttujaa nimeltä c, koska yksi R:n keskeisistä funktioista on c ().) 4. Umpinaisen ympyrälieriön pohjan säde on r ja korkeus h. Laske R:llä lieriön kokonaispinta-ala neliömetreinä, kun a) r 19 m ja h 28 m b) r 2,57 m ja h 116 cm. Käytä laskutoimituksissa apuna R:n vakiota pi sekä funktiota signif (x, digits) joka palauttaa luvun x tarkkuudella, jossa on digits merkitsevää numeroa (significant digit: merkitsevä numero). 5. Laatikossa on 15 mustaa, 8 valkoista ja m punaista palloa. Laatikosta nostetaan satunnaiset 5 palloa. Olkoon satunnaismuuttuja X nostettujen valkoisten pallojen lukumäärä. a) Muodosta lauseke todennäköisyydelle P px xq, kun x on jokin kokonaisluku välillä 0,..., 5.

17 Ohjelmointi ja tilastolliset menetelmät 11 b) Laske R:n avulla todennäköisyys P px 2q, kun m 10, sekä todennäköisyys P px 4q, kun m Funktiokutsu prosessoriaika (lauseke) palauttaa lausekkeen lauseke evaluoinnin viemän prosessorin laskenta-ajan sekunteina. Kokeile funktiota suorittamalla R:ssä seuraava lauseke: prosessoriaika (hist (rnorm (10^6))) Selvitä kokeilemalla ja aputiedostojen avulla, minkä toiminnon viemää aikaa edellä mitattiin, toisin sanoen, mitä tekee lauseke hist (rnorm (10^6)). Kokeiluja varten on hyvä tietää, että R:n suorittaman komennon voi keskeyttää valikosta SignalsÑBREAK tai näppäinkomennolla C-c C-c. 7. Käyrä y fpxq 7x 2 28k 2 x ` 28kx 26x ` 24k 2 24k ` 18, missä k on vakio, leikkaa suoran y x kahdessa pisteessä, joiden molempien x-koordinaatti on positiivinen. Olkoot nämä pisteet P px P, y P q sekä Q px Q, y Q q. Laske pisteiden P, Q, px Q, 0q sekä px P, 0q muodostaman nelikulmion pinta-alan likiarvo kahden desimaalin tarkkuudella vakion k arvoilla k 1, k 2 sekä k 3. Luvun voi pyöristää haluttuun tarkkuuteen funktion round () avulla.

18 2 Vektori Vektori lukujonona Suuria aineistomääriä varten tarvitaan muuttujia, joihin voidaan tallentaa useita toisiinsa liittyviä lukuja, merkkijonoja tms. Yksi tällainen muuttujatyyppi on vektori. R:n vektori on sukua matematiikasta tutulle vektorille, koska R:n vektorissa olevat luvut voivat myös edustaa vektorin aı ` bj kertoimia a ja b. Yksinkertaisimmillaan R:n vektori on lukujono. Funktio c () (englannin kielen sanasta combine) yhdistää elementtejä vektoriksi. > (a <- c (4, 2, 7, -1.5)) # vektori, jossa luvut 4; 2; 7; -1,5 [1] > a [3] # vektorin a kolmas elementti [1] 7 > length (a) # vektorin pituus eli elementtien lukumäärä [1] 4 > rev (a) # vektorin elementit käänteisessä järjestyksessä (reverse) [1] > sum (a) # elementtien summa [1] 11.5 > mean (a) # elementtien keskiarvo [1] > a; a > 0 # looginen vektori: TRUE jos a:n elementti positiivinen [1] [1] TRUE TRUE TRUE FALSE > b <- a^2; a; b # vektori, jonka elementit a:n elementtien neliöitä [1] [1] > plot (a, b) # (a, b)-parit pisteinä koordinaatistossa > curve (x^2, from = min (a), to = max (a), add = TRUE) # perusparaabeli Perusparaabelin päätepisteet ovat vektorin a pienin ja suurin arvo. Saatu kuva näyttää seuraavalta. 12

19 Ohjelmointi ja tilastolliset menetelmät 13 b a Yleisesti R-kielessä vektori sisältää joukon elementtejä kuten lukuja, totuusarvoja tai merkkijonoja jonossa siten, että elementteihin voidaan viitata niiden järjestysluvulla jonossa. Kaikki vektorin elementit ovat aina samaa tyyppiä, siis esimerkiksi kaikki lukuja tai kaikki merkkijonoja. R yhdistää erityyppiset elementit samaan vektoriin siten, että ne muutetaan kaikki samaan, yleisimpään tyyppiin: totuusarvot tarvittaessa numeroiksi (TRUE ja FALSE arvoiksi 1 ja 0) tai merkkijonoiksi ("TRUE" tai "FALSE") ja luvut tarvittaessa merkkijonoiksi. Seuraavista esimerkeistä huomataan myös, että funktiolla c () voi liittää elementtejä vektoriin tai yhdistää kaksi vektoria toisiinsa. > c ("abc", "xy", "d") -> s; s [1] "abc" "xy" "d" > (x <- c (TRUE, FALSE)) [1] TRUE FALSE > c (x, sqrt (121)) # totuusarvot muutetaan luvuiksi [1] > c (s, 456, x) # luvut ja totuusarvot muutetaan merkkijonoiksi [1] "abc" "xy" "d" "456" "TRUE" "FALSE" R-kielessä yhtäsuuruus tarkistetaan operaattorilla == ja erisuuruus operaattorilla!=. > (x <- c (-2, -1, 0, 1, 2)) [1] > abs (x) # elementtien itseisarvot (absolute value) [1] > abs (x) == 2 [1] TRUE FALSE FALSE FALSE TRUE

20 14 Luku 2. Vektori > abs (x)!= 1 [1] TRUE FALSE TRUE FALSE TRUE Monimutkaisempia ehtoja voidaan rakentaa operaattoreilla (tai) sekä & (ja). Huutomerkillä! merkitään käänteistä ehtoa eli negaatiota; siis!b luetaan ei b. Sulkuja voidaan käyttää selventämään ehtojen eri osien välisiä suhteita. > x <- c (-1.2, 4, 1, 17, -8) > x; x >= 0 & x <= 5 # välillä [0, 5] [1] [1] FALSE TRUE TRUE FALSE FALSE > x; x <= -2 x > 4 # x <= -2 tai x > 4 [1] [1] FALSE FALSE FALSE TRUE TRUE > x;!(x > 4) # x ei ole suurempi kuin neljä, eli x <= 4 [1] [1] TRUE TRUE TRUE FALSE TRUE Vektorien laskutoimitukset R-kielessä vektorien väliset laskutoimitukset tehdään elementeittäin, kuten seuraavat esimerkit osoittavat: > (x <- c (-9, 2, 4)) [1] > (y <- c (2, 1, 0)) [1] > x; y; x + y # yhteenlasku [1] [1] [1] > x; y; x - y # vähennyslasku [1] [1] [1] > x; y; x * y # kertolasku [1] [1] [1] > y; x; y / x # jakolasku [1] [1]

21 Ohjelmointi ja tilastolliset menetelmät 15 [1] > x; y; x / y # nollalla jakaminen antaa tässä koneessa "äärettömän" Inf [1] [1] [1] Inf > y / y # nollan jakaminen nollalla ei anna lukua; NaN, Not a Number [1] 1 1 NaN Kaksi viimeistä riviä havainnollistavat nollalla jakamista. Matemaattisesti kumpaakaan luvuista 4 0 ja 0 ei ole määritelty, joten tulos ei ole luku, mitä esittää R-kielessä symboli 0 NaN (not a number). Jakolaskun 4 tulos voi kuitenkin tietyistä tietokonestandardeista 0 johtuen olla myös Inf eli ääretön (infinite). Vektorin ja skalaarin eli luvun väliset laskutoimituksetkin tehdään elementeittäin. > s <- 2; v <- c (4, 6, 8) > s + v [1] > v - s [1] > s * v [1] > v / s [1] > s / v [1] Viimeinen esimerkki saattaa olla hiukan hämmentävä, mutta selittyy seuraavalla. R- kielessä yksittäinen lukukin on vektori, jossa on yksi elementti. Kahden erimittaisen vektorin välisessä laskutoimituksessa lyhyempää vektoria kopioidaan pidemmän vektorin pituiseksi. Siis > 2 / c (4, 6, 8) # tämä on sama kuin... [1] > c (2, 2, 2) / c (4, 6, 8) #... tämä [1] Kopiointiominaisuutta käyttäen seuraavakin on mahdollista. > c (1, 2, 4, 8) * c (1, -1) [1] > c (3, 5, 7) * c (1, -1) # varoitus: pidempi ei lyhyemmän monikerta

22 16 Luku 2. Vektori [1] Warning message: In c(3, 5, 7) * c(1, -1) : longer object length is not a multiple of shorter object length Vektorin indeksointi Vektorin indeksoinnilla tarkoitetaan viittaamista vektorin tiettyihin elementteihin. R:ssä vektoreja voidaan indeksoida monin eri tavoin. Indeksoinnissa käytetään hakasulkuja [] vektorin perässä. Yksinkertaisin indeksointitapa on viittaaminen elementtiin sen järjestysluvulla. Negatiivinen järjestysluku tarkoittaa, että valitaan kaikki muut elementit. > (x <- c (-3, 7, 11)) [1] > x [2] [1] 7 > x [-2] [1] Indeksoimalla voidaan muuttaa vektorin elementtejä. > (x <- c (-3, 7, 11)) [1] > x; x [3] <- 22; x # voidaan vaihtaa yksi elementti... [1] [1] > x; c (-1, 0) -> x [-2]; x #... tai useampia [1] [1] Indeksoinnissa voidaan käyttää myös vektoria, joka sisältää valittujen elementtien järjestysnumerot. Jos järjestysnumerot ovat negatiivisia, valitaan jälleen kaikki muut elementit. > osallistujat <- c ("Jarmo", "Juhani", "Nina", "Ville") > osallistujat [c (2, 4)] [1] "Juhani" "Ville" > osallistujat [c (-1, -4)] [1] "Juhani" "Nina"

23 Ohjelmointi ja tilastolliset menetelmät 17 Loogisella vektorilla indeksoitaessa valitaan ne elementit, joita vastaavassa kohdassa on indeksointivektorissa arvo TRUE. Jos indeksointivektori on lyhyempi kuin se vektori, josta elementtejä valitaan, niin indeksointivektoria kopioidaan. > (x <- c (0, -2.1, 12, -99, (-3)^3, mean (c (2, 3.3, 10)))) [1] > x [c (TRUE, TRUE, FALSE, FALSE, TRUE, FALSE)] [1] > (negatiivinen <- x < 0) # TRUE jos vastaava elementti on negatiivinen [1] FALSE TRUE FALSE TRUE TRUE FALSE > x [negatiivinen] # vektorin x negatiiviset elementit [1] > x [x < 0] # sama kuin edellä [1] > max (x [x < 0]) # x:n suurin negatiivinen elementti [1] -2.1 > x [c (FALSE, TRUE)] # valitaan järjestysluvultaan parilliset [1] R:ssä voidaan käyttää myös nimettyjä vektorielementtejä. Vektorin elementille voidaan antaa nimi, ja elementtiin voidaan sen jälkeen viitata annetulla nimellä (järjestysnumeron ja loogisen vektorin lisäksi). Elementtien nimet asetetaan funktiolla names (). > (kahvikupilliset <- c (0, 773, 2456, 1962)) [1] > (kahvin.juojat <- c ("Jarmo", "Juhani", "Nina", "Ville")) [1] "Jarmo" "Juhani" "Nina" "Ville" > names (kahvikupilliset) <- kahvin.juojat > kahvikupilliset Jarmo Juhani Nina Ville > kahvikupilliset ["Nina"] Nina 2456 > kahvikupilliset ["Nina"] <- 2156; kahvikupilliset # korjaus tietoihin Jarmo Juhani Nina Ville > kahvikupilliset [c ("Juhani", "Jarmo")] Juhani Jarmo > kahvikupilliset [kahvikupilliset > 1000] Nina Ville

24 18 Luku 2. Vektori > barplot (kahvikupilliset, + main = "kahvin lipitys", + ylab = "kuppia", + col = "white") kahvin lipitys kuppia Jarmo Juhani Nina Ville Argumentilla col="white" piirretään valkoiset pylväät; muitakin värejä voi kokeilla. Jostain syystä pylväsdiagrammin y-akseli piirretään oletusarvoisesti ainakin omaan makuuni liian lyhyenä. Muita tärkeitä vektorifunktioita Tasavälisiä lukuvektoreita voi luoda funktiolla seq (). > seq (1, 9) # luvut 1, 2,..., 9 [1] > 1:9 # lyhennysmerkintä edelliselle [1] > seq (-3, 5, by = 2) # luvut -3:sta 5:een kahden välein [1] > seq (1, 9, length.out = 4) # neljä lukua tasavälein välillä [1, 9] [1]

25 Ohjelmointi ja tilastolliset menetelmät 19 Vektorin elementeistä voi laskea tunnuslukuja, ja elementtejä voi järjestellä. > (x <- c (-2, seq (-5, 4, 3), seq (14.08, 14.04, by = -0.01))) [1] > (negat <- x < 0) # mitkä elementit negatiivisia [1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE > sum (negat) # negatiivisten lukumäärä (huom. loogisen vektorin "summa") [1] 3 > round (x, 1) # luvut pyöristettyinä yhden desimaalin tarkkuudella [1] > min (x) # pienin luku [1] -5 > max (x) # suurin luku [1] > mean (x) # keskiarvo [1] 6.63 > median (x) # mediaani [1] 9.02 > sort (x) # luvut kasvavaan järjestykseen [1] > sort (x, decreasing = TRUE) # luvut vähenevään järjestykseen [1] > head (x, 3) # 3 ensimmäistä; head: pää [1] > tail (x) # 6 viimeistä; tail: häntä [1] > head (sort (x, decreasing = TRUE), 2) # 2 suurinta [1] Erilaisia aikasarja-aineistoja pyöriteltäessä on tärkeää pystyä laskemaan muutoksia esimerkiksi vuodesta toiseen. Tässä auttaa funktio diff (). > x <- round (runif (10, min = 0, max = 10)) # satunnaista aineistoa... > names (x) < : 2010 #... eri vuosilta > x; diff (x) # muutos edellisestä vuodesta Vektorin elementeistä voidaan ottaa satunnaisia otoksia tai permutaatioita funktiolla sample (). Tällöin kullakin elementillä on yhtä suuri todennäköisyys tulla valituksi.

26 20 Luku 2. Vektori > osallistujat <- c ("Jarmo", "Ville", "Nina", "Juhani") > sample (osallistujat, 3) # kolme satunnaisesti valittua [1] "Juhani" "Jarmo" "Nina" > sample (osallistujat) # satunnainen permutaatio (jono) [1] "Nina" "Juhani" "Jarmo" "Ville" Kun jostain joukosta poimitaan näytteitä, näytteenotto voidaan tehdä kahdella tavalla. Valittu jäsen laitetaan takaisin joukkoon ennen seuraavan näytteen ottamista, jolloin sama jäsen voi tulla valituksi useaan otteeseen. Tästä käytetään nimitystä poiminta takaisinpanolla (sampling with replacement). Valittu jäsen poistetaan joukosta, jolloin yksi jäsen voi tulla valituksi korkeintaan kerran. Tästä käytetään nimitystä poiminta ilman takaisinpanoa (sampling without replacement). Funktiossa sample () oletusarvo on replace = FALSE eli poiminta ilman takaisinpanoa. > sample (c ("kruuna", "klaava"), 15, replace = TRUE) # kolikonheitto [1] "kruuna" "klaava" "klaava" "klaava" "kruuna" "kruuna" "klaava" [8] "kruuna" "klaava" "kruuna" "kruuna" "kruuna" "klaava" "klaava" [15] "klaava" > (x <- 1:5) [1] > sample (x, 10, replace = TRUE) [1] > sample (x, 10) # 10 eri elementtiä viidestä: ei onnistu Error in sample(x, 10) : cannot take a sample larger than the population when replace = FALSE Vektorit ja R:n valmiit funktiot R:ssä erittäin monien funktioiden argumenttina voi olla vektori. Tämä tekee suurilla aineistomäärillä laskemisesta helppoa: ohjelmakoodi ei usein riipu lainkaan siitä, kuinka paljon aineistoa on. Esimerkiksi funktio dbinom () laskee toistokokeisiin liittyviä todennäköisyyksiä. Todennäköisyys saada kymmenellä nopanheitolla tasan kolme kuutosta voidaan laskea funktiolla seuraavasti: > dbinom (3, 10, 1 / 6) [1]

27 Ohjelmointi ja tilastolliset menetelmät 21 Tutustumme funktioon tarkemmin luvussa 8 sivulla 90. Seuraavassa esimerkissä piirretään pylväsdiagrammi 10 nopanheiton kuutosten jakaumasta. > n <- 10 # heittojen lukumäärä > lukumaarat <- 0 : n # mahdolliset kuutosten lukumäärät: 0, 1,..., n > barplot (dbinom (lukumaarat, n, 1 / 6), + names.arg = lukumaarat, + ylab = "todennäköisyys", + xlab = "kuutosten lukumäärä", + col = "white") todennäköisyys kuutosten lukumäärä

28 22 Luku 2. Vektori Tehtävät 8. Luo R:llä vektori, jonka a) elementit ovat kokonaisluvut 4, 3,..., 14, 15 b) elementit ovat kokonaisluvut 99, 102, 105,..., 150 c) elementit ovat desimaaliluvut 1; 0,98; 0,96;... ; 0,52 d) 45 elementtiä ovat tasavälein välillä r 8,36; 6,38s siten, että välin vasemmanpuoleinen päätepiste on 1. elementti ja oikeanpuoleinen päätepiste viimeinen elementti. 9. Luo R:llä vektori x, jonka elementit ovat kokonaisluvut 10, 6, 2,..., 38. Muodosta vektorin x avulla seuraavat vektorit; mikäli tehtävässä ei toisin mainita, muodostetun vektorin elementtien tulee olla samassa järjestyksessä kuin vastaavat vektorin x elementit. a) Vektori, joka sisältää vektorin x elementtien vastalukujen kuutiot. b) Vektori, joka sisältää vektorin x elementtien käänteisluvut. c) Vektori, jonka elementti on TRUE, jos vektorin x vastaava elementti on itseisarvoltaan korkeintaan 6, ja jonka vastaava elementti on muuten FALSE. d) Vektori, joka sisältää sellaiset vektorin x elementit, joiden itseisarvo on suurempi kuin 8. e) Vektori, joka sisältää kaikki muut vektorin x elementit paitsi 4. ja 7. elementin. f) Vektori, joka sisältää sellaiset vektorin x elementit, joiden arvo on välillä r 5, 10s. g) Vektori, joka sisältää sellaiset vektorin x elementit, jotka ovat pienempiä tai yhtä suuria kuin 2 tai suurempia kuin 6. h) Vektori, joka sisältää joka toisen vektorin x elementin toisesta elementistä alkaen. i) Vektori, jonka 1. elementti on vektorin x viides elementti ja loput elementit vektorin x neljä viimeistä elementtiä käänteisessä järjestyksessä. j) Olkoon x vektorin x elementtien keskiarvo. Muodosta vektori, jonka elementit ovat suuruusjärjestyksessä suurimmasta pienimpään neljä pienintä vektorin x elementtien etäisyyttä luvusta x. 10. Matematiikan vektorit, kuten 2ı j`k, voidaan esittää R:n vektoreina siten, että R:n vektorin elementit ovat matematiikan vektorin kertoimet. Siis esimerkiksi 2ı j ` k olisi R:ssä vektori c (2, -1, 1). Olkoon a 3ı 2j`5k ja b 4ı 4j`3k. Ratkaise seuraavat tehtävät R:n avulla.

29 Ohjelmointi ja tilastolliset menetelmät 23 a) Määritä vektori 114a ` 207b. b) Määritä a b. c) Määritä kahden desimaalin tarkkuudella a. d) Laske yhden desimaalin tarkkuudella vektorien a ja b välisen kulma suuruus. Tässä on hyödyksi funktio arkuskosini (kosini), joka vastaa laskimen funktiota cos 1. (Funktio arkuskosini () palauttaa kulman asteina; tavallisesti arkuskosini määritellään siten, että kulman mittana on radiaani.) 11. Aineisto talvilampotila.helsinki sisältää vektorin lampotila, jonka elementit ovat Helsingin kolmen talvikuukauden keskilämpötilat vuosina Lataa aineisto komennolla 2 lataa.aineisto ("talvilampotila.helsinki") ja ratkaise seuraavat aineistoon liittyvät tehtävät. a) Funktiokutsulla plot (x, y, type="l") voidaan piirtää viivadiagrammi, jossa piirrettävän murtoviivan vaaka-akselin arvot saadaan vektorista x ja pystyakselin arvot vektorista y. Laadi aineistosta viivadiagrammi, jossa vaaka-akselina on vuosiluku ja pystyakselina lämpötila; vaaka-akseli voi sisältää myös arvot merkkijonoina, joten voit käyttää sen asettamiseen funktiota names (). Akselien nimet voidaan asettaa parametreilla xlab ja ylab (kts. s. 21). b) Mitkä ovat olleet viisi kylmintä talvea, ja mitkä olivat tällöin keskilämpötilat? Entä viisi lämpimintä? c) Aineistovektorissa elementtien nimet ovat vuosilukuja merkkijonoina. Merkkijonovektorin x voi muuttaa lukuvektoriksi funktiolla as.numeric (x) Muodosta alkuperäisen aineistovektorin mittainen looginen vektori, jossa yksittäinen elementti on TRUE täsmälleen silloin, kun kyseinen vuosi on välillä Laadi a-kohdan kuvaajaa vastaava kuvaaja vuosista d) Muodosta koko ajanjaksosta vektori, jossa kukin elementti on talvilämpötilan muutos edellisestä vuodesta (vihje: diff ()). Muodosta histogrammi näistä muutoksista funktion hist () avulla. 12. a) Simuloi R:llä 20 nopanheittoa. b) Tarkastellaan tilannetta, jossa heitetään painotettua noppaa: kuutosen todennäköisyys on kaksi kertaa niin suuri kuin muiden silmälukujen todennäköisyys. Simuloi R:llä tuhatta heittoa painotetulla nopalla. (Simuloinnin voi tehdä mallintamalla noppaa, jossa on seitsemän sivua: kaksi kuutosta ja 1 Lähde: Tilastokeskus 2 Aineiston lataaminen vaatii verkkoyhteyden.

30 24 Luku 2. Vektori yksi sivu muille silmäluvuille.) Olkoon x odotusarvo kuutosten määrälle, kun heitetään reilua noppaa 1000 kertaa. Laske painotetulla nopalla simulaatiossa saatujen kuutosten määrän ja luvun x suhde kahden desimaalin tarkkuudella. c) Toista b-kohdan simulaatio heitolla. d) Osoita kynällä ja paperilla että painotetulla nopalla saatujen kuutosten ja reilulla nopalla saatujen kuutosten odotusarvojen suhde n:ssä heitossa on 12 7 «1, Tarkastellaan koetta, jossa x ja y ovat kaksi satunnaisesti väliltä r 1, 1s valittua lukua. Määritellään tapahtuma A seuraavasti: A : x ja y ovat xy-tasossa origokeskisen yksikköympyrän sisällä. y x a) Osoita kynällä ja paperilla, että P paq π 4. b) Koetta toistetaan n kertaa, jolloin tapahtuma A toteutuu n A kertaa. Tiedämme, että kun n kasvaa rajatta, niin suhde n A lähestyy todennäköisyyttä n P paq. Laske tämän avulla R:ää käyttäen arvio luvulle π. (Vihje: funktio runif ().)

31

32 3 Matriisi Matriisi taulukkona Taulukkoa tai joukkoa vektoreita voidaan R:ssä käsitellä matriisina. Siinä missä vektorin elementteihin viitataan yhdellä indeksillä, matriiseissa käytetään kahta indeksiä. Näistä ensimmäinen on taulukon rivi ja toinen taulukon sarake. Tyhjä indeksi tarkoittaa, että valitaan kaikki rivit / sarakkeet. Matriisin jokainen rivi samoin kuin matriisin jokainen sarake on vektori. Seuraavassa esimerkissä tarkastellaan taulukkoa talvilämpötiloista kolmessa Suomen kaupungissa. 1 > lataa.aineisto ("talvilampotila.suomi") # talvilämpotilat 3 kaupungissa > head (lampotila, 3) # aineiston 3 ensimmäistä riviä Helsinki Jyvaskyla Sodankyla > tail (lampotila, 2) # aineiston 2 viimeistä riviä Helsinki Jyvaskyla Sodankyla > nrow (lampotila) # rivien määrä [1] 109 > ncol (lampotila) # sarakkeiden määrä [1] 3 > lampotila ["1902", "Jyvaskyla"] # indeksointi: [rivi, sarake] [1] > lampotila [1, 2] # sama kuin edellä [1] > lampotila [1, ] # matriisin ensimmäisen rivin kaikki sarakkeet Helsinki Jyvaskyla Sodankyla > lampotila [99:101, ] # rivien kaikki sarakkeet 1 Lähde: Tilastokeskus 26

33 Ohjelmointi ja tilastolliset menetelmät 27 Helsinki Jyvaskyla Sodankyla > head (lampotila [, -1], 3) # alkupään rivit ilman 1. saraketta Jyvaskyla Sodankyla > tail (lampotila [, c ("Helsinki", "Sodankyla")], 3) # sarakkeiden häntä Helsinki Sodankyla > head (sort (lampotila[, "Sodankyla"], decreasing = TRUE)) # lämpimimmät > colnames (lampotila) # sarakkeiden (column) nimet [1] "Helsinki" "Jyvaskyla" "Sodankyla" > rownames (head (lampotila)) # ensimmäisten rivien (row) nimet [1] "1902" "1903" "1904" "1905" "1906" "1907" > mean (lampotila[, "Helsinki"]) # Helsingin lämpötilojen keskiarvo [1] > mean (lampotila[, "Sodankyla"]) [1] Funktio apply () Edellisen esimerkin kahdella viimeisellä komennolla lasketaan talvilämpötilojen keskiarvot sekä Helsingissä että Sodankylässä. Tällaista laskentaa tarvitaan usein: sovelletaan jotakin funktiota tässä funktiota mean () taulukon riveihin tai sarakkeisiin. Niinpä tätä varten R:ssä on valmis funktio apply (X, MARGIN, FUN), joka soveltaa (apply) annettua funktiota FUN matriisin X kaikkiin riveihin tai sarakkeisiin. Jos MARGIN = 1, niin funktion arvo lasketaan kaikista riveistä; jos MARGIN = 2, niin funktion arvo lasketaan kaikista sarakkeista. Seuraavassa muutama esimerkki. > lataa.aineisto ("talvilampotila.suomi") # talvilämpotilat 3 kaupungissa > head (lampotila, 2) Helsinki Jyvaskyla Sodankyla > mean (lampotila [, "Helsinki"])

34 28 Luku 3. Matriisi [1] > apply (lampotila, 2, mean) # keskiarvo kaikista sarakkeista Helsinki Jyvaskyla Sodankyla > apply (lampotila, 2, median) # mediaani sarakkeista Helsinki Jyvaskyla Sodankyla > round (apply (head (lampotila), 1, mean), 1) # rivien keskiarvo > plot (rownames (lampotila), + apply (lampotila, 1, mean), + main = "kaupunkien talvilämpötilojen keskiarvo", + xlab = "vuosi", + ylab = "keskiarvo (Celsius-astetta)", + type = "l") kaupunkien talvilämpötilojen keskiarvo keskiarvo (Celsius-astetta) vuosi

35 Ohjelmointi ja tilastolliset menetelmät 29 Matriisin muodostaminen Matriisi voidaan muodostaa yhdestä tai useammasta vektorista. Vektorin data elementeistä muodostetaan matriisi funktion matrix (data, nrow = 1, ncol = 1, byrow = FALSE) avulla. Funktiokutsussa matriisin kokoa säädellään parametrien nrow ja ncol avulla, ja täyttöjärjestyksen määrää parametri byrow (by row tarkoittaa riveittäin). Matriisin rivien ja sarakkeiden nimet voidaan asettaa ja kysyä funktioiden rownames () ja colnames () avulla. > x <- 1 : 9 > matrix (x, 3, 3) [,1] [,2] [,3] [1,] [2,] [3,] > matrix (x, nrow = 3) # sama kuin edellä [,1] [,2] [,3] [1,] [2,] [3,] > matrix (x, ncol = 3) # sama kuin edellä [,1] [,2] [,3] [1,] [2,] [3,] > (A <- matrix (x, 3, 3, byrow = TRUE)) # täytetään riveittäin [,1] [,2] [,3] [1,] [2,] [3,] > rownames (A) <- c ("a", "b", "c") # nimet riveille > colnames (A) <- seq (1980, 2000, by = 10) # nimet sarakkeille > A a b c > colnames (A) [1] "1980" "1990" "2000"

36 30 Luku 3. Matriisi Vektoreita, joissa on sama määrä elementtejä, voi liittää (bind) toisiinsa matriisiksi riveittäin tai sarakkeittain: > x <- 2 : 5 > y <- x + 10 > z <- x^2 > cbind (x, y, z) # liitetään sarakkeittain (column) x y z [1,] [2,] [3,] [4,] > rbind (x, y, z) # liitetään riveittäin (row) [,1] [,2] [,3] [,4] x y z Laskutoimitukset matriiseilla Matriisien laskutoimitukset tehdään elementeittäin samaan tapaan kuin vektoreilla. > (A <- matrix (1 : 4, nrow = 2)) [,1] [,2] [1,] 1 3 [2,] 2 4 > 2 * A [,1] [,2] [1,] 2 6 [2,] 4 8 > A^2 [,1] [,2] [1,] 1 9 [2,] 4 16 > (B <- matrix (round (runif (4, -1, 1)), nrow = 2)) # satunnaisdataa [,1] [,2] [1,] 0 1 [2,] 1-1 > B > 0 [,1] [,2] [1,] FALSE TRUE [2,] TRUE FALSE

37 Ohjelmointi ja tilastolliset menetelmät 31 > - 4 * A + 3 * B [,1] [,2] [1,] -4-9 [2,] -5-19

38 32 Luku 3. Matriisi Tehtävät 14. Muodosta R:ssä matriisi ,98 9,96 9,94 a) muodostamalla ensin matriisin rivit ja käyttämällä sen jälkeen funktiota rbind () b) muodostamalla ensin yksi vektori, joka sisältää matriisin kaikki elementit, ja käyttämällä sen jälkeen funktiota matrix (). 15. a) Muodosta R:ssä matriisi A b) Aseta matriisin rivien nimiksi a ja b ja sarakkeiden nimiksi luvut 1500, 1600 ja c) Laske R:llä 2. rivin 3. elementin ja 1. rivin 2. elementin välinen erotus. d) Laske rivien summat ja sarakkeiden summat. e) Laske rivien tulot ja sarakkeiden tulot funktion prod () avulla. f) Muodosta matriisi B matriisin A 1. ja 3. sarakkeesta. g) Matriisiin voidaan lisätä rivejä ja sarakkeita funktioiden rbind () ja cbind () avulla. Muodosta matriisi C, joka sisältää matriisin A elementtien lisäksi ylimääräisen sarakkeen, jossa on rivisummat, sekä ylimääräisen rivin, jossa on sarakesummat, sekä oikeassa alakulmassa näiden yhteisen elementin, jossa on matriisin A kaikkien elementtien summa. 16. Muodosta matriisi, jonka kukin sarake sisältää 30 satunnaisen kolikonheiton klaavojen lukumäärän (kukin elementti siis 0 tai 1) ja jossa on saraketta. (Vihje: matriisi voidaan muodostaa yhdestä vektorista, johon on arvottu kolikonheiton tulos.) Muodosta sen jälkeen vektori, jossa on kunkin sarakkeen klaavojen lukumäärä. Piirrä histogrammi vektorin sisältämästä aineistosta. 17. Lataa aineisto koulutus.suomi, joka sisältää matriisin koulutus. 2 Matriisi sisältää tiedot eri koulutusasteen koulutuksen saaneiden suomalaisten lukumääristä. a) Kuinka monta riviä ja saraketta matriisissa on? b) Mitkä ovat rivien nimet ja sarakkeiden nimet? c) Tarkastele matriisin kahta ensimmäistä riviä. Kuinka moni suomalainen oli saanut tutkijakoulutuksen vuonna 1999? 2 Lähde: Tilastokeskus

39 Ohjelmointi ja tilastolliset menetelmät 33 d) Kuinka paljon ylemmän korkeakoulutuksen saaneiden määrä kasvoi vuodesta 1999 vuoteen 2009? e) Piirrä pylväsdiagrammi, jonka vaaka-akselina on vuosiluku ja pystyakselina tutkijakoulutettujen osuus kaikista koulutetuista prosentteina. f) Matriisin kunkin rivin viimeisen sarakkeen elementin pitäisi olla vastaavan rivin muiden elementtien summa. Tarkista, että näin on. g) Minä vuonna alimman korkea-asteen koulutuksen saaneiden lukumäärä laski eniten edellisestä vuodesta? (Vihje: funktio diff ().) 18. Lataa aineisto talvilampotila.suomi, joka sisaltaa matriisin lampotila. 3 a) Mikä oli keskimääräinen talvilämpötila Jyväskylässä vuonna 1941? b) Selvitä kunkin kaupungin korkein keskimääräinen talvilämpötila kyseisenä aikana (korkeinta lämpötilaa vastaava vuotta ei tarvitse selvittää). c) Piirrä viivadiagrammi Sodankylän talvilämpötiloista vuosina (Kannattaa ensin tallentaa vektoriin rivien niminä olevat vuodet lukuina.) d) Minä vuonna Helsingin ja Sodankylän talvilämpötilojen ero on ollut suurin? 19. Aineisto talvilampotila.helsinki sisältää vektorin lampotila, jonka elementit ovat Helsingin kolmen talvikuukauden keskilämpötilat vuosina Lataa aineisto. Muodosta matriisi, jonka n. pystyrivi sisältää kyseisen ajanjakson n. vuosikymmenen talvilämpötilat, ja laske eri vuosikymmenten talvilämpötilojen keskiarvot. Aseta tuloksena saamasi vektorin elementtien nimiksi kunkin vuosikymmenen ensimmäinen vuosi ja esitä tulokset pylväsdiagrammissa. 3 Lähde: Tilastokeskus 4 Lähde: Tilastokeskus

40 4 Funktio ja algoritmi Funktio automatisoinnissa Tietotekniikan avulla voidaan automatisoida usein tehdyt toimenpiteet. Sama idea pätee myös tietokoneohjelman sisällä: usein tarvitut laskutoimitukset tms. automatisoidaan. Ohjelmoinnissa automatisoinnin perustyökalu on funktio. Funktion määritteleminen Otetaanpa käytännöllinen esimerkki hyödyllisestä funktiosta. Tällä kurssilla ladataan aineistoja kurssin kotisivuilta. Sen sijaan, että yhä uudestaan naputtelisimme samat komennot ja kotisivun osoitteen, käytämme funktiota lataa.aineisto (). Tämä funktio lataa annettua nimeä vastaavan aineiston. Funktion ohjelmakoodi näkyy alla (funktio 1); vasemmalla olevat numerot eivät ole osa funktiota vaan funktion analysoinnissa auttavia rivinumeroita. Ohjelmakoodi määrittelee uuden funktion lataa.aineisto (). Tarkastellaan lähemmin 1 lataa.aineisto <- function (aineiston.nimi) 2 { 3 osoite <- paste (" 4 aineiston.nimi, 5 ".rda", 6 sep = "") 7 yhteys <- url (osoite) # avataan yhteys 8 load (yhteys, globalenv ()) # luetaan aineisto muistiin 9 close (yhteys) # suljetaan yhteys 10 } Funktio 1: Aineiston lataaminen kurssin kotisivuilta. Funktion vasemmassa reunassa olevat numerot eivät ole osa funktion määrittelyä, vaan auttavat funktion analysoinnissa. 34

41 Ohjelmointi ja tilastolliset menetelmät 35 funktion määrittelyä. Määrittely alkaa riviltä 1. Siinä kerrotaan, että muuttujaan lataa.aineisto sijoitetaan funktio, jonka parametri on aineiston.nimi. Funktion runko, eli se ohjelmakoodi, joka suoritetaan kun funktiota kutsutaan, on aaltosulkujen sisällä riveillä 3 9. Riveillä 3 6 muuttujaan osoite sijoitetaan merkkijono, joka on aineistotiedoston www-osoite. Tässä käytetään R:n funktiota paste (), joka liittää merkkijonoja toisiinsa yhdeksi merkkijonoksi; tällöin toisiinsa liitettävien merkkijonojen väliin laitetaan funktion parametri sep, jonka oletusarvo on sep = " ". Muuttuja osoite on funktion paikallinen muuttuja: se on olemassa vain sen aikaa, kun funktiota suoritetaan. Paikalliset muuttujat ovat välttämättömiä: muuten voitaisiin sotkea varsinaisessa työtilassa olevan samannimisen muuttujan osoite sisältö. Funktiota kirjoitettaessa ei voida tietää, mitä muuttujia käyttäjällä on työtilassa silloin kun funktiota kutsutaan. Vastaavasti funktiota käytettäessä ei ole järkevää ryhtyä selvittämään, minkä nimisiä muuttujia käytettävän funktion sisällä on. Rivillä 7 avataan yhteys aineistotiedostoon verkon yli. Esimerkistä huomataan, että muuttujiin voidaan R:ssä sijoittaa huomattavan monimutkaisiakin olioita; tässä paikalliseen muuttujaan yhteys sijoitetaan tarvittavat tiedot yhteydestä verkon yli. Rivillä 8 luetaan aineisto verkon yli. Aineistossa olevia muuttujia ei haluta tallentaa funktion paikallisiksi muuttujiksi, vaan varsinaiseen R:n työtilaan, joka tunnetaan myös globaalina ympäristönä. Tätä varten funktiolle load () annetaan tässä toinen argumentti globalenv (), joka on lyhenne sanoista global environment. Huomaa, että kun ladattavassa tiedostossa olevat muuttujat tallennetaan työtilaan, saatetaan tuhota työtilassa olevia samannimisiä muuttujia. Siksi kyseisellä funktiolla voisi joissain tilanteissa olla varsin yllättäviä sivuvaikutuksia. Rivillä 9 suljetaan verkkoyhteys aineistoon. Edellä määritelty funktio ei palauta mitään arvoa, mutta muuttaa sivuvaikutuksenaan työtilassa olevia muuttujia. Seuraava esimerkki on perinteisen matematiikan funktion kaltainen: funktiolla on paluuarvo, jota voidaan käyttää myöhemmässä laskennassa. Funktio määrittelee funktion fpyq p2y ` 1q 2 ` a2y ` 1. Paluuarvo palautetaan funktiolla return (). > f <- function (y) + { + x <- 2 * y + 1 # paikalliseen muuttujaan x sijoitetaan arvo + return (x^2 + sqrt (x)) # paluuarvo paikallisen muuttujan avulla

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

Lisätiedot

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

Hannu Mäkiö. kertolasku * jakolasku / potenssiin korotus ^ Syöte Geogebran vastaus Perusohjeita, symbolista laskentaa Geogebralla Kielen vaihtaminen. Jos Geogebrasi kieli on vielä englanti, niin muuta se Options välilehdestä kohdasta Language suomeksi (finnish). Esittelen tässä muutaman

Lisätiedot

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa 9. Vektorit 9.1 Skalaarit ja vektorit Skalaari on koon tai määrän mitta. Tyypillinen esimerkki skalaarista on massa. Lukumäärä on toinen hyvä esimerkki skalaarista. Vektorilla on taas suuruus ja suunta.

Lisätiedot

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9. Python linkit: Python tutoriaali: http://docs.python.org/2/tutorial/ Numpy&Scipy ohjeet: http://docs.scipy.org/doc/ Matlabin alkeet (Pääasiassa Deni Seitzin tekstiä) Matriisit ovat matlabin perustietotyyppejä.

Lisätiedot

Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot

Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot Sievin lukio Tehtävien ratkaisut tulee olla esim. Libre officen -writer ohjelmalla tehtyjä. Liitä vastauksiisi kuvia GeoGebrasta ja esim. TI-nSpire

Lisätiedot

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 PERUSLASKUJA Matemaattisten lausekkeiden syöttäminen: Kirjoita ilman välilyöntejä /+^2 Kirjoita muuten sama, mutta ota välilyönti :n jälkeen / +^2 Kopioi molemmat matematiikka-alueet ja liiku alueen sisällä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Tilastolliset toiminnot

Tilastolliset toiminnot -59- Tilastolliset toiminnot 6.1 Aineiston esittäminen graafisesti Tilastollisen aineiston tallentamisvälineiksi TI-84 Plus tarjoaa erityiset listamuuttujat L1,, L6, jotka löytyvät 2nd -toimintoina vastaavilta

Lisätiedot

Valitse ruudun yläosassa oleva painike Download Scilab.

Valitse ruudun yläosassa oleva painike Download Scilab. Luku 1 Ohjeita ohjelmiston Scilab käyttöön 1.1 Ohjelmiston lataaminen Ohjeet ohjelmiston lataamiseen Windows-koneelle. Mene verkko-osoitteeseen www.scilab.org. Valitse ruudun yläosassa oleva painike Download

Lisätiedot

Excel syventävät harjoitukset 31.8.2015

Excel syventävät harjoitukset 31.8.2015 Yleistä Excel on taulukkolaskentaohjelma. Tämä tarkoittaa sitä että sillä voi laskea laajoja, paljon laskentatehoa vaativia asioita, esimerkiksi fysiikan laboratoriotöiden koetuloksia. Excel-ohjelmalla

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 27.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 27.1.2010 1 / 37 If-käsky toistokäskyn sisällä def main(): HELLERAJA = 25.0 print "Anna lampotiloja, lopeta -300:lla."

Lisätiedot

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

Lisätiedot

Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot

Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot Sievin lukio Tehtävien ratkaisut tulee olla esim. Libre officen -writer ohjelmalla tehtyjä. Liitä vastauksiisi kuvia GeoGebrasta ja esim. TI-nSpire

Lisätiedot

Johdatus Ohjelmointiin

Johdatus Ohjelmointiin Johdatus Ohjelmointiin Syksy 2006 Viikko 2 13.9. - 14.9. Tällä viikolla käsiteltävät asiat Peruskäsitteitä Kiintoarvot Tiedon tulostus Yksinkertaiset laskutoimitukset Muuttujat Tiedon syöttäminen Hyvin

Lisätiedot

A-osa. Ratkaise kaikki tämän osan tehtävät. Tehtävät arvostellaan pistein 0-6. Taulukkokirjaa saa käyttää apuna, laskinta ei.

A-osa. Ratkaise kaikki tämän osan tehtävät. Tehtävät arvostellaan pistein 0-6. Taulukkokirjaa saa käyttää apuna, laskinta ei. PITKÄ MATEMATIIKKA PRELIMINÄÄRIKOE 7..07 NIMI: A-osa. Ratkaise kaikki tämän osan tehtävät. Tehtävät arvostellaan pistein 0-. Taulukkokirjaa saa käyttää apuna, laskinta ei.. Valitse oikea vaihtoehto ja

Lisätiedot

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Jatkuvat satunnaismuuttujat

Jatkuvat satunnaismuuttujat Jatkuvat satunnaismuuttujat Satunnaismuuttuja on jatkuva jos se voi ainakin periaatteessa saada kaikkia mahdollisia reaalilukuarvoja ainakin tietyltä väliltä. Täytyy ymmärtää, että tällä ei ole mitään

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 16.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 16.9.2015 1 / 26 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006 Harjoitus 1: Matlab Mat-2.2107 Sovelletun matematiikan tietokonetyöt Syksy 2006 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoituksen aiheita Tutustuminen Matlab-ohjelmistoon Laskutoimitusten

Lisätiedot

KAAVAT. Sisällysluettelo

KAAVAT. Sisällysluettelo Excel 2013 Kaavat Sisällysluettelo KAAVAT KAAVAT... 1 Kaavan tekeminen... 2 Kaavan tekeminen osoittamalla... 2 Kaavan kopioiminen... 3 Kaavan kirjoittaminen... 3 Summa-funktion lisääminen... 4 Suorat eli

Lisätiedot

Python-ohjelmointi Harjoitus 2

Python-ohjelmointi Harjoitus 2 Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento

Lisätiedot

Luvuilla laskeminen. Esim. 1 Laske 6 21 7

Luvuilla laskeminen. Esim. 1 Laske 6 21 7 Luvuilla laskeminen TI-84 Plus käyttää laskujen suorittamiseen ns. yhtälönkäsittelyjärjestelmää (EOS TM, Equation Operating System), jonka avulla lausekkeiden syöttö tapahtuu matemaattisessa kirjoitusjärjestyksessä.

Lisätiedot

plot(f(x), x=-5..5, y=-10..10)

plot(f(x), x=-5..5, y=-10..10) [] Jokaisen suoritettavan rivin loppuun ; [] Desimaalierotin Maplessa on piste. [] Kommentteja koodin sekaan voi laittaa # -merkin avulla. Esim. #kommentti tähän [] Edelliseen tulokseen voi viitata merkillä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA 9.2.2011

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA 9.2.2011 PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA 9..0 Kokeessa saa vastata enintään kymmeneen tehtävään.. Sievennä a) 9 x x 6x + 9, b) 5 9 009 a a, c) log 7 + lne 7. Muovailuvahasta tehty säännöllinen tetraedri muovataan

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

Juuri 10 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

Juuri 10 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Juuri 0 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty 9..08 Kertaus K. a) Alapaineiden pienin arvo on ja suurin arvo 74, joten vaihteluväli on [, 74]. b) Alapaineiden keskiarvo on 6676870774

Lisätiedot

Matriiseista. Emmi Koljonen

Matriiseista. Emmi Koljonen Matriiseista Emmi Koljonen 3. lokakuuta 22 Usein meillä on monta systeemiä kuvaavaa muuttujaa ja voimme kirjoittaa niiden välille riippuvaisuuksia, esim. piirin silmukoihin voidaan soveltaa silmukkavirtayhtälöitä.

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

Lisätiedot

PERUSLASKUJA. Kirjoita muuten sama, mutta ota KAKSI välilyöntiä (SEURAA ALUEMERKINTÄÄ) 4:n jälkeen 3/4 +5^2

PERUSLASKUJA. Kirjoita muuten sama, mutta ota KAKSI välilyöntiä (SEURAA ALUEMERKINTÄÄ) 4:n jälkeen 3/4 +5^2 PERUSLASKUJA Matemaattisten lausekkeiden syöttäminen: Kirjoita ilman välilyöntejä 3/4+^2 3 4+ 2 Kirjoita muuten sama, mutta ota KAKSI välilyöntiä (SEURAA ALUEMERKINTÄÄ) 4:n jälkeen 3/4 +^2 3 + 4 2 Kopioi

Lisätiedot

Kirjoita ohjelma jossa luetaan kokonaislukuja taulukkoon (saat itse päättää taulun koon, kunhan koko on vähintään 10)

Kirjoita ohjelma jossa luetaan kokonaislukuja taulukkoon (saat itse päättää taulun koon, kunhan koko on vähintään 10) Tehtävä 40. Kirjoita ohjelma, jossa luetaan 20 lukua, joiden arvot ovat välillä 10 100. Kun taulukko on täytetty, ohjelma tulostaa vain ne taulukon arvot, jotka esiintyvät taulukossa vain kerran. Tehtävä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Tekijä Pitkä matematiikka

Tekijä Pitkä matematiikka K1 Tekijä Pitkä matematiikka 5 7..017 a) 1 1 + 1 = 4 + 1 = 3 = 3 4 4 4 4 4 4 b) 1 1 1 = 4 6 3 = 5 = 5 3 4 1 1 1 1 1 K a) Koska 3 = 9 < 10, niin 3 10 < 0. 3 10 = (3 10 ) = 10 3 b) Koska π 3,14, niin π

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 26.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 26.9.2018 1 / 21 Oppimistavoitteet: tämän luennon jälkeen Osaat kirjoittaa for-käskyn avulla ohjelman, joka toistaa haluttua

Lisätiedot

Kenguru Student (lukion 2. ja 3. vuosi) sivu 1 / 6

Kenguru Student (lukion 2. ja 3. vuosi) sivu 1 / 6 Kenguru Student (lukion 2. ja 3. vuosi) sivu 1 / 6 NIMI LUOKKA/RYHMÄ Pisteet: Kenguruloikan pituus: Irrota tämä vastauslomake tehtävämonisteesta. Merkitse tehtävän numeron alle valitsemasi vastausvaihtoehto.

Lisätiedot

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 1 / 34 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

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

MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ 4.9.09 HYVÄN VASTAUKSEN PIIRTEITÄ Alustavat hyvän vastauksen piirteet on suuntaa-antava kuvaus kokeen tehtäviin odotetuista vastauksista ja tarkoitettu ensisijaisesti

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

MS-A0501 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

MS-A0501 Todennäköisyyslaskennan ja tilastotieteen peruskurssi MS-A050 Todennäköisyyslaskennan ja tilastotieteen peruskurssi B Satunnaismuuttujat ja todennäköisyysjakaumat Lasse Leskelä Matematiikan ja systeemianalyysin laitos Perustieteiden korkeakoulu Aalto-yliopisto

Lisätiedot

Syksyn 2015 Lyhyen matematiikan YO-kokeen TI-Nspire CAS -ratkaisut

Syksyn 2015 Lyhyen matematiikan YO-kokeen TI-Nspire CAS -ratkaisut Sksn 015 Lhen matematiikan YO-kokeen TI-Nspire CAS -ratkaisut Tekijät: Olli Karkkulainen ja Markku Parkkonen Ratkaisut on laadittu TI-Nspire CAS -tietokoneohjelmalla kättäen Muistiinpanot -sovellusta.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

3. Muuttujat ja operaatiot 3.1

3. Muuttujat ja operaatiot 3.1 3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.

Lisätiedot

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45 MS-A0003/A0005 Matriisilaskenta Laskuharjoitus / vko 5 Tehtävä 1 (L): Hahmottele kompleksitasoon ne pisteet, jotka toteuttavat a) z 3 =, b) z + 3 i < 3, c) 1/z >. Yleisesti: ehto z = R, z C muodostaa kompleksitasoon

Lisätiedot

Muuttujien määrittely

Muuttujien määrittely Tarja Heikkilä Muuttujien määrittely Määrittele muuttujat SPSS-ohjelmaan lomakkeen kysymyksistä. Harjoitusta varten lomakkeeseen on muokattu kysymyksiä kahdesta opiskelijoiden tekemästä Joupiskan rinneravintolaa

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37 Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37 Tehtävä 1: Käynnistä Matlab-ohjelma ja kokeile laskea sillä muutama peruslaskutoimitus: laske jokin yhteen-, vähennys-, kerto- ja jakolasku. Laske

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019

Lisätiedot

Helsingin, Itä-Suomen, Jyväskylän, Oulun, Tampereen ja Turun yliopisto Matematiikan valintakoe 11.6.2012 klo 10 13 Ratkaisut ja pisteytysohjeet

Helsingin, Itä-Suomen, Jyväskylän, Oulun, Tampereen ja Turun yliopisto Matematiikan valintakoe 11.6.2012 klo 10 13 Ratkaisut ja pisteytysohjeet Helsingin, Itä-Suomen, Jyväskylän, Oulun, Tampereen ja Turun yliopisto Matematiikan valintakoe 11.6.01 klo 10 13 t ja pisteytysohjeet 1. Ratkaise seuraavat yhtälöt ja epäyhtälöt. (a) 3 x 3 3 x 1 4, (b)

Lisätiedot

FUNKTION KUVAAJAN PIIRTÄMINEN

FUNKTION KUVAAJAN PIIRTÄMINEN FUNKTION KUVAAJAN PIIRTÄMINEN Saat kuvapohjan painamalla @-näppäintä tai Insert/Graph/X-Y-POT. Kuvapohjassa on kuusi paikanvaraaja: vaaka-akselin keskellä muuttuja ja päissä minimi- ja maksimiarvot pystyakselin

Lisätiedot

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 3

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 3 PERUSLASKUJA Matemaattisten lausekkeiden syöttäminen: Kirjoita ilman välilyöntejä 3/+^ 3 Kirjoita muuten sama, mutta ota välilyönti :n jälkeen 3/ +^ 3 Liiku matematiikka alueella nuolinäppäimin. Kokeile

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

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

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit. 3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36 Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 1 / 37 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Differentiaali- ja integraalilaskenta 1. Tietokoneharjoitus: ratkaisut

Differentiaali- ja integraalilaskenta 1. Tietokoneharjoitus: ratkaisut Johdanto Kokeile tavallista numeroilla laskemista: yhteen-, kerto- ja jakolaskuja sekä potenssiinkorotusta. 5 (3.1) Differentiaali- ja integraalilaskenta 1 Tietokoneharjoitus: ratkaisut Kurssin 1. alkuviikon

Lisätiedot

Harjoitus 10: Mathematica

Harjoitus 10: Mathematica Harjoitus 10: Mathematica Mat-2.2107 Sovelletun matematiikan tietokonetyöt Syksy 2006 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoituksen aiheita Tutustuminen Mathematica-ohjelmistoon Mathematican

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 4 Jatkuvuus Jatkuvan funktion määritelmä Tarkastellaan funktiota f x) jossakin tietyssä pisteessä x 0. Tämä funktio on tässä pisteessä joko jatkuva tai epäjatkuva. Jatkuvuuden

Lisätiedot

4 Yleinen potenssifunktio ja polynomifunktio

4 Yleinen potenssifunktio ja polynomifunktio 4 Yleinen potenssifunktio ja polynomifunktio ENNAKKOTEHTÄVÄT 1. a) Tutkitaan yhtälöiden ratkaisuja piirtämällä funktioiden f(x) = x, f(x) = x 3, f(x) = x 4 ja f(x) = x 5 kuvaajat. Näin nähdään, monessako

Lisätiedot

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

Todennäköisyyslaskenta I, kesä 2017 Helsingin yliopisto/avoin Yliopisto Harjoitus 1, ratkaisuehdotukset

Todennäköisyyslaskenta I, kesä 2017 Helsingin yliopisto/avoin Yliopisto Harjoitus 1, ratkaisuehdotukset Todennäköisyyslaskenta I, kesä 207 Helsingin yliopisto/avoin Yliopisto Harjoitus, ratkaisuehdotukset. Kokeet ja Ω:n hahmottaminen. Mitä tarkoittaa todennäköisyys on? Olkoon satunnaiskokeena yhden nopan

Lisätiedot

TIEA341 Funktio-ohjelmointi 1, kevät 2008

TIEA341 Funktio-ohjelmointi 1, kevät 2008 TIEA34 Funktio-ohjelmointi, kevät 2008 Luento 3 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 2. tammikuuta 2008 Ydin-Haskell: Syntaksi Lausekkeita (e) ovat: nimettömät funktiot: \x

Lisätiedot

Yhtälön oikealla puolella on säteen neliö, joten r. = 5 eli r = ± 5. Koska säde on positiivinen, niin r = 5.

Yhtälön oikealla puolella on säteen neliö, joten r. = 5 eli r = ± 5. Koska säde on positiivinen, niin r = 5. Tekijä Pitkä matematiikka 5 7..017 31 Kirjoitetaan yhtälö keskipistemuotoon ( x x ) + ( y y ) = r. 0 0 a) ( x 4) + ( y 1) = 49 Yhtälön vasemmalta puolelta nähdään, että x 0 = 4 ja y 0 = 1, joten ympyrän

Lisätiedot

MATEMATIIKAN KOE PITKÄ OPPIMÄÄRÄ

MATEMATIIKAN KOE PITKÄ OPPIMÄÄRÄ 1 YLIOPPILASTUTKINTO- LAUTAKUNTA 25.9.2017 MATEMATIIKAN KOE PITKÄ OPPIMÄÄRÄ A-osa Ratkaise kaikki tämän osan tehtävät 1 4. Tehtävät arvostellaan pistein 0 6. Kunkin tehtävän ratkaisu kirjoitetaan tehtävän

Lisätiedot

2 exp( 2u), kun u > 0 f U (u) = v = 3 + u 3v + uv = u. f V (v) dv = f U (u) du du f V (v) = f U (u) dv = f U (h(v)) h (v) = f U 1 v (1 v) 2

2 exp( 2u), kun u > 0 f U (u) = v = 3 + u 3v + uv = u. f V (v) dv = f U (u) du du f V (v) = f U (u) dv = f U (h(v)) h (v) = f U 1 v (1 v) 2 HY, MTO / Matemaattisten tieteiden kandiohjelma Todennäköisyyslaskenta IIa, syksy 208 Harjoitus 4 Ratkaisuehdotuksia Tehtäväsarja I. Satunnaismuuttuja U Exp(2) ja V = U/(3 + U). Laske f V käyttämällä muuttujanvaihtotekniikkaa.

Lisätiedot

Esimerkki 1: auringonkukan kasvun kuvailu

Esimerkki 1: auringonkukan kasvun kuvailu GeoGebran LASKENTATAULUKKO Esimerkki 1: auringonkukan kasvun kuvailu Auringonkukka (Helianthus annuus) on yksivuotinen kasvi, jonka varren pituus voi aurinkoisina kesinä hyvissä kasvuolosuhteissa Suomessakin

Lisätiedot

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1 TEKNILLINEN KORKEAKOULU Systeemianalyysin laboratorio Mat-.39 Optimointioppi Kimmo Berg 8. harjoitus - ratkaisut. a)huomataan ensinnäkin että kummankin jonon raja-arvo r on nolla. Oletetaan lisäksi että

Lisätiedot

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

Lisätiedot

A Lausekkeen 1,1 3 arvo on 1,13 3,3 1,331 B Tilavuus 0,5 m 3 on sama kuin 50 l 500 l l C Luvuista 2 3, 6 7

A Lausekkeen 1,1 3 arvo on 1,13 3,3 1,331 B Tilavuus 0,5 m 3 on sama kuin 50 l 500 l l C Luvuista 2 3, 6 7 1 Tuotteen hinta nousee ensin 10 % ja laskee sitten 10 %, joten lopullinen hinta on... alkuperäisestä hinnasta. alkuperäisestä hinnasta. YLIOPPILASTUTKINTO- LAUTAKUNTA 23.3.2016 MATEMATIIKAN KOE PITKÄ

Lisätiedot

Harjoitus 2 (viikko 45)

Harjoitus 2 (viikko 45) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista lisätä static-määre operaatioidesi otsikoihin, jotta ohjelmasi kääntyvät. Muista noudattaa hyvän

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.

Lisätiedot

Harjoitus 5 (viikko 41)

Harjoitus 5 (viikko 41) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä, käytä

Lisätiedot

LUMA Suomi kehittämisohjelma 8.10.2015 14:53 Joustava yhtälönratkaisu Matemaattinen Ohjelmointi ja Yhtälönratkaisu

LUMA Suomi kehittämisohjelma 8.10.2015 14:53 Joustava yhtälönratkaisu Matemaattinen Ohjelmointi ja Yhtälönratkaisu (MOJYR) Sisällysluettelo (MOJYR)... 1 1. Taustaa... 1 2. MOJYR-ohjelma... 2 2.1 Ohjelman asentaminen... 2 2.2 Käyttöliittymä... 2 3. Puumalli... 3 4. MOJYR-ohjelman ominaisuudet... 5 4.1 Yhtälön muodostaminen...

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

Kaikkiin tehtäviin laskuja, kuvia tai muita perusteluja näkyviin.

Kaikkiin tehtäviin laskuja, kuvia tai muita perusteluja näkyviin. Peruskoulun matematiikkakilpailu Loppukilpailu perjantaina 1.2.2013 OSA 1 Ratkaisuaika 30 min Pistemäärä 20 Tässä osassa ei käytetä laskinta. Kaikkiin tehtäviin laskuja, kuvia tai muita perusteluja näkyviin.

Lisätiedot

Kenguru 2019 Student lukio

Kenguru 2019 Student lukio sivu 0 / 7 NIMI LUOKKA Pisteet: Kenguruloikan pituus: Koodi (ope täyttää): Irrota tämä vastauslomake tehtävämonisteesta. Merkitse tehtävän numeron alle valitsemasi vastausvaihtoehto. Oikeasta vastauksesta

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 10.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 10.2.2010 1 / 43 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

Merkitse kertolasku 3 3 3 3 potenssin avulla ja laske sen arvo.

Merkitse kertolasku 3 3 3 3 potenssin avulla ja laske sen arvo. 13 Luvun potenssi Kertolasku, jonka kaikki tekijät ovat samoja, voidaan merkitä lyhyemmin potenssin avulla. Potenssimerkinnässä eksponentti ilmaisee, kuinka monta kertaa kantaluku esiintyy tulossa. Potenssin

Lisätiedot

Geogebra -koulutus. Ohjelmistojen pedagoginen hyödyntäminen

Geogebra -koulutus. Ohjelmistojen pedagoginen hyödyntäminen Geogebra -koulutus Ohjelmistojen pedagoginen hyödyntäminen Geogebra Ilmainen dynaaminen matematiikkaohjelmisto osoitteessa http://www.geogebra.org Geogebra-sovellusversion voi asentaa tietokoneilla ja

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 21.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 21.9.2015 1 / 25 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Tässä harjoituksessa käydään läpi R-ohjelman käyttöä esimerkkidatan avulla. eli matriisissa on 200 riviä (havainnot) ja 7 saraketta (mittaus-arvot)

Tässä harjoituksessa käydään läpi R-ohjelman käyttöä esimerkkidatan avulla. eli matriisissa on 200 riviä (havainnot) ja 7 saraketta (mittaus-arvot) R-ohjelman käyttö data-analyysissä Panu Somervuo 2014 Tässä harjoituksessa käydään läpi R-ohjelman käyttöä esimerkkidatan avulla. 0) käynnistetään R-ohjelma Huom.1 allaolevissa ohjeissa '>' merkki on R:n

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja

Lisätiedot

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

Lisätiedot