MATEMAATTISET OHJELMISTOT

Koko: px
Aloita esitys sivulta:

Download "MATEMAATTISET OHJELMISTOT"

Transkriptio

1 MATEMAATTISET OHJELMISTOT ESA LAMMI, JUHA HAATAJA, JUSSI HEIKONEN, YRJÖ LEINO, MIKKO LYLY JA VILLE SAVOLAINEN CSC

2 Matemaattiset ohjelmistot

3 Matemaattiset ohjelmistot Esa Lammi, Juha Haataja, Jussi Heikonen, Yrjö Leino, Mikko Lyly ja Ville Savolainen Tieteen tietotekniikan keskus CSC

4 Tämän teoksen tekijänoikeudet kuuluvat CSC Tieteellinen laskenta Oy:lle. Teoksen tai osia siitä voi kopioida ja tulostaa vapaasti henkilökohtaiseen käyttöön sekä Suomen yliopistojen ja korkeakoulujen kurssikäyttöön edellyttäen, että kopioon tai tulosteeseen liitetään tämä ilmoitus teoksen tekijästä ja tekijänoikeuksista. Teosta ei saa myydä tai sisällyttää osaksi muita teoksia ilman CSC:n lupaa. c Tekijät ja CSC Tieteellinen laskenta Oy 2004

5 Matemaattiset ohjelmistot 5 Esipuhe Matematiikan ohjelmistot ovat runsaassa käytössä Tieteen tietotekniikan keskuscsc:n ylläpitämillä tietokoneilla. Nämä ohjelmistot hyödyttävät kaikkien tieteenalojen edustajia. Täten matematiikan ohjelmisto-oppaan tarve on ilmeinen. Tämä Matemaattiset ohjelmistot -opas on vuonna 1998 ilmestyneen vastaavan oppaan päivitetty versio. Opas ei korvaa ohjelmistokohtaisia oppaita, vaan pyrkii antamaan tiiviin yleiskatsauksen matemaattisten ohjelmistojen ominaisuuksiin ja käyttöön. Oppaan runko on peräisin CSC:n asiakaslehdissä ilmestyneistä artikkeleista sekä koneiden opastusjärjestelmien teksteistä. Tämän neljännen painoksen kirjoittivat ja toimittivat Juha Haataja, Jussi Heikonen, Esa Lammi, Yrjö Leino, Mikko Lyly ja Ville Savolainen. Toivomme saavamme palautetta tämän oppaan lukijoilta. Kommentteja otetaan vastaan sähköpostiosoitteessa Otaniemessä 22. tammikuuta 2004 Tekijät

6 6 Matemaattiset ohjelmistot Sisältö Esipuhe 5 1 Teoksen lukijalle Merkinnöistä Tieteen tietotekniikan keskus CSC CSC:n yhteystiedot Sovellusohjelmistojen käytöstä X-ikkunointijärjestelmä Kirjallisuutta Miten ratkaisenongelmani? Mallintaminen ja tehtäväluokat Ohjelmiston valinta Ohjelmointikielen valinta ja tehokas ohjelmointityyli Ohjelmointikielten ominaisuuksia Tehokas ohjelmointityyli Käyttöesimerkki: lineaarialgebraa Toinen käyttöesimerkki: kuvankäsittely Prototyyppityöskentely Eri ympäristöjen yhteiskäyttö Lisätietoja Matemaattiset sovellusohjelmistot Matlab IDL Matemaattiset sovellusohjelmistot Mathematica Maple Reduce Graafiset kuvaajat Laskuesimerkit Tilastolliset ohjelmistot SAS

7 Sisältö Splus Monifysikaalinen mallintaminen Differentiaaliyhtälöt PDE2D Elmer FEMLAB Ohjelmointi Millaisia välineitä? Fortran ANSI C C Fortran- ja C-kielten yhteiskäyttö Aliohjelmakirjastojen kutsuminen C-ohjelmista Rinnakkaislaskenta Lisätietoja Aliohjelmakirjastot Milloin aliohjelmakirjastoja kannattaa käyttää? BLAS Lapack IMSL NAG IBM:n ESSL-kirjastot Compaqin DXML-kirjasto SGI/Cray Scientific Library Harwell Subroutine Library ARPACK ja P_ARPACK TOMS-algoritmit Liite 98 A CSC:n ympäristön pikaohje 99 B Emacs-editorin pikaopas 101 Hakemisto 104

8 8 Matemaattiset ohjelmistot 1 Teoksen lukijalle Tämä opas esittelee tärkeimmät CSC:n asiantuntijoiden tukemat matemaattiset ohjelmistot. Opas on kirjoitettu tutkijoille ja insinööreille, jotka työssään tarvitsevat matemaattisia ohjelmistoja. CSC on lisäksi julkaissut mm. numeerisia menetelmiä ja ohjelmointia käsitteleviä teoksia. 1.1 Merkinnöistä Tässä oppaassa teletype-kirjasintyyppi tarkoittaa, että kyseessä on tiedoston tai komennon nimi tai tietokoneen tuottama tulostus. Kuitenkin jos halutaan selvästi erottaa, mikä teksti on kehotetta, mikä on käyttäjän syötettä ja mikä on tietokoneen tulostusta, on käytetty seuraavanlaisia kirjasintyyppejä: % pwd /csc Tässä tietokoneen kehote on %, käyttäjän antama komento on lihavoitu ja tietokoneen vastaus on ladottu teletype-kirjasintyypillä. Komentojen esittelyssä yleiset nimet, joiden paikalle käyttäjän tulee kirjoittaa esimerkiksi tiedostonimi, on ladottu vinokirjaimilla: rm tiedosto Niin ikään komentojen esittelyissä valinnaiset osat on kirjoitettu hakasulkuihin: more [valitsimet] [tiedosto] Laatikolla ympäröity sana tarkoittaa näppäimen painallusta. Esimerkiksi merkintä Tab tarkoittaa tabulaattorinäppäimen painallusta. Merkintä ˆx tarkoittaa näppäinpainallusta, jossa Ctrl -näppäin alaspainettuna painetaan x-näppäintä. Tekstissä esiintyvät lyhenteet ja erisnimet on yleensä kirjoitettu kuten Unix. Uusien termien esittelyyn ja muutenkin tekstin korostamiseen on käytetty kursiivia.

9 1 Teoksen lukijalle Tieteen tietotekniikan keskus CSC CSC on opetusministeriön omistama tieteen tietotekniikan keskus. CSC tarjoaa yliopistoille ja tutkimuslaitoksille tietoteknistä tukea ja resursseja: mallinnus- ja laskentapalveluja sekä informaatiopalveluja. Tutkijat voivat käyttää CSC:ssä sijaitsevia Suomen laajinta tieteellisten ohjelmistojen ja tieteen tietokantojen valikoimaa sekä Suomen tehokkainta superlaskentaympäristöä Funet-tietoliikenneyhteyksien kautta. 1.3 CSC:n yhteystiedot Neuvonta CSC:n asiakasneuvojille voi osoittaa kysymyksiä soittamalla CSC:n Help Deskiin, puh. (09) , tai lähettämällä sähköpostia tunnukselle Tälle tunnukselle tulevat viestit käsitellään useamman kerran päivässä ja tarvittaessa viestit ohjataan eteenpäin sopivalle asiantuntijalle. Käyttäjät voivat ottaa asiantuntijoihin yhteyttä myös suoraan. Kaikki CSC:n työntekijät tavoittaa keskuksen kautta puhelinnumerosta (09) CSC:n matematiikan asiantuntijoiden yhteystiedot löytyvät Web-osoitteesta Lupahakemukset CSC:n tietokoneiden käyttäjäksi pääseminen edellyttää käyttölupahakemuksen täyttämistä. Kaavakkeita saa CSC:n toimistosta Paula Mäki-Välkkilältä, puh. (09) , sähköposti tai CSC:n www-sivuilta osoitteesta Käyttäjätunnushakemukset tulee lähettää postiosoitteeseen CSC Käyttöluvat PL Espoo Käyttölupia, käyttäjätunnuksia ja salasana-asioita koskeviin kysymyksiin vastaa Aila Lyijynen, puh. (09) , sähköposti

10 10 Matemaattiset ohjelmistot 1.4 Sovellusohjelmistojen käytöstä Valtaosa CSC:n sovellusohjelmistoista käynnistyy suoraan antamalla ohjelmiston nimi tai käynnistyskomento. Mitään käyttöympäristön alustuksia ei yleensä tarvita. Lisätietoja CSC:n matemaattisista ohjelmistoista löytyy www-osoitteesta Vastaavasti CSC:n tilastollisista ohjelmista saa lisätietoa www-osoitteesta CSC:n omaan matemaattisten ja tilastollisten ohjelmistojen opastusjärjestelmään pääsee myös CSC:n www-sivujen pääsivun kautta. Etsittäessä esim. tietoa matemaattisista ohjelmistoista valitaan CSC:n www-pääsivulta kohta Palvelut.Avautuvasta ikkunasta valitaan vaihtoehto Palvelut tieteenaloittain. Tiedealoista valitaan Numeriikka. Numeriikan sivulta kohdasta Ohjelmistot nähdään CSC:n matemaattisten ohjelmistojen lista versioineen ja alustoineen. 1.5 X-ikkunointijärjestelmä X-ikkunointijärjestelmä (X Window System) on hajautettu, laite- ja käyttöjärjestelmäriippumaton ikkunointijärjestelmä, joka on muodostunut standardiksi. X:ää käyttävä sovellusohjelma voi olla eri koneessa kuin näyttö. Laskentapalvelimessa voidaan tällöin ajaa ohjelmia, joiden graafinen käyttöliittymä ja tulostus tulevat paikallisen työaseman ruudulle. Useat matematiikan sovellusohjelmat käyttävät X-ikkunointijärjestelmää grafiikan tuottamiseen. Jos käytettävissäsi on ssh-ohjelmisto, X-käyttöympäristön alustukset tehdään automaattisesti. Lisäksi ssh:ta käytettäessä yhteydet suojataan salakirjoittamalla kaikki liikenne. 1.6 Kirjallisuutta Kunkin ohjelmiston kohdalla on esitetty tärkeimmät käsikirjat ja kirjallisuusviitteet. Järjestelmänkäyttöön liittyvistä asioista, uusista ohjelmistoista ja koulutuksesta tiedotetaan asiakkaille koneiden omien tiedotteiden lisäksi sekä lehdissä Tietoyhteys ja CSC News. Kaikkialehtiä voi tilata CSC:stä. Seuraavassa on lueteltu muutamia CSC:n oppaita, joista voi olla hyötyä matemaattisten ohjelmistojen käyttäjille:

