MATA123 Laskennallinen lineaarinen algebra ja geometria

Samankaltaiset tiedostot
Laskennallinen lineaarinen algebra ja geometria

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

Matemaattiset ohjelmistot A. Osa 2: MATLAB

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

Matriiseista. Emmi Koljonen

Inversio-ongelmien laskennallinen peruskurssi Luento 3

Matlabperusteita, osa 1. Heikki Apiola Matlab-perusteita, osa 1. Heikki Apiola. 12. maaliskuuta 2012

Paikannuksen matematiikka MAT

Inversio-ongelmien laskennallinen peruskurssi Luento 4

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

Ratkaisuehdotukset LH 7 / vko 47

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

MS-C1340 Lineaarialgebra ja

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44

Ratkaisuehdotukset LH 8 / vko 47

Inversio-ongelmien laskennallinen peruskurssi Luento 2

BM20A0700, Matematiikka KoTiB2

Kohdeyleisö: toisen vuoden teekkari

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

Matematiikka B2 - Avoin yliopisto

Ominaisarvoon 4 liittyvät ominaisvektorit ovat yhtälön Ax = 4x eli yhtälöryhmän x 1 + 2x 2 + x 3 = 4x 1 3x 2 + x 3 = 4x 2 5x 2 x 3 = 4x 3.

Numeeriset menetelmät

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

MS-A0003/A Matriisilaskenta Laskuharjoitus 6

Lineaarialgebra II, MATH.1240 Matti laaksonen, Lassi Lilleberg

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

Matematiikka B2 - TUDI

MS-A0004/MS-A0006 Matriisilaskenta Laskuharjoitus 6 / vko 42

Harjoitus 10: Mathematica

Matriisihajotelmat. MS-A0007 Matriisilaskenta. 5.1 Diagonalisointi. 5.1 Diagonalisointi

Esimerkki 19. Esimerkissä 16 miniminormiratkaisu on (ˆx 1, ˆx 2 ) = (1, 0).

Lineaarialgebra, kertausta aiheita

Harjoitus 1 -- Ratkaisut

Valitse ruudun yläosassa oleva painike Download Scilab.

Numeeriset menetelmät

Lineaarialgebra ja matriisilaskenta I

(0 desimaalia, 2 merkitsevää numeroa).

Matlab- ja Maple- ohjelmointi

Ohjelman käynnistäminen

5 Ominaisarvot ja ominaisvektorit

Insinöörimatematiikka D

Johdatus tekoälyn taustalla olevaan matematiikkaan

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

Numeeriset menetelmät TIEA381. Luento 4. Kirsi Valjus. Jyväskylän yliopisto. Luento 4 () Numeeriset menetelmät / 44

1 Matriisit ja lineaariset yhtälöryhmät

1 Ominaisarvot ja ominaisvektorit

Osittaistuenta Gaussin algoritmissa: Etsitään 1. sarakkeen itseisarvoltaan suurin alkio ja vaihdetaan tämä tukialkioiksi (eli ko. rivi 1. riviksi).

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

Harjoitus 1 -- Ratkaisut

Matemaattiset ohjelmistot 1-2 ov, 2-3 op

Insinöörimatematiikka D

Neliömatriisi A on ortogonaalinen (eli ortogonaalimatriisi), jos sen alkiot ovat reaalisia ja

Numeeriset menetelmät

6 MATRIISIN DIAGONALISOINTI

Kanta ja Kannan-vaihto

Ratkaisuehdotukset LH 3 / alkuvko 45

Numeeriset menetelmät

Matriisiteoria Harjoitus 1, kevät Olkoon. cos α sin α A(α) = . sin α cos α. Osoita, että A(α + β) = A(α)A(β). Mikä matriisi A(α)A( α) on?

BL40A0000 Säätötekniikan ja signaalinkäsittelyn

Numeeriset menetelmät TIEA381. Luento 5. Kirsi Valjus. Jyväskylän yliopisto. Luento 5 () Numeeriset menetelmät / 28

Matriisit, L20. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

