Ú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)

MATLAB1

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')

MATLAB2

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:

MATLAB3

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);

MATLAB4

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.

MATLAB5

 

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.