11 1 Teoksen lukijalle 11 JuhaHaataja.GAMS-ohjelmiston pikaopas. CSC, Www-osoite http: //www.csc.fi/oppaat/gams/. Juha Haataja. Optimointitehtävien ratkaiseminen. CSC, uusittu painos tekeillä. Juha Haataja,Jussi Heikonen, Yrjö Leino, Jussi Rahola, Juha Ruokolainen ja Ville Savolainen. Numeeriset menetelmät käytännössä. CSC, painos. Juha Haataja ja Kaj Mustikkamäki. Rinnakkaisohjelmointi MPI:llä. CSC, Www-osoite Juha Haataja, Jussi Rahola ja Juha Ruokolainen. Fortran 90/95. CSC, Jari Hämäläinen ja Jari Järvinen. Elementtimenetelmä virtauslaskennassa. CSC, Hannu Karttunen. Datan käsittely. CSC, painos. CSC:n koneiden käyttöoppaita ovat Manta Jääskeläinen, Sirpa Kotila ja Tiina Kupila-Rantala, toim. CSC:n palvelinympäristö. CSC, ent. Metakoneen käyttöopas, 1. painos, ISBN Sirpa Kotila, Juha Haataja ja Juha Fagerholm, toim. CSC:n asiakkaan opas. CSC, painos, Web-osoite asopas. Tiina Kupila-Rantala, toim. CSC User s Guide. CSC, painos. Webosoite Tiina Kupila-Rantala, toim. Lempo ja Hiisi -käyttöopas. CSC, Webosoite Tiina Kupila-Rantala ja Raimo Uusvuori, toim. IBMSC User s Guide. CSC, Web-osoite Matemaattisia ohjelmistoja on esitelty mm. seuraavissa suomenkielisissä teoksissa: Juha Haataja. Optimointitehtävien ratkaiseminen. CSC, uusittu painos tekeillä. Hannu Karttunen. Datan käsittely. CSC, painos. Simo K. Kivelä. MATLAB-opas. Otakustantamo, Seuraavat ovat numeriikkaa käsitteleviä perusteoksia:

12 12 Matemaattiset ohjelmistot Gene H. Golub ja James M. Ortega. Scientific Computing and Differential Equations An Introduction to Numerical Methods. AcademicPress, Juha Haataja,JussiHeikonen, YrjöLeino, Jussi Rahola, Juha Ruokolainen ja Ville Savolainen. Numeeriset menetelmät käytännössä. CSC, David Kahaner, Cleve Moler ja Stephen Nash. Numerical Methods and Software. Prentice-Hall, Simo K. Kivelä. Matriisilasku ja lineaarialgebra. Otakustantamo, Matti Mäkelä, Olavi Nevanlinna ja Juhani Virkkunen. Numeerinen matematiikka. Gaudeamus, William H. Press, Saul A. Teukolsky, William T. Vetterling ja Brian P. Flannery. Numerical Recipes. Cambridge University Press, John R. Rice. Numerical Methods, Software, and Analysis. McGraw-Hill, Gilbert Strang. Introduction to Applied Mathematics. Wellesley-Cambridge Press, 1986.

13 2 Miten ratkaisen ongelmani? 13 2 Miten ratkaisen ongelmani? 2.1 Mallintaminen ja tehtäväluokat Matemaattiset ohjelmistot ovat välineitä tieteellisten ja teknisten ongelmien ratkaisemiseen. Ennen ohjelmistojen käyttöä täytyy ongelma identifioida eli tunnistaa. Tämän jälkeen voidaan löydettyä ongelmaa ruveta mallintamaan, jolloin tuloksena on matemaattinen malli. Malli voi tuottaa ratkaistavaksi esimerkiksi joukon differentiaaliyhtälöitä, optimointitehtävän, tilastollisen tehtävän tai näiden yhdistelmän. Matemaattisen mallin ratkaisemiseen tarvitaan luotettavia ja tehokkaita menetelmiä. Yksinkertaisissa tehtävissä saatetaan löytää tehtävän symbolinen ratkaisu.monimutkaisemmissa tapauksissa täytyy turvautua numeerisen ratkaisualgoritmin löytämiseen tai kehittämiseen. Tehtävä voidaan tällöin ratkaista annetuilla alkuarvoilla tai parametrien arvoilla. Aina ei kuitenkaan edes numeerista ratkaisua onnistuta löytämään, jolloin tehtävää voidaan joutua yksinkertaistamaan ja aloittamaan mallinnuskierros alusta uudelleen. 2.2 Ohjelmiston valinta Tässä oppaassa kerrotaan yleisesti käytetyistä matemaattisista ohjelmistoista. Eräs tapa jakaa ohjelmistot on luokitella ne itsenäisesti käytettäviin sovellusohjelmistoihin sekä muista ohjelmistoista käsin käytettäviin aliohjelmakirjastoihin. Sovellusohjelmistoissa on useimmiten monipuoliset käyttöliittymät ja mahdollisesti myös kehittynyt mallinnus- ja ohjelmointikieli, jonka avulla matemaattisia malleja voidaan määritellä ja ratkoa. Esimerkkejä sovellusohjelmistoista ovat symbolisen laskennan ohjelmisto Mathematica, numeerisen laskennan yleisohjelmisto Matlab sekä kattava tilastollinen ohjelmisto SAS. Aliohjelmakirjastoista tärkeimmät ovat yleiskirjastot IMSL ja NAG, joista kummastakin löytyy noin 1000 aliohjelmaa eri tyyppisten numeeristen tehtävien ratkaisemiseen.

14 14 Matemaattiset ohjelmistot Taulukko 2.1: Ohjelmankehitykseen käytettyjen kielten ominaisuuksia eri tehtävissä: numeerisessa laskennassa, symbolinkäsittelyssä, grafiikassa ja tilastollisessa analyysissä. Merkintä +++ tarkoittaa erittäin hyvää soveltuvuutta, ++ hyvää ja + välttävää soveltuvuutta. Käännettävien kielien kohdalla käytetty merkintä tarkoittaa, että kyseiseen tarkoitukseen on saatavissa runsaasti aliohjelmakirjastona toteutettuja rutiinikokoelmia; merkintä tarkoittaa kohtuullista ja vähäistä rutiinikokoelmien saatavuutta. Taulukossa on pyritty kuvailemaan tilannetta CSC:n laskentaympäristössä. Kieli Numeriikka Symb.käs. Grafiikka Tilasto FORTRAN Fortran C + C++ ++ Matlab Splus SAS Mathematica Macsyma Maple Reduce Ohjelmointikielen valinta ja tehokas ohjelmointityyli CSC:n tietokoneilla käytetään ohjelmankehitykseen seuraavia välineitä: käännettävät kielet (Fortran 90, FORTRAN 77, C, C++), numeeriset laskentaympäristöt (Matlab, Splus, SAS) ja symbolinkäsittelyjärjestelmät (Mathematica, Macsyma, Maple, Reduce). Taulukossa 2.1 on kerrottu eräiden ohjelmointikielten ja matemaattisten ohjelmistojen soveltumisesta eritehtävätyyppeihin. Erikoisohjelmistoja (ryhmäteoria jne.) ei ole otettu mukaan vertailuun Sovellusohjelmistojen käyttö Seuraavassa taulukossa on esitetty eräiden sovellusohjelmistojen käyttötilanne vuodelta 2003 (tammi-syyskuu) kaikki koneet yhteenlaskettuina. Taulukossa on esitetty kunkin ohjelmiston eri koneilta yhteenlasketut CPU-ajat tunteina:

15 2 Miten ratkaisen ongelmani? 15 Ohjelmisto Aika (CPUh) Matlab Elmer 1266 Mathematica 101 SAS 101 Maple 16 Tiedoista voi laskea, että Matlab-ajoihin kulutettiin yhteensä noin 650 vuorokauden edestä cpu-aikaa. Tehokkaanohjelmointityylin käyttö on siis tärkeäämuidenkin kuin käännettyjen kielten yhteydessä. Kannattaa myös miettiä, voiko ainakin osan tulkittavilla kielillä suoritetuista laskuista toteuttaa käännettävillä kielillä, jotka voivat olla kymmeniä kertoja nopeampia. 2.4 Ohjelmointikielten ominaisuuksia Monissa sovellusohjelmistoissa on oma ohjelmointikieli matemaattisten mallien määrittelyyn ja ratkaisemiseen. Seuraavassa esitellään ja vertaillaan tärkeimpien CSC:ssä käytettyjen ohjelmointikielien ominaisuuksia Matlab Matlabin perustietorakenne on matriisi eli 2-ulotteinen taulukko. Vektorit ja skalaarit käsitellään matriisin erikoistapauksina. Matriisi voidaan myös tulkita kuvankäsittelyssä digitaalikuvaksi. Matlabin versiosta 5 alkaen on myös mahdollisuus käsitellä useampiulotteisia taulukoita. Lisäksi voidaan määritellä solutaulukoita (cell array) ja rakenteisia tietotyyppejä (structure array), joiden alkiot eivät välttämättä ole samaa tyyppiä. Myöskin olio-ohjelmointi on mahdollista Matlabin uusimmissa versioissa. Keskeinen Matlabin puute verrattuna symbolisen matematiikan ohjelmistoihin on se, että tietojenkäsittely on pääsääntöisesti numeerista. Esimerkiksi kuvaajan piirtämistä varten on funktiosta ensin laskettava näytematriisi. Matlabia voidaan laajentaa kirjoittamalla Matlab-funktioita niin sanottuihin M-tiedostoihin eli.m-loppuisiin tiedostoihin sekä liittämällä ulkopuolisia Fortran- tai C-kielisiä aliohjelmia Matlabiin (MEX-tiedostot). Matlabissa on monipuolinen kaksi- ja kolmeulotteinen grafiikka Mathematica ja Maple Mathematican ja Maplen monipuolinen perustietorakenne on Lisp-kielestä tuttu lista. Lista on hierarkkinen tietorakenne, jonka alkiot voivat olla mitä tahansa ohjelmistojen tuntemaa tietotyyppiä, mukaanlukien toisia listoja.

