Matemaattiset ohjelmistot A. Osa 2: MATLAB

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

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44

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

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

Valitse ruudun yläosassa oleva painike Download Scilab.

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

1.1. Määritelmiä ja nimityksiä

BM20A0700, Matematiikka KoTiB2

Ohjelman käynnistäminen

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

Matlabin perusteita Grafiikka

Matriiseista. Emmi Koljonen

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

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

Matlab-perusteet Harjoitustehtävien ratkaisut

ELEC-C5210 Satunnaisprosessit tietoliikenteessä Harjoitus M1,

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

Johdatus tekoälyn taustalla olevaan matematiikkaan

BL40A0000 Säätötekniikan ja signaalinkäsittelyn

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

mlgrafiikka 1. Piirrä samaan kuvaan funktioiden cos ja sin kuvaajat välillä [ 2π, 2π] Aloita tyyliin: 2. Piirrä

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

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

Harjoitus 1: Johdatus matemaattiseen mallintamiseen (Matlab)

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

Harjoitus 1: Johdatus matemaattiseen mallintamiseen (Matlab)

Insinöörimatematiikka D

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

Scilab ohjelman alkeisohjeet

Zeon PDF Driver Trial

Insinöörimatematiikka D

MATLAB 7.1 Komentoikkunaharjoitus. Matti Lähteenmäki

1 Matriisit ja lineaariset yhtälöryhmät

Lineaarialgebra ja matriisilaskenta I

Matriisien tulo. Matriisit ja lineaarinen yhtälöryhmä

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

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

9 Matriisit. 9.1 Matriisien laskutoimituksia

Harjoitus 10: Mathematica

Matemaattiset ohjelmistot 1-2 ov, 2-3 op

Harjoitus 2: Ohjelmointi (Matlab)

Harjoitus 1 -- Ratkaisut

Harjoitus 2: Ohjelmointi (Matlab)

Ortogonaalinen ja ortonormaali kanta

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

Mat-1.C Matemaattiset ohjelmistot

Ennakkotehtävän ratkaisu

matlabteht/mlperusteet, Matlab-perusteita 1. mlp001.tex

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

T Sovellusohjelmat Matlab osa 4: Skriptit, funktiot ja kontrollirakenteet

MATLABin alkeita J.Merikoski JYFL 2009 fysp120

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

Lineaarialgebra ja matriisilaskenta I

Insinöörimatematiikka D

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

Insinöörimatematiikka D

Insinöörimatematiikka D

Käänteismatriisi 1 / 14

Matlab- ja Maple- ohjelmointi

Oppimistavoitematriisi

Ville Turunen: Mat Matematiikan peruskurssi P1 1. välikokeen alueen teoriatiivistelmä 2007

2.1.4 har:linyryhmat03. Octavella. Katso ensin esimerkit???? esim:yroctave01 Octaven antamat vastausehdotukset.

Harjoitus 1 -- Ratkaisut

Yhteenlaskun ja skalaarilla kertomisen ominaisuuksia

Talousmatematiikan perusteet: Luento 8. Vektoreista ja matriiseista Vektorien peruslaskutoimitukset Lineaarinen riippumattomuus Vektorien sisätulo

Talousmatematiikan perusteet: Luento 11. Lineaarikuvaus Matriisin aste Käänteismatriisi

Aalto-yliopisto, Matematiikan ja Systeemianalyysin laitos Mat-1.C Matemaattiset ohjelmistot

C = {(x,y) x,y R} joiden joukossa on määritelty yhteen- ja kertolasku seuraavasti

Matematiikka B2 - Avoin yliopisto

Harjoitus 3 -- Ratkaisut

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

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

Tiivistelmä matriisilaskennasta

Matriisilaskenta Laskuharjoitus 5 - Ratkaisut / vko 41

Lineaarialgebra II, MATH.1240 Matti laaksonen, Lassi Lilleberg

Talousmatematiikan perusteet: Luento 9

1 Ominaisarvot ja ominaisvektorit

Laskennallinen lineaarinen algebra ja geometria

ALOITUSOPAS. Versio 0.8

3.1 Lineaarikuvaukset. MS-A0004/A0006 Matriisilaskenta. 3.1 Lineaarikuvaukset. 3.1 Lineaarikuvaukset