x = y x i = y i i = 1, 2; x + y = (x 1 + y 1, x 2 + y 2 ); x y = (x 1 y 1, x 2 + y 2 );

(1.1) Ae j = a k,j e k.

Matriisit, kertausta. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

Sisätuloavaruudet. 4. lokakuuta 2006

Pienimmän neliösumman menetelmä

Monissa käytännön ongelmissa ei matriisiyhtälölle Ax = b saada ratkaisua, mutta approksimaatio on silti käyttökelpoinen.

Inversio-ongelmien laskennallinen peruskurssi Luento 7 8

Lineaarialgebra ja differentiaaliyhtälöt Harjoitus 4 / Ratkaisut

Matlab-perusteet Harjoitustehtävien ratkaisut

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

1 Lineaariavaruus eli Vektoriavaruus

Ennakkotehtävän ratkaisu

Laskennallinen data-analyysi II

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

802320A LINEAARIALGEBRA OSA I

MS-C1340 Lineaarialgebra ja

Matriisit, L20. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

Käänteismatriisin ominaisuuksia

1.1. Määritelmiä ja nimityksiä

Numeeriset menetelmät

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 3 /

Matriisilaskenta (TFM) MS-A0001 Hakula/Vuojamo Ratkaisut, Viikko 47, 2017

Ominaisarvo ja ominaisvektori

Likimääräisratkaisut ja regularisaatio

Insinöörimatematiikka D

Numeeriset menetelmät TIEA381. Luento 8. Kirsi Valjus. Jyväskylän yliopisto. Luento 8 () Numeeriset menetelmät / 35

Käänteismatriisi 1 / 14

Matriisit ja vektorit Matriisin käsite Matriisialgebra. Olkoon A = , B = Laske A + B, , 1 3 3

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

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

Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus

Lineaariavaruudet. Span. Sisätulo. Normi. Matriisinormit. Matriisinormit. aiheita. Aiheet. Reaalinen lineaariavaruus. Span. Sisätulo.

x = y x i = y i i = 1, 2; x + y = (x 1 + y 1, x 2 + y 2 ); x y = (x 1 y 1, x 2 + y 2 );

Luento 5. Timo Savola. 28. huhtikuuta 2006

Pienimmän neliösumman menetelmä (PNS)

MS-C1340 Lineaarialgebra ja

Pienimmän neliösumman menetelmä (PNS)

Liukulukulaskenta. Pekka Hotokka

Alkeismuunnokset matriisille, sivu 57

Transkriptio:

MATA23 Laskennallinen lineaarinen algebra ja geometria Mikko Parviainen Luennot: Mikko Parviainen, mikko.j.parviainen at jyu.fi, MaD 36 Kurssisivu: http://users.jyu.fi/~miparvia/llag/ Laajuus: op Luennot: 2 2h ennen pääteohjauksia. Ohjaukset: 4 2h (läsnäolopakko). Ohjausryhmiin ilmoittautuminen Korpissa. Harjoitustyö: Pareittain tehtävän työn ohje löytyy kurssisivulta viimeisten ohjausten jälkeen. Huom! Tämä kurssi vastaa aiempien ( 27) kurssien Vektorit ja matriisit 2 ja Lineaarinen algebra ja geometria 2 tietokonedemoja. Jos olet suorittanut aiemmin jonkin yo. kurssin tietokonedemot, et saa tästä kurssista enää opintopistettä. Harjoitustyö tulee tehdä parityönä (toki yksinkin saa tehdä). Harjoitustyötä ei saa kopioida muilta, vaan työ tulee tehdä itsenäisesti. Työn tekeminen kannattaa aloittaa ajoissa; deadline ei jousta (ainakaan ilman painavaa syytä). 3 Matlab 4 3. Matlab ja Mathematica............................ 4 3.2 Matlabin käynnistäminen........................... 4 3.3 Ohjeet...................................... 4 3.4 Muuttujat ja perustoimintoja......................... 4 3. Matriisien luontifunktioita........................... 6 3.6 M-tiedostot ja omat funktiot......................... 6 3.7 Silmukat, ehtolauseet ym............................ 6 3.8 Grafiikka.................................... 7 3.9 Ohjelmointistrategiasta............................ 8 3. Muita tietotyyppejä.............................. 9 3. Datan lataus ja tallennus........................... 9 3.2 Sudenkuoppia.................................. 9 3.3 Omat laajennokset............................... Sisältö Numeriikkaa. Äärellinen esitystarkkuus............................2 IEEE 74.................................... 2.3 Äärellisen esitystarkkuuden etuja ja haittoja................. 2.4 Virhekäsitteitä................................. 2 2 Lineaarialgebraa 2 2. Matriisit ja häiriöalttius............................ 3 2.2 Yhtälöryhmän ratkaisun virhe......................... 3 2.3 Matriisikäsitteitä, kertaus........................... 3 2.4 Singulaariarvohajotelma ja pseudoinverssi.................. 3 2. Pienimmän neliösumman menetelmä (least squares)............ 3. Luennot perustuvat osittain Matti Viholan vuoden 2 luentomonisteeseen. Numeriikkaa Mihin tarvitset numeerisia menetelmiä? Tulosten havainnollistaminen (esim. kouluopetuksessa) Sovellukset: (esim. luonnontieteet, tekniikka). Hahmotteluun: likiarvoiset vastaukset antavat vihiä siitä, voisiko jokin väite pitää paikkaansa vai ei.. Äärellinen esitystarkkuus Tietokoneen muistiin (tai paperille) ei voida tallentaa mielivaltaista lukua. Käytännön laskuissa luvut on pakko esittää äärellisellä esitystarkkuudella. Fysiikassa/tekniikassa mittausten tarkkuus sanelee usein esitystarkkuuden. Tietokoneissakäytetään lukujen esittämiseen useimmiten ns. liukulukuja (floating point number).

Kutakin lukua varten on käytössä kaksi muistipaikkaa: toinen mantissa ja toinen eksponentille. Esim..2 IEEE 74. = +. 2 missä mantissa +. esitetään seitsemällä merkitsevällä numerolla ja etumerkillä, ja kokonaislukueksponentti -2 kolmella luvulla ja etumerkillä. + - 2 Yleisin liukulukujen esitys on standardin IEEE 74 2 mukainen. Usein ns. tieteellisessä laskennassa käytetään erityisesti kaksoistarkkuisia (double precision), eli 64-bittisiä liukulukuja. Eksponentti bittiä, mantissa 3 bittiä. Itseisarvoltaan pienimmät luvut ovat Itseisarvoltaan suurimmat luvut ovat ±2 74 ± 324 ±(( (/2) 3 )2 24 ) ±.8 38 Lisäksi käytössä ± ja seuraavat luvut : +Inf, -Inf (positiivinen ja negatiivinen äärettömyys), ja NaN (Not a Number).3 Äärellisen esitystarkkuuden etuja ja haittoja Äärellisenesitystarkkuudenilmeinen haitta on,että voimmeesittää vain äärellisen joukon eri lukuja. Siitä huolimatta laskenta-algoritmit voidaan tehdä siten, että useimmiten virhe ei kasva niin suureksi, että sillä olisi käytännön merkitystä. Joissain tapauksissa äärellinen esitystarkkuus saattaa kuitenkin aiheuttaa lopputuloksessa merkittävän virheen. Käyttäjänpitääosatatulkita numeerisenlaskennantuloksia;ovatkoneluotettavia vai eivät. IEEE 74 -liukulukuesityksen etuna on, että tavallisilla kotitietokoneilla voidaan tehdä yksinkertaisia laskutoimituksia nopeasti (luokkaa miljardi laskutoimitusta sekunnissa). 2. Kts. esim. http://en.wikipedia.org/wiki/ieee_74..4 Virhekäsitteitä Absoluuttinen virhe: Jos oikea arvo on x, ja saatu arvo x, absoluuttinen virhe on x missä x := x x. Suhteellinen virhe: x x, kun x. Pyöristysvirhe (roundoff error): Virhe, joka tehdään, kun luku esitetään jossain äärellisessä esityksessä. Esimerkkejä: + esitettynä IEEE 74 kaksoistarkkuuden liukulukuna on, joten (absoluuttinen) pyöristysvirhe on. Ylivuoto (overflow) tapahtuu, kun laskun tulos menee yli lukualueen. (tuloksena Inf). Alivuoto(underflow) tapahtuu, kun laskuntulos ei ole nolla,mutta itseisarvoltaan niin pieni, että vastaus pyöristetään nollaksi. tämä saattaa aiheuttaa esim. nollalla jaon seuraavassa vaiheessa! ±Inf tai NaN Kone-epsilon: Etäisyys luvun ja sitä seuraavaksi suuremman luvun välillä (2 2 IEEE 74 kaksoistarkkuudessa). Yleisemmin, ǫ(x) on etäisyys luvun x ja sitä seuraavan itseisarvoltaan suuremman luvun välillä. Vertaa esim.... ja... Vastaavasti esim. luvuille... 2 3 ja... 2 3. Absoluuttinen virhe kasvaa suunnilleen lineaarisesti luvun koon suhteen. Suhteellinen virhe pysyy suunnilleen vakiona. 2 Lineaarialgebraa Seuraava esim. kuvastaa ratkaisun stabiiliutta. Yhtälöryhmällä 3 [ ] [ ] 2 2 6 x = 2 2. 6. on yksikäsitteinen ratkaisu x = [,2] T. Oletetaan, että käytössä olisi kolmen desimaalin esitystarkkuus. Tällöin ratkaistaisiinkin yhtälöryhmää [ ] [ ] 2. 2. 6. ˆx = 2. 2. 6. jonka yksikäsitteinen ratkaisu on ˆx = [2.,.] T. Matriisin esityksessä vain yhteen komponenttiin tuli suhteellista virhettä 2. 2. /2..2, mutta ratkaisussa virhettä on [2,] T [,2] T / [,2] T.63. 3. Esimerkki otettu opintomonisteesta A. Perttula: Lisää lineaarialgebraa. 2

2. Matriisit ja häiriöalttius Tällä kurssilla käytetään vektoreille x R n aina Euklidista normia x := n k= x2 k ja matriiseille sen indusoimaa (operaattori)normia: Huomaa Ax A x Ax A := max x x = max Au. u = kaikilla A R m n ja x R n ja AB A B kaikilla A R m n ja B R n p. Matriisin kuntoluku tai häiriöalttiusluku (condition number) cond(a) := A A kuvaa matriisiin liittyvän yhtälöryhmän ratkaisun stabiiliutta. 2.2 Yhtälöryhmän ratkaisun virhe Oletetaan, että haluttaisiin ratkaista x yhtälöryhmästä Ax = b, missä A on tunnettu kääntyvä matriisi ja b tunnettu vektori. Käytössämme olevalla tietokoneella ei voida kuitenkaan esittää A:ta ja b:tä tarkasti, vaan likimääräisesti, jolloin ratkaisemmekin ˆx:n yhtälöryhmästä ˆx = ˆb. Olemmekiinnostuneita,kuinkasuuriratkaisunsuhteellinenvirhe ˆx x x on. Mikäli  = A, nähdään että ˆx x x A ˆb b x cond(a) ˆb b b, sillä b = Ax A x. Laskennan virheiden lisäksi on mahdollista, että matriiseihin A ja b sisältyy muutakin virhettä kuin pelkkä äärellisen esityksen aiheuttama pyöristysvirhe, esim. mittausvirhe. 2.3 Matriisikäsitteitä, kertaus Ax = λx ja x, x on ominaisvektori ja λ ominaisarvo. A T transpoosi A = A T symmetrinen matriisi. Symmetrisen matriisin ominaisarvotovat reaaliset. AA T = A T A = I ortogonaalinen matriisi eli A = A T Muistutus: matriisi esittää lineaarikuvausta, joten niillä pystytytään esim. venyttämään, pyörittämään jne. tietokonekuvia. Olkoon A R m n, B R n p C R l q, D R q o, E R m q, F R n o, G R l n ja H R q p. Tällöin lohkomatriisien tulo on [ ][ ] [ ] A E B F AB +EH AF +ED = G C H D GB +CH GF +CD 2.4 Singulaariarvohajotelma ja pseudoinverssi Olkoon A R m n. On olemassa ortogonaaliset matriisit U R m m, V R n n ja diagonaalinenmatriisi Σ R m n nollastapoikkeavinaalkioinaan[σ] ii = σ i jotka on järjestettyσ σ p,jajoillea = UΣV T.TämäonA:nsingulaariarvohajotelma (singular value decomposition, SVD). (vrt. Purmonen: LAG2, Lause 2.7) MatriisinA R m n pseudoinverssiona + := VΣ + U T R n m,missäσ + R n m on diagonaalimatriisi, jonka ainoat nollasta poikkeavat alkiot ovat [Σ + ] ii = σ i kaikilla i joille σ i >. (vrt. Purmonen: LAG2, Määritelmä 2.9) Mikäli A R n n on kääntyvä, niin singulaariarvot σ... σ n >, käänteismatriisi ja pseudoinverssi yhtyvät A = A +. Lisäksi A = σ ja A = σ n, joten cond(a) = σ σ n. 2. Pienimmän neliösumman menetelmä (least squares) Purmonen: LAG2, luvut.8 ja 2., jossa käytetään PNS-menetelmästä nimitystä Paras ratkaisuapproksimaatio. Olkoon A R m n matriisi ja b R n vektori. Vektori ˆx on yhtälöryhmän Ax = b pienimmän neliösumman ratkaisu, jos Aˆx b Ax b kaikilla x R n. Mikäli rank(a) = n, eli A:n sarakkeet ovat lin. riippumattomat, ratkaisu ˆx on yksikäsitteinen, ja se saadaan ratkaisemalla normaaliryhmä A T Aˆx = A T b. Tällöin ratkaisu voidaan lausua pseudoinverssin avulla ˆx = A + b. 3

3 Matlab Matlab ( Matrix laboratory ) on MathWorksin kaupallinen numeerisen laskennan ohjelmisto, jota käytetään nykyään laajasti tekniikassa ja luonnontieteissä. Alkuperäisen nimenkin mukaan, Matlab keskittyy erityisesti matriisilaskentaan. Ohjelmiston etuna nykyään myös monipuoliset tulosten visualisointimahdollisuudet, sekä lukuisat valmiit työkalupakit (toolbox) eri alojen tarpeisiin. Vaikka Matlab onkin kaupallinen ja suljettu tuote, on olemassa myös ilmainen avoimen lähdekoodin vaihtoehto GNU Octave (http://www.octave.org/). Octave on jo niin hyvin Matlab-yhteensopiva, että kurssin tehtäviä voi halutessaan aivan hyvin tehdä myös Octavella. Muita samankaltaisia ohjelmistoja ovat mm. SciLab (http://www.scilab.org/) GNU R (http://www.r-project.org/), joka on tehty erityisesti tilastotieteen tarpeisiin. 3. Matlab ja Mathematica Sekä Matlab että Mathematica ovat tulkkaavia matemaattisia ohjelmistoja. Matlab on numeeriseen ja Mathematica symboliseen laskentaan erikoistunut. Matlab:in etuna Mathematicaan on, että sillä voi käsitellä melko suuria tietomääriä, ja se on suhteellisen nopea. Mathematica taas lyö Matlab:in symbolisella laskennalla, jota Matlab ei osaa lainkaan 4. Matlab:in voi sijoittaa oikeiden ohjelmointikielten ja symbolisten matemaattisten ohjelmistojen välimaastoon. 3.2 Matlabin käynnistäminen Matlab R27b on valmiiksi asennettu yliopiston koneille. Kaksoisklikkaa linkkiä tai etsi Käynnistä-valikosta. Kunkomentoikkunaaukeaa,aseta CurrentDirectory -alasvetovalikostahakemisto sopivaksi, esim. U:\MATA23 (jos hakemistoa ei ole, luo se tavalliseen tapaan tai kirjoita Matlabin komentotulkissa mkdir( U:\MATA23 ).) Alasvetovalikon lisäksi voit vaihtaa hakemistoa kirjoittamalla Matlabin komentotulkissa cd U:\MATA23. Muuttujat tallentuvat tähän nyt hakemistoon, ja hakemistoon kirjoittamiasi ohjelmia voidaan kutsua Matlabista. 4. Matlab:iinkin saa Maple-toolboxin, jolloin Matlab:ia voi käyttää myös symboliseen laskentaan. 3.3 Ohjeet doc: avaa interaktiivinen ohje lookfor: etsi hakusanalla funktioita help: näytä ohje (funktiosta), >> lookfor identity EYE Identity matrix. SPEYE Sparse identity matrix. >> help eye EYE Identity matrix. EYE(N) is the N-by-N identity matrix.... >> a=eye(2) 3.4 Muuttujat ja perustoimintoja Perustietotyyppinä Matlab:issa on matriisi. Skalaari on -matriisi, vektorit joko N (pysty) tai N (vaaka). Muuttujien (ja funktioiden) nimet alkavat kirjaimella (a-za-z, isot ja pienet kirjaimet ovat eri merkkejä), muita sallittuja merkkejä ovat numerot (-9) ja alaviiva ( ) Syntaksista: Yhtäsuuruusmerkki = on sijoitusmerkki, vasemmalla puolella olevaan muuttujaan sijoitetaan oikean puolen arvo. Rivin vaihto <Enter> on komentoerotin. Kun komentokehotteessa painaa <Enter>, kyseisen rivin komento suoritetaan. Puolipiste ; ja, toimivat myös komentoerottimina. Mikäli komennon perään laitetaan puolipiste, lopputulos jätetään näyttämättä. Huom: Muista lisätä puolipiste komennon perään aina, kun käsittelet suuria matriiseja! Hakasulkeita[ ] käytetään matriiseja syötettäessä, lohkomatriiseja koottaessa, sekä sellaisia funktioita kutsuttaessa, joista tulee useampi kuin yksi ulostulo. Matriiseja syöttäessä, ja <Space> ovat alkion erottimia, ja ; tai <Enter> rivin vaihto. Huom: Kaikki tavalliset laskutoimitukset +, -, *, /, \, ^ ovat matriisilaskutoimituksia!!! 4

Esimerkki: matriisien/vektorien luonti ja perusoperaatioita. >> a=[ 3; 2,4] 3 2 4 >> x = [;6] x = 6 >> x2=a*x x2 = 23 34 >> x2*x??? Error using ==> mtimes Inner matrix dimensions must agree. >> x2+x 28 4 >> pi*a 3.46 9.4248 6.2832 2.664 Lisää syntaksista: Komponenteittaiset laskutoimitukset saadaan lisäämällä operaattorin eteen piste:.*,./,.\,.^. Sulkeita ( ) käytetään matriisien ja vektoreiden indeksoinnissa sekä funktiokutsuissa. Yksittäinen lainausmerkki on Hermiten transpoosi ja. transpoosi (reaalisilla matriiseilla sama asia!). Yksittäisiä lainausmerkkejä käytetään myös merkkijonojen syöttämiseen. Kompleksiluvut voidaan antaa käyttäen imaginaariyksikköä (i tai j). Desimaalieroitin on piste. Prosenttimerkki % on kommenttimerkki: loput rivistä jätetään huomiotta. Rivin voi katkaista laittamalla rivin loppuun kolme pistettä:... Matemaattiset alkeisfunktiot: sin, cos, tan, asin, log, exp, sqrt, abs,... toimivat myös kompleksiarvoisille suureille, ja vektoreille/matriiseille alkioittain. (lisää: help elfun) >> y=sin(x); % Lasketaan sini x:n alkioista >> y -.989 -.2794 >> x2.*x 24 >> x2 *x 39 >> a*[+3i; 2.] 8. + 3.i 2. + 6.i Matriisien indeksoinnista: matriisista voidaan poimia alkioita sulkeilla. Huom: Matlab:issa indeksointi alkaa ykkösestä, ei nollasta! Yksittäisten indeksien lisäksi on mahdollista antaa useampi indeksi, ja poimia esim. sarakkeita tai rivejä, tai alimatriiseja. Kaksoispisteellä : voi luoda vektorin, jossa on peräkkäisiä kokonaislukuja. Yksistään : tarkoittaa kaikkia rivin tai sarakkeen alkioita. >> a 4 7 2 8 3 6 9 >> a(,2) 4 >> a(,:) 4 7 >> a(:,2:end) 4 7 8 6 9 >> b = :3 b =

2 3 >> a(b, [ 3]) 7 2 8 3 9 >> a(:2,:2) = eye(2) 7 8 3 6 9 3. Matriisien luontifunktioita diag, eye, ones, zeros, rand: Luo diagonaali-, identiteetti-, ykkös-, nolla-, tai satunnaislukuja välillä (, ) sisältävä matriisi. (help elmat) >> a=rand(3).9.486.46.23.893.8.668.762.824 >> b=ones(3,) b = >> c=zeros(,3) c = >> d = [a b;c 42] d =.9.486.46..23.893.8..668.762.824. 42. >> diag(d).9.893.824 42. >> e = diag([pi exp()]) e = 3.46 2.783 3.6 M-tiedostot ja omat funktiot Matlab:issa on mahdollista tehdä ns. M-tiedo (M-file), esim. mfile.m, joka sisää listan ajettavia komentoja. N = 3; ones(n,); x = [a, rand(n,n)] Tämä vastaa sitä, että käskyt kirjoitettaisiin komentotulkkiin. M-tiedostoja voi olla myös itse tehty funktio, jolle siis annetaan parametrit ja se palauttaa arvon/arvoja. Perusperiaate on, että kutakin funktiota varten tehdään vastaavan niminen tiedosto. Esimerkiksi halutessamme tehdä funktion foo, luomme tiedoston foo.m. >> edit foo (kirjoita funktio editorissa ja tallenna se) >> z = foo(,4) z =.242 Tiedoston foo.m sisältö: function d = foo(x, y) d = sqrt(x^2+y^2); Funktion alun pitää olla aina ylläolevaa muotoa! 3.7 Silmukat, ehtolauseet ym. Matlab:issa on muistakin ohjelmointikielistä tutut ehtolauseet ja silmukat. if-ehtolause suorittaa lausekkeen sisäisen arvon, mikäli ehto on tosi. for-silmukka käy läpi annetun (vaaka)vektorin alkiot. while-silmukka jatkuu niin pitkään, kun ehtolausekkeen arvo on tosi. Ehtolauseissa voi käyttää mm. relaatioita <, <=, ==, ~=, &, (help relop).. Ehtolauseke on tosi, mikäli se ei ole nolla. 6

N = 6; eye(n); for k=:n j = ; while j<k if mod(k,j) == a(k,j) = ; end j = j+; end end Loogiset relaatiot toimivat myös vektori/matriisiargumenteille >> :, b = rand(,)* 2 3 4 b =.38.9936 3.9.369.994 >> a<b Huomaa tavat luoda vektoreita >> x=:.:. x =.8.6.4.2.2.4.6.8 8 6 4 2 2 4 6 8..2.3.4. >> x=linspace(,.,) x =.2.2.37. 3.8 Grafiikka Yksi Matlab:in vahvuusalueista ovat sen visualisointiominaisuudet. Matlab:issaonvalmiina erilaisiavisualisointifunktioita,mutta jätetty myösmahdollisuus säätää lähes kaikkia visualisoinnin yksityiskohtia. Grafiikankin perusideana on numeriikka: sen sijaan että käskettäisiin esimerkiksi Piirrä funktio sin(x) kun 2π x 2π, lasketaankin funktion (liki)arvot tietyissä pisteissä ko. välillä, ja käsketään Matlab:in vain visualisoida saadut numerot: >> x = linspace(-2*pi,2*pi,); >> y = sin(x); >> plot(x,y) Lisätään samaan kuvaan toinen käyrä, ja kustomoidaan kuvan asetuksia: >> hold on >> plot(x,.*cos(x), r-- ) >> axis tight, grid on, box off >> xlabel x ; ylabel y ; title Esimerkkikuva >> set(gca, tickdir, out ); >> set(gcf, paperposition,[ 7 ]); >> print -depsc example.eps 7

Esimerkkikuva surf(x,y,f) y... x Kahden muuttujan funktion visualisointia. Ensin tarvitaan funktio meshgrid: x = 2 3 y = 8 9 >> [X,Y]=meshgrid(x,y) X = 2 3 2 3 2 3 Y = 8 8 8 8 9 9 9 9 Jatketaan visualisointia... >> x = linspace(-2*pi,2*pi,); y=x; >> [xx,yy] = meshgrid(x,y); >> f = sin(xx).*cos(yy)....*exp(-(sqrt(xx.^2+yy.^2)-).^2); >> surf(x,y,f); >> imagesc(x,y,f); colorbar >> contour(x,y,f). imagesc(x,y,f) 3.9 Ohjelmointistrategiasta.. contour(x,y,f) For-silmukat ovat hitaita! Ne kannattaa korvata Matlabin sisäänrakennetuilla matriisilaskutoimituksilla! Ei näin: n=; x=linspace(,2*pi,n); y=linspace(pi,3*pi,n); for i=:n, for j=:n, X(i,j)=x(i); Y(i,j)=y(j); Z(i,j)=sin(x(i))*cos(y(j)); 8

end end mesh(x,y,z) Vaan näin: n=; x=linspace(,2*pi,n); y=linspace(pi,3*pi,n); [X,Y]=meshgrid(x,y); Z=sin(X).*cos(Y); mesh(x,y,z) 3. Muita tietotyyppejä Matriisien alkiot voivat olla liukulukujen lisäksi merkkejä, jolloin vektorit voivat sisältää merkkijonoja. >> foo foo >> a() f Matlab osaa käsitellä myös ns. harvoja (sparse) matriiseita. >> s = sparse([ ; 2; 3 ]) s = (,) (3,2) 3 (2,3) 2 Matriisien lisäksi Matlab:illa voi luoda useampiulotteisia taulukoita. >> zeros(2,2,2); >> a(:,:,) = eye(2); a(:,:,2) = rand(2) a(:,:,) = a(:,:,2) =.3.44.7468.938 3. Datan lataus ja tallennus Muuttujia voi tallentaa tiedostoon komennolla save, ja ladata niitä komennolla load >> a=:; >> save foo >> clear >> a??? Undefined function or variable a. >> load foo >> a 2 3 4 Matlab:issa on myös mahdollistaladata muista ohjelmista tiedostoja. Esimerkiksi useimmista taulukko-ohjelmista saa tallennettua datan ns. CSV-muodossa (Comma Separated Values). Tällaista dataa voi lukea Matlab:iin komennoilla csvread tai dlmread. Binääristä dataakin voi käsitellä, kts. esim. help fread ja help fwrite. 3.2 Sudenkuoppia Matlab:issa voi määritellä itse uudelleen lähes minkä tahansa muuttujan tai funktion. >> cos(2*pi) >> pi=3; >> cos(2*pi).962 >> cos =.96; >> cos(2*pi)??? Index exceeds matrix dimensions. >> clear pi >> cos(2*pi)??? Subscript indices must either be real positive integers or logicals. >> clear 9

>> cos(2*pi) Syötettäessä matriiseja, tyhjä merkki yksinään on alkioiden erotin. >> a=[; +3i]??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns. >> [; +3i].. + 3.i Käytät muuttujaa, joka on jo olemassa. Tästä pääsee eroon poistamalla olemassaolevat muuttujat clear( x ), clear all 3.3 Omat laajennokset Matlab:iin voi kirjoittaa helpohkosti omia ns. MEX-laajennoksia C/C++ ja Fortran-kielillä. Laajennoksia voi tarvita laskennan nopeuttamiseksi, tai vaikkapa jonkin mittauslaitteiston ohjaamiseksi Matlab:ista käsin.