Ismerkedés a Matlabbal Közelít és szimbolikus számítások I. gyakorlat Antal Elvira A programról A Matlab egy tudományos számításokra specializálódott programrendszer. Neve a Matrix Laboratory kifejezésb l képzett mozaikszó, ami arra utal, hogy a program alapvet adattípusa a mátrix. A program felépítésében több szintet érdemes megkülönböztetni, nagyon leegyszer - sítve: A legtöbb funkciót az interaktív parancssorból érhetjük el, ugyanakkor sok toolbox biztosít kényelmes grakus felületet is, és a legalapvet bb vezérl utasítások grakus és parancssoros eléréssel is lehetségesek (munkakönyvtár váltása, segítségkérés, stb.). A parancssorban az utasításokat Enter zárja, a Command History-ban eltárolt utasítások között a kezd karakterek begépelésével és a föl-le nyilakkal kereshetünk. Ha egy utasítás végére ;-t írunk, akkor a végrehajtás eredményét nem írja ki a program. Egy utasítássorozat végrehajtását a CTRL+c billenty kombinációval lehet felfüggeszteni (az elkezdett C kód még végigfut!). Elérhet ség: a Kabinet gépein otthonról ssh-val a linux.inf.u-szeged.hu szerverre bejelentkezve (a parancssor X terminál nélkül is használható!) szabad szoftveres alternatívák: Octave, Scilab,... 1
Operátorok Aritmetikai operátorok: + összeadás - kivonás * mátrix szorzás.* elemenkénti szorzás / jobboldali mátrix osztás Logikai operátorok: ~ nem & elemenkénti és elemenkénti vagy && és vagy./ jobboldali elemenkénti osztás \ baloldali mátrix osztás.\ baloldal elemenkénti osztás ^ hatványozás.^ elemenkénti hatványozás ' algebrai transzponálás (komplex számok esetén komplex konjugált transzponált).' tömb transzponálás (komplex számok esetén nincs konjugálás) Relációs operátorok: < kisebb > nagyobb <= kisebb egyenl >= nagyobb egyenl == egyenl ~= nem egyenl Alapvet utasítások Matematikai függvények: abs sqr sqrt exp log min, max sum, prod sin, cos, tan, cot round, fix, floor, ceil abszolútérték négyzetre emelés gyökvonás exponenciális függvény természetes logaritmus értékek minimuma, ill. maximuma értékek összegzése, ill. összeszorzása trigonometrikus függvények kerekítés egészre, levágás egészre, alsó, ill. fels egészrész 2
Konstansok, beépített változók: ans pi answer: az utoljára végrehajtott utasítás eredménye a pí közelítése -inf, -Inf és inf, Inf és szimbóluma nan, NaN eps realmin (realmax) intmin (intmax) not a number szimbóluma (0/0, 0*Inf, Inf/Inf típusú m veletek eredménye epszilon: az adott szoftverkörnyezetben ábrázolható legkisebb, nullát követ szám az adott szoftverkörnyezetben ábrázolható legkisebb (legnagyobb) valós szám az adott szoftverkörnyezetben ábrázolható legkisebb (legnagyobb) egész szám Számok generálása: rand a:i:b linspace(a,b,n) zeros, ones eye véletlenszám-generátor sorozat generálása a-tól b-ig, i lépésközzel n elem sorozat generálása a-tól b-ig csupa 0, ill. csupa 1 mátrix generálása egységmátrix generálása Segítségkérés: help help tema/fuggvenynev lookfor kulcsszo helpwin which ismeretlen minden elérhet segítségoldal listázása részletes súgó adott témában/adott függvény m ködésér l kulcsszóhoz kapcsolódó segítségoldalak listája a segítséget külön grakus ablakban nyitja meg rövid információ ismeretlenr l (pl. ismeretlen egy változó, egy beépített függvény, stb.) Munkamenetre vonatkozó utasítások: ver who, whos a Matlab alaprendszer és a telepített toolboxok verziószáma a munkaterületen lev változók listája (utóbbi részletesebb) 3
home, clc format kurzor bal fels sarokba küldése, parancsablak törlése output formátumának szabályozása, pl. format long, format short Id mérés: tic és toc cputime clock stopper indítása és leállítása az aktuális munkamenet indítása óta eltelt id másodpercekben aktuális naptári dátum és id lekérése Változók A Matlab változók az els értékadáskor deklarálódnak, értéket adni a valtozonev=ertek, változót törölni a clear valtozonev (teljes munkaterületet a clear) utasítással lehet. Elnevezésre vonatkozó szabályok: a változónevek ékezet nélküli bet ket, számjegyeket és aláhúzásjeleket tartalmazhatnak minden név els karaktere egy bet kell legyen a kis- és nagybet k különböznek a maximális hossz általában 63 karakter, de az aktuális programverzióra vonatkozó értéket a namelengthmax függvénnyel le lehet kérni Vigyázat! A beépített függvények nevével is lehet változókat deniálni. Ebben az esetben addig nem tudjuk az adott függvényt meghívni, amíg a hasonló nev változót nem töröljük a munkaterületr l. Mátrixok kezelése Deniáljuk a következ mátrixot: ( ) 1 2 3 A = 4 5 6 Legegyszer bb megoldás Matlabban: A=[1 2 3; 4 5 6], vagy space oszlopok elválasztása ; vagy sortörés sorok elválasztása mátrix(n,m) mátrix(q) size(mátrix) a mátrix n. sorindex és m. oszlopindex elemének elérése a mátrix q. index elemének elérése (oszlopfolytonos tárolás!) mátrix méretének lekérdezése (válasz: sor és oszlopdimenzió) 4
length(mátrix) diag(vektor) diag(mátrix) tril, triu vektor méretének lekérdezése (mátrixra: legnagyobb dimenzió) diagonális mátrix generálása vektorral a f átlóban diagonális kinyerése egy vektorba alsó, ill. fels trianguláris rész kinyerése Egy mátrix elemeinek indexeléséhez használhatunk vektorokat is! Grakus megjelenítés plot, plot3 fplot mesh, surf ezplot, ezsurf 2D, ill. 3D adatsorok ábrázolása 2D függvények ábrázolása 3D felületek ábrázolása 2D függvények, ill. 3D felületek ábrázolása (ez=easy, vagyis könnyen) Feladatok 1. Mit ír ki az A(2,2:3) utasítás, ha az A mátrixot az el z oldalon látott módon deniáltuk? 2. Hozz létre egy oszlopvektort a néven, ami 0-tól 10-ig tartalmaz számokat, 0.1-es közökkel! 3. A b oszlopvektorba számold ki az a elemeinek négyzetét! 4. A c oszlopvektorba számold ki az a elemeinek kettes alapú logaritmusát! 5. A d oszlopvektorba számold ki az a elemeinek tizes alapú logaritmusát! 6. A e oszlopvektorba számold ki az a elemeinek természetes logaritmusát! 7. Ábrázold az eddig létrehozott vektorokat az a függvényében, egy közös ábrán! 8. Módosítsd az ábrát úgy, hogy a logaritmusfüggvények megjelenítése folytonos vonal helyett az adatpontok jelölésével történjen! 9. Készíts egy B mátrixot, aminek els sora az a, második sora a b,..., ötödik sora az e elemeit tartalmazza! 10. Hozz létre egy v vektort, ami a függvények a = 5-höz tartozó értékeit tartalmazza (lehet leg egyetlen utasítással)! 11. Mi történik, ha a B mátrix második sorában megváltoztatom a 10. elem értékét 200-ra? Változik-e a korábban létrehozott ábrán valami? 12. Generálj egy vektort, amelynek minden eleme 50, f zd hozzá a B mátrixhoz, és ábrázold ezt is a közös ábrán! 5