Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
Harjoitus 1: Matlab
Harjoitus 1: Matlab
Mat-2.2107 Sovelletun matematiikan tietokonetyot
Syksy 2006
Mat-2.2107 Sovelletun matematiikan tietokonetyot 1
Harjoitus 1: Matlab
Harjoituksen aiheita
• Tutustuminen Matlab-ohjelmistoon
• Laskutoimitusten tekeminen Matlabissa
• Matlabin sisaanrakennetut funktiot
• Ohjelmoinnin alkeita
Mat-2.2107 Sovelletun matematiikan tietokonetyot 2
Harjoitus 1: Matlab
Matlab
• Matlab (MATrix LABoratory): numeeriseen laskentaan
tarkoitettu ohjelma.
• Kaytetaan laajasti eri insinoorialoilla.
Mat-2.2107 Sovelletun matematiikan tietokonetyot 3
Harjoitus 1: Matlab
Numeerinen laskenta - Symbolinen laskenta
• Symbolinen laskenta: laskenta suljetussa muodossa.
- Tarkka ratkaisu, ei pyoristysvirheita.
• Likiarvoinen ratkaisu numeerisesti monesti helpompaa ja
nopeampaa.
- Kaytannon sovelluksia: matemaattinen mallintaminen,
simulointi . . .
• Laskentatarkkuus voi olla ongelma numeerisessa laskennassa,
esim.
>> 1-0.2-0.2-0.2-0.2-0.2
ans = 5.5511e-017
Mat-2.2107 Sovelletun matematiikan tietokonetyot 4
Harjoitus 1: Matlab
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 seka symbolisesti etta numeerisesti.
- Esim. Symbolic Math Toolbox Matlabissa.
Mat-2.2107 Sovelletun matematiikan tietokonetyot 5
Harjoitus 1: Matlab
Matlabin kayttoliittyma
• Command Window - Komentoja voidaan syottaa yksi kerrallaan.
• Command History - Aikaisemmin syotetyt komennot.
• Workspace - Tyotilaan tallennetut muuttujat.
• Editor - Ns. m-tiedostojen (funktioiden ja
komentojonotiedostojen) muokkaamista varten.
• Help - Minka tahansa funktion helpin saa auki seuraavasti:
help funktio
Mat-2.2107 Sovelletun matematiikan tietokonetyot 6
Harjoitus 1: Matlab
Matlabin Toolboxit
• Matlabissa on eri sovellusalueille tehtyja laajennuksia
(toolboxeja).
• Esim:
- Statistics Toolbox
- Optimization Toolbox
- Symbolic Math Toolbox
- Curve Fitting Toolbox
Mat-2.2107 Sovelletun matematiikan tietokonetyot 7
Harjoitus 1: Matlab
Matriisit
• Matriisi on (luku)taulukko.
- Vaakasuunnassa: rivit (rows)
- Pystysuunnassa: sarakkeet (columns)
• Alkio: Yksittainen matriisissa oleva elementti. Indeksoinnissa
esitetaan rivi ensin ja sarake toisena, esim. aij viittaa rivin i ja
sarakkeen j alkioon.
A =
a11 a12 · · · a1j
a21 a22 · · · a2j
......
. . ....
ai1 ai2 · · · aij
Mat-2.2107 Sovelletun matematiikan tietokonetyot 8
Harjoitus 1: Matlab
Matriisien kasittely Matlabissa
• Matlab = Matrix Laboratory ⇒ Matriisit ovat perustietorakenne
Matlabissa.
• Matriisit syotetaan alkioittain hakasulkujen sisaan.
• Valilyonti (tai pilkku) erottaa samalla rivilla olevat alkiot.
• Puolipiste erottaa rivit toisistaan.
• Vektorit luodaan vastaavalla tavalla.
A =
1 2 3
4 5 6
7 8 9
>> A=[1 2 3 ; 4 5 6 ; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
Mat-2.2107 Sovelletun matematiikan tietokonetyot 9
Harjoitus 1: Matlab
Listan luominen
• Kaksoispisteen (:) avulla voidaan luoda lista alkioista.
>> x=10:16
x =
10 11 12 13 14 15 16
>> y=10:2:16 % alkioiden valinen erotus 2
y =
10 12 14 16
• Huom! % on kommentointimerkki. (Matlab ei suorita sen jalkeen
samalla rivilla olevia komentoja.)
Mat-2.2107 Sovelletun matematiikan tietokonetyot 10
Harjoitus 1: Matlab
Matriisin alkioihin viittaaminen 1/2
• Viittaus sulkujen avulla muodossa (rivi,sarake)
A =
1 2 3
4 5 6
7 8 9
>> A(2,1)
ans =
4
• Huom! Indeksointi alkaa 1:sta, ei 0:sta (toisin kuin esim. Javassa)
Mat-2.2107 Sovelletun matematiikan tietokonetyot 11
Harjoitus 1: Matlab
Matriisin alkioihin viittaaminen 2/2
• Voidaan myos viitata useamman alkion muodostamaan alueeseen
kaksoispisteen (:) avulla.
>> A(1:2,1)
ans =
1
4
>> A(:,1) % pelkka kaksoispiste valitsee koko sarakkeen/rivin
ans =
1
4
7
>> A(2:end,1) % end viittaa viimeiseen alkioon
ans =
4
7
Mat-2.2107 Sovelletun matematiikan tietokonetyot 12
Harjoitus 1: Matlab
Matriisien muokkaaminen
• Matriiseja voidaan myos luoda liittamalla 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
• Tiettya matriisin alkiota voidaan muuttaa seuraavasti.
>> A(1,1)=100
A =
100 2 3
4 5 6
7 8 9
Mat-2.2107 Sovelletun matematiikan tietokonetyot 13
Harjoitus 1: Matlab
Matriisin transpoosi
• Matriisin transpoosiin kaytetaan pilkkua (’).
A =
1 2 3
4 5 6
7 8 9
>> A’
ans =
1 4 7
2 5 8
3 6 9
Mat-2.2107 Sovelletun matematiikan tietokonetyot 14
Harjoitus 1: Matlab
Peruslaskutoimitukset 1/2
• Yhteen- ja vahennyslasku (+, -)
>> C=[1 2;3 4] , D=[5 6;7 8]
C =
1 2
3 4
D =
5 6
7 8
>> C+D
ans =
6 8
10 12
>> C-D
ans =
-4 -4
-4 -4
Mat-2.2107 Sovelletun matematiikan tietokonetyot 15
Harjoitus 1: Matlab
Peruslaskutoimitukset 2/2
• Kerto- ja jakolasku (*, .*, /, ./)
>> C*D % Matriisitulo
ans =
19 22
43 50
>> C.*D % Alkioittainen tulo
ans =
5 12
21 32
>> C/D % Matriisijakolasku
(vastaa laskua C*inv(D))
ans =
3.0000 -2.0000
2.0000 -1.0000
>> C./D % Alkiottainen jakolasku
ans =
0.2000 0.3333
0.4286 0.5000
Mat-2.2107 Sovelletun matematiikan tietokonetyot 16
Harjoitus 1: Matlab
Kaanteismatriisi
• Matriisin A kaanteismatriisi A−1 on olemassa tasmalleen silloin,
kun det(A) 6= 0.
• Kaanteismatriisille patee:
A · A−1 = A−1 · A = I (Yksikkomatriisi).
• Yhtaloryhman A · x = b ratkaisu:
- A on n × n matriisi, x = [x1 . . . xn]T , b = [b1 . . . bn]T .
⇔ (A−1A)x = A−1b
⇔ Ix = A−1b
⇔ x = A−1b
- Matlabissa: x=inv(A)*b tai x=A \b
Mat-2.2107 Sovelletun matematiikan tietokonetyot 17
Harjoitus 1: Matlab
Kuvaajat 1/2
• plot-funktion avulla voidaan piirtaa kuvaajia, ks. help plot
>> x=-2*pi:0.1:2*pi; % Luodaan x-vektori
>> y=sin(x); % Luodaan y-vektori
>> plot(x,y); % Piirretaan kuvaaja
(vaaka-akselilla x, pystyakselilla y)
>> grid on % Kuvaajan ruudukko paalle
>> axis tight % Akselit ilman tyhjaa tilaa laidoilla
>> title(’Sinikayra’) % Kuvaajan otsikko
>> xlabel(’x-akseli’) % Tunniste x-akselille
>> ylabel(’y-akseli’) % Tunniste y-akselille
>> legend(’x’) % Kuvateksti
Mat-2.2107 Sovelletun matematiikan tietokonetyot 18
Harjoitus 1: Matlab
Kuvaajat 2/2
−6 −4 −2 0 2 4 6
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
Sinikäyrä
x−akseli
y−ak
seli
x
Mat-2.2107 Sovelletun matematiikan tietokonetyot 19
Harjoitus 1: Matlab
M-tiedostot
• Edella komennot on annettu yksitellen komentorivilta.
• M-tiedostojen (tiedostojen nimi on muotoa *.m) avulla voidaan
ajaa useampi komento perakkain.
- Mahdollistaa ohjelmoinnin.
• Syntaksi sama kuin komentorivilta ajettaessa.
• Komentojonotiedosto voidaan ajaa editorista kasin (nappain F5)
tai kirjoittamalla tiedoston nimi komentoriville.
Mat-2.2107 Sovelletun matematiikan tietokonetyot 20
Harjoitus 1: Matlab
Ohjelmoinnin alkeita
• For-silmukan avulla komentoja voidaan suorittaa useamman
kerran perakkain.
for muuttuja = alkuarvo : askelpituus : loppuarvo
% Suorita komentoja
end
Mat-2.2107 Sovelletun matematiikan tietokonetyot 21
Harjoitus 1: Matlab
Esimerkki silmukasta
• Tehdaan ’ohjelma’, joka tulostaa joka kierroksella indeksin i
toisen potenssin.
for i=1:2:7
i^2
end
ans =
1
ans =
9
ans =
25
ans =
49
Mat-2.2107 Sovelletun matematiikan tietokonetyot 22
Harjoitus 1: Matlab
Kysymyksia
1. Mita eroa on numeerisella ja symbolisella laskennalla?
2. Miten puolipiste rivin lopussa vaikuttaa Matlabissa?
3. Luettele kolme eri Matlabin tietotyyppia ja kerro miten ne
eroavat toisistaan? (Vinkki: help datatypes)
4. Mika on pisteen merkitys vektorien kerto- ja jakolaskussa?
5. Kuinka luot vektorin a joka sisaltaa kaikki positiiviset parittomat
luvut, jotka ovat pienempia kuin sata?
6. Miten lineaarisen yhtaloryhman Ax = b voi ratkaista
Matlabissa? Nimea kaksi eri tapaa.
Mat-2.2107 Sovelletun matematiikan tietokonetyot 23