MATLAB - Osa 1. Timo Mäkelä

Samankaltaiset tiedostot
BL40A0000 Säätötekniikan ja signaalinkäsittelyn

Matriiseista. Emmi Koljonen

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

Ohjelman käynnistäminen

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

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

Opiskelijan pikaopas STACK-tehtäviin. Lassi Korhonen, Oulun yliopisto

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

SCILAB Osa 1. Timo Mäkelä

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

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

Matemaattiset ohjelmistot A. Osa 2: MATLAB

1.1. Määritelmiä ja nimityksiä

Valitse ruudun yläosassa oleva painike Download Scilab.

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

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

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

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

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44

BM20A0700, Matematiikka KoTiB2

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

Harjoitus 10: Mathematica

KAAVAT. Sisällysluettelo

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

Fortran 90/95. + sopii erityisesti numeriikkaan:

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

1 Matriisit ja lineaariset yhtälöryhmät

Johdatus tekoälyn taustalla olevaan matematiikkaan

Talousmatematiikan perusteet: Luento 9. Matriisien peruskäsitteet Yksinkertaiset laskutoimitukset Transponointi Matriisitulo

Insinöörimatematiikka D

0. Kertausta. Luvut, lukujoukot (tavalliset) Osajoukot: Yhtälöt ja niiden ratkaisu: N, luonnolliset luvut (1,2,3,... ) Z, kokonaisluvut

Ortogonaalinen ja ortonormaali kanta

Luvuilla laskeminen. Esim. 1 Laske

Yhteenlaskun ja skalaarilla kertomisen ominaisuuksia

Java-kielen perusteet

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

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

Insinöörimatematiikka D

Talousmatematiikan perusteet: Luento 10. Matriisien peruskäsitteet Yksinkertaiset laskutoimitukset Matriisitulo Determinantti

DIFFERENTIAALI- JA INTEGRAALILASKENTA

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

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä

9 Matriisit. 9.1 Matriisien laskutoimituksia

Matlabin perusteita Grafiikka

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python

Matlab-perusteet Harjoitustehtävien ratkaisut

811120P Diskreetit rakenteet

Käänteismatriisin. Aiheet. Käänteismatriisin ominaisuuksia. Rivioperaatiot matriisitulona. Matriisin kääntäminen rivioperaatioiden avulla

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

Differentiaali- ja integraalilaskenta 1. Tietokoneharjoitus: ratkaisut

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

Fysiikan matematiikka P

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

Insinöörimatematiikka D

Seuraavassa on esitetty seuraavien laskutoimitusten suoritukset eri laskinmalleilla

Python-ohjelmointi Harjoitus 2

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet Y Python

Harjoitus 1 -- Ratkaisut

Lineaarialgebra ja matriisilaskenta I

Laskuharjoitus 9, tehtävä 6

y z = (x, y) Kuva 1: Euklidinen taso R 2

Matlabin perusteet. 1. Käyttöliittymä:

Kappale 20: Kantaluvut

Lineaarialgebra a, kevät 2019 Harjoitus 6 (ratkaisuja Maple-dokumenttina) > restart; with(linalg): # toteuta ihan aluksi!

Excel 2010 ja QlikView. Mihin ja milloin pivot:ia voi käyttää

Kurssin loppuosassa tutustutaan matriiseihin ja niiden käyttöön yhtälöryhmien ratkaisemisessa.

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

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

T Sovellusohjelmat Matlab osa 4: Skriptit, funktiot ja kontrollirakenteet

Ohjelmoinnin perusteet Y Python

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

Matriisipotenssi. Koska matriisikertolasku on liitännäinen (sulkuja ei tarvita; ks. lause 2), voidaan asettaa seuraava määritelmä: ja A 0 = I n.

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Insinöörimatematiikka D

Harjoitus 3 -- Ratkaisut

A = a b B = c d. d e f. g h i determinantti on det(c) = a(ei fh) b(di fg) + c(dh eg). Matriisin determinanttia voi merkitä myös pystyviivojen avulla:

1.1 Vektorit. MS-A0007 Matriisilaskenta. 1.1 Vektorit. 1.1 Vektorit. Reaalinen n-ulotteinen avaruus on joukko. x 1. R n. 1. Vektorit ja kompleksiluvut

1 Peruslaskuvalmiudet

Kompleksiluvut., 15. kesäkuuta /57

5. Laskutoimitukset eri lukujärjestelmissä

Scilab ohjelman alkeisohjeet

Muuttujien määrittely

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 5 / vko 48

TI-30X II funktiolaskimen pikaohje

Käänteismatriisin ominaisuuksia

Johdatus matematiikkaan

OKLV120 Demo 7. Marika Peltonen

Numeeriset menetelmät

1 Kompleksiluvut. Kompleksiluvut 10. syyskuuta 2005 sivu 1 / 7

TAULUKON TEKEMINEN. Sisällysluettelo

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ohjelmoinnin perusteet Y Python

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne

Kokonaislukuaritmetiikka vs. logiikkaluupit

Ensin klikkaa käynnistä-valikkoa ja sieltä Kaikki ohjelmat valikosta kaikki ohjelmat

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

1.1 Vektorit. MS-A0004/A0006 Matriisilaskenta. 1.1 Vektorit. 1.1 Vektorit. Reaalinen n-ulotteinen avaruus on joukko. x 1. R n.

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Transkriptio:

MATLAB - Osa 1 Timo Mäkelä SISÄLTÖ: 1. KÄYTTÖLIITTYMÄ...1 1.1 YLEISTÄ...1 1.2 TYÖPÖYTÄ...1 1.2.1 Komentoikkuna...2 1.2.2 Työtila...4 1.2.3 Komentohistoria...4 1.2.4 Nykyinen hakemisto...5 1.3 OHJETOIMINTA...5 1.4 HAKUPOLKU...6 1.5 EDITORI...7 1.6 YLEISIÄ KOMENTOJA...7 2. SKALAARIT...8 2.1 LASKUTOIMITUKSET...9 2.2 YLEISIÄ VAKIOITA...1 2.3 PERUSFUNKTIOT...12 3. MATRIISIT...15 3.1 MATRIISIEN SYÖTTÖ...16 3.1.1 Satunnaismatriisit...18 3.2 VEKTORIEN SYÖTTÖ...2 3.3 OSAMATRIISIT JA LOHKOMATRIISIT...21 3.4 MATRIISIOPERAATIOT...24 3.5 TAULUKKO-OPERAATIOT...26 3.5.1 Taulukkofunktiot...28 4. LUKUJEN ESITYSMUODOT...32