Oppimistavoitematriisi

Matematiikka B2 - TUDI

Matriisilaskenta. Harjoitusten 3 ratkaisut (Kevät 2019) 1. Olkoot AB = ja 2. Osoitetaan, että matriisi B on matriisin A käänteismatriisi.

MATRIISIN HESSENBERGIN MUOTO. Niko Holopainen

3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset

KAAVAT. Sisällysluettelo

Kompleksiluvut., 15. kesäkuuta /57

Johdatus matematiikkaan

Muuttujan sisällön näet kirjoittamalla sen nimen ilman puolipistettä

Matriisinormeista. Sanni Carlson. Matematiikan pro gradu

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

5 Ominaisarvot ja ominaisvektorit

Insinöörimatematiikka D

Luento 5. Timo Savola. 28. huhtikuuta 2006

Inversio-ongelmien laskennallinen peruskurssi Luento 3

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/81

Lineaarialgebra ja matriisilaskenta I

Numeeriset menetelmät

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

Transkriptio:

Matemaattiset ohjelmistot 802364A Osa 2: MATLAB Mikko Orispää 30. lokakuuta 2013

Sisältö 1 MATLAB 2 1.1 Peruslaskutoimitukset......................... 2 1.2 Muuttujat................................ 3 1.3 Perusfunktiot.............................. 4 1.4 Vektorit................................. 5 1.5 Vektorilaskentaa............................. 9 1.6 Matriisit................................. 11 1.7 Matiisifunktioita............................ 17 1.8 Grafiikkaa................................ 18 1.9 3D-kuvat................................. 19 1.10 Loogiset operaattorit.......................... 20 1.11 Kontrollirakenteet............................ 21 1.12 Funktiot ja skriptit........................... 22 1.13 File I/O................................. 23 1.14 Muuta.................................. 23 1

Luku 1 MATLAB 1.1 Peruslaskutoimitukset Yhteen-, vähennys-, kerto- ja jakolasku >> 1 + 1 2 >> 2 * 3-4 / 3 4.6667 Potenssiin korotus >> 2^2 4 >> 2^(-2) 0.25 2

Sulkeet >> 2 * (3 + 4) 14 >> 2 * ( (1 + 2) / (3 + 4) ) 0.8571429 Huom! Vain kaarisulkeita voi käyttää laskutoimitusten jaotteluun. Kaari- ja hakasulkeet on varattu muuhun käyttöön. Kompleksiluvut Imaginääriyksikkönä voi käyttää joko kirjainta i tai j: >> (2 + i) + (3-3j) 5.0000-2.0000i Huom! Jos kirjaimia i tai j käytetään omien muuttujien niminä, eivät ne enää toimi imaginääriyksikköinä! >> i = 1; >> 2 * (3 + i) 8 1.2 Muuttujat >> 3^2-1 8 >> ans * 5 40 3

Matlab nimeää vastaukset muuttujaksi ans, jota voi käyttää seuraavissa laskutoimituksissa. Omat muuttujat voi numetä haluamallaan tavalla. Muuttujannmet saavat sisältää kirjaimia (a-z ja A-Z), numeroita 0-9 ja alaviivan _. Muuttujan nimi ei saa alkaa numerolla! >> a_01 = 12; >> muuttuja_b = 3; >> a_01 + muuttuja_b 15 Kuten kompleksilukujen yhteydessä oli mainittu, kirjainten i ja j käyttöä muuttujien niminä kannattaa välttää, jotta imaginääriyksikkö toimii totutulla tavalla! 1.3 Perusfunktiot Trigonometriset funktiot >> sin(0.5) 0.4794 >> atan(3) 1.2490 Trigonometristen funktioiden argumentit annetaan radiaaneina. Muita perusfunktioita >> sqrt(2) 1.4142 >> exp(1) 4

2.7183 >> log(exp(4)) 4 >> log10(1000) 3 1.4 Vektorit Matlabissa kaikki objektit ovat matriiseja (Matlab tulee sanoista MATrix LABoratory). Vektorit ovat 2D-matriiseja, joiden toinen dimensio on 1. Vektorien konstruointiin käytetään hakasulkeita. Vaakavektorissa elementit erotellaan pilkulla tai välilyönnillä: >> h = [1,2,3] h = 1 2 3 >> v = [1 2 3-4] v = 1 2 3-4 >> length(v) 4 >> size(v) 1 4 Pystyvektorissa rivit erotellaan puolipisteellä: >> w = [1; -4; 2] w = 1 5

