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

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

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

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

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

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

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

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

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

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

Matlab- ja Maple- ohjelmointi

Matlab- ja Maple- ohjelmointi Perusasioita 2. helmikuuta 2005 Matlab- ja Maple- ohjelmointi Yleistä losoaa ja erityisesti Numsym05-kurssin tarpeita palvellee parhaiten, jos esitän asian rinnakkain Maple:n ja Matlab:n kannalta. Ohjelmien

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

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

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

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

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

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

wxmaxima-pikaopas Ari Lehtonen

wxmaxima-pikaopas Ari Lehtonen wxmaxima-pikaopas Ari Lehtonen. Yleistä Maxima on laaja symboliseen laskentaan suunniteltu ohjelma. Maximalla voidaan sieventää lausekkeita, jakaa polynomeja tekijöihin, ratkaista yhtälöitä, derivoida,

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

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

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

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

Kon Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö

Kon Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö Kon-15.4199 Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö 22.1.2016 Harjoituksessa 1. Varmistetaan että kaikilla on pari! Ilmoittautukaa oodissa etukäteen! 2. Tutustutaan ensimmäiseen tehtävään

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

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

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

ABTEKNILLINEN KORKEAKOULU

ABTEKNILLINEN KORKEAKOULU ABTEKNILLINEN KORKEAKOULU Mat-1.411 Matematiikan peruskurssi C1 MAPLE Lempeä johdatus Harri Hakula 24. syyskuuta, 2004 1 Sisällys 1 Matemaattisista ohjelmistoista 2 1.1 Symboliset ohjelmistot 2 1.2 Numeeriset

Lisätiedot

Juha Merikoski. Jyväskylän yliopiston Fysiikan laitos Kevät 2009

Juha Merikoski. Jyväskylän yliopiston Fysiikan laitos Kevät 2009 FYSP120 FYSIIKAN NUMEERISET MENETELMÄT Juha Merikoski Jyväskylän yliopiston Fysiikan laitos Kevät 2009 1 Kurssin sisältö JOHDANTOA, KÄSITTEITÄ, VÄLINEITÄ [1A] Laskennallista fysiikkaa [1B] Matlabin alkeita

Lisätiedot

BM20A0700, Matematiikka KoTiB2

BM20A0700, Matematiikka KoTiB2 BM20A0700, Matematiikka KoTiB2 Luennot: Matti Alatalo, Harjoitukset: Oppikirja: Kreyszig, E.: Advanced Engineering Mathematics, 8th Edition, John Wiley & Sons, 1999, luku 7. 1 Kurssin sisältö Matriiseihin

Lisätiedot

mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä

mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä Aalto-yliopisto, Matematiikan ja Systeemianalyysin laitos mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä osittaisderivaatoista: y 1... J F =.

Lisätiedot

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla 2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella

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

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

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

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. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 06.09.2005 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

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

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44 MS-A0003/A0005 Matriisilaskenta Laskuharjoitus / vko Tehtävä (L): Käynnistä Matlab-ohjelma ja kokeile laskea sillä muutama peruslaskutoimitus: laske jokin yhteen-, vähennys-, kerto- ja jakolasku. Laske

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

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

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

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

ATK tähtitieteessä. Osa 5 - IDL datan sovitusta ja muita ominaisuuksia. 25. syyskuuta 2014

ATK tähtitieteessä. Osa 5 - IDL datan sovitusta ja muita ominaisuuksia. 25. syyskuuta 2014 25. syyskuuta 2014 IDL - datan sovitus IDL sisältää monia yleisimpiä funktioita, joita voi helposti sovittaa datapisteisiin. Jos valmiista funktioista ei löydy mieleistä, voi oman mielivaltaisen sovitusfunktion

Lisätiedot

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

Lisätiedot

ATK tähtitieteessä. Osa 5 - IDL datan sovitusta ja muita ominaisuuksia. 25. syyskuuta 2014

ATK tähtitieteessä. Osa 5 - IDL datan sovitusta ja muita ominaisuuksia. 25. syyskuuta 2014 25. syyskuuta 2014 IDL - datan sovitus IDL sisältää monia yleisimpiä funktioita, joita voi helposti sovittaa datapisteisiin. Jos valmiista funktioista ei löydy mieleistä, voi oman mielivaltaisen sovitusfunktion

Lisätiedot

Harjoitus 4 -- Ratkaisut

Harjoitus 4 -- Ratkaisut Harjoitus -- Ratkaisut 1 Ei kommenttia. Tutkittava funktio: In[15]:= f x : x 1 x Sin x ; Plot f x, x, 0, 3 Π, PlotRange All Out[159]= Luodaan tasavälinen pisteistö välille 0 x 3 Π. Tehdään se ensin kiinnitetyllä

Lisätiedot

Tieto- ja tallennusrakenteet

Tieto- ja tallennusrakenteet Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 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