MATLAB Osa 1 1 1. KÄYTTÖLIITTYMÄ 1.1 Yleistä MATLAB on tekniseen laskentaan suunniteltu tehokas matematiikkaohjelma, jolla voi suorittaa numeerista laskentaa havainnollistaa kuvallisessa muodossa tehdä ohjelmia. MATLABia ohjataan komennoilla, jotka kirjoitetaan komentoikkunan syöttöriveille. MATLABia voidaan laajentaa toolboxeilla, jotka ovat tiettyihin erikoisaloihin keskittyviä ohjelmapaketteja. MATLAB on numeerisen laskennan ohjelma, mutta siihen on siihen on saatavissa Symbolic Math Toolbox, joka mahdollistaa symbolisen laskennan. Keskeinen tietoalkio MATLABissa on matriisi. Nimi MATLAB tuleekin sanoista matrix laboratory. 1.2 Työpöytä MATLABin oletustyöpöydässä on kolme ikkunaa, joista osassa on välilehtiä. Näistä tärkein on Command Window, jossa laskentakomennot annetaan. Muut osat ovat Workspace, työtilassa olevat muuttujat. Command History, komentohistoria. Current Directory, nykyinen hakemisto

MATLAB Osa 1 2 Työpöytää voi muuttaa. Ikkunoita voi sulkea ja kokoa muuttaa. Työpöydällä olevan ikkunan saa erilliseksi ikkunaksi (undock) ikkunan oikeassa yläreunassa olevalla nuolipainikkeella. Erillisen ikkunan saa takaisin työpöydälle (dock) painikkeella. Valikostossa Desktop on työpöytään liittyviä komentoja. Alkuperäisasetuksiin palataan komennolla Desktop: Desktop Layout: Default. Nykyinen hakemisto näkyy työpöydällä kohdassa Sen voi vaihtaa sieltä. Kaikki tiedoston tallennetaan nykyiseen hakemistoon. Valikkokomennolla File: Preferences voi muuttaa oletusasetuksia. 1.2.1 Komentoikkuna Komennot kirjoitetaan komentoikkunaan kehotteen >> perään. Komennot päätetään painamalla Enter-näppäintä. Jos halutaan antaa monta riviä komentoja kerralla, päätetään rivit

MATLAB Osa 1 3 Shift+Enterillä; viimeinen rivi päätetään Enterillä. Samalle riville voi kirjoittaa komentoja erottamalla ne joko pilkulla tai puolipisteellä. Jos komennon perässä on puolipiste niin komennon tulos ei tule näytölle. Tätä kannattaa käyttää varsinkin suurissa matriiseissa. Komennon tulos voidaan tallentaa muuttujaan sijoituskäskyllä, jonka operaattori on =. Jos sijoituskäskyä ei anneta, tallennetaan tulos muuttujaan ans. >> 1+2 3 >> a=1/ans a =.3333 >> 3*a 1 >> b=1-a; >> b b =.6667 Muuttujan nimen on alettava kirjaimella ja se voi sisältää kirjaimia (ei kuitenkaan ääkkösiä), numeroita ja alaviivoja. Nimen 63 ensimmäistä merkkiä otetaan huomioon. Isot ja pienet kirjaimet ovat eri kirjaimia. Jos komento ei mahdu yhdelle riville se voidaan jatkaa seuraavalla riville kirjoittamalla ja painamalla Enteriä: >> s=1+1/2+1/3+1/4+1/5+1/6+1/7+... 1/8+1/9+1/1+1/11+1/12 s = 3.132 Kommentit aloitetaan %-merkillä. >> 1.234-3.1459 %MATLABissa on käytössä desimaalipiste -1.9119 Aikaisempia komentoja voi kopioida normaaliin tapaan. Lisäksi komentoja voi selailla seuraavasti: Näppäily Toiminto edellinen komento seuraava komento xy aikaisempi komento, joka alkaa kirjaimilla xy oikealle vasemmalle home rivin alkuun end rivin loppuun esc Komentorivin tyhjääminen

MATLAB Osa 1 4 Kirjoittamalla komennon tai muuttujan nimen alun ja painamalla tabulaattoria tapahtuu seuraavaa: Jos täydentäminen on yksikäsitteinen MATLAB täydentää komennon. Jos täydentäminen ei ole yksikäsitteinen, saa luettelon vaihtoehdoista. Ohjelman ajon voi keskeyttää komennolla Ctrl+c tai Ctrl+Break. Ohjelman keskeytymistä saa yleensä odottaa jonkin aikaa. MATLABin käyttö lopetetaan 1 valikkokomennolla File: Exit MATLAB tai komennnoilla quit tai exit. 1.2.2 Työtila Työtilassa (Workspace) näkyvät käytössä olevat muuttujat. Muuttujista näytetään niiden nimet, arvot ja tyypit. Työtilan muuttujia voi käsitellä työtilan painikkeilla tai hiiren oikeanpuoleisella näppäimellä aukeavaa putkahdusvalikkoa käyttäen. Kaksoisklikkaamalla muuttujaa käynnistyy taulukkoeditori, jolla voi tarkastella ja muuttaa arvoja. Muuttuja voidaan piirtää käyttäen painiketta. Työtila voidaan tallentaa painikkeella tai komennolla File: Save Workspace As. Tämä tallentaa työtilan MAT-tiedostoon, jonka tarkenne on.mat. MAT-tiedosto voidaan lukea painikkeella 1.2.3 Komentohistoria tai komennolla File: Import Data Komentohistoria-ikkunassa (Command History) näytetään aikaisemmin annetut komennot. Komentohistorian yksittäisiä komentoja saa suoritukseen kaksoisklikkaamalla komentoa käyttäen putkahdusvalikkoa Evaluate Selection, joka aukeaa hiiren oikeanpuoleisella näppäimellä Useita komentoja saa suoritukseen valitsemalla Shift-näppäin tai Ctrl-näppäin painettuna hiiren vasemmalla painikkeella komentoja ja raahaamalla ne hiiren vasen painike painettuna komentoikkunaan. Raahattuja rivejä voi muokata komentoikkunassa. Komennot suoritetaan painamalla Enteriä. 1 Eräässä kirjassa varoitetaan lopettamasta ohjelmaa MATLABin ikkunan oikean yläkulman lopetuspainikkeella, koska se voi joissain harvinaisissa tapauksissa sotkea tietokoneen käyttöjärjestelmää.

antamalla putkahdusvalikkokomento Evaluate Selection. 1.2.4 Nykyinen hakemisto MATLAB Osa 1 5 Nykyinen hakemistoikkunassa (Current Directory) voi etsiä ja avata MATLAB-tiedostoja joko kaksoisklikkaamalla, käyttämällä putkahdusvalikkoja tai painikkeita. 1.3 Ohjetoiminta Ohjetoiminto käynnistyy painikkeella tai komennolla doc. Ohjeikkunassa on kaksi osaa: navigointi-ikkuna mahdollistaa ohjeaiheiden nopean valinnan. teksti-ikkunassa esitetään ohjeet. Navigointi-ikkunassa kannattaa tehdä seuraavan kuvan mukaiset valinnat. Tällöin teksti-ikkunasta pääsee helposti käsiksi MATLABin funktioiden ohjeisiin. Funktioiden esitys voidaan valita luokittain, Functions Categorical List tai aakkosjärjestyksessä, Functions - Alphabetical List. Näistä jälkimmäinen on ehkä parempi, sillä se mahdollistaa nopean tiedon saannin halutusta funktiosta. Komennolla help saa komentoikkunaan ryhmitellyn luettelon komennoista. Klikkaamalla hiirellä komentoryhmää, saa tarkempaa tietoa komennoista.