16 16 Matemaattiset ohjelmistot Mathematica esittää vektorit, matriisit ja joukot listoina. Maplessa on omat tietorakenteet joukkoja, assosiatiivisia taulukoita ja matriiseita varten. Maplen monenlaiset tietorakenteet saattavat sekoittaa käyttäjää, mutta verrattuna Mathematicaan Maplessa on paremmat mahdollisuudet tehdä virhetarkistuksia eri tietorakenteita käsiteltäessä. Symbolinkäsittelyjärjestelmien tietoalkiot voivat sisältää numeerista tai symbolista tietoa, mikä mahdollistaa lausekkeiden symbolisen käsittelyn, kuten sieventämisen, derivoinnin tai integroinnin. Mathematicassa ja Maplessa on monipuoliset grafiikkaominaisuudet. Etenkin funktioiden kuvaajien piirtäminen on helppoa. Mathematicaa ja Maplea voi laajentaa määrittelemällä funktioita ja sääntöjä tiedostoissa ja lukemalla nämä sisään ohjelmistoon. Mathematicaan voi liittää ulkoisia aliohjelmia MathLink-protokollaa käyttäen. Puhtaasti numeerista tietoa käsiteltäessä symbolisen laskennan ohjelmistot voivat olla tehottomia, koska algoritmien ja tietorakenteiden pitää pystyä käsittelemään sekä numeerista että symbolista tietoa Fortran 90/95 ja FORTRAN 77 Fortran on tärkein tieteellisen ja teknisen laskennan ohjelmointikieli. Uusimmissa standardeissa (Fortran 90 ja Fortran 95) on poistettu useimmat vanhan FORTRAN 77:n ongelmat. Käytössä on paljon ohjelmointia helpottavia piirteitä, kuten aliohjelman paikallisten taulukoiden automaattinen dynaaminen muistinhallinta. Eräs Fortranin vanhan standardin (FORTRAN 77) pahimpia puutteita oli tietorakenteiden puute. Ainoa tietorakenne oli taulukko. Taulukoita ei voitu käsitellä kokonaisuuksina, vaan jokainen taulukon alkio täytyi käydä erikseen läpi. Fortran 90 on itse asiassa kokonaan erilainen ohjelmointikieli kuin perinteinen FORTRAN 77, vaikka Fortran 90 sisältää FORTRAN 77:n osajoukkonaan. Fortran 90:n taulukkosyntaksilla taulukoita voidaan käsitellä kokonaisuuksina. Fortran 90 sisältää rakenteiset tietotyypit sekä esimerkiksi mahdollisuuden operaattoreiden ylilataamiseen. Fortran-kielellä on kirjoitettu valtavasti aliohjelmakirjastoja eri tarkoituksiin. Useimmissa tietokoneympäristöissä voidaan Fortran-kielisiä aliohjelmakirjastoja kutsua muista ohjelmointikielistä C ja C++ C-ohjelmointikielessä on taulukkorakenteen lisäksi tietuerakenne sekä osoitinmuuttujat. C-kielen eräs puute on kompleksimuuttujien puuttuminen. Lisäksi osoitinmuuttujien liiallisella käytöllä voi kirjoittaa sekavaa ja vaikeasti optimoitavaa koodia.

17 2 Miten ratkaisen ongelmani? 17 C++ on kokonaan oliokeskeinen C-ohjelmointikielen laajennus. Sillä voidaan joustavasti määrittää uusia tietotyyppejä ja kirjoittaa niitä käsittelevät operaattorit siten, että tietotyyppien käyttö on mahdollisimman läpinäkyvää. Uusien tietotyyppien tehokas muistinhallinta voi kuitenkin olla vaikeaa. Aloittelijan kirjoittama C++-koodi tuottaa paljon ajonaikaisia tilapäismuuttujia, joiden käyttö hidastaa suoritusta. Numeerisen laskennan kannalta C++:ssa olisi suonut olevan vakiona määritellyn matriisityypin. C++:lla onkin kirjoitettu monia keskenään yhteensopimattomia matriisiluokkia. 2.5 Tehokas ohjelmointityyli Tulkittavissa kielissä (esimerkiksi Matlab) jokainen lause analysoidaan jokaisella suorituskerralla uudestaan, minkä vuoksi sama asia vie paljon enemmän aikaa kuin käännetyllä ohjelmalla toteutettuna. Parhaimmillaan tulkittavat kielet ovat kaikenlaisissa kokeiluissa ja pienehköissä töissä. Raskaimmat tehtävät olisi parempi laskea joko Fortranilla tai C:llä. Matlab-ohjelmien konvertointi Fortraniksi on melko suoraviivainen toimenpide. Tulkittavissa kielissä ohjelmointityylin merkitys korostuu. Esimerkiksi Matlabin matriisioperaatiot ovat erittäin tehokkaita, mutta silmukoiksi aukikirjoitettuina operaatiot hidastuvat tuntuvasti. Fortranissa silmukoiden ja taulukko-operaatioiden välillä ei ole juuri eroa, koskakääntäjätuottaa molemmista oleellisesti saman koodin. Silti taulukkooperaatioita kannattaa käyttää ohjelmien suunnitteluvaiheessa. Kun algoritmin ajattelee näiden operaatioidenavulla, tuloksena on todennäköisesti siisti ja myös tehokkaasti toimiva ohjelma. Mikäli ohjelma toteutetaan C:llä tai sellaisella Fortranilla, jossa näitä operaatioita ei ole, ne on joka tapauksessa hyvin helppo kirjoittaa auki silmukoiksi. 2.6 Käyttöesimerkki: lineaarialgebraa Seuraavassa esitetään eräiden lineaarialgebran perusoperaatioiden toteutukset eräillä ohjelmointikielillä. Olkoot x, b ja r vektoreita avaruudessa R n, matriisi A kooltaan n n ja kerroin c reaaliluku. Kullakin kielellä tehdään seuraavat laskutoimitukset: r = b Ax, n c = r T r = r 2 i, i=1 x = x + c r.

18 18 Matemaattiset ohjelmistot Fortran 90 Fortran 90:n taulukkosyntaksia käyttämällä varsinainen ohjelma mahtuu kolmelle riville. Alla on lisäksi alustettu taulukot satunnaisluvulla. Muissa käännettävissä kielissä satunnaislukugeneraattorien kutsut ovat toteutuskohtaisia, joten niitä ei ole esitetty. PROGRAM taulukot IMPLICIT NONE INTEGER, PARAMETER :: n = 10 REAL :: c REAL, DIMENSION(n) :: x, b, r REAL, DIMENSION(n,n) :: a CALL RANDOM_NUMBER(b) CALL RANDOM_NUMBER(x) CALL RANDOM_NUMBER(a) r = b - MATMUL(a,x) c = DOT_PRODUCT(r,r) x = x + c*r END PROGRAM taulukot FORTRAN 77 FORTRAN 77:llä tämä voitaisiin toteuttaa seuraavasti: PROGRAM TAULU INTEGER N PARAMETER (N = 10) REAL X(N), B(N), R(N), A(N,N)... DO 20 I=1,N S=0.0 DO 10 J=1,N S=S+A(I,J)*X(J) 10 CONTINUE R(I)=B(I)-S 20 CONTINUE C=0 DO 30 I=1,N C=C+R(I)**2 30 CONTINUE DO 40 I=1,N X(I)=C(I)+C*R(I) 40 CONTINUE END Fortranin merkillisyyksiä on, että usempiulotteiset taulukot talletetaan pystyeikä vaakariveittäinkuten useimmissakielissä. Kaksiulotteisen taulukon ensimmäinen indeksi kertoo rivin ja jälkimmäinen sarakkeen, kuten tavallisessa matriisinotaatiossakin. Talletustavasta johtuen on tehokkaampaa kirjoittaa silmukat siten, että sisimmissä silmukoissa muutetaan taulukon ensimmäistä indeksiä eli edetään sarakkeittain. Tämän vuoksi suuret taulukot kannattaa joskus tehokkuussyistä tallettaa transponoituina.

19 2 Miten ratkaisen ongelmani? C-kieli C-kielinen toteutus lineaarialgebran operaatioista olisi esimerkiksi seuraava: int n = 10; float x[n], b[n], r[n], a[n][n];... for (i=0; i<n; i++) { for(s=0.0, j=0; j<n; j++) s += a[i][j]*x[j]; x[i]=b[i]-s; } for (c=0.0, i=0; i<n; i++) c += r[i]*r[i]; for (i=0; i<n; i++) x[i] += c*r[i]; C-kielessä taulukoiden indeksit alkavat aina nollasta. Määrittely float a[10] luo taulukon, jossa on kymmenen alkiota. Kelvollisia indeksejä ovat siten 0,1,..., Matlab Matlabin perustietotyyppejä ovat vektorit ja matriisit, joten lineaarialgebran operaatioiden suoritus on suoraviivaista. Seuraavassa käytetään dimensiota n = 10. Aluksi luodaan satunnaiset vektorit x ja b sekä matriisi A. n = 10; x = rand(n,1); b = rand(n,1); A = rand(n,n); r = b - A*x; c = r *r; x = x + c*r; Matlabissa tarkoittaa symboli * matriisikertolaskua. Toisaalta matriisi, jonka koko on 1 1, tulkitaan skalaariksi. Skalaarin ja vektorin kertolasku tehdään komponenteittain Mathematica Seuraavassa lasketaan Mathematicalla lineaarialgebran perusoperaatioita: n = 10; x = Table[Random[Real], {i,1,n}]; b = Table[Random[Real], {i,1,n}]; A = Table[Random[Real], {i,1,n}, {j,1,n}]; r = b - A. x; c = r. r; x = x + c * r;

20 20 Matemaattiset ohjelmistot Mathematicassa merkki. (piste) tarkoittaa siis matriisi- ja pistetuloa, vaikka varsinaista tietotyyppiä matriiseille ja vektoreille ei olekaan olemassa Maple Maplessa voi käyttää linalg-pakettia lineaarialgebran operaatioihin: with(linalg): n := 10: x := randvector(n): b := randvector(n): A := randmatrix(n,n): r := evalm(b - A &* x): c := dotprod(r,r): x := evalm(x + c*r): Sijoituslauseissa on käytetty evalm-funktiota, jotta matriisioperaatioita sisältävät lausekkeet suoritettaisiin. Matriisitulon symbolina on Maplessa &*. 2.7 Toinen käyttöesimerkki: kuvankäsittely Toisena esimerkkitehtävänä on kokoisen kuvadatan käsittely. Aluksi lasketaan kuvadatan keskiarvo. Lopuksi vertaillaan kunkin pikselin suuruutta keskiarvon suhteen (kynnystys). Seuraavassa toteutetaan laskenta sekä Matlabilla että Mathematicalla käyttäen sekä taulukko- että silmukkaoperaatioita. Tarkoituksena on paitsi verrata ohjelmistoja keskenään myös tutkia eri tyyppisten toteutusten vaikutusta kunkin ohjelmiston osalta Matlab Seuraavassa on annettu kuvankäsittelytehtävän Matlab-toteutus. Ensin tehdään laskenta Matlabin taulukko-operaatioiden avulla ja tämän jälkeen silmukkarakenteilla. Aluksi luodaan satunnainen matriisi. data = floor(256*rand(100)); Tämän jälkeen mitataan operaatioihin kuluva aika: time = cputime; ave = sum(data(:))/prod(size(data)); res = data > ave; t1 = cputime - time Matlabissa loogisia arvoja vastaavat numeroarvot 0 ja 1. Skalaarin ave ja matriisin data vertailu tehtiin edellä komponenteittain. Seuraavassa on forsilmukkarakennetta käyttävä toteutus:

21 2 Miten ratkaisen ongelmani? 21 time = cputime; [ni, nj] = size(data); s = 0; for i = 1:ni for j = 1:nj s = s + data(i,j); end end ave2 = s/(ni*nj); for i = 1:ni for j = 1:nj res2(i,j) = data(i,j) > ave2; end end t2 = cputime - time Tuloksiksi saadaan esimerkiksi seuraavaa: t1 = t2 = Täten taulukko-operaatioiden käyttö oli noin 90 kertaa nopeampaa kuin forsilmukoiden. Jos kuitenkin tulostaulukko res2 luodaan ennen sijoitusoperaatioita, kuluu aikaa hiukan vähemmän: time = cputime; ave3 = s/(ni*nj); res3 = zeros(size(data)); for i = 1:ni for j = 1:nj res3(i,j) = data(i,j) > ave3; end end t3 = cputime - time Ainoa ero siis on taulukon luominen zeros-funktiolla ennen sijoitusoperaatioita. Tämä koodi on noin 15% nopeampi kuin aikaisempi silmukkaversio. Taulukko-operaatioiden tehoon ei tietenkään päästä Mathematica Kuvadatan keskiarvon laskeminen voidaan tehdä Mathematicalla seuraavasti: average[l_list] := Apply[Plus,Flatten[l]] / Apply[Times,Dimensions[l]]; average2[l_list] := Block[{ni, nj, sum = 0, m}, {ni,nj} = Dimensions[l]; For[i = 1, i <= ni, i++, For[j = 1, j <= nj, j++, sum = sum + l[[i,j]]]]; m = sum/(ni*nj)]