-4 2 >> length(w) 3 >> size(w) 3 1 Kaksoispistenotaatio Kaksoispisteellä saadaan helposti konstruoitua rivivektoreita: >> 1:4 1 2 3 4 >> 5:12 5 6 7 8 9 10 11 12 Yleisemmin notaatio a:b:c tuottaa rivivektorin, jossa a on ensimmäinen alkio ja b on alkioiden askeleen koko kunnes saavutetaan luku c: >> 1:0.5:4 Columns 1 through 6 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 Column 7 4.0000 >> 3:-1:-4 3 2 1 0-1 -2-3 -4 Komennolla linspace(a,b,n) voidaan luoda rivivektori, jonka ensimmäinen alkio on a, viimeinen b ja pituus n: 6

>> linspace(0,5,11) Columns 1 through 6 0 0.5000 1.0000 1.5000 2.0000 2.5000 Columns 7 through 11 3.0000 3.5000 4.0000 4.5000 5.0000 >> linspace(3,0,4) 3 2 1 0 Laskutoimitukset vektoreilla Yhteen-, vähennys- ja skalaarilla kertomisessa vektorien dimensioilla on merkitystä: >> v = [1 2 3]; >> h = [4-2 3]; >> 2*v-h/4 1.0000 4.5000 5.2500 >> w = [2; 5; 6] w = 2 5 6 >> v + w Error using + Matrix dimensions must agree. Suurin osa perusfunktioista on vektoroituja: >> sin(v) 0.8415 0.9093 0.1411 >> exp(h) 7

54.5982 0.1353 20.0855 Vektorin osiin viittaaminen >> r = [2:5, 3:-1:-2] r = 2 3 4 5 3 2 1 0-1 -2 >> r(3) 4 >> r(4:6) 5 3 2 >> r(1:2:end) 2 4 3 1-1 >> r(end:-1:1) -2-1 0 1 2 3 5 4 3 2 Vektorin transpoosi >> w = [1 2 3] w = 1 2 3 >> w 1 2 3 Jos x on kompleksinen vektori, niin x antaa konjugaattitranspoosin: 8

>> c = [1+i, 2-3i, 5-i] c = 1.0000 + 1.0000i 2.0000-3.0000i 5.0000-1.0000i >> c 1.0000-1.0000i 2.0000 + 3.0000i 5.0000 + 1.0000i Jos kompleksivektorille tarvitaan normaalia transpoosia, se on. : >> c. 1.0000 + 1.0000i 2.0000-3.0000i 5.0000-1.0000i 1.5 Vektorilaskentaa Sisätulo Matlab on tarkka vektoreiden dimensioista ja * tarkoittaa normaalia matriisikertolaskua >> a = [1,2,3]; >> b = [2; -3; 5]; >> a * b 11 >> a * a Error using * Inner matrix dimensions must agree. >> a * a 14 9

>> sqrt(a*a ), norm(a) 3.7417 3.7417 Pisteittäiset laskutoimitukset >> c = [3 7 5]; >> a.* c 3 14 15 >> a.* b Error using.* Matrix dimensions must agree. >> a./ b 0.5000-0.6667 0.6000 >> 2./ a 2.0000 1.0000 0.6667 >> a.^ 3 1 8 27 >> 2.^ a 2 4 8 10