Komentotulkki. Kysymyksiä

Komentotulkki. Kysymyksiä Komentotulkki Komentotulkki ja avustustoiminnot Tux-pingviinin kuva: Larry Ewing, Simon Budig ja Anja Gerwinski Kysymyksiä 1. Miten työskentelen komentotulkilla? 2. Miten komennot annetaan ja käsitellään?

Lisätiedot

IDL - datan sovitus. ATK tähtitieteessä. IDL - esimerkiksi linfit. IDL - esimerkiksi linfit

IDL - datan sovitus. ATK tähtitieteessä. IDL - esimerkiksi linfit. IDL - esimerkiksi linfit IDL - datan sovitus 3. toukokuuta 2017 IDL sisältää monia yleisimpiä funktioita, joita voi helposti sovittaa datapisteisiin. Jos valmiista funktioista ei löydy mieleistä, voi oman mielivaltaisen sovitusfunktion

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

Heikki Apiola, Juha Kuortti, Miika Oksman. 5. lokakuuta Matlabperusteita, osa 1

Heikki Apiola, Juha Kuortti, Miika Oksman. 5. lokakuuta Matlabperusteita, osa 1 Matlab-perusteita, 5. lokakuuta 2015 Matlab-perusteita, Mikä on Matlab Matriisilaboratorio [Cleve Moler, Mathworks inc.] Numeerisen laskennan työskentely-ympäristö Suuri joukko matemaattisia ja muita funktioita,

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

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

Ohjeita LINDOn ja LINGOn käyttöön

Ohjeita LINDOn ja LINGOn käyttöön Ohjeita LINDOn ja LINGOn käyttöön LINDOn tärkeimmät komennot ovat com (command), joka tuloaa käytettävissä olevat komennot ruudulle, ja help, jonka avulla saa tietoa eri komennoia. Vaaukset kursiivilla

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

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

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

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

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

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 2: SICP kohdat 22.2.3 Riku Saikkonen 2. 11. 2010 Sisältö 1 Linkitetyt listat 2 Listaoperaatioita 3 Listarakenteet 4 Gambit-C:n Scheme-debuggeri Linkitetyt

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

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

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

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

Oppimistavoitematriisi

Oppimistavoitematriisi Oppimistavoitematriisi Lineaarialgebra ja matriisilaskenta I Esitiedot Arvosanaan 1 2 riittävät Arvosanaan 3 4 riittävät Arvosanaan 5 riittävät Yhtälöryhmät (YR) Osaan ratkaista ensimmäisen asteen yhtälöitä

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

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

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 4. Joukot, relaatiot ja funktiot Osa 3: Funktiot 4.3 Funktiot Olkoot A ja B joukkoja. Funktio joukosta A joukkoon B on sääntö, joka liittää yksikäsitteisesti määrätyn

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

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

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

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

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

9 Matriisit. 9.1 Matriisien laskutoimituksia

9 Matriisit. 9.1 Matriisien laskutoimituksia 9 Matriisit Aiemmissa luvuissa matriiseja on käsitelty siinä määrin kuin on ollut tarpeellista yhtälönratkaisun kannalta. Matriiseja käytetään kuitenkin myös muihin tarkoituksiin, ja siksi on hyödyllistä

Lisätiedot

DIFFERENTIAALI- JA INTEGRAALILASKENTA

DIFFERENTIAALI- JA INTEGRAALILASKENTA DIFFERENTIAALI- JA INTEGRAALILASKENTA Timo Mäkelä Tässä tekstissä esitellään yhden muuttujan reaaliarvoisten funktioiden differentiaalilaskentaa sekä sarjoja. Raja-arvot Raja-arvoja voidaan laskea käyttämällä

Lisätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2 TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa

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

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

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

Lineaarialgebra ja matriisilaskenta I

Lineaarialgebra ja matriisilaskenta I Lineaarialgebra ja matriisilaskenta I 30.5.2013 HY / Avoin yliopisto Jokke Häsä, 1/19 Käytännön asioita Kurssi on suunnilleen puolessa välissä. Kannattaa tarkistaa tavoitetaulukosta, mitä on oppinut ja

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

mlnonlinequ, Epälineaariset yhtälöt

mlnonlinequ, Epälineaariset yhtälöt Aalto-yliopisto, Matematiikan ja Systeemianalyysin laitos -e mlnonlinequ, Epälineaariset yhtälöt 1. Historiallisesti mielenkiintoinen yhtälö on x 3 2x 5 = 0, jota Wallis-niminen matemaatikko käsitteli,

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

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

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

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmointi 1 Taulukot ja merkkijonot Ohjelmointi 1 Taulukot ja merkkijonot Jussi Pohjolainen TAMK Tieto- ja viestintäteknologia Johdanto taulukkoon Jos ohjelmassa käytössä ainoastaan perinteisiä (yksinkertaisia) muuttujia, ohjelmien teko

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

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

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