MATLAB Osa 1 6 Komennolla help KomennonNimi saa komentoikkunaan lyhyen esittelyn tietystä komennosta. Esittelyn on aina yo. kuvan mukainen rakenne. Komennolla doc KomennonNimi aukeaa ohjeikkunaan laajempi esittelyn tietystä komennosta. Valikkokomennolla Help: Web Resources pääsee netistä hakemaan tietoa. MATLABissa on hyvin laaja kokoelma esimerkkiohjelmia eli demoja. Niihin pääsee käsiksi valikkokomennolla Help: Demos tai komentoikkunan komennolla demos. Esimerkkiohjelmia voi katsella omassa ikkunassaan ajaa komentoikkunassa aukaista editoriin. Esimerkkiohjelmat on hyvin ryhmiteltyjä. Niihin kannattaa tutustua. 1.4 Hakupolku MATLABin tiedosto-operaatiot käyttävät lähtökohtanaan nykyistä hakemistoa ja hakupolkua. Ajettavan ohjelman on oltava jommassakummassa näistä. Hakupolkuja voi muuttaa valikkokomennolla File: Set Path

MATLAB Osa 1 7 Tällöin aukeaa ikkuna, jonka painikkeilla Add Folder ja Add with Subfolders voi lisätä hakemistoja hakupolkuun. Remove voi poistaa hakemistoja hakupolusta Move voi muuttaa hakemistojen keskinäistä järjestystä. Järjestys on tärkeä, sillä samannimisistä tiedostoista valitaan se, joka on ylinnä hakupolussa. 1.5 Editori MATLABin tekstieditorin voi käynnistää komennolla edit (tai edit TiedostonNimi) valikkokomennolla File: New: M-file tai File: Open painikkeilla. Editori tuntee MATLABin syntaksin. Editorilla on kätevä kirjoittaa pidempiä komentojonoja tai tehdä ohjelmia. Siksi editori-ikkuna on aina hyvä pitää auki MATLABilla työskenneltäessä. Editorissa voi olla auki useita tiedostoja. Jos useampi tiedosto on auki, on editori-ikkunan vasemmassa alanurkassa on välilehdet, josta voi klikkaamalla vaihtaa tiedostoa. 1.6 Yleisiä komentoja Seuraavaan taulukkoon on koottu joitain hyödyllisiä yleiskomentoja.

MATLAB Osa 1 8 Komento who whos clear clear a clc clf close close all doc edit dir type a Merkitys Tulostaa työtilassa olevat muuttuja Tulostaa työtilassa olevat muuttujat, niiden koot ja tyypit Poistaa kaikki muuttujat työtilasta Poistaa muuttujan a työtilasta Tyhjentää komentoikkunan Tyhjentää nykyisen grafiikkaikkunan Sulkee aktiivisen ikkunan Sulkee kaikki ikkunat Avaa ohjeikkunan Avaa MATLABin editorir Tulostaa työhakemiston sisällön Tulostaa tiedoston a >> who Your variables are: a ans b >> whos Name Size Bytes Class a 1x1 8 double array ans 1x1 8 double array b 1x1 8 double array Grand total is 3 elements using 24 bytes >> clear >> who >> type cot function y = cot(z) %COT Cotangent of argument in radians. % COT(X) is the cotangent of the elements of X. % % Class support for input X: % float: double, single % % See also ACOT, COTD. % Copyright 1984-24 The MathWorks, Inc. % $Revision: 5.7.4.4 $ $Date: 24/12/6 16:34:47 $ y = 1./tan(z); 2. SKALAARIT MATLABin keskeinen tietoalkion on matriisi. Matriisit syötetään hakasulkuja käyttäen (ks. Matriisien syöttö). MATLABissa skalaari eli luku on 1 1-matriisi: matriisi jossa on yksi rivi ja yksi sarake. Se voidaan syöttää ilman hakasulkuja.

2.1 Laskutoimitukset MATLAB Osa 1 9 Skalaareilla laskenta tapahtuu normaaliin tapaan. Desimaaliluvuissa käytetään desimaalipistettä. Laskentaoperaattorit ovat normaalit: Operaatio Operandi Huomautus Yhteenlasku + Vähennyslasku - Kertolasku * Kertomerkki on aina laitettava Jakolasku / Potenssin korotus ^ >> 523+49 572 Monta komentoa voidaan antaa samalla rivillä: >> 2^6, 3*(5+2), (3+4)/5 64 21 1.4 Myös puolipistettä voidaan käyttää erottimena. Tällöin komennon tulos ei tule näytölle. Muuttujiin voidaan tallentaa arvoja. Jos tulosta ei tallenneta muuttujaan, MATLAB tallentaa tuloksen muuttujaan ans. >> 5+6 11 >> 7*ans 77 >> x=-23 x = -23 >> y=7*x y = -161 Laskentajärjestystä voidaan ohjata kaarisuluilla ( ). >> (6.2^4+7.5^3)/(6.2^3*7.5) 1.627 2 V = πr h, missä r on poh- ESIMERKKI. Lasketaan suoran ympyrälieriön tilavuus kaavalla jaympyrän säde ja h on ympyrälieriön korkeus.

MATLAB Osa 1 1 Annetaan muuttujille arvot: >> r=1.2 r = 1.2 >> h=.35 h =.35 Tallennetaan tilavuus muuttujaan V (luku π on pi): >> V=pi*r^2*h V = 1.5834 Muuta muuttujien r ja h arvoja ja laske uusi tilavuus. Käytä komentojen selailuun nuolinäppäimiä. TEHTÄVIÄ 1. Laske katkaistun ympyräkartion tilavuus käyttäen kaavaa V - kartion korkeus h =,92 m - pohjan säde a = 1,26 m - kannen säde b =,83 m. 2 2 a + ab + b = πh, kun 3 Sijoita arvot muuttujiin ja laske kaavaa käyttäen. Laskennan jälkeen muuta lähtöarvoja. Käytä selaamiseen nuolipainikkeita. 2.2 Yleisiä vakioita Seuraava taulukko sisältää yleisimpiä vakioita: Vakio pi exp(1) i tai j eps Inf NaN realmax realmin intmax intmin true false Merkitys Luku π Napierin luku e Imaginaariyksikkö Tietokoneen lukujen esitystarkkuus. Ääretön Ei luku (Not a Number) Suurin reaaliluku tietokoneessa Pienin positiivinen reaaliluku tietokoneessa Suurin kokonaisluku (32-bittinen) Pienin kokonaisluku (32-bittinen) Tosi Epätosi

MATLAB Osa 1 11 >> pi,exp(1) 3.1416 2.7183 Jos haluaa Napierin luvulle käyttää merkintää e, voi määritellä >> e = exp(1) e = 2.7183 Imaginaariyksiköt ovat i ja j. >> i^2-1 >> 1/(2+i).4 -.2i >> (4+5j)/(3+j) 1.7 + 1.1i Koska liukulukuesityksessä reaaliluvut esitetään äärellisellä määrällä bittejä, voi itseisarvoltaan tarpeeksi pienillä luvuilla a olla 1 + a = 1: mutta >> (1+1^-12)-1 1.1e-12 >> (1+1^-16)-1 Vakio eps ilmoittaa tietokoneen lukujen esitystarkkuuden. Se on luvun 1 ja seuraavaksi suuremman desimaaliluvun erotus. >> eps 2.224e-16 >> (1+eps)-1 2.224e-16 >> (1+eps/2)-1 Vakio Inf ei ole matemaattisesti ääretön. Jossain tapauksissa kuitenkin on tarkoituksenmukaista laskea ääretöntä käyttäen. Nollasta poikkeavan reaaliluvun jako nollalla antaa tulokseksi Inf.

MATLAB Osa 1 12 >> 1/ Warning: Divide by zero. Inf >> 1/Inf Epämääräinen numeerinen arvo / antaa tulokseksi NaN: >> / Warning: Divide by zero. NaN >> Inf/Inf NaN On tiedettävä, millä lukualueella tietokone toimii. Jos mennään tämän alueen ulkopuolelle, ei MATLAB enää toimi oikein. >> realmax,realmin,intmax,intmin 1.7977e+38 2.2251e-38 2147483647-2147483648 >> (realmax+1)-realmax >> 2*realmax Inf >> 2*intmax-intmax >> (intmin-1)-intmin Loogisia vakioita true ja false käsitellään myöhemmin. 2.3 Perusfunktiot MATLABissa on käytettävissä tutut perusfunktiot. Huomaa joitain merkintäeroja normaaliin käytäntöön nähden.

MATLAB Osa 1 13 Funktio sqrt(x) exp(x) log(x), log1(x) sin(x), cos(x), tan(x), cot(x) asin(x), acos(x), atan(x), acot(x) sinh(x), cosh(x), tanh(x), coth(x) asinh(x), acosh(x), atanh(x), acoth(x) Merkitys neliöjuuri e-kantainen eksponenttifunktio luonnollinen logaritmi, 1-kantainen logaritmi trigonometriset funktiot arkusfunktiot hyperboliset funktiot areafunktiot Trigonometristen funktioiden argumentti ja arkusfunktioiden arvot ovat radiaaneissa. ESIMERKKEJÄ. >> sqrt(2) 1.4142 >> log(exp(1)) 1 >> sin(pi/2) 1 >> atan(1).7854 Jos haluaa laskea asteissa, voi määritellä Tällöin >> deg = pi/18; muuttujalla deg kertominen muuntaa asteet radiaaneiksi muuttujalla deg jakaminen muuntaa radiaanit asteiksi >> sin(45*deg).771 >> cos(6*deg).5 >> atan(1)/deg 45 Seuraavassa on esitetty lisää perusfunktioita:

MATLAB Osa 1 14 Funktio abs(x) sign(x) antan2(y,x) real(z), imag(z) angle(z) Merkitys itseisarvo etumerkki pisteen (x, y) paikkavektorin vaihekulma. Huom. järjestys! kompleksiluvun z reaaliosa, imaginaariosa kompleksiluvun z vaihekulma ESIMERKKEJÄ. >> atan2(5,3)/deg 59.362 >> angle(3+5i)/deg %Sama arvo! 59.362 >> abs(3+5i) 5.831 Reaaliluvulle sign antaa reaaliluvun merkin (+1 tai 1) tai arvon >> sign(3),sign(-15),sign() 1-1 mutta imaginaariluvulle z funktion sing(z) arvo on z z >> z=3-7i; >> sign(z).3939 -.9191i >> z/abs(z).3939 -.9191i Lukujen kokonaisluvuksi pyöristämiseen on käytettävissä seuraavia funktioita:

MATLAB Osa 1 15 Funktio round(x) fix(x) floor(x) ceil(x) Merkitys Pyöristäminen lähimpään kokonaislukuun Kokonaisluvuksi pyöristäminen kohti nollaa Lattiafunktio: alaspäin kokonaisluvuksi pyöristäminen Kattofunktio: ylöspäin kokonaisluvuksi pyöristäminen ESIMERKKEJÄ. >> round(-2.7),round(2.7) -3 3 >> fix(-2.7),fix(2.7) -2 2 >> floor(-2.7),floor(2.7) -3 2 >> ceil(-2.7),ceil(2.7) -2 3 TEHTÄVIÄ 1. Laske lausekkeiden arvot: 33,2 44,3 2,3 4,2 + 2, 5 sin ( 3) sin ( 3 ) 3 e 3 arccos (esitä tulos asteissa!) 2 3. MATRIISIT Matriisi on suorakulmion muotoinen lukutaulukko. Jos matriisissa on m riviä ja n saraketta, matriisin sanotaan olevan kertalukua m n. Puhutaan myös m n-matriisista. Erityisesti Luvut eli skalaarit ovat 1 1-matriiseja. Vaakavektorit ovat matriiseja, joissa on yksi rivi. Pystyvektorit ovat matriiseja, joissa on yksi sarake. Matriisin alkiot a indeksoidaan siten, että ij ensimmäinen indeksi i ilmoittaa rivin toinen indeksi j ilmoittaa sarakkeen. Indeksointi alkaa luvusta 1.

3.1 Matriisien syöttö Matriisit syötetään hakasulkujen väliin vaakariveittäin seuraavasti: MATLAB Osa 1 16 rivin alkiot erotetaan toisistaan välilyönnillä tai pilkulla rivit erotetaan toisistaan Enterin painalluksella tai puolipisteellä. >> A=[1 2 3 4 5 6 7 8 9] 1 2 3 4 5 6 7 8 9 >> B=[-3,2,;4,4,-2] B = -3 2 4 4-2 Syötetään vielä vaaka- ja pystyvektorit >> u=[1-3] u = 1-3 >> v=[1;-4;-6] v = 1-4 -6 Matriisin alkioita syötettäessä lausekkeissa ei saa olla ylimääräisiä välilyöntejä, koska matriisin alkiot voidaan erottaa toisistaan myös välilyönnillä. >> C=[2+exp(1) 2+3i] % Ei ylimääräisiä välilyöntejä 4.7183 2. + 3.i >> C=[2 + exp(1) 2 + 3i] % Operaattorit erotettu välilyönneillä: oikein 4.7183 2. + 3.i >> C=[2 +exp(1) 2 +3i] % Ylimääräisiä välilyöntejä: väärin! 2. 2.7183 2. + 3.i Merkintä [ ] tarkoittaa tyhjää matriisia, jossa ei ole yhtään alkiota. MATLABissa voidaan määritellä tyhjä matriisi, jota voidaan täydentää myöhemmin. >> C=[] C = [] Matriisin alkioihin viitataan ilmoittamalla rivi ja sarake, jolla alkio sijaitsee. Seuraavassa on tulostettu matriisin A 2. rivin 1. alkio:

MATLAB Osa 1 17 >> A(2,1) 4 Vektorin alkioihin voidaan viitata yhdellä indeksillä: >> u(3) -3 Matriisin riveihin ja sarakkeisiin viitataan seuraavasti: A(i, :) matriisin A i:s rivi A(:, j) matriisin A j:s sarake Matriisin A 2. rivi ja 3. sarake: >> A(2,:) 4 5 6 >> A(:,3) 3 6 9 Sisäisesti matriisi on tallennettu pystyvektorina asettamalla sarakkeet peräkkäin. Matriisin alkioihin voidaan siis aina viitata myös yhdellä indeksillä. Komento A(:) tulostaa matriisin pystyvektorina. >> A >> A(:) 1 4 7 2 5 8 3 6 9 >> A(6) 8 1 2 3 4 5 6 7 8 9 Matriisin kertaluku saadaan selville komennolla size. Komento antaa tulokseksi 1 2-matriisin, jonka alkiot sisältävät matriisin kertaluvun. >> size(b) 2 3

Vektorin dimensio saadaan selville komennolla length: >> length(v) 3 MATLAB Osa 1 18 Seuraava komento tallentaa matriisin rivien määrän muuttujaan m ja sarakkeiden määrän muuttujaan n. >> [m,n]=size(b) m = 2 n = 3 Seuraavassa taulukossa on esitetty matriisinluontikomentoja: Komento eye(n) eye(m,n) eye(size(a)) zeros(n) zeros(m,n) Toiminto n n-yksikkömatriisi m n-yksikkömatriisi: matriisi, jonka lävistäjällä on ykkösiä, muualla nollia yksikkömatriisi, jolla on sama kertaluku kuin matriisilla A n n-matriisi, jonka alkiot ovat nollia m n-matriisi, jonka alkiot ovat nollia zeros(size(a)) nollamatriisi, jolla on sama kertaluku kuin matriisilla A ones(n) ones(m,n) ones(size(a)) n n-matriisi, jonka alkiot ovat ykkösiä m n-matriisi, jonka alkiot ovat ykkösiä matriisi, jonka alkiot ovat ykkösiä ja jolla on sama kertaluku kuin A:lla ESIMERKKEJÄ. >> eye(3) 1 1 1 >> x=[2-3 7 1]; zeros(size(x)) >> 15*ones(1,9) 15 15 15 15 15 15 15 15 15 TEHTÄVIÄ. 1. Muodosta 15 7-matriisi, jonka kaikki alkiot ovat lukuja 3. 3.1.1 Satunnaismatriisit Komento rand antaa satunnaisluvun, joka on tasaisesti jakautunut välillä [, 1]. Satunnaismatriiseja, joiden alkiot ovat tasaisesti jakautuneet välillä, 1, voi luoda komennoilla [ ]

MATLAB Osa 1 19 rand(n): n n-satunnaismatriisi. rand(m,n): m n-satunnaismatriisi rand(size(a)): satunnaismatriisi, jolla on sama kertaluku kuin matriisilla A Vastaavasti komennolla randn saadaan satunnaislukuja, jotka ovat N(,1)-normaalijakautuneita. ESIMERKKEJÄ. Muodostetaan 3 5-matriisi, jonka alkiot ovat tasan jakautuneet välillä [ 1,1]. >> a=-1; b=1; >> x=a+(b-a)*rand(3,5) x = 9.26 -.284 -.876-1.159 8.4363-5.3772 7.826-9.6299 2.386 4.7641 2.1369 5.2419 6.4281 5.8387-6.4747 Muodostetaan 2 7-satunnaismatriisi, jonka alkiot ovat tasan jakautuneita kokonaislukuja välillä..9: >> floor(1*(rand(2,7))) 6 9 2 7 8 1 5 2 5 3 1 5 3 Muodostetaan satunnaisvektori, jonka alkiot ovat tasan jakautuneita kokonaislukuja välillä 5..12. Koska komento 5+(13-5)*rand tuottaa välillä [ 5,13]] tasan jakautuneita satunnaislukuja, saadaan välillä 5..12 tasan jakautuneita kokonaislukuja komennolla floor(5+8*rand). Muodostetaan 7-vektori: >> floor(5+8*rand(1,7)) 7 6 5 1 8 12 8 Satunnaislukujen arvo määräytyy satunnaislukugeneraattorin sisäisestä tilasta. Komento s = rand( state ); lukee satunnaislukugeneraattorin tilan muuttujan s. Komento rand( state,s); asettaa satunnaislukugeneraattorin tilaan s. Satunnaislukugeneraattorin voi alustaa alkutilaan komennolla rand( state,);. alustaa uuteen satunnaiseen tilaan komennolla rand( state,sum(1*clock));. ESIMERKKEJÄ. Muodostetaan samat satunnaisluvut kahteen kertaan >> s=rand('state'); >> rand(1,7)

MATLAB Osa 1 2.6648.89.2391.2786.1722.5253.134 >> rand('state',s); >> rand(1,7) TEHTÄVIÄ.6648.89.2391.2786.1722.5253.134 1. Muodosta 3 4-matriisi, jonka alkiot ovat tasan jakautuneet välillä [ 2,5] 2. Muodostetaan 1 7-satunnaismatriisi, jonka alkiot ovat tasan jakautuneita kokonaislukuja välillä 4..1. 3. Toteuta MATLABilla lottoarvonta. Lotossa arvotaan 7 lukua väliltä 1 39: Muodosta satunnainen 7-vektori, jonka alkiot ovat satunnaisia lottonumeroita. Jos joukossa on samoja lukuja suorita arvonta uudestaan. Lajittele luvut suuruusjärjestykseen komennolla sort (ks helppi). Lottoarvonnassa on tietenkin syytä alussa alustaa satunnaislukugeneraattori satunaiseen tilaan. 4. Toteuta MATLABilla veikkausarvonta. Veikkauksessa on 12 kohdetta, joissa kussakin jokin merkinnöistä 1, x, 2. Toteuta tämä Matlabilla korvaamalla x luvulla. Muodosta siis satunainen 12-pystyvektori, jonka alkiot ovat satunnaislukuja, 1, 2. Tässäkin on tietenkin syytä alussa alustaa satunnaislukugeneraattori satunaiseen tilaan. 3.2 Vektorien syöttö MATLABissa kaksoispisteellä on tärkeä merkitys. Edellä oli jo esillä kuinka matriisin rivi- ja sarakevektorit muodostetaan kaksoispistettä käyttäen. Myös vektoreiden muodostamisessa voidaan käyttää kaksoispistettä. Vaakavektoreita voidaan luoda seuraavasti: a:b on vektori, jonka alkiot muodostavat lukujonon a, a + 1, a + 2,, lukuun b asti. Tuloksena on tyhjä matriisi [ ], jos a > b. a: :b on vektori, jonka alkiot muodostavat lukujonon a, a +, a + 2, lukuun b asti. Tuloksena on tyhjä matriisi [ ], jos lisäys on rajoihin nähden vääränmerkkinen. linspace(a,b) on vektori, joka koostuu 1:sta välillä [ b] a c, c,, c, b., 2 3 99 a, tasavälisesti olevasta luvusta linspace(a,b,n) on vektori, joka koostuu n:sta välillä [ a, b] tasavälisesti olevasta luvusta. Pystyvektori saadaan transponoimalla vaakavektori: jos v on vaakavektori, niin v on pystyvektori 1. ESIMERKKEJÄ >> v1 = 2:8 v1 = 1 Transpoosia käsitellään tarkemmin myöhemmin.