1.6 Matriisit Matriisit luodaan kuten vektorit. Rivit erotetaan puolipisteellä ; tai kirjoittamalla ne eri riveille: >> A = [1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 >> B = [ 1,2 3,4 5,6] B = 1 2 3 4 5 6 Komento size antaa matriisin dimensiot: >> size(a) 3 3 >> size(b) 3 2 Matriisin transpoosi Transpoosi saadaa samoin kuin vektoreilla: >> A 1 4 7 2 5 8 11

3 6 9 >> B 1 3 5 2 4 6 Erikoismatriiseja Nollamatriisi >> Z = zeros(3,5) Z = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >> zeros(3,1) 0 0 0 Ykkösmatriisi >> N = ones(4,2) N = 1 1 1 1 1 1 1 1 >> ones(1,6) 1 1 1 1 1 1 Yksikkömatriisi >> I = eye(3) 12

I = 1 0 0 0 1 0 0 0 1 >> eye(3,4) 1 0 0 0 0 1 0 0 0 0 1 0 Diagonaalimatriisi >> a = [1 2 3]; >> diag(a) 1 0 0 0 2 0 0 0 3 Matriisin diagonaali >> A = [1,2,3;4,5,6;7,8,9] A = 1 2 3 4 5 6 7 8 9 >> diag(a) 1 5 9 Matriisien rakentaminen osista >> A = [1 2 3;4 5 6;7 8 9]; >> [A eye(3); zeros(3) A ] 13

1 2 3 1 0 0 4 5 6 0 1 0 7 8 9 0 0 1 0 0 0 1 4 7 0 0 0 2 5 8 0 0 0 3 6 9 >> b = [2 4 8]; >> [ [b;b;b] A; A [b b b ]] 2 4 8 1 2 3 2 4 8 4 5 6 2 4 8 7 8 9 1 4 7 2 2 2 2 5 8 4 4 4 3 6 9 8 8 8 Matriisin osiin viittaaminen Tämä sujuu samoin kuin vektoreilla, nyt vain dimensioita on kaksi: >> A = [1 2 3;4 5 6;7 8 9]; >> A(3,3) 5 >> A(1:2,3) 3 6 >> A(1,:) 1 2 3 >> A(:,2) 2 5 14

8 Yhteen- ja vähennyslasku, pisteittäiset operaatiot Samoin kuin vektorien tapauksessa >> A = [1 2 3; 4 5 6]; >> B = 2 * ones(2,3); >> A + B 3 4 5 6 7 8 >> 1./ A + A.* B 3.0000 4.5000 6.3333 8.2500 10.2000 12.1667 >> A.^2 1 4 9 16 25 36 2.^ A 2 4 8 16 32 64 Matriisikertolasku Matriisikertolaskut tehdään operaattorilla *. Kerrottavien matriisien pitää olla dimensioiltaan yhteensopivat. >> A = [1 2 3; 4 5 6; 7 8 9]; >> B = [3 4; -1 2; 0 4]; >> c = [1 2 3]; >> A*B 15

1 20 7 50 13 80 >> A*c Error using * Inner matrix dimensions must agree. >> A*c 14 32 50 >> B*B 25 5 16 5 5 8 16 8 16 >> B *B 10 10 10 36 Käänteismatriisi, lineaarinen yhtälöryhmä Käänteismatriisi >> M = [1 0 2; -2 1 0; 0 2 2]; >> det(m) -6 >> im = inv(m) im = -0.3333-0.6667 0.3333-0.6667-0.3333 0.6667 16

0.6667 0.3333-0.1667 >> im * M 1 0 0 0 1 0 0 0 1 Matriisimuoodssa oleva lineaarinen yhtälöryhmä ratkaistaan käyttämällä operaattoria \: >> A = [2-1 0; 1-2 1; 0-1 2]; >> y = [1 0 1] ; >> x = A\y x = 1.0000 1.0000 1.0000 >> A*x 1.0000-0.0000 1.0000 y = Ax 1.7 Matiisifunktioita Determinantti Aste(rank) Ehtoluku Normi 17

1.8 Grafiikkaa Plot Komennolla plot voidaan plotata graafeja: >> x = linspace(0,2*pi,100); >> y = sin(3*x); >> plot(x,y) Tekstiä voi lisätä käskyillä title, xlabel ja ylabel: >> plot(x,y) >> title( y=sin(3x) ) >> xlabel( X-akseli ) >> ylabel( Y-akseli ) Viivatyylit ja värit Oletusarvoisesti Matlab käyttää sinistä viivaa plottaukseen. Viivatyyppiä ja väriä voi vaihtaa antamalla plot-komennolle lisäargumentteja. >> plot(x,y, r-- ) >> plot(x,y, mo ) Käytettävissä olevat vaihtoehdot löytyvät plot-komennon ohjeista käskyllä help plot. Samaan kuvaan plottaaminen Useita käyriä voi plotata samaan kuvaan: >> plot(x,y, k--,x,cos(2*x), r ) >> legend( Sini, Kosini ) >> title( Multi-plot ) >> grid Toinen vaihtoehto on käyttää komentoa hold: 18

>> plot(x,y) >> hold on >> plot(x,sin(4*x), r* ) >> hold off Subplot Yhteen grafiikkaikkunaan on mahdollista piirtää monta kuvaa: >> subplot(221) >> plot(x,y) >> grid >> subplot(222) >> plot(x,y, r ) >> subplot(223) >> plot(x,y, k* ) >> subplot(224) >> plot(x,y, m--x ) Kuvan ominaisuuksien muuttaminen Kuvan ominaisuuksia voidaan muuttaa käskyllä set: >> pic = plot(x,y) >> get(pic) >> set(pic, LineWidth,6) >> set(pic, LineStyle, -- ) >> get(gca) >> set(gca, FontSize,20) 1.9 3D-kuvat Kolmiulotteisia pintoja z = f(x, y) voidaan plotata käskyllä mesh. Tarvittava hila saadaan komennolla meshgrid: 19

>> x = linspace(-5,5,20); >> y = linspace(-3,6,20); >> [X,Y] = meshgrid(x,y); >> Z = X.^2 - Y.^2; >> mesh(x,y,z) Muita mahdollisia plottauskäskyjä ovat mm. contour, contourf, surf ja surfl. 1.10 Loogiset operaattorit Loogiset operaattorit ovat samat kuin R:ssä, paitsi negaatio, joka on ~. Matlabissa ei ole erillisiä totuusarvoja, vaan se käyttää nollaa ja ykköstä. >> 1==1 1 >> 1~=1 0 >> 1 >= 2 0 jne... find on erittäin hyödyllinen funktio, jolla voi etsiä halutut kriteerit täyttäviä alkioita vektoreista ja matriiseista. Se palauttaa kriteerin toteuttaneiden alkioiden indeksit: >> x=randn(1,5) x = 0.5377 1.8339-2.2588 0.8622 0.3188 >> find(x<0) 20

3 >> find(x>0) 1 2 4 5 >> x(find(x<0))=100 x = 0.5377 1.8339 100.0000 0.8622 0.3188 >> y=rand(3) y = 0.0975 0.9575 0.9706 0.2785 0.9649 0.9572 0.5469 0.1576 0.4854 >> y(find(y>0.5))=1 y = 0.0975 1.0000 1.0000 0.2785 1.0000 1.0000 1.0000 0.1576 0.4854 1.11 Kontrollirakenteet Matlabista löytyy samat kontrollirakenteet kuin R:stä ja muistakin ohjelmointikielistä. Syntaksi vain on hieman erilainen: for i = 1:10 disp(i) end i=0; sum = 0; while i <= 100 sum = sum + i; i = i + 1; end 21

a=randn(1,100); for i=1:100 if a(i) > 0 a(i) = 1; else a(i) = 0; end end 1.12 Funktiot ja skriptit Omia funktioita voi tehdä Matlabin tekstieditorilla (edit) tai millä tahansa tekstieditorilla. Jokainen funktio pitää tallentaa omaan tiedostoonsa, jonka nimi tulee olla muotoa xxx.m, missä xxx on funktion nimi. Funktion rakenne on seuraavanlainen: function [A,B,C] = funktion_nimi(x,y,z) % funktion sisällä olevat käskyt % Huom! Prosenttimerkillä alkavat rivit % ovat kommentteja! end Hakasulkeiden sisässä olevat argumentit (tässä A, B ja C) ovat funktion palauttamia muuttujia ja argumentit x, y ja z funktion varsinaisia argumentteja. Esimerkkinä funktio, joka palauttaa kokoa n x m olevat nolla- ja identtiteettimatriisit: function [N,I] = tee_matriisit(n,m) N = zeros(n,m); I = eye(n,m); end Jos funktiota kutsutaan käskyllä [A,B] = tee_matriisit(2,3) 22

palauttaa se nollamatriisin A ja diagonaalimatriisin B. Jos taas funktiota kutsutaan komennolla A=tee_matriisit(3,3) palauttaa se ainoastaan ensimmäisen palautusargumenttinsa, eli nollamatriisin A. 23