Atomerőművek üzemtanának fizikai alapjai - 2016. 03. 04. – Papp Ildikó
A MATLAB alapjai Kezdő lépések >> >> >> -
>> who >> whos - Változók törlése
Matlab Promt: Help: help sqrt doc sqrt Kilépés:
>> clear ... >> clear all - Változók mentése, betöltése
>> quit >> exit - Változók listásása
>> save result >> load result
Részei
Változók Aktuális mappa Parancs ablak Előzmények
1
MATLAB, mint számológép Számoljuk ki a következő kifejezéseket! MATLAB parancs
megjegyzés Ans (answer): utolsó eredmény hatvány Beépített konstansok Komplex számok kezelése
1
√49
sqrt(49)
2 3
72 π
7^2 pi
4
i
j, i , √−1
5
√3 1 + 𝑖 2 2
sqrt(3)/2+1/2i
6
x=5
x = 5;
Értékadás, eredménykiíratás nélkül
6/0
Inf: végtelen
inf/inf
NaN: Not a number
7 8
6 0 ∞ ∞
Vektorok és mátrixok Hozzuk létre a következő objektumokat! Fontos: Az indexelés 1-től indul.
1
Objektum Sorvektor
Létrehozása s = [1 2] vagy s = [1, 2]
2
Oszlopvektor
o = [1; 2]
3
Vektor i. eleme
s(1)
4
Mátrix
A = [1 2; 3 4]
5
Mátrix (i,j) eleme
A(i,j)
6
Mátrix sora
A(1,:) = [1;3]
7
Mátrix oszlopa
A(:,1) = [1 2]
Matematikai jelölés 𝑠̅ = (1 2) 1 𝑜̅ = ( ) 2 𝑠1 1 ( 3
2 ) 4
𝐴𝑖𝑗
(𝑎11 𝑎12 ) = (1 2)
𝑎11 1 (𝑎 ) = ( ) 3 21
Speciális mátrixok 1
Egységmátrix
2
Diagonális mátrix
1 (0 0
eye(3) diag(s) vagy diag([1,2])
2
1 ( 0
0 0 1 0) 0 1 0 ) 2
Műveletek vektorokkal, mátrixokkal 1
Transzponálás (konjugálás)
o = s’ vagy o = [1 2]’
2
Invertálás
A^(-1) vagy inv(A)
3 4
Vektor hossza Mátrix dimenzója Elemenkénti művelet végrehajtás Szorzás (Dimenzióknak egyezniük kell!)
length(s) sizes (A)
7
Skalár szorzat
[1 2]*[3;4]
8
Összeadás, kivonás
A + B, [1 0; 0 1]+[0 1; 1 0] a + b, [1 2] + [2 3] DE NEM! [1 2] + [2; 3]
5
6
1 ( ) = (1 2)𝑇 2 1 2 −1 ( ) 3 4 Pl.: 2 Pl.: 2x2 2 (12 3
A.^2
A*s vagy [1 2; 3 4]*[5 6]
1 ( 3
22 ) 42
2 ( )∗ 1 4
2)
(1 2) ∗ (3) 4 1 0 0 1 ( )+( ) 0 1 1 0 (1 2) + (2 3)
Feladatok 1) Legyen 𝑎 = {1 −4 5 0}, 𝑏 = {4 6 −2 11}! Számoljuk ki MATLAB segítségével egyetlen parancsorban, mekkora a két sorozat között a maximális kölünbség! (Segítség: Mit csinál a max() függvény egy vektorral? +Mit csinál egy mátrixxal?) 2) Keressük meg a következő mátrix legkisebb elemét MATLAB parancsokkal! (Használjuk a min() függvényt!) 1 3 0.5 ( 2 5 7 ) 6 −2 5 −3.33 9 12 3) Mi a különbség a következő utasítások között? (A és C mátrixok) a >>A*C >>A.*C b >>A^2 >>A.^2 c* >>exp(A) >>expm(A) 4) Adjuk meg egyetlen Matlab-utasítással azt a 10-szer 10-es mátrixot, amelynek - bal felső 5-ször 5-ös blokkja olyan tridiagonális mátrix, amelynek főátlójában -2-esek, két mellékátlójában pedig 1-esek állnak (tridiag[1, -2, 1] típusú) - jobb alsó 5-ször 5-ös blokkja tridiag[2, -4, 2] típusú - a többi eleme pedig 0!
3
M állomány (.m kiterjesztésű fájlok) m-fájl: MATLAB utasításokat tartalmazó szöveg fájl
M-fájl készítése és futtatása Nyissunk meg egy MATLAB szövegszerkesztőt: File/New/Script vagy M-file (vagy más szövegszerkesztőt és a fájlt .m kiterjesztéssel mentsük el). Töltsük fel a következő tartalommal: A = [1 2; 3 4; 5 6] B = [7 8 9; 10 11 12] sz = A*B
Mentsük el (pl. szorzat.m) majd futassuk le a Debug/Run menüponttal! Futassuk le MATLAB promptból az elmentett fájl nevével (pl. szorzat)! Mi történik, ha pontosvesszőket teszünk a sorok végére?
Függvények Egyváltozós Készítsünk el egy f.m nevű állományt az aktuális könyvtárban a következő tartalommal: function y = f(x) y = x^3+x^2-2; Számoljuk ki y függvény értékét x=2 helyen! (f(2)) Többváltozós Írjunk függvényt az A és B mátrix kommutátorának kiszámítására! function X = komm(A,B) X = A*B-B*A; Próbáljuk ki konkrét mátrixokal! Beépített függvények Trigonometriai: sin(x), cos(x), atan(x), ... Véletlenszám generálás: Generáljunk 10 db egész véletlenszámot 0 és 10 között! floor(rand(1,10)*10)
Debugolás kulcsszavak pause: a program végrehajtása megáll, gombnyomásra folytatódik input: a felhasználótól adatot kérhetünk futás közben
Kommentelés %komment
Feladatok 5) Írjunk egy kétváltozós függvényt, amely egy háromszög két oldalának hosszát kapja bemenő paraméterként, a köztük lévő szöget (0-180) fok között egyenletes eloszlással sorsolja ki, és eredményként a harmadik oldal hosszát adja meg! 4
MATLAB programozási nyelve For ciklus Készítsünk el az első 10 pozitív természetes szám négyzetéből álló vektort! for i=1:10, x(i)=i^2; end vagy for i=1:10 x(i)=i^2; end vagy for i=10:-1:1, x(i)=i^2; end While ciklus Határozzuk meg azt a legkisebb n egész számot, amelyre 2-nek az n-edik hatványa legalább a. n=0; while 2^n
( nagyobb, mint) <= (kisebb vagy egyenlő) >= (nagyobb vagy egyenlő) == (egyenlő) ~= (nem egyenlő) Az == jel csak a relációkban használatos, értékadásra az = jel való. A relációkat a & (= AND = ÉS) | (= OR = VAGY) ~ (= NOT = NEM) jelekkel kapcsolhatjuk össze. Feladatok 6) Írjunk olyan Matlab-programot, amely 1-től 100-ig összeadja az egész számokat! 7) Írjunk függvényt, amely meghatározza kész szám legkisebb közös többszörösét!
5
Grafika
1 0.8 0.6
Függvény ábrázolása
0.4
Rajozoljuk fel a sinus függvényt a [-4,4] intervallumon! x=-4:0.1:4; y=sin(x); plot(x,y)
0.2 0 -0.2 -0.4 -0.6 -0.8
Próbáljuk ki a következő beállításokkal is! Mit tapasztalunk? plot(x,y,’r’) plot(x,y,’g’) plot(x,y,’*’) plot(x,y,’o’) plot(x,y,’.’)
-1 -4
-3
-2
-1
0
1
2
3
4
Egyszerre több függvény ábrázolása Ábrázoljuk egymás mellett a cosinus és a sinus függvényeket a [-4, 4] intervallumon! x=-4:0.1:4; y=sin(x); z=cos(x) plot(x,y,’r’,x,z,’g’)
Beállítások Kezdő és végpontok: axis([xmin xmax ymin ymax]) Cím adása (lehet Latex kódot is használni): title(’A sin es a cos fuggveny’) Jelölések magyarázatának hozzáadása: legend(’sin’,’cos’)
Feladatok 8) Készítsünk egy olyan M-fájlt, amely ábrázolja a [-2,2] intervallumon az f(x) = x2 + 1 függvényt! 9) Szimuláljunk egy mérési adatsort! Adjunk hozzá a fenti egy y= sin(x) adatsorhoz 0.25 amplitúdójú egyenletes zajt. Ábrázoljuk a zaj nélküli adatokkal egy ábrán! 10) Végezzünk számjegy gyakoriság próbát a ’rand’ függvény egy tetszőleges helyiértékén, az eredményt ábrázoljuk hisztogrammon.
Hasonló ingyen elérhető programok: -
Scilab Freemat Octave
Forrás Hujter Mihály: Betekintés a MATLAB programrendszerbe
6