2 3 4 5 6 7 8 MATLAB Osa 1 21 >> v2 = 1.2: 7.9 v2 = 1.2 2.2 3.2 4.2 5.2 6.2 7.2 >> v3 = 1.2:.5:4.1 v3 = 1.2 1.7 2.2 2.7 3.2 3.7 >> linspace(1.2,4.1,6) 1.2 1.78 2.36 2.94 3.52 4.1 >> v = (1:3:1)' v = 1 4 7 1 TEHTÄVIÄ. 1. Muodosta vaakavektori, jonka alkiot ovat nousevassa järjestyksessä välillä [ π, π],1 välein. 2. Muodosta vaakavektori, jonka alkiot ovat laskevassa järjestyksessä välillä [ π, π],1 välein. 2 luvun 2 luvun 3. Muodosta pystyvektori, jonka alkioiden määrä on 2 ja alkiot ovat tasavälisesti välillä [ 1,3]. 3.3 Osamatriisit ja lohkomatriisit Matriisin A osamatriisilla tarkoitetaan matriisia, joka on muodostettu matriisin A alkioista. Matriisin A alimatriisi on osamatriisi, jossa alkioiden järjestys on sama kuin matriisissa A. Seuraavaan taulukkoon on koottu m n-matriisi A osamatriisin muodostuskomentoja. Osa näistä on ollut esillä jo aiemmin. Komento A(i,j) A(i,:) A(:,j) A(i:k,:) A(:,j:k) A(i:k,j:p) A(:) A(j:k) A([i1,i2, ],:) A(:,[j1,j2, ]) Toiminto i:nnen rivin ja j:nnen sarakkeen alkio i:s rivi j:s sarake Alimatriisi, joka koostuu riveistä i, i+1,, k Alimatriisi, joka koostuu sarakkeista j, j+1,, k Alimatriisi, joka koostuu riveistä i k ja sarakkeista j p. Pystyvektori, joka on saatu asettamalla matriisin A sarakkeet peräkkäin. Vektorin A(:) alkiot j k vaakavektorina. Osamatriisi, joka koostuu riveistä i1, i2, Osamatriisi, joka koostuu sarakkeista j1, j2, A([i1,i2, ],[j1,j2, ]) Osamatriisi, joka koostuu riveistä i1, i2, ja sarakkeista j1, j2,

MATLAB Osa 1 22 ESIMERKKEJÄ. >> A=[1 2 3; 4 5 6; 7 8 9] 1 2 3 4 5 6 7 8 9 >> A(2:3,:) 4 5 6 7 8 9 >> A([3,2],1:2) 7 8 4 5 Avainsana end tarkoittaa indeksin viimeistä arvoa, end 1 viimeistä edellistä >> A(end,:) 7 8 9 >> A(end-1,:) 4 5 6 Matriisista A poistetaan i:s rivi komennolla A(i,:) = [ ] j:s sarake komennolla A(:,j) = [ ] >> A(2,:)=[] 1 2 3 7 8 9 Matriisin osa voidaan muuttaa toiseksi sijoituskäskyllä. >> A=[1:4;5:8] 1 2 3 4 5 6 7 8 >> A(:,3:4)=eye(2) 1 2 1

MATLAB Osa 1 23 5 6 1 Lohkomatriisi on matriisi, jonka alkiot ovat matriiseja. Alkioina olevien matriisien on oltava kertaluvultaan yhteen sopivia. Näin muodostuu isompi matriisi, jonka alimatriiseja lohkot ovat. Lohkomatriiseja muodostetaan samaan tapaan kuin tavallisia matriiseja. >> B=[1 2;3 4] B = 1 2 3 4 >> [B,zeros(2);eye(2),1*B] 1 2 3 4 1 1 2 1 3 4 Sopivaa kertalukua olevia matriiseja voidaan asettaa päällekkäin käyttäen operaattorina rivinvaihtomerkkiä ; peräkkäin käyttäen operaattorina välilyöntiä tai, >> A=rand(2,3).8132.1389.1987.99.228.638 >> B=ones(size(A)) B = 1 1 1 1 1 1 >> C=[A;B] C =.8132.1389.1987.99.228.638 1. 1. 1. 1. 1. 1. >> D=[A,B] D =.8132.1389.1987 1. 1. 1..99.228.638 1. 1. 1. Tyhjän matriisin [ ] alle tai perään voidaan asettaa millainen matriisi tahansa: >> [[],D].8132.1389.1987 1. 1. 1..99.228.638 1. 1. 1. TEHTÄVIÄ. 1. Muodosta lohkomatriiseja käyttäen kuvan kaltainen matriisi

1 1 1 5 5 5 1 5 5 5 1 5 5 5 1 jonka lohkot ovat kertalukua 7 7. 3.4 Matriisioperaatiot MATLAB Osa 1 24 Seuraavassa esitellään matriisilaskennasta tutut matriisilaskennan perusoperaatiot yhteenlasku ja kertolasku. Esimerkeissä käytetään seuraavia matriiseja: >> [1 2 3; 4 5 6; 7 8 9] 1 2 3 4 5 6 7 8 9 >> B = [3-2 1; 5 3-2; 4 1 ] B = 3-2 1 5 3-2 4 1 Matriisien yhteenlasku ja vähennyslasku on määritelty, jos matriiseilla on sama kertaluku. Yhteenlaskussa vastinalkiot lasketaan yhteen; vähennyslaskussa vastinalkiot vähennetään. >> A+B 4 4 9 8 4 11 9 9 Yhteenlaskun erikoistapauksena on skalaarin lisääminen. Tällöin skalaari lisätään jokaiseen alkioon. >> A+1 11 12 13 14 15 16 17 18 19 Kaksi matriisia voidaan kertoa keskenään, jos kertojassa on yhtä monta saraketta kuin kerrottavassa rivejä. Tulon AB i:nnen rivin ja j:nnen sarakkeen alkio on A:n i:nnen rivin ja B:n j:nnen sarakkeen vastinalkioiden tulojen summa. Tulossa AB on yhtä monta riviä kuin matriisissa A yhtä monta saraketta kuin matriisissa B Kertolaskun merkkinä on *.

