Úvod do systému
MATLAB
1 Čo je MATLAB?
MATLAB je matematický softvérový
balík, ktorý ako základ pre komplexné numerické výpočty používa maticové
operácie. Nepatrí medzi počítačové algebrické systémy, ako napríklad Mathematica alebo Maple,
a tak symbolické výpočty môže vykonávať až po nainštalovaní príslušnej knižnice
(napríklad the Symbolic Math Toolbox, ktorá sa dá zakúpiť od materskej firmy The
Mathworks, Inc.)
2 Niektoré základné príkazy
2.1 Príkaz 'demos'
MATLAB disponuje rozsiahlym pomocníkom,
ktorý aktivujeme, keď do príkazového okna napíšeme
demos
a príkaz odošleme na spracovanie stlačením
klávesu Enter (Return). Po krátkej chvíli čakania sa otvorí okno Pomocníka so
záložkami 'Contents' (Obsah), 'Index' (Index), 'Search' (Hľadaj), 'Demos'
(Príklady) a 'Favorite' (Obľúbené). Jedná sa o šikovnú službu, ktorá poskytuje
o príkazoch základné informácie a umožňuje pomerne rýchle riešiť problémy. Ak
poznáme názov príkazu, stačí do príkazového okna napísať help a za ním názov príkazu. Odpoveď dostaneme v
angličtine. Napríklad
help sin
SIN Sine.
SIN(X) is the sine of the elements
of X.
MATLAB píše názvy funkcií vždy
veľkými písmenami, hoci zadávať ich môžeme aj malými písmenami. Je to kvôli
tomu, aby systém mohol rozoznať a následne aj vykonať akýkoľvek príkaz, ktorý
sa objaví v odpovedi pomocníka. Na tomto príklade tiež vidíme, že v MATLABe
základným argumentom pre výpočty je vektor ('elements of X').
2.2 Priraďovanie hodnôt
MATLAB je numerický výpočtový balík.
Vie počítať iba s číslami. Výrazu typu y=2x nerozumie a je preň zmätočný.
Príkazové okno je základným oknom
pracovného prostredia. Otvára sa ihneď po spustení MATLABu. Zapíšme doň
y=2*x
a príkaz odošlime na spracovanie. MATLAB
vráti chybové hlásenie, v ktorom oznámi, že sa jedná o nedefinovanú funkciu
alebo premennú x:
??? Undefined function or
variable 'x'.
Ak chceme, aby MATLAB príslušný
výpočet vykonal, musíme mu predtým zadať hodnotu premennej x:
x=2.2
Na obrazovke sa potvrdí, že hodnota
bola priradená. Všimnite si, desatinná čiarka sa zadáva vo forme desatinnej
bodky. Následne napíšeme
y=2*x
a MATLAB oznámi, že premennej y bola priradená hodnota 4.4.
Ak zmeníme hodnotu premennej x
x=3
MATLAB zobrazí novú hodnotu x.
Hodnota y sa však nezmení. Presvedčíme sa o tom zadaním
y
do príkazového riadka. Dostaneme
odpoveď y= 4.4.
Novú hodnotu y dostaneme, až keď opäť premennej y priradíme aktuálnu
hodnotu 2x:
y=2*x
V tejto forme MATLAB nepovažuje y za funkciu x, a tak novú hodnotu y priradí až po opätovnom zadaní
výrazu pre výpočet.
Na umocňovanie MATLAB používa, tak
ako aj množstvo iných matematických softvérov, znak "^". Príkaz
y=x^3
priradí premennej y hodnotu x3 .V danom stave y=27, keďže premennej x bola naposledy priradená hodnota 3.
Pri počítaní odmocnín využijeme
fakt, že každú odmocninu vieme zapísať v tvare mocniny. Napríklad pri výpočte využijeme zápis .
Ak do príkazového okna napíšeme
a=27
a potom
y=a^1/3
dostaneme y = 9 . Toto ale pravdepodobne nie je výsledok , ktorý sme
očakávali. MATLAB totiž zohľadňuje prioritu operácií, a tak predošlý zápis y=a^1/3 vyhodnotí ako .
Aby sme vypočítali , musíme dať celého mocniteľa do zátvorky:
y=a^(1/3)
Tento zápis nám už dá očakávaný
výsledok 3.
Transcendentné číslo π zadávame
pomocou zápisu
pi
Vo výstupe dostaneme číslo
pi=3.1416
Implicitne, MATLAB zobrazuje čísla
na 5 platných číslic. Príkazom
format long
pi
dostaneme hodnotu vyjadrenú s
počítačovou presnosťou, t.j. na 15-16 platných číslic 3.14159265358979. Príkaz
format short
nás vráti späť do pôvodného
nadstavenia.
Písmeno
e
nezastupuje konštantu e, a tak
dostaneme odpoveď, že premenná e nemá preddefinovanú hodnotu:
??? Undefined function or
variable 'e'.
Tú dostaneme až volaním zabudovanej
funkcie 'exp'. Zápis
e=exp(1)
priradí premennej e hodnotu Eulerovho
čísla
e =2.7183
2.3 Zadávanie matíc
Aby sme dostali maticu typu 3x3,
napríklad
A =,
do príkazového riadku napíšeme
A=[ 1 2 3 ; 4 5 6 ; 7 8 9 ] .
Prvky matice, ktoré sa nachádzajú v spoločnom
riadku, sa oddeľujú medzi sebou čiarkou, riadky matice sa oddeľujú bodkočiarkou.
Celý zápis matice je uzatvorený v hranatej zátvorke. Pozor, MATLAB rozlišuje
veľké a malé písmená (je "case sensitive"), a tak na označenie matice
môžeme použiť veľké písmeno A (je rôzne
od a!).
Ak pri editovaní urobíme chybu,
MATLAB nás upozorní chybovým hlásením, ktoré vypíše červenou farbou. Napríklad
po zadaní
A=[ 1 2 3 ; 4 5 6 7 8 9 ]
MATLAB vráti v anglickom jazyku správu
??? Error using ==>
vertcat
CAT arguments dimensions
are not consistent.
Niekedy nie je, najmä pre
začínajúceho užívateľa, z chybového hlásenia na prvý pohľad jasné, o akú chybu
sa jedná. Vtedy je dobré pozorne porovnať chybný príkaz so vzorovým. V našom
prípade zistíme, že sme zabudli bodkočiarkou oddeliť druhý a tretí riadok.
Chybové hlásenie oznamuje, že počet prvkov v dimenzii nie rovnaký; v prvom
riadku uvádzame 3 prvky a v druhom 6.
Pri oprave nemusíme prepisovať celý
príkaz, stačí sa šípkou (↑) alebo kurzorom nastaviť do pôvodného príkazu
a chyby opraviť. Pri odosielaní príkazu na spracovanie sa môže kurzor nachádzať
na ktoromkoľvek mieste v príkazovom riadku, nie je nutné ho dávať na koniec.
Nie vždy všetky výstupy musíme
zobrazovať. Ak na koniec riadku pridáme bodkočiarku, výstup sa nevypíše. Napríklad
A=[ 1 2 3 ; 4 5 6 ; 7 8 9 ] ;
Je to vhodné najmä vtedy, ak výstup
je príliš rozsiahly. Predtým je však dobré presvedčiť sa, že príkaz funguje,
ako má.
Naľavo od príkazového okna sa nachádza okno pracovnej
plochy Workspace. Stlačením záložky s rovnakým označením "Workspace",
zobrazíme základnú charakteristiku
všetkých dosiaľ vytvorených premenných.
V prípade, že matica A bola
korektne naeditovaná, v stĺpci pre mená sa bude nachádzať písmeno A a v stĺpci pre hodnoty uvidíme
[ 1 2 3 ; 4
5 6 ; 7 8 9 ].
Matica typu 4x4
B=[ 1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ;
13 14 15 16 ] ;
sa v prehliadači premenných zobrazí ako
matica triedy < 4x4 double >, čo je štandardná forma pre matice
väčšie ako 3x3.
Okno Workspace využijeme najmä pri
hľadaní zdroja chýb. Napríklad v prípade, že chceme násobiť dve nekompatibilné
matice, v okne Workspace ľahko skontrolujeme ich rozmer. Tiež sa tam dajú
premenné editovať, mazať, ukladať do súboru ap.
2.4 Aritmetické operácie s maticami
Sčítanie a odčítanie matíc zadávame
pomocou štandardných operátorov "+" a "-" :
A+A
A-A
2.5 Práca s polynómami druhého stupňa
Na rozdiel od počítačových algebrických
systémov, v ktorých sa s polynómami pracuje v explicitnej forme, napríklad x2-3x+2, MATLAB používa na vyjadrenie
polynómov vektory ich koeficientov, v tomto prípade je to vektor (1-3 2) . Na
výpočet koreňov použijeme príkaz 'roots'.
p=[1 -3 2];
roots(p)
ans =
2
1
Korene môžeme vypočítať aj v jednom
kroku, keď vektor polynómu zadáme ako argument príkazu 'roots':
roots([1 -3 2])
ans =
2
1
V prípade, ak miesto hranatých
zátvoriek použijeme oblé, MATLAB nás upozorní chybovým hlásením:
roots(1 -3 2)
??? roots(1 -3 2)
Error: ")"
expected, "numeric value" found.
MATLAB umožňuje riešiť aj opačnú
úlohu, z koreňov určiť koeficienty príslušného kvadratického polynómu. Použijeme
príkaz 'poly':
poly([-2 2])
ans = 1 0 -4
Všimnite si, že vo výstupe je druhý
koeficient 0. Znamená to, že kvadratický polynóm, ktorý má korene -2 a 2 je
polynóm x2- 4 .
2.6 Kreslenie grafov
MATLAB používa na kreslenie grafov
vektory súradníc. Na ilustráciu zadajme 2 vektory, každý s piatimi členmi.
Označme ich 'x' a 'y', a následne nakreslime graf určený vektorom
x-ových súradníc x a y-ových súradníc y:
x=[1 2 3 4 5];
y=[2 4 6 8 10];
plot(x,y)
|
Rozsah na osiach je určený rozsahom
vektorov x a y . Štandardne, MATLAB pospája body modrou úsečkou. Ak chceme zobraziť iba izolované
body, musíme príkaz mierne upraviť:
plot(x,y,'x')
|
Ako výstup dostaneme graf bodov so
súradnicami [1, 2], [2, 4], [3, 6], [4, 8], [5, 10]. Body sú označené modrým krížikom 'x'.
Iste ste si všimli, že úsečka v prvom
výstupe je grafom funkcie y=2x pre 1 ≤ x ≤ 5 .
Tie isté grafy môžeme zadať aj tak,
že nadefinujeme vektor x a predpis pre vektor y:
x=[1 2 3 4 5];
y=2*x;
plot(x,y)
alebo
plot(x,y,'x')
Na tomto príklade vidíme zrejmý
postup, ako kresliť grafy funkcií v systéme MATLAB. Najskôr vytvoríme vektor
pre nezávislú premennú, v našom prípade s označením x a potom zadáme predpis
pre výpočet hodnôt v závislosti na x. Použiť môžeme tak vlastný predpis ako aj
zabudované funkcie ako napríklad 'sin' , 'exp' , 'log' a pod. Nezabudneme predpis priradiť vhodnej premennej, v našom prípade y.
Na záver použijeme príkaz 'plot'.
Napríklad, nakreslime graf funkcie y=sin(x),
-2π≤x≤2π. Postupujme podľa predchádzajúceho návodu:
Zadáme predpisy pre x a y a príkaz na
kreslenie grafu 'plot':
x=[-2*pi -pi 0 pi 2*pi];
y=sin(x);
plot(x,y)
Dostaneme
nasledovný výstup:
|
To ale nie je, čo sme chceli!!! Počet
implicitne použitých bodov x zjavne nestačí na nakreslenie vierohodnej sínusoidy
a preto potrebujeme počet bodov zvýšiť. To môžeme urobiť dvomi spôsobmi:
1. Vektor x definujeme nasledovne:
x=-2*pi:0.1:2*pi;
Takto určený vektor x bude mať prvú
hodnotu rovnú -2 a každý ďalší člen bude o 0,1 väčší ako predchádzajúci.
Keďže dĺžka intervalu nie je deliteľná číslom 0,1; posledný člen nadobudne
hodnotu menšiu ako 2. Takto vektor x bude mať 126
členov. Po zadaní zvyšných príkazov dostaneme nasledujúci graf.
y=sin(x);
plot(x,y);
|
Všimnite si, že MATLAB rozšíri
rozsah na osi x po najbližšie párne celé číslo, t.j. -8 a 8. Tomu zabránime
príkazom
axis tight
a dostaneme
graf vymedzený presným rozsahom vektora x.
|
2. Počet členov vektora x môžeme určiť
aj priamo, pomocou príkazu 'linspace':
x=linspace(-2*pi,2*pi,500);
Hodnota 500 uvedená ako posledný
argument príkazu znamená, že vektor x bude tvorený 500 bodmi, rovnako
vzdialenými od seba. Prvou hodnotou bude -2 a poslednou 2. Zadaním zvyšných príkazov
y=sin(x);
plot(x,y)
dostaneme sínusoidu,
na pohľad veľmi podobnú predchádzajúcej, ktorej tvar však bude určovať 500 bodov.