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ásso-
rozat 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:
Logikai operátorok:
+
összeadás
~
nem
-
kivonás
&
elemenkénti és
*
mátrix szorzás
|
elemenkénti vagy
.* /
jobboldali mátrix osztás
./ \
'
baloldal elemenkénti osztás
elemenkénti hatványozás
algebrai transzponálás (komplex számok
esetén
komplex
konjugált
transzponált)
.'
és
||
vagy
Relációs operátorok:
hatványozás
.^
&&
jobboldali elemenkénti osztás
baloldali mátrix osztás
.\ ^
elemenkénti szorzás
tömb transzponálás (komplex szá-
<
kisebb
>
nagyobb
<=
kisebb egyenl®
>=
nagyobb egyenl®
==
egyenl®
~=
nem egyenl®
mok esetén nincs konjugálás)
Alapvet® utasítások Matematikai függvények:
abs
abszolútérték
sqr
négyzetre emelés
sqrt
gyökvonás
exp
exponenciális függvény
log
természetes logaritmus
min, max
értékek minimuma, ill. maximuma
sum, prod
értékek összegzése, ill. összeszorzása
sin, cos, tan, cot
trigonometrikus függvények
round, fix, floor, ceil
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
answer: az utoljára végrehajtott utasítás eredménye
pi
a pí közelítése
-inf, -Inf és inf, Inf −∞ nan, NaN
és
∞
szimbóluma
not a number szimbóluma (0/0,
0*Inf, Inf/Inf típusú m¶ve-
letek eredménye
eps
epszilon: az adott szoftverkörnyezetben ábrázolható legkisebb, nullát követ® szám
realmin (realmax)
az adott szoftverkörnyezetben ábrázolható legkisebb (legnagyobb) valós szám
intmin (intmax)
az adott szoftverkörnyezetben ábrázolható legkisebb (legnagyobb) egész szám
Számok generálása:
rand
véletlenszám-generátor
a:i:b
sorozat generálása
linspace(a,b,n)
n
zeros, ones
csupa
eye
egységmátrix generálása
a-tól b-ig, i
elem¶ sorozat generálása
0,
ill. csupa
1
lépésközzel
a-tól b-ig
mátrix generálása
Segítségkérés:
help
minden elérhet® segítségoldal listázása
help tema/fuggvenynev
részletes súgó adott témában/adott függvény m¶ködésér®l
lookfor kulcsszo
kulcsszóhoz kapcsolódó segítségoldalak listája
helpwin
a segítséget külön grakus ablakban nyitja meg
which ismeretlen
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
a Matlab alaprendszer és a telepített toolboxok verziószáma
who, whos
a munkaterületen lev® változók listája (utóbbi részletesebb)
3
home, clc
kurzor bal fels® sarokba küldése, parancsablak törlése
format
output formátumának szabályozása, pl.
format long, format short
Id®mérés:
tic és toc
stopper indítása és leállítása
cputime
az aktuális munkamenet indítása óta eltelt id® másodpercekben
clock
aktuális naptári dátum és id® lekérése
Változók valtozonev=ertek, clear) utasítással lehet.
A Matlab változók az els® értékadáskor deklarálódnak, értéket adni a változót törölni a
clear valtozonev
(teljes munkaterületet a
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 Legegyszer¶bb megoldás Matlabban:
Deniáljuk a következ® mátrixot:
A=[1 2 3; 4 5 6]
1 2 3 A= 4 5 6 , vagy space
oszlopok elválasztása
; vagy sortörés
sorok elválasztása
mátrix(n,m)
a mátrix
n.
sorindex¶ és
mátrix(q)
a mátrix
q.
index¶ elemének elérése (oszlopfolytonos tárolás!)
size(mátrix)
mátrix méretének lekérdezése (válasz: sor és oszlopdimenzió)
4
m.
oszlopindex¶ elemének elérése
length(mátrix)
vektor méretének lekérdezése (mátrixra: legnagyobb dimenzió)
diag(vektor)
diagonális mátrix generálása vektorral a f®átlóban
diag(mátrix)
diagonális kinyerése egy vektorba
tril, triu
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
2D, ill. 3D adatsorok ábrázolása
fplot
2D függvények ábrázolása
mesh, surf
3D felületek ábrázolása
ezplot, ezsurf
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 az
e
B
mátrixot, aminek els® sora az
a,
második sora a
b,
. . . , ötödik sora
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
200-ra?
B
mátrix második sorában megváltoztatom a
10.
elem értékét
Változik-e a korábban létrehozott ábrán valami?
12. Generálj egy vektort, amelynek minden eleme ábrázold ezt is a közös ábrán!
5
50,
f¶zd hozzá a
B
mátrixhoz, és