MATLAB Osa 1 25 >> A*B 25 7-3 61 13-6 97 19-9 Kertolaskun erikoistapaus on skalaarilla kertominen. Tällöin skalaarilla kerrotaan jokainen matriisin alkio. >> -1*A -1-2 -3-4 -5-6 -7-8 -9 Neliömatriisin positiivisella kokonaislukupotenssilla tarkoitetaan neliömatriisin kertomista k kpl k itsellään seuraavasti: AA A. Potenssiin korotuksen merkkinä on ^. >> A^4 756 9288 1116 17118 2133 24948 26676 32778 3888 >> A*A*A*A 756 9288 1116 17118 2133 24948 26676 32778 3888 Matriisin transpoosissa muutetaan rivit sarakkeiksi. Reaalialkioisen matriisin A transpoosi on A : >> A=[-3,,4;5,1,-2] -3 4 5 1-2 >> A' -3 5 1 4-2 Matriisi, jonka sarakkeina ovat annetut vektorit: >> C=[1:4;5:8;9:12]' C = 1 5 9 2 6 1 3 7 11 4 8 12 Itse asiassa A ottaa matriisin alkioista myös kompleksikonjugaatit. Pelkkä transpoosi muodostetaan komennolla A. :

MATLAB Osa 1 26 >> A=[-i,2+5i;7+2i,4] - 1.i 2. + 5.i 7. + 2.i 4. >> A' + 1.i 7. - 2.i 2. - 5.i 4. >> A.' - 1.i 7. + 2.i 2. + 5.i 4. Reaalialkioisille matriiseille nämä ovat tietenkin samat. 3.5 Taulukko-operaatiot Aritmeettisia operaatioita, jotka suoritetaan kahden matriisin vastinalkioiden kesken sanotaan taulukko-operaatioiksi tai alkioittaisiksi operaatioiksi. Ne vastaavat taulukkolaskennassa käytettyjä operaatioita. Taulukko-operaatioissa matriisien kertalukujen on oltava samoja. Taulukko-operaatio saadaan laittamalla piste operaattorin eteen. Esimerkeissä käytetään seuraavia matriiseja: >> [1 2; 3 4], B = [5 6; 2-3] 1 2 3 4 B = 5 6 2-3 Matriisien yhteen- ja vähennyslasku ovat myös taulukko-operaatioita. Alkioittaisessa kertolaskussa lasketaan vastinalkioiden tulo. Operaatiota merkitään.* >> A.*B 5 12 6-12 Alkioittaisessa jakolaskussa lasketaan vastinalkioiden osamäärä. Alkioittaisia jakolaskuja on kaksi: jako oikealta./ ja jako vasemmalta.\ >> A./B.2.3333 1.5-1.3333 >> A.\B 5. 3..6667 -.75 Alkioittaisen jakolaskun erikoistapaus on skalaarin jakaminen matriisilla: tuloksena on jakajamatriisin kokoinen matriisi, joka saadaan jakamalla skalaari alkioittain jakajamatriisilla.

MATLAB Osa 1 27 >> 4./A 4. 2. 1.3333 1. Alkioittaisessa potenssiin korotuksessa korotetaan kantamatriisi alkioittain eksponenttimatriisin osoittamaan potenssiin. Operaatiota merkitään.^ >> A.^B 1. 64. 9..156 ESIMERKKI. Olkoon >> x=1:5 x = 1 2 3 4 5 sin x Lasketaan funktion 2 1+ x arvo vektorin x alkioilla. Huomaa taulukko-operaatioiden käyttö! >> sin(x)./(1+x.^2).427.1819.141 -.445 -.369 Alkioittaisen potenssiin korottamisen erikoistapauksia on kaksi: eksponentti on skalaari. Tällöin matriisin jokainen alkio korotetaan skalaarin osoittamaan potenssiin. kantamatriisi on skalaari. Tällöin tuloksena on eksponenttimatriisin kokoinen matriisi, joka saadaan korottamalla kantaluku alkioittain eksponenttimatriisin osoittamaan potenssiin. >> A.^2 1 4 9 16 >> 2.^A 2 4 8 16 Matriisi A voidaan peilata vaakasuunnassa komennolla fliplr(a) peilata pystysuunnassa komennolla flipud(a) kiertää positiiviseen suunta 9 komennolla rot9(a) >> A=[1:4;5:8;9:12] 1 2 3 4 5 6 7 8

MATLAB Osa 1 28 9 1 11 12 >> fliplr(a) 4 3 2 1 8 7 6 5 12 11 1 9 >> flipud(a) 9 1 11 12 5 6 7 8 1 2 3 4 >> rot9(a) 4 8 12 3 7 11 2 6 1 1 5 9 TEHTÄVIÄ. 1. Muodosta vektori x, joka koostuu välillä 1 1 olevista luvuista.5:n välein. Luvut ovat siis 1; 1,5; 2; 2,5;, 1. Tee tämä yhdellä komennolla. Laske seuraavien funktioiden arvot vektorin x alkioilla. a) 1 x 2 b) x c) xsin x d) 3 5x 2 2x + e 2. Komento fliplr kääntää matriisin sarakevektorit vastakkaiseen järjestykseen. Toteuta komento lohkomatriisikomentoja ja avainsanaa end käyttäen. Testaa tulos. 3. Komento flipud kääntää matriisin rivivektorit vastakkaiseen järjestykseen. Toteuta komento lohkomatriisikomentoja ja avainsanaa end käyttäen. Testaa tulos. 3.5.1 Taulukkofunktiot Taulukko-operaatioina voidaan pitää luvussa 2.3 esiteltyjä matematiikan perusfunktioita, koska ne operoivat matriisiin alkioittain. >> sqrt(a) 1. 1.4142 1.7321 2. >> exp(a) 2.7183 7.3891 2.855 54.5982 >> sin([pi,;pi/2,-pi/4]). 1. -.771 Esitetään vielä muutama taulukkolaskennan tyyppinen funktio: x

MATLAB Osa 1 29 Funktio sum(x) prod(x) max(x), min(x) mean(x) std(x) cumsum(x) sort(x) Toiminto vektorin x alkioiden summa vektorin x alkioiden tulo vektorin x suurin (pienin) alkio vektorin x alkioiden keskiarvo vektorin x alkioiden keskihajonta vektorin x kumuloituva summa vektorina lajitellaan vektorin x alkiot nousevaan suuruusjärjestykseen Funktion cumsum(x) kumuloituva summa tarkoittaa seuraavaa: cumsum(x) = [x(1), x(1)+x(2), x(1)+x(2)+x(3), ] Jos edellä argumenttina on matriisi, suoritetaan laskut erikseen matriisin sarakevektoreille ja tulos esitetään vaakavektorina. Funktioiden cumsum ja sort tapauksessa tulos on samaa kertalukua oleva matriisi, muissa tapauksissa tavallinen vaakavektori. ESIMERKKEJÄ. Käytetään esimerkeissä satunnaismatriiseja, joissa alkiot ovat välille -9 9 tasan jakautuneita satunnaislukuja. Koska komento 19*rand-9 tuottaa välillä [ 9,1] olevia satunnaislukuja saadaan nämä aikaiseksi komennolla floor(19*rand-9) >> x=floor(19*rand(1,1)-9) x = -2-9 6 2 1 3 4-7 -9-4 >> sum(x) -15 >> mean(x) -1.5 >> cumsum(x) -2-11 -5-3 -2 1 5-2 -11-15 >> sort(x) -9-9 -7-4 -2 1 2 3 4 6 >> A=floor(19*rand(3,4)-9) 9 8 6 6-1 -4 7 7 9 7-9 -3 >> cumsum(a) 9 8 6 6 8 4 13 13 17 11 4 1 >> cumsum(a(:))'

MATLAB Osa 1 3 9 8 17 25 21 28 34 41 32 38 45 42 >> max(a) 9 8 7 7 >> max(a(:)) % Matriisin A suurin alkio 9 Jos vektorin alkioissa on NaN, niin komennon sum tulos on NaN. Tällöin on käytettävä komentoa 1 nansum, joka jättää arvot NaN huomioimatta. Vastaavasti on komennot nanmax, nanmin, nanmean ja nanstd. >> A=[1:4;2 NaN,, 4;-5,3,NaN, 1] 1 2 3 4 2 NaN 4-5 3 NaN 1 >> sum(a) -2 NaN NaN 9 >> nansum(a) -2 5 3 9 Kertomafunktio n! voidaan laskea tulona prod(1:n) tai suoraan komennolla factorial(n) Komento >> prod(1:1) 36288 >> factorial(1) 36288 mod(x, y) muodostaa reaalilukujen x ja y jakolaskun x/y jakojäännöksen. Tarkemmin mod( x, y) = x floor( x / y) y Tulos on samanmerkkinen kuin y. Komennossa x ja y voivat olla myös samaa kertalukua olevia matriiseja, jolloin jakojäännös muodostetaan alkioittain. ESIMERKKEJÄ. >> a=[12,-12,12,-12] a = 12-12 12-12 1 Komennot löytyvät Statistic Toolboxista.

MATLAB Osa 1 31 >> b=[5,5,-5,-5] b = 5 5-5 -5 >> mod(a,b) 2 3-3 -2 >> x=12.4; y=5.1; >> mod(x,y) 2.2 >> %Tarkistetaan: >> x/y 2.4314 >> floor(ans) 2 >> x-ans*y 2.2 Komento magic(n) muodostaan taikaneliön. Taikaneliö on nxn-matriisi, jossa lukujen summa on sama joka vaaka- ja pystyriveillä. Myös neliön lävistäjien summa on sama. ESIMERKKI. Tarkistetaan summat 5x5-taikaneliölle. Seuraavassa on käytetty komentoa diag, joka muodostaa matriisin lävistäjäalkioista koostuvan pystyvektorin. >> A=magic(5) 17 24 1 8 15 23 5 7 14 16 4 6 13 2 22 1 12 19 21 3 11 18 25 2 9 >> sum(a) %Sarakkeiden summat 65 65 65 65 65 >> sum(a') %Rivien summat 65 65 65 65 65 >> sum(diag(a)) %Lävistäjän alkioiden summa 65 >> sum(diag(fliplr(a))) %Lävistäjäsumma vas. alanurk. oik. ylänurkk. 65 TEHTÄVIÄ

MATLAB Osa 1 32 1. Muodosta 7 7-satunnaismatriisi, jonka alkiot ovat kokonaislukuja välillä 16. Määritä matriisin sarakkeiden ja rivien keskiarvot. Määritä myös matriisin kaikkien alkioiden keskiarvo. Tarkista tämä laskemalla kaikkien alkioiden summa ja jakamalla se matriisin alkioiden määrällä. 2. Matriisin A suurin alkio voidaan määrittää komennolla max(a(:)). Käyttäen komentoa max suurin alkio voidaan määrittää myös toisin, miten? Ohje: mieti komennon max tulosta matriisille. Kokeile komentoa! 3. Selvitä kokeilemalla, mikä on suurin luku, jonka kertoma voidaan laskea MATLABilla? 4. LUKUJEN ESITYSMUODOT MATLAB suorittaa laskut pääasiassa kaksoistarkkuuden liukuluvuilla jolloin laskentatarkkuus on noin 16 numeroa. Lukujen esitysmuoto ei vaikuta laskennan tarkkuuteen. Luvut esitetään oletusarvoisesti kokonaislukuina tai 4-desimaalisina desimaalilukuina. Oletusarvo palautetaan komennolla format. Jos matriisin kaikki alkiot ovat kokonaislukuja, niin ne esitetään kokonaislukuina. Jos ainakin yksi alkio on desimaaliluku, niin kaikki alkiot esitetään desimaalilukuina. Komennolla format tyyppi, muutetaan lukujen esitysmuoto muotoon tyyppi. Seuraava taulukko sisältää suuntaa-antavan esitysmuotojen kuvauksen Tyyppi Kuvaus short 5-numeroinen esitysmuoto, oletusarvo short e 5-numeroinen eksponenttimuoto short g Parempi 5-numeroisesta kiinteästä ja desimaalimuodosta long 15-numeroinen skaalattu esitysmuoto long e 15-numeroinen eksponentti long g Parempi 5-numeroisesta kiinteästä ja desimaalimuodosta rat Pienten kokonaislukujen osamäärä loose Väljä muoto, lisää rivinvaihto luettavuuden parantamiseksi compact Kompakti esitys muoto. Vastakohta muodolle loose bank Pankkimuoto: kaksi desimaalia + Positiivinen luku: +, negatiivinen luku: -, nolla: tyhjä. Käytetään isojen matriisien muodon esittämiseen. hex Heksadesimaaliluvut. ESIMERKKEJÄ. >> format short >> pi 3.1416

MATLAB Osa 1 33 >> format short e >> pi 3.1416e+ >> format short g >> pi 3.1416 >> format long >> pi 3.14159265358979 >> format long e >> pi 3.141592653589793e+ >> format long g >> pi 3.14159265358979 >> format rat >> pi 355/113 >> format bank >> pi 3.14 >> format + >> [2-3 4; -1 4] +-+ - + >> format %Palautetaan lähtötilanne >> pi 3.1416 TEHTÄVIÄ. 1. Kuinka paljon luvun π rationaaliarvo eroaa luvun π desimaaliarvosta?