22 22 Matemaattiset ohjelmistot Tässä määriteltiin kaksi rutiinia, joista ensimmäinen on toteutettu Mathematican listojenkäsittelyrutiinilla Apply ja toinen For-silmukkarakenteella. Seuraavassa esimerkki rutiinien testauksesta: data = Table[Random[Integer, {0,255}], {i,1,100}, {j,1,100}]; t1 = First[Timing[ ave = average[data] ]]; t2 = First[Timing[ ave2 = average2[data] ]]; t3 = First[Timing[ res = Outer[(# > ave)&, data] ]]; t4 = First[Timing[ res2 = Array[(data[[##]]>ave)&, Dimensions[data]] ]]; {t1, t2, t3, t4} Mathematica-lausekkeet tuottivat listarakenteet res ja res2,jotka sisältävät loogisia arvoja True ja False.Ajanmittaukseen käytettiin Timing-funktiota. Tuloksiksi saadaan esimerkiksi seuraavaa: { Second, Second, 4.35 Second, Second} Siten silmukkarakennetta hyödyntävä laskurutiini oli noin 15 kertaa hitaampi kuin listaoperaatioita käyttävä. Tämä on tyypillistä tulkittaville kielille. Lisäksi ulkotulo-operaatiota Outer käyttävä lauseke oli Array-funktiota käyttävää nopeampi. 2.8 Prototyyppityöskentely Tehokas tapa kirjoittaa ohjelmia on kirjoittaa ensin prototyyppi jossakin interaktiivisessa ympäristössä. Testauksen jälkeen voidaan sama algoritmi toteuttaa perinteisillä ohjelmointikielillä. Siirtoa helpottaa, jos interaktiivisessa ympäristössä ja ohjelmointikielessä on käytössä samankaltaisia tietorakenteita (vertaa esim. Matlab ja Fortran 90). Prototyypin laatimiseen kannattaa käyttää interaktiivista matriisikieltä kuten Matlabia tai symbolisen laskennan ohjelmistoa kuten Mathematicaa tai Maplea. Interaktiivisessa ympäristössä voidaan nopeasti toteuttaa ja testata prototyyppiohjelmia. Tässä ympäristössä voidaan helposti tutkia erilaisten parametrien vaikutusta ohjelman suoritukseen sekä tarkastella laskentatuloksia graafisesti. Myös eri laskenta-algoritmien vertailu on helppoa. Prototyypin testaus pitää yleensä tehdä pienidimensioisilla testitapauksilla, sillä varsinainen laskenta kestää usein liian kauan näissä ympäristöissä. Interaktiivisen ympäristön laskentaa voi nopeuttaa joissakin tapauksissa optimoimalla koodia, kääntämällä koodi konekieliseksi tai käyttämällä ulkopuolisia kirjastoja. Useissa raskaissa laskentatehtävissä on ohjelman lopullinen versio kirjoitettava jollakin käännettävällä ohjelmointikielellä kenties käyttäen valmiita aliohjelmakirjastoja hyväksi. Prototyypin ohjelmakoodia voi ehkä sellaisenaan muuntaa ohjelmointikielten koodiksi. Eräät operaatiot, kuten yhtälöryhmien ratkaisu, voidaan korvata kutsulla aliohjelmakirjastoihin. Testauk-

23 2 Miten ratkaisen ongelmani? 23 sessa on helppo verrata prototyypin ja varsinaisen laskentaympäristön antamia tuloksia. 2.9 Eri ympäristöjen yhteiskäyttö Usein on mahdollista rakentaa tehokas ja helppokäyttöinen laskentaympäristö yhdistämällä esimerkiksi jokin matriisikieli aliohjelmakirjastoihin. Interaktiiviset laskentaympäristöt tarjoavat helppokäyttöisen käyttöliittymän raskaaseen numeeriseen laskentaan. Tulosten graafinen tarkastelu ja eri parametrien muuntelu on helppoa, kunhan käyttäjä näkee sen vaivan, että liittää oman laskentarutiininsa tällaiseen ympäristöön. Interaktiivisessa ympäristössä monen laskentarutiinin ja aliohjelmakirjaston rutiinin käyttö helpottuu, sillä aliohjelmien parametrilistoja voidaan yhdistää. Symbolisen laskennan ohjelmien käyttö helpottaa monia laskentatehtäviä. Esimerkiksi optimointialgoritmeja varten voi funktion gradientin ja Hessen matriisin muodostaa automaattisesti symbolisen laskennan ohjelmistoilla. Lisäksi lausekkeet voi tulostaa esimerkiksi Fortran- tai C-kielisinä versioina, jotka voi sijoittaa osaksi ohjelmakoodia. Eri ohjelmistojen yhteiskäytön esteenä voi monesti olla tietokoneiden käyttöympäristö, joka vaatii, että isot työt ajetaan erätöinä. Matlabiin voi liittää Fortran- ja C-kielisiä aliohjelmia käyttäen ns. MEX-tiedostoja, joilla määritellään kutsuliittymä. Esimerkiksi Matlabin matriisit siirtyvät tehokkaasti ohjelmointikieliin. Matlabiin on saatavilla myös liitäntä symbolinkäsittelyyn. Symbolic Math ja Extended Symbolic Math Toolbox liittävät Matlabin Maple-ohjelmiston laskentaytimiin Lisätietoja Eri ohjelmistoilla ja ohjelmointikielillä on omat käsikirjansa, jotka on esitetty seuraavassa kirjallisuusluettelossa. B.W. Char. Maple 8 Learning Guide. Waterloo Maple Inc., Walter Gander ja Jiri Hrebicek. Solving Problems in Scientific Computing Using Maple and Matlab. Springer Verlag, Juha Haataja. Optimointitehtävien ratkaiseminen. CSC, uusittu painos tekeillä. Juha Haataja, Jussi Rahola ja Juha Ruokolainen. Fortran 90/95. CSC, Hannu Karttunen. Datan käsittely. CSC, painos. Roman Maeder. Programming in Mathematica. Addison-Wesley, 1996.

24 24 Matemaattiset ohjelmistot The MathWorks, Inc. MATLAB Reference Guide, The MathWorks, Inc. MATLAB User s Guide, M. B. Monagan, K. O. Geddes, K. M. Heal, G. Labahn, S. M. Vorkoetter, J. McCarron ja P. DeMarco. Maple 8 Advanced Programming Guide. Waterloo Maple Inc., Darren Redfern. TheMaple Handbook. Hamilton Printing Company, Stephen Wolfram. The Mathematica Book. Wolfram Media, Cambridge University Press, 1996.

25 3 Matemaattiset sovellusohjelmistot 25 3 Matemaattiset sovellusohjelmistot 3.1 Matlab Matlab (nimi tulee sanoista matrix laboratory)onalunperin matriisien käsittelyyn tehty numeerinen ohjelmisto. Matlab on käytettävissä koneilla Cedar, Lempo ja Hiisi. Lemmolla ja Hiidellä on käytettävissä normaalin Matlabin lisäksi vain työkalupakit (toolbox) Signal Processing ja Optimization. Sen sijaan Cedarilla on saatavissa seuraavat työkalupakit (toolbox): Extended Symbolic Math, Image Processing, Mapping, Neural Network, Optimization, PDE, Signal Processing, Spline, Statistics, Symbolic Math ja Wavelet. Lisäksi Matlabin kääntäjä Matlab Compiler on saatavissa Cedarilla. Matlab käynnistyy komennolla matlab. Normaalisti päätteelle avautuu Matlab-istuntoa varten oma, kolmeen osaan jakautunut ikkuna. Varsinainen käyttö tapahtuu ikkunan oikeanpuoleisessa osassa, johon käyttäjä kirjoittaa komentonsa ja ohjelma tulostaa vastaukset. Ikkunan vasemmassa yläosassa on listattu käytössä olevien muuttujien nimet ja tyypit ja kullekin varattu muistin määrä. Vasemmassa alareunassa näkyvät aiemmin annetut komennot myös edellisesta Matlab-sessiosta. Matlabin perusteelliseen opstusjärjestelmään pääsee näpäyttämällä Matlabikkunan yläreunassa olevaa Help-sanaa tai antamalla komennon helpdesk. Tällöin käynnistyy opastusjärjestelmän selain. Jos et ole aiemmin käyttänyt Matlabia, aloita ohjelmaan tutustuminen tätä kautta. Komentoikkunassa voit saada ohjelmasta lisätietoa myös kirjoittamalla help. Tämä tapa sopii ehkä paremmin lisätietojen hankkimiseen jo tiedossasi olevista Matlabin funktioista ja operaatioista. Niinpä esimerkiksi tulostukseenkäytettävänplot-komennon erilaisistaversioistasaatietojakomennolla help plot. Ohjelmasta poistutaan komennolla quit. Mikäli Matlabin käynnistämistä haluaa nopeuttaa, niin sen voi käynnistää rvipohjaisena komennolla matlab -nojvm.tällöin javamanagerin köyttö on estetty eikä ikkunoita avata. Tämä ei estä grafiikan käyttöä. Grafiikkaikkuna avataan, kun käskyriveiltä annetaan piirroskomentoja.

26 26 Matemaattiset ohjelmistot Mihin Matlab soveltuu? Matlabin etuja ovat ohjelmiston sisältämä helposti opittava matriisikieli käytön interaktiivisuus ja nopeus mitä moninaisimpiin tarkoituksiin saatavat työkalupakit (toolbox) monipuolinen grafiikka siirrettävyys (Matlab on saatavissa lähes kaikille koneille) helppo laajennettavuus (M-tiedostot) ja ulkoisten Fortran- ja C-rutiinien käyttömahdollisuus. Matlabin puutteiksi voi todeta, että se osaa tehdä vain numeriikkaa eikä sisällä symbolinkäsittelyä. Matlabin käyttövinkkejä Unix-ympäristössä voi Matlabin komentoriveillä siirtyä kursorinäppäimillä ja sekä emacs-tyylisillä komennoilla ˆb ja ˆf. Aikaisemmin annettuja komentoja saa näkyviin kursorinäppäimillä ja sekä vastaavilla emacstyylisillä komennoilla ˆn ja ˆp. Voit myös kirjoittaa riville valmiiksi muutaman ensimmäisen kirjaimen komennosta, jolloin nuolinäppäimillä tapahtuva selailu tuo näkyviin vain ne aiemmat komennot, jotka alkavat samalla tavoin. Merkkejä voi poistaa näppäimillä Backspace ja Del. Näppäin ˆc keskeyttää käynnissä olevan laskennan ja näppäimellä ˆz Matlab pysähtyy ja päästään komentotulkkiin. Komennolla fg pääsee komentotulkista takaisin pysäytettyyn ohjelmaan ja Unix-komennolla jobs näkee taustalla olevat työt. Huutomerkin avulla voi Matlabissa antaa Unix-komentoja. Jos ei ole käytettävissä X-näyttöä, jolla voi pitää yhtä aikaa useita ikkunoita auki, voi ohjelmatiedostoja käydä editoimassa esimerkiksi Matlabin komennolla!emacs tiedosto. Matlab-istunnossa määriteltyjä muuttujia voi tallettaa tiedostoon tied.mat komennolla save tied var1 var2 Jos muuttujien nimet jätetään pois, talletetaan kaikki muuttujat. Komennolla who näkee, mitä muuttujia on määriteltyinä. Komennolla load tied luetaan tiedoston tied.mat sisältämät muuttujat. Taulukossa 3.1 on esitetty muutamia hyödyllisiä Matlab-ilmaisuja. Lisätietoja saa Matlabin käsikirjoista, jotka löytyvät myös Matlabin komennon helpdesk takaa.

27 3 Matemaattiset sovellusohjelmistot 27 Taulukko 3.1: Muutamia hyödyllisiä Matlab-lausekkeita ja komentoja. MATLAB-koodi Selitys help fun Komennon tai funktion fun avustusteksti. who Lista määritellyistä muuttujista. x = 1:n Vektori (1, 2,...,n). x = (1:n).^2 Vektori (1, 4,...,n 2 ). x = i:j:k Vektori (i, i + j,i + 2j,...,k). x = a(a > 0) Matriisin a nollaa suuremmat alkiot. x = find(v==min(v)) Vektorin v minimialkioiden sijainnit. x = y Matriisin (tai vektorin) transpoosi. a = [1 2 3; 4 5 6]; Matriisin a(i, j) muuttaminen x = a(:) vektoriksi x. a = [a; [7 8 9]] Rivin lisääminen matriisiin a. a = [a [ ] ] Sarakkeen ( lisääminen ) matriisiin a. a b x = [a b; c d] Matriisi. c d x = a(:,k) Matriisin a kaikki rivit sarakkeelta k. x = a(i:j,k) Matriisin a rivit i, i + 1,...,j sarakkeelta k. x = a([1 2 3],[2 3]) Matriisin a annetut rivit annetuilta sarakkeilta. a(:,[1 3]) = [] Poistetaan matriisista a sarakkeet 1 ja 3. i = sqrt(-1); Kompleksilukujen e inπ/18,n= 0,...,35 v = exp(i*(0:35)*pi/18) määrittely. x = -3:0.1:3; y = sin(x); Funktion y = sin x, x [ 3, 3] plot(x,y, -- ) kuvaaja. x = -3:0.1:3; y = -3:0.1:3; Funktion z = xe sin(x+y) kuvaaja, [xx yy] = meshgrid(x,y); x,y [ 3, 3]. z = xx.*exp(sin(xx+yy)); contour(z) t = clock; x = ; Yksinkertainen tapa mitata laskentaan time = etime(clock,t) kuluva aika. flops(0); x = ; flops Laskennan viemien liukulukuoperaatioiden määrä.

28 28 Matemaattiset ohjelmistot M-tiedostot ja funktiot Usein toistuvat laskutoimitusten sarjat kannattaa tallettaa funktiotiedostoihin, joita kutsutaan eri parametreilla jos tekee kymmeniä eri versioita samasta rutiinista tulee työskentelystä nopeasti varsin kaoottista. Lisäksi funktioiden etuna on se, että niissä käytetyt muuttujat eivät vahingossakaan muuta samannimisiä Matlab-istunnossa määriteltyjä muuttujia. Yleinen, mutta pitkän päälle hankala tapa käyttää Matlabin M-tiedostoja, on sijoittaa esimerkiksi tiedostoon oma.m Matlab-komentoja, joissa asetetaan muuttujille arvot ja suoritetaan laskutoimitukset. Käytännössä kannattaa kuitenkin erottaa toisistaan parametrien arvot ja toistuvat laskutoimitukset. Voidaan kirjoittaa esimerkiksi funktiotiedosto omaf.m, jossa suoritetaan laskutoimitukset argumentteina annetulle datalle ja palautetaan halutut tulokset. Seuraavassa on esitetty tavallisen M-tiedoston ja funktiotiedoston rakenne: Komentotiedosto oma.m a = [2 1; -1-2]; b = [2 2] ;... X =... ; gamma =... ; Funktiotiedosto omaf.m function [X,gamma] = omaf(a,b,c) % Esimerkkifunktio if nargin < 3, c = 0; end... X =... ; gamma =... ; Muuttujalle c annetaan esimerkkifunktion if-lauseessa arvo 0, mikäli funktiokutsussa on annettu vain kaksi argumenttia (argumenttien lukumäärä on muuttujassa nargin). Palautettavien muuttujien lukumäärä saadaan vastaavasti muuttujasta nargout. Tätä tiedostoon omaf.m sijoitettua funktiota käytettäisiin esimerkiksi seuraavasti: [val,g] = omaf([2 1; -1-2], [2 2]) Jos halutaan ottaa talteen vain funktion omaf palauttama X, olisifunktiokutsu muotoa val = omaf([2 1; -1-2], [2 2]) Esimerkki Matlabin käytöstä ( ) 2 Piirretään Rosenbrockin funktion f(x 1,x 2 ) = 100 x 2 x1 2 + (1 x1 ) 2 kuvaaja Matlabilla. Aluksi lasketaan kuvadata 2-ulotteiseen taulukkoon z: x1 = -1.5:0.1:1.5; x2 = -3:0.1:3; [xx1 xx2] = meshgrid(x1, x2); z = 100*(xx2 - xx1.^2).^2 + (1 - xx1).^2; Seuraavaksi piirretään samaan kuvaan kaksi vierekkäistä kuvaajaa, joissa toisessa on tasa-arvokäyrät ja toisessa pintakaavio (katso kuvaa 3.1):

29 3 Matemaattiset sovellusohjelmistot 29 clf; subplot(1,2,1); axis([ ]); contour(x1,x2,z,(0:1.4:50).^3); hold on; subplot(1,2,2); surf(x1,x2,z); hold off; Lopuksi tulostetaan syntynyt kuva EPS-muodossa (Encapsulated PostScript) tiedostoon rbrock.eps: 3 print -deps rbrock.eps ( 2 Kuva 3.1: Rosenbrockin funktio f(x 1,x 2 ) = 100 x 2 x1) 2 + (1 x1 ) 2 esitettynä tasa-arvokäyrinä ja pintakaaviona Matlabin avulla Kirjallisuutta Statistics Toolbox, Spline Toolbox, Symbolic Math Toolbox, Neural Network Toolbox, Getting Started with Matlab, Mapping Toolbox, Using Matlab, 2000.

30 30 Matemaattiset ohjelmistot Using Matlab Graphics, Image Processing Toolbox, Thomas Coleman, Mary Ann Branch ja Andrew Grace. Optimization Toolbox For Use with MATLAB. The MathWorks, Inc, The MathWorks, Inc. MATLAB External Interface, The MathWorks, Inc. Signal Processing Toolbox User s Guide, IDL IDL (Interactive Data Language) on hiukan vanhahtava, mutta monipuolinen datan analyysi- ja visualisointiohjelmisto. IDL (versio 4.0.1) on käytettävissä CSC:n Cedar-koneella. Lisätietoja saa komennoilla help idl ja man idl. IDL:ään kuuluvia funktioita voi tutkia hakemistosta $DOC/idl/lib. IDL käynnistyy komennolla idl. IDL:stä pääsee ulos komennolla exit. Grafiikkatyypin asetus onnistuu IDL:n sisältä komennolla set_plot.seuraavassa valitaan grafiikkatulostuksen tyypiksi X-grafiikka (isot ja pienet kirjaimet ovat samanarvoisia): IDL> set_plot, x Muita mahdollisuuksia ovat mm. tek (Tektronix) ja ps (PostScript). Ennen IDL:n käynnistämistä voi määritellä ympäristömuuttujan IDL_DEVICE, joka kertoo tulostuslaitteen tyypin. Vaihtoehtoja ovat mm. NULL (ei grafiikkaa), PS (PostScript), TEK (Tektronix) ja X (X-ikkunointi). Esimerkiksi tcshkomentotulkin komento setenv IDL_DEVICE TEK asettaa tulostusmuodoksi Tektronix-grafiikan. IDL:n sisällä saa käyttöapua kysymysmerkillä esimerkiksi seuraavasti: IDL>? IDL>?userlib IDL>?routines set_plot Komennolla help saa tietoja muuttujien määrittelyistä ja muista käynnissä olevaan istuntoon liittyvistä asioista: IDL> help, /memory heap memory in use: 50887,... IDL> help, data DATA FLOAT = Array(3, 1000)

31 3 Matemaattiset sovellusohjelmistot 31 Kuva 3.2: Funktion cos xy, x,y [ 3, 3] kuvaaja esitettynä pintakaaviona IDL:n avulla. Tulostaminen ja lukeminen tiedostosta IDL:llä Tulostuksen saa PostScript-muodossa tiedostoon esimerkiksi seuraavasti: IDL> set_plot, ps IDL> device, filename= kuva.ps IDL> c = 0.1*(indgen(61)-30) IDL> surface, cos(c#c), c, c, title = Esimerkki IDL> device, /close IDL> set_plot, tek Tässä piirrettiin funktion cos xy, x, y [ 3, 3] kuvaaja pintakaaviona tiedostoon kuva.ps (katso kuvaa 3.2), ja asetettiin lopuksi tulostuspäätteelle Tektronix-muodossa. Seuraavassa luetaan tekstitiedostosta input.data muodossa e e e e+00 esitettyä liukulukudataa 100 riviä IDL:n funktiolla readf: IDL> datasize = 100 IDL> data = fltarr(2,datasize) IDL> openr, 1, input.data IDL> readf, 1, data

32 32 Matemaattiset ohjelmistot IDL> close, 1 IDL> print, data Taulukkoon data luetusta tiedosta tehdään xy-kuvaaja seuraavasti: IDL> plot, data(0,*), data(1,*), title= XY kuva IDL:n tukemat käyttöliittymäkomponentit Motif- ja Open Look-ympäristöissä toimivien IDL:n käyttöliittymäkomponenttien (widget) ikkunatyyppien, painonappien, liukusäätimien jne. käyttöä voi kokeilla seuraavaan tapaan: % idl Copyright , Research Systems, Inc.... IDL> demo Kirjallisuutta CSC:stä voi lainata IDL:n käsikirjoja: Research Systems, Inc. IDL Reference Guide. Research Systems, Inc. IDL Remote Procedure Calls. Research Systems, Inc. IDL User s Guide. Research Systems, Inc. IDL User s Guide, Addendum. 3.3 Matemaattiset sovellusohjelmistot Symbolisen laskennan ohjelmistot osaavat käsitellä matemaattisia lausekkeita symbolisessa muodossa. Ohjelmissa esiintyviä operaatioita ovat mm. lausekkeiden algebrallinen manipulointi: yksinkertaistaminen, tekijöihin jako, supistaminen lausekkeiden symbolinen derivointi ja integrointi yhtälöiden ja yhtälöryhmien ratkaiseminen kuvaajien piirtäminen ja grafiikka yleensä numeeriset laskut Fortran-koodin tai T E X-lausekkeiden tuottaminen

33 3 Matemaattiset sovellusohjelmistot 33 ohjelmointi. CSC:ssä on käytössä symbolisen laskennan ohjelmistot Mathematica, Maple ja Reduce. Ohjelmistot ovat käytettävissä taulukon 3.2 mukaisesti. Kysymysmerkki (?) on komento, joka tuottaa avustustekstin. Esimerkkejä komennoista ovat?simplify (Mathematica) tai?simplify (Maple). Taulukko 3.2: CSC:n tarjoamat symbolisen laskennan ohjelmistot. Ohjelmisto Käynnistys Koneet Opastuskomento Lopetus Mathematica math Cedar? Quit mathematica Exit Maple maple Cedar? quit xmaple Reduce reduce Cedar bye; xreduce quit; Ohjelmistojen komennot voivat jatkua usealle riville. Usein komento täytyy lopettaa tiettyyn merkkiin. Lisäksi ohjelmistoissa käytetään erikoismerkkiä, jolla estetään komennon tulostuksen näkyminen. Nämä selviävät taulukosta 3.3. Taulukko 3.3: Komentojen antaminen eri ohjelmistoille. Ohjelmisto Esimerkkikomento Tulostusta ei näytetä Mathematica Factorial[93] a = Factorial[93]; Maple 93!; a := 93!: Reduce factorial(93); a := factorial(93)$ Lisäksi ryhmäteoriasta on olemassa ohjelmistot LiE ja Cayley sekä Cayleystä edelleen kehitetty Magma, joita tosin ei ole CSC:n ohjelmistovalikoimassa. 3.4 Mathematica Mathematica on uusi ohjelmistosuosikki, joka kehittyy kohti ongelmanratkaisuympäristöä. Siinä on erittäin monipuolinen grafiikka ja kehittynyt ohjelmointiympäristö. Mathematica ei kuitenkaan aina pysty käsittelemään yhtä monimutkaisia symbolisia lausekkeita kuin Maple. Mathematica on saatavissa laajalle laitteistovalikoimalle mikroista supertietokoneisiin. CSC:ssä Mathematica on Silicon Graphics -työasemassa Cedar. Mathematica käynnistyy komennolla math tai X-ikkunointia käytettäessä komennolla mathematica. Mathematican X-käyttöliittymän mahdollisuuksista löytyy esimerkki kuvasta 3.3.

34 34 Matemaattiset ohjelmistot Sivulla 40 on verrattu symbolisen laskennan ohjelmistoja keskenään. Seuraavassa on lyhyt esimerkki Mathematica-istunnosta Cedarissa : % math Mathematica 3.0 for Silicon Graphics Copyright Wolfram Research, Inc. -- Motif graphics initialized -- In[1]:= pict = Plot3D[x*Exp[Sin[x+y]], {x, -Pi, Pi}, {y, -Pi, Pi}, PlotPoints -> 40, PlotLabel -> "x*exp[sin[x+y]]", BoxRatios -> {1, 1, 0.8}, Shading -> False] Out[1]= -SurfaceGraphics- Tässä siis käytettiin Mathematican tekstipohjaista käyttöliittymää. Lausekkeiden syöttö tapahtuu kehotteen In jälkeen, jolloin tulostus on nähtävissä kehoitteen Out jälkeen. X-ikkunointijärjestelmää käyttävässä Mathematican versiossa syötteet kirjoitetaan tyhjälle laskenta-arkille. Ne lähetetään suoritukseen painamalla yhtä aikaa Shift -ja Return -näppäimiä. x*exp[sin[x+y]] Kuva 3.3: Esimerkki Mathematicalla tuotetusta grafiikasta. Kuvassa on esitetty pintakaaviona funktio xe sin x+y, x,y [ π,π].

35 3 Matemaattiset sovellusohjelmistot 35 Kuva 3.4: Mathematican X-käyttöliittymän käyttöesimerkki.

36 36 Matemaattiset ohjelmistot Kirjallisuutta Seuraavassa on lueteltu muutamia monista Mathematica-ohjelmistoa kuvaavista teoksista: Roman Maeder. Programming in Mathematica. Addison-Wesley, Stephen Wolfram. The Mathematica Book. Wolfram Media, Cambridge University Press, Mathematican käyttäjän oppaat (The Mathematica Book ja Standard Add-on Packages) tulevatmyösmathematican mikroversioiden mukana. Ohjelmistoon liittyviä uutisia ja käyttövinkkejä esitellään lehdessä The Mathematica Journal. 3.5 Maple Maple on Mathematican kilpailija, mutta sillä on hieman vaatimattomammat tavoitteet. Maple on vahva monimutkaisissa symbolinkäsittelytehtävissä. Se sisältää monipuoliset grafiikkaominaisuudet ja on saatavissa usealle eri tietokonetyypille mikrosta supertietokoneisiin. Maple käynnistyy Cedarilla komennoilla maple ja xmaple (X-ikkunointia käyttävä versio). Kuvan 3.5 esimerkki-istunnossa näkyy komennolla xmaple käynnistyvä X- pohjainen käyttöliittymä avustusikkunoineen. Vanhoja lausekkeita voi editoida ja kopioida paikasta toiseen. Painamalla Return -näppäintä suoritetaan kyseisen rivin komennot. Kysymysmerkillä pyydetyt avustustekstit tulevat omiin ikkunoihinsa. Kirjallisuutta Maplen dokumentaatio koostuu teoksista: Walter Gander ja Jiri Hrebicek. Solving Problems in Scientific Computing Using Maple and Matlab. Springer Verlag, Andre Heck. Introduction to Maple. Springer, Third edition. M. B. Monagan, K. O. Geddes, K. M. Heal, G. Labahn, S. M. Vorkoetter, J. McCarron ja P. DeMarco. Maple 8 Advanced Programming Guide. Waterloo Maple Inc., M. B. Monagan, K. O. Geddes, K. M. Heal, G. Labahn, S. M. Vorkoetter, J. McCarron ja P. DeMarco. Maple 8 Introductory Programming Guide. Waterloo Maple Inc., Darren Redfern. TheMaple Handbook. Hamilton Printing Company, 1996.

37 3 Matemaattiset sovellusohjelmistot 37 Kuva 3.5: Maplen X-ikkunointiin pohjautuva käyttöliittymä. Tekstiä voi kopioida ikkunasta toiseen käyttämällä hiirtä. Vanhoja lausekkeita voi editoida ja muuttaa sekä syöttää uudelleen laskettaviksi painamalla Return -näppäintä. 3.6 Reduce Reduce on vanha ohjelmisto, jonka perusominaisuudet eivät ole kovin laajat, mutta jolle on kirjoitettu paljon lisäpaketteja. Reduce on käytettävissä Cedarilla Reducesta on olemassa L A T E X-muotoinen käyttöopas, joka on Cedarilla hakemistossa $DOC/reducedoc. Kirjallisuutta Anthony C. Hearn. REDUCE User s and Contributed Packages Manual 3.7. Konrad-Zuse-Zentrum, Berlin, Winfried Neun. REDUCE User s Guide for the Unix Systems, Version 3.7. Konrad-Zuse-Zentrum, Berlin, 1999.

38 38 Matemaattiset ohjelmistot Graafisten kuvaajien tuottaminen symbolisen laskennan ohjelmis- Taulukko 3.4: toilla. Ohjelmisto Komento Pistejoukon kuvaaja: Mathematica ListPlot[{0,2,4,3,5,1}, PlotJoined->True] Maple plot([[1,0],[2,2],[3,4],[4,3],[5,5],[6,1]]); Funktion kuvaaja: Mathematica Plot[Sin[x],{x,0,2Pi}] Maple plot(sin(x)), x=0..2*pi); Kahden muuttujan funktion kuvaaja: Mathematica Plot3D[Sin[x]*Cos[y], {x,0,8},{y,0,8}] Maple plot3d(sin(x)*cos(y), x=0..8, y=0..8); Parametrinen tasokäyrä: Mathematica ParametricPlot[{t*Sin[t],t*Cos[t]},{t,0,8Pi}] Maple plot([t*sin(t),t*cos(t),t=0..8*pi]); Parametrinen pinta tai avaruuskäyrä: Mathematica ParametricPlot3D[{Exp[-2*u]*Sin[t], Exp[-u]*Cos[t],u},{t,0,2Pi},{u,0,1}] Maple plot3d([exp(-2*u)*sin(t),exp(-u)*cos(t),u], t=0..2*pi, u=0..1); Tasa-arvokäyrä: Mathematica ContourPlot[Sin[x] Cos[y], {x,0,8}, {y,0,8}] Maple with(plots): contourplot(son(x=*cos(y),x=0..8,y=0..8); 3.7 Graafiset kuvaajat Symbolisen laskennan ohjelmistoista Mathematicalla ja Maplella on laajat grafiikkaominaisuudet. Grafiikan syvällisempi käsittely vaatisi oman oppaansa, joten seuraavassa on esitetty vain esimerkkejä tärkeimmistä piirtokomennoista eri ohjelmistoissa. Graafisten kuvaajien ulkonäköä voi usein muuttaa mieleisekseen antamalla komennon yhteydessä lisäparametreja, joista tarkemmin kunkin ohjemiston käsikirjassa. Kuvan 3.6 esimerkkikuvaajat on tehty Mathematicalla. Komennot löytyvät taulukosta 3.4. Mathematicassa viimeisimmällä komennolla tehdyn kuvan voi tallentaa Encapsulated PostScript -muodossa komennolla Display["kuva.eps",%,"EPS"] Muita mahdollisia tiedostoformaatteja ovat mm. TIFF, GIF ja PDF. Maplea käytettäessä pitää valita tulostuskanava ennen piirtokomennon antamista. Komento

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

Matlabin perusteita Grafiikka

Matlabin perusteita Grafiikka BL40A0000 SSKMO KH 1 Seuraavassa esityksessä oletuksena on, että Matlabia käytetään jossakin ikkunoivassa käyttöjärjestelmässä (PC/Win, Mac, X-Window System). Käytettäessä Matlabia verkon yli joko tekstipäätteeltä,

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

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

Matlab-perusteet. Jukka Jauhiainen. OAMK / Tekniikan yksikkö. Hyvinvointiteknologian koulutusohjelma

Matlab-perusteet. Jukka Jauhiainen. OAMK / Tekniikan yksikkö. Hyvinvointiteknologian koulutusohjelma Matlab-perusteet Jukka Jauhiainen OAMK / Tekniikan yksikkö Hyvinvointiteknologian koulutusohjelma Tämän materiaalin tarkoitus on antaa opiskelijalle lyhyehkö johdanto Matlabohjelmiston perusteisiin. Matlabin

Lisätiedot

BL40A0000 Säätötekniikan ja signaalinkäsittelyn

BL40A0000 Säätötekniikan ja signaalinkäsittelyn 1 BL40A0000 Säätötekniikan ja signaalinkäsittelyn matemaattiset ohjelmistot Luennot ja harjoitukset Katja Hynynen, h. 6431, p. 040-548 8954 Katja.Hynynen@lut.fi Opetus ja suoritusvaatimukset OPETUS: Luentoja

Lisätiedot

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

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne. Proseduurit Proseduuri voi olla 1) Funktio, joka palauttaa jonkin arvon: real function sinc(x) real x sinc = sin(x)/x... y = sinc(1.5) 2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma

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

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

ATK tähtitieteessä. Osa 2 - IDL perusominaisuudet. 12. syyskuuta 2014

ATK tähtitieteessä. Osa 2 - IDL perusominaisuudet. 12. syyskuuta 2014 12. syyskuuta 2014 IDL - Interactive Data Language IDL on tulkattava ohjelmointikieli, jonka vahvuuksia ovat: Yksinkertainen, johdonmukainen komentosyntaksi. Voidaan käyttää interaktiivisesti, tai rakentamalla

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

Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa.

Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa. Laskuharjoitus 1A Mallit Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa. 1. tehtävä %% 1. % (i) % Vektorit luodaan

Lisätiedot

Luento 4. Timo Savola. 21. huhtikuuta 2006

Luento 4. Timo Savola. 21. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 4 Timo Savola 21. huhtikuuta 2006 Osa I Shell Lausekkeet Komentoriville kirjotettu komento on lauseke echo "foo" echo $USER MUUTTUJA=1 ls -l Rivinvaihto

Lisätiedot

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

Johdatus f90/95 ohjelmointiin. H, R & R luvut 1-3 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)

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset

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

Lisätiedot

Symbolinen laskenta (MAT180,1ov)

Symbolinen laskenta (MAT180,1ov) Symbolinen laskenta (MAT180,1ov) Kurssin tavoite ja sisältö Symbolisen laskennan kurssilla opitaan tietokoneen käyttämistä apuvälineenä matemaattisessa ongelmanratkaisussa. Kurssin tavoitteena on antaa

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

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

BJ30A1000 Kemiantekniikan tietotekniikka Fortran

BJ30A1000 Kemiantekniikan tietotekniikka Fortran BJ30A1000 Kemiantekniikan tietotekniikka Fortran Kimmo Klemola 21.04.2008 April 18, 2008 Kimmo Klemola 1 Fortran johdatusta Fortran-ohjelmointiin Materiaalina käytetty mm. CSC:n Fortran 90/95 opasta (Haataja,

Lisätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja. IsoInt Tietokoneiden muisti koostuu yksittäisistä muistisanoista, jotka nykyaikaisissa koneissa ovat 64 bitin pituisia. Muistisanan koko asettaa teknisen rajoituksen sille, kuinka suuria lukuja tietokone

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

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

Tieteellinen laskenta 2 Törmäykset

Tieteellinen laskenta 2 Törmäykset Tieteellinen laskenta 2 Törmäykset Aki Kutvonen Op.nmr 013185860 Sisällysluettelo Ohjelman tekninen dokumentti...3 Yleiskuvaus...3 Kääntöohje...3 Ohjelman yleinen rakenne...4 Esimerkkiajo ja käyttöohje...5

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

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

MICROSOFT EXCEL 2010

MICROSOFT EXCEL 2010 1 MICROSOFT EXCEL 2010 Taulukkolaskentaohjelman jatkokurssin tärkeitä asioita 2 Taulukkolaskentaohjelmalla voit Käyttää tietokonetta ruutupaperin ja taskulaskimen korvaajana Laatia helposti ylläpidettäviä

Lisätiedot

Laskuharjoitus 9, tehtävä 6

Laskuharjoitus 9, tehtävä 6 Aalto-yliopiston perustieteiden korkeakoulu Jouni Pousi Systeemianalyysin laboratorio Mat-2.4129 Systeemien identifiointi Laskuharjoitus 9, tehtävä 6 Tämä ohje sisältää vaihtoehtoisen tavan laskuharjoituksen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

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 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

Hieman linkkejä: http://cs.stadia.fi/~kuivanen/linux/kom.php, lyhyt ohje komentoriviohjelmointiin.

Hieman linkkejä: http://cs.stadia.fi/~kuivanen/linux/kom.php, lyhyt ohje komentoriviohjelmointiin. Linux-harjoitus 9 Linuxin mukana tulevat komentotulkit (mm. bash, tcsh, ksh, jne ) sisältävät ohjelmointikielen, joka on varsin tehokas ja ilmaisuvoimainen. Tähän yhdistettynä unix-maailmasta tutut tehokkaat

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

Octave-opas. Mikä on Octave ja miksi? Asennus

Octave-opas. Mikä on Octave ja miksi? Asennus Octave-opas Mikä on Octave ja miksi? Asennus Käynnistys ja käyttöliittymä Komennot tiedostojen hallintaan SciTE-editor.m-tiedostot Ohjeita muualla Mikä on Octave ja miksi? Octave on numeeriseen laskentaan

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Fortran 90/95. + sopii erityisesti numeriikkaan:

Fortran 90/95. + sopii erityisesti numeriikkaan: Fortran 90/95 + sopii erityisesti numeriikkaan: + optimoivat kääntäjät tehokas koodi + mukana valmiiksi paljon varusfunktioita + kompleksiluvut + taulukko-operaatiot + operaattorit laajennettavissa myös

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

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

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

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

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

http://info.edu.turku.fi/mato/

http://info.edu.turku.fi/mato/ Matemaattisia VALOja Vapaita avoimen lähdekoodin ohjelmia matematiikan opettamiseen ja muuhun matemaattiseen käyttöön. http://info.edu.turku.fi/mato/ LaTeX ja Texmaker LaTeX on ladontaohjelmisto, joka

Lisätiedot

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla ohjelmoida useita komponenteiltaan ja rakenteeltaan

Lisätiedot

Tilastotoiminnot. Seuraavien kahden esimerkin näppäinohjeet on annettu kunkin laskinmallin kohdalla:

Tilastotoiminnot. Seuraavien kahden esimerkin näppäinohjeet on annettu kunkin laskinmallin kohdalla: Tilastotoiminnot Seuraavien kahden esimerkin näppäinohjeet on annettu kunkin laskinmallin kohdalla: Muuttuja Frekvenssi 7 12 8 16 9 11 10 8 Tilastomoodin valinta. Tilastomuistin tyhjennys. Keskiarvon ja

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

T211003 Sovellusohjelmat Matlab osa 4: Skriptit, funktiot ja kontrollirakenteet

T211003 Sovellusohjelmat Matlab osa 4: Skriptit, funktiot ja kontrollirakenteet Ohjelmointi Matlab-komentoja voidaan koota ns. M-tiedostoon. Nimi tulee tiedoston tarkentimesta.m. Matlabilla voidaan ohjelmoida kahdella eri tavalla: Skriptit eli komentojonot eli makrot Funktiot eli

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. TIETOKONEOHJELMIEN RAKENNE Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. Teollisuusautomaation ohjelmiin on lainattu runsaasti perinteisen

Lisätiedot

Oppilaan opas. Visuaaliviestinnän Instituutti VVI Oy. Versio 0.2 (2008-01-21)

Oppilaan opas. Visuaaliviestinnän Instituutti VVI Oy. Versio 0.2 (2008-01-21) Oppilaan opas Visuaaliviestinnän Instituutti VVI Oy Versio 0.2 (2008-01-21) Versio Päivämäärä Kuvaus 0.1 2005-01-16 Ensimmäinen versio. 0.2 2008-01-21 Korjattu kuvatiedostojen maksimiresoluutio ja muutamia

Lisätiedot

Aloitusohje versiolle 4.0

Aloitusohje versiolle 4.0 Mikä on Geogebra? Aloitusohje versiolle 4.0 dynaamisen matematiiikan työvälineohjelma helppokäyttöisessä paketissa oppimisen ja opetuksen avuksi kaikille koulutustasoille vuorovaikutteiset geometria, algebra,

Lisätiedot

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Sisällys 3. Pseudokoodi Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if--rakenteilla. oisto while-, do-while- ja for-rakenteilla. 3.1 3.2 Johdanto

Lisätiedot

2 Konekieli, aliohjelmat, keskeytykset

2 Konekieli, aliohjelmat, keskeytykset ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä

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

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

4 / 2013 TI-NSPIRE CAS TEKNOLOGIA LUKIOSSA. T3-kouluttajat: Olli Karkkulainen ja Markku Parkkonen

4 / 2013 TI-NSPIRE CAS TEKNOLOGIA LUKIOSSA. T3-kouluttajat: Olli Karkkulainen ja Markku Parkkonen 4 / 2013 TI-NSPIRE CAS TEKNOLOGIA LUKIOSSA T3-kouluttajat: Olli Karkkulainen ja Markku Parkkonen 1 2 TI-Nspire CX CAS kämmenlaite kevään 2013 pitkän matematiikan kokeessa Tehtävä 1. Käytetään komentoa

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

Kokeellista matematiikkaa SAGE:lla

Kokeellista matematiikkaa SAGE:lla Kokeellista matematiikkaa SAGE:lla Tutkin GeoGebralla 1 luonnollisen luvun jakamista tekijöihin 2. GeoGebran funktio Alkutekijät jakaa luvun tekijöihin ja tuottaa alkutekijät listana. GeoGebrassa lista

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

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

Lisätiedot

Harjoitus 4: Matlab - Optimization Toolbox

Harjoitus 4: Matlab - Optimization Toolbox Harjoitus 4: Matlab - Optimization Toolbox Mat-2.2107 Sovelletun matematiikan tietokonetyöt Syksy 2006 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoituksen aiheita Optimointimallin muodostaminen

Lisätiedot

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma 5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma Every cloud has a silver line. - englantilainen sananlasku Tässä osiossa tärkeää: yksi- ja moniulotteinen taulukko Sisältö Yleistä Yksiulotteinen

Lisätiedot

SIMULINK S-funktiot. SIMULINK S-funktiot

SIMULINK S-funktiot. SIMULINK S-funktiot S-funktio on ohjelmointikielellä (Matlab, C, Fortran) laadittu oma algoritmi tai dynaamisen järjestelmän kuvaus, jota voidaan käyttää Simulink-malleissa kuin mitä tahansa valmista lohkoa. S-funktion rakenne

Lisätiedot

Algoritmit C++ Kauko Kolehmainen

Algoritmit C++ Kauko Kolehmainen Algoritmit C++ Kauko Kolehmainen Algoritmit - C++ Kirjoittanut Taitto Kansi Kustantaja Kauko Kolehmainen Kauko Kolehmainen Frank Chaumont Oy Edita Ab IT Press PL 760 00043 EDITA Sähköpostiosoite Internet

Lisätiedot

Numeriikan kirjastoja

Numeriikan kirjastoja Numeriikan kirjastoja + Säästää aikaa, hikeä ja kyyneleitä + Aliohjelmat testattuja ja luotettavia + Tehokkuus optimoitu - Ei aina sovellu kovin hyvin omaan tehtävään - Kaupallisista kirjastoista ei saa

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

110. 111. 112. 113. 114. 4. Matriisit ja vektorit. 4.1. Matriisin käsite. 4.2. Matriisialgebra. Olkoon A = , B = Laske A + B, 5 14 9, 1 3 3

110. 111. 112. 113. 114. 4. Matriisit ja vektorit. 4.1. Matriisin käsite. 4.2. Matriisialgebra. Olkoon A = , B = Laske A + B, 5 14 9, 1 3 3 4 Matriisit ja vektorit 4 Matriisin käsite 42 Matriisialgebra 0 2 2 0, B = 2 2 4 6 2 Laske A + B, 2 A + B, AB ja BA A + B = 2 4 6 5, 2 A + B = 5 9 6 5 4 9, 4 7 6 AB = 0 0 0 6 0 0 0, B 22 2 2 0 0 0 6 5

Lisätiedot

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,

Lisätiedot

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä 3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä Lineaarinen m:n yhtälön yhtälöryhmä, jossa on n tuntematonta x 1,, x n on joukko yhtälöitä, jotka ovat muotoa a 11 x 1 + + a 1n x n = b 1 a 21

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] == T [i + 1] 4 return True 5 return

Lisätiedot

Strukturoitu ohjelmointi

Strukturoitu ohjelmointi Strukturoitu ohjelmointi - top-down -ohjelmointi - asteittainen tarkentaminen (stepwise refinement) - rajoitetut kontrollirakenteet - bottom up -ohjelmointi (Naur: action clusters), virtuaalikoneen idea:

Lisätiedot

Matematiikka B2 - Avoin yliopisto

Matematiikka B2 - Avoin yliopisto 6. elokuuta 2012 Opetusjärjestelyt Luennot 9:15-11:30 Harjoitukset 12:30-15:00 Tentti Kurssin sisältö (1/2) Matriisit Laskutoimitukset Lineaariset yhtälöryhmät Gaussin eliminointi Lineaarinen riippumattomuus

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

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat Linux rakenne Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat Linux ydin Ytimen (kernel) päätehtävä on tarjota rajapinta

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

Sähköposti ja uutisryhmät 4.5.2005

Sähköposti ja uutisryhmät 4.5.2005 Outlook Express Käyttöliittymä Outlook Express on windows käyttöön tarkoitettu sähköpostin ja uutisryhmien luku- ja kirjoitussovellus. Se käynnistyy joko omasta kuvakkeestaan työpöydältä tai Internet Explorer

Lisätiedot

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu 832A Tietorakenteet ja algoritmit, 204-205, Harjoitus 7, ratkaisu Hajota ja hallitse-menetelmä: Tehtävä 7.. Muodosta hajota ja hallitse-menetelmää käyttäen algoritmi TULOSTA_PUU_LASKEVA, joka tulostaa

Lisätiedot

Seuraavassa on esitetty seuraavien laskutoimitusten suoritukset eri laskinmalleilla

Seuraavassa on esitetty seuraavien laskutoimitusten suoritukset eri laskinmalleilla Seuraavassa on esitetty seuraavien laskutoimitusten suoritukset eri laskinmalleilla Muuttuja Frekvenssi 7 12 8 16 9 11 10 8 Tilastomoodin valinta. Tilastomuistin tyhjennys. Keskiarvon ja keskihajonnan

Lisätiedot

Simulaattorin asennus- ja käyttöohje

Simulaattorin asennus- ja käyttöohje Linux ja Windows XP Versio Päiväys Muokkaaja Kuvaus 0.2 16.2.2006 Mikko Halttunen Katselmoinin jälkeen 0.1 13.2.2006 Mikko Halttunen Alustava versio Sisällysluettelo 1 Johdanto... 3 2 Simulaattorin asennus...

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa ssa ohjelman käytössä suoritusaikana oleva muisti jakautuu neljään osaan: koodisegmentti datasegmentti pinosegmentti (stack) kasa (heap) ssa ohjelman koodisegmentti sisältää käännetyn ohjelmakoodin sisältö

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

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

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

Vektorit. Vektorin luominen... 192 Vektorin tuominen näyttöön... 195 Vektorin koon ja alkioiden muokkaaminen... 195 Vektorin poistaminen...

Vektorit. Vektorin luominen... 192 Vektorin tuominen näyttöön... 195 Vektorin koon ja alkioiden muokkaaminen... 195 Vektorin poistaminen... 12 Vektorit Vektorin luominen... 192 Vektorin tuominen näyttöön... 195 Vektorin koon ja alkioiden muokkaaminen... 195 Vektorin poistaminen... 196 TI -86 M1 M2 M3 M4 M5 F1 F2 F3 F4 F5 192 Luku 12: Vektorit

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

ALCOVISOR. Käyttöohjeet FIN

ALCOVISOR. Käyttöohjeet FIN ALCOVISOR Alkometri Käyttöohjeet FIN BAC 200 Alcovisor BAC 200 on luotettava ja huipputarkka todistuskelpoisen mittaustuloksen antava alkometri ammatti ja viranomaiskäyttöön. BAC 200 on täysin automaattinen.

Lisätiedot

LINUX-HARJOITUS, MYSQL

LINUX-HARJOITUS, MYSQL LINUX-HARJOITUS, MYSQL Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Hyvä ohjelmointitapa. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

Enigmail-opas. Asennus. Avainten hallinta. Avainparin luominen

Enigmail-opas. Asennus. Avainten hallinta. Avainparin luominen Enigmail-opas Enigmail on Mozilla Thunderbird ja Mozilla Seamonkey -ohjelmille tehty liitännäinen GPG-salausohjelmiston käyttöä varten. Sitä käytetään etenkin Thunderbirdin kanssa sähköpostin salaamiseen

Lisätiedot

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Frégier n lause Simo K. Kivelä Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Suorakulmaisen kolmion kaikki kärjet sijaitsevat paraabelilla y = x 2 ; suoran kulman

Lisätiedot