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 tekeminen Matlabissa Matlabin sisäänrakennetut funktiot Ohjelmoinnin alkeita Mat-2.2107 Sovelletun matematiikan tietokonetyöt 2
Matlab Matlab (MATrix LABoratory): numeeriseen laskentaan tarkoitettu ohjelma. Käytetään laajasti eri insinöörialoilla. Mat-2.2107 Sovelletun matematiikan tietokonetyöt 3
Numeerinen laskenta - Symbolinen laskenta Symbolinen laskenta: laskenta suljetussa muodossa. - Tarkka ratkaisu, ei pyöristysvirheitä. Likiarvoinen ratkaisu numeerisesti monesti helpompaa ja nopeampaa. - Käytännön sovelluksia: matemaattinen mallintaminen, simulointi... Laskentatarkkuus voi olla ongelma numeerisessa laskennassa, esim. >> 1-0.2-0.2-0.2-0.2-0.2 5.5511e-017 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 4
Matemaattisia ohjelmistoja Numeerinen laskenta - Matlab - Octave (ns. freeware Matlab ) - MS Excel (ks. harjoitukset 8-9) Symbolinen laskenta - Mathematica (ks. harjoitukset 10-11) - Maple - MathCad Joillakin ohjelmilla voi laskea sekä symbolisesti että numeerisesti. - Esim. Symbolic Math Toolbox Matlabissa. Mat-2.2107 Sovelletun matematiikan tietokonetyöt 5
Matlabin käyttöliittymä Command Window - Komentoja voidaan syöttää yksi kerrallaan. Command History - Aikaisemmin syötetyt komennot. Workspace - Työtilaan tallennetut muuttujat. Editor - Ns. m-tiedostojen (funktioiden ja komentojonotiedostojen) muokkaamista varten. Help - Minkä tahansa funktion helpin saa auki seuraavasti: help funktio Mat-2.2107 Sovelletun matematiikan tietokonetyöt 6
Matlabin Toolboxit Matlabissa on eri sovellusalueille tehtyjä laajennuksia (toolboxeja). Esim: - Statistics Toolbox - Optimization Toolbox - Symbolic Math Toolbox - Curve Fitting Toolbox Mat-2.2107 Sovelletun matematiikan tietokonetyöt 7
Matriisit Matriisi on (luku)taulukko. - Vaakasuunnassa: rivit (rows) - Pystysuunnassa: sarakkeet (columns) Alkio: Yksittäinen matriisissa oleva elementti. Indeksoinnissa esitetään rivi ensin ja sarake toisena, esim. a ij viittaa rivin i ja sarakkeen j alkioon. a 11 a 12 a 1j A = a 21 a 22 a 2j........ a i1 a i2 a ij Mat-2.2107 Sovelletun matematiikan tietokonetyöt 8
Matriisien käsittely Matlabissa Matlab = Matrix Laboratory Matriisit ovat perustietorakenne Matlabissa. Matriisit syötetään alkioittain hakasulkujen sisään. Välilyönti (tai pilkku) erottaa samalla rivillä olevat alkiot. Puolipiste erottaa rivit toisistaan. Vektorit luodaan vastaavalla tavalla. A = 1 2 3 4 5 6 >> A=[1 2 3 ; 4 5 6 ; 7 8 9] A = 1 2 3 7 8 9 4 5 6 7 8 9 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 9
Listan luominen Kaksoispisteen (:) avulla voidaan luoda lista alkioista. >> x=10:16 x = 10 11 12 13 14 15 16 >> y=10:2:16 % alkioiden välinen erotus 2 y = 10 12 14 16 Huom! % on kommentointimerkki. (Matlab ei suorita sen jälkeen samalla rivillä olevia komentoja.) Mat-2.2107 Sovelletun matematiikan tietokonetyöt 10
Matriisin alkioihin viittaaminen 1/2 Viittaus sulkujen avulla muodossa (rivi,sarake) A = 1 2 3 4 5 6 7 8 9 >> A(2,1) 4 Huom! Indeksointi alkaa 1:sta, ei 0:sta (toisin kuin esim. Javassa) Mat-2.2107 Sovelletun matematiikan tietokonetyöt 11
Matriisin alkioihin viittaaminen 2/2 Voidaan myös viitata useamman alkion muodostamaan alueeseen kaksoispisteen (:) avulla. >> A(1:2,1) 1 4 >> A(:,1) % pelkkä kaksoispiste valitsee koko sarakkeen/rivin 1 4 7 >> A(2:end,1) % end viittaa viimeiseen alkioon 4 7 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 12
Matriisien muokkaaminen Matriiseja voidaan myös luoda liittämällä toisia matriiseja yhteen. >> B=[A A] B = 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9 Tiettyä matriisin alkiota voidaan muuttaa seuraavasti. >> A(1,1)=100 A = 100 2 3 4 5 6 7 8 9 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 13
Matriisin transpoosi Matriisin transpoosiin käytetään pilkkua ( ). A = 1 2 3 4 5 6 7 8 9 >> A 1 4 7 2 5 8 3 6 9 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 14
Peruslaskutoimitukset 1/2 Yhteen- ja vähennyslasku (+, -) >> C=[1 2;3 4], D=[5 6;7 8] C = 1 2 3 4 D = 5 6 7 8 >> C+D 6 8 10 12 >> C-D -4-4 -4-4 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 15
Peruslaskutoimitukset 2/2 Kerto- ja jakolasku (*,.*, /,./) >> C*D % Matriisitulo 19 22 43 50 >> C.*D % Alkioittainen tulo 5 12 21 32 >> C/D % Matriisijakolasku (vastaa laskua C*inv(D)) 3.0000-2.0000 2.0000-1.0000 >> C./D % Alkiottainen jakolasku 0.2000 0.3333 0.4286 0.5000 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 16
Käänteismatriisi Matriisin A käänteismatriisi A 1 on olemassa täsmälleen silloin, kun det(a) 0. Käänteismatriisille pätee: A A 1 = A 1 A = I (Yksikkömatriisi). Yhtälöryhmän A x = b ratkaisu: - A on n n matriisi, x = [x 1...x n ] T, b = [b 1...b n ] T. (A 1 A)x = A 1 b Ix = A 1 b x = A 1 b - Matlabissa: x=inv(a)*b tai x=a \b Mat-2.2107 Sovelletun matematiikan tietokonetyöt 17
Kuvaajat 1/2 plot-funktion avulla voidaan piirtää kuvaajia, ks. help plot >> x=-2*pi:0.1:2*pi; % Luodaan x-vektori >> y=sin(x); % Luodaan y-vektori >> plot(x,y); % Piirretään kuvaaja (vaaka-akselilla x, pystyakselilla y) >> grid on % Kuvaajan ruudukko päälle >> axis tight % Akselit ilman tyhjää tilaa laidoilla >> title( Sinikäyrä ) % Kuvaajan otsikko >> xlabel( x-akseli ) % Tunniste x-akselille >> ylabel( y-akseli ) % Tunniste y-akselille >> legend( x ) % Kuvateksti Mat-2.2107 Sovelletun matematiikan tietokonetyöt 18
Kuvaajat 2/2 Sinikäyrä 0.8 x 0.6 0.4 0.2 y akseli 0 0.2 0.4 0.6 0.8 6 4 2 0 2 4 6 x akseli Mat-2.2107 Sovelletun matematiikan tietokonetyöt 19
M-tiedostot Edellä komennot on annettu yksitellen komentoriviltä. M-tiedostojen (tiedostojen nimi on muotoa *.m) avulla voidaan ajaa useampi komento peräkkäin. - Mahdollistaa ohjelmoinnin. Syntaksi sama kuin komentoriviltä ajettaessa. Komentojonotiedosto voidaan ajaa editorista käsin (näppäin F5) tai kirjoittamalla tiedoston nimi komentoriville. Mat-2.2107 Sovelletun matematiikan tietokonetyöt 20
Ohjelmoinnin alkeita For-silmukan avulla komentoja voidaan suorittaa useamman kerran peräkkäin. for muuttuja = alkuarvo : askelpituus : loppuarvo end % Suorita komentoja Mat-2.2107 Sovelletun matematiikan tietokonetyöt 21
Esimerkki silmukasta Tehdään ohjelma, joka tulostaa joka kierroksella indeksin i toisen potenssin. for i=1:2:7 end i^2 1 9 25 49 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 22
Kysymyksiä 1. Mitä eroa on numeerisella ja symbolisella laskennalla? 2. Miten puolipiste rivin lopussa vaikuttaa Matlabissa? 3. Luettele kolme eri Matlabin tietotyyppiä ja kerro miten ne eroavat toisistaan? (Vinkki: help datatypes) 4. Mikä on pisteen merkitys vektorien kerto- ja jakolaskussa? 5. Kuinka luot vektorin a joka sisältää kaikki positiiviset parittomat luvut, jotka ovat pienempiä kuin sata? 6. Miten lineaarisen yhtälöryhmän Ax = b voi ratkaista Matlabissa? Nimeä kaksi eri tapaa. Mat-2.2107 Sovelletun matematiikan tietokonetyöt 23