Sunteți pe pagina 1din 142

Dumitru Al.

Dumitru 1
Dr. ing. Dumitru Al. Dumitru




Manual Matlab 7
(R2007)
Volumul 1







Universitatea Valahia din Trgovite
Facultatea de Ingineria Mediului i tiina Alimentelor

2012 Uz intern
Dumitru Al. Dumitru 2

CUPRINS

1 Lansarea aplicaiei Matlab ................................................................................................................4
1.1 Fereastra aplicaiei Matlab........................................................................................................4
1.2 Fereastra editorului Matlab.......................................................................................................7
2 Elementele limbajului Matlab...........................................................................................................8
2.1 Constante...................................................................................................................................8
2.2 Variabile....................................................................................................................................9
2.3 Operatori aritmetici. Expresii aritmetice...................................................................................9
2.4 Operatori relaionali. Expresii relaionale.................................................................................9
2.5 Operatori booleeni. Expresii booleene....................................................................................10
2.5.1 Operatori booleeni ce conecteaz expresii relaionale....................................................10
2.5.2 Operatori booleeni ce acioneaz asupra scalarilor i elementelor matricelor................10
2.6 Prioritile i asociativitatea operatorilor ................................................................................11
2.7 Operaii cu iruri de caractere .................................................................................................11
2.8 Vectori i matrice....................................................................................................................12
2.8.1 Operaii cu vectori i matrice..........................................................................................12
2.8.2 Generarea vectorilor........................................................................................................14
2.8.3 Lucrul cu matrice mprite n blocuri ............................................................................14
2.8.4 Concatenarea matricelor .................................................................................................14
2.8.5 Funcii ce creaz matrice speciale...................................................................................15
2.8.6 Modificarea dimensiunilor matricelor ............................................................................16
2.9 Structuri...................................................................................................................................16
2.10 Funciile load i save...............................................................................................................17
2.11 Introducerea datelor de la tastatur .........................................................................................17
2.12 Funcii pentru lucrul cu iruri de caractere .............................................................................17
2.13 Formatarea rezultatelor ...........................................................................................................18
2.14 Celule. Tablouri de celule .......................................................................................................19
3 Instruciuni Matlab..........................................................................................................................22
3.1 Instruciunea for ......................................................................................................................22
3.2 Instruciunea while..................................................................................................................23
3.3 Instruciunile continue i break...............................................................................................24
3.4 Instruciunea if ........................................................................................................................24
3.5 Instruciunea switch ................................................................................................................24
4 Funcii .............................................................................................................................................26
4.1 Definirea funciilor..................................................................................................................26
4.2 Instruciunea global.................................................................................................................26
4.3 Variabile handle de funcii......................................................................................................27
4.4 Vectorizarea funciilor ............................................................................................................31
4.5 Aplicarea funciilor asupra tablourilor de celule.....................................................................31
5 Reprezentri grafice ........................................................................................................................32
5.1 Reprezentarea curbelor plane..................................................................................................32
5.2 Editarea unei figuri..................................................................................................................39
5.3 Modificarea interactiv a proprietilor obiectelor grafice .....................................................40
5.3.1 Modificarea proprietilor axelor ....................................................................................41
5.3.2 Modificarea proprietilor curbelor.................................................................................43
5.4 Modificarea programat a proprietilor obiectelor grafice....................................................46
5.4.1 Obiectul Root ..................................................................................................................47
5.4.2 Obiectul Figure ...............................................................................................................48
5.4.3 Obiectul Axes..................................................................................................................48
5.4.4 Obiectul Line...................................................................................................................49
5.4.5 Obiectul Text ..................................................................................................................49
Dumitru Al. Dumitru 3
5.4.6 Modificarea proprietilor obiectelor grafice..................................................................53
6 Transformata Fourier discret.........................................................................................................58
7 Integrarea ecuaiilor difereniale ordinare.......................................................................................60
8 Filtre numerice ................................................................................................................................63
9 Rezolvarea ecuaiilor algebrice neliniare........................................................................................65
10 Interpolarea funciilor .................................................................................................................67
11 Operaii cu polinoame.................................................................................................................68
12 Interfee grafice...........................................................................................................................69
12.1 Construirea unei interfee grafice cu aplicaia GUIDE...........................................................69
12.1.1 Descrierea aplicaiei GUIDE ..........................................................................................69
12.1.2 Crearea interfeei grafice.................................................................................................74
12.1.3 Alinierea componentelor.................................................................................................76
12.1.4 Modificarea proprietilor obiectelor grafice..................................................................77
12.2 Programarea interfeei grafice.................................................................................................82
12.2.1 Organizarea interfeei grafice..........................................................................................82
12.2.2 Programarea interfeei grafice.........................................................................................87
12.2.3 Adugarea unor grafice la interfa.................................................................................89
12.2.4 Modificarea proprietilor obiectelor grafice la rularea programului .............................94
12.2.5 Poziionarea unui punct pe o curb.................................................................................98
12.2.6 Introducerea datelor cu casete de dialog.......................................................................104
13 Calcul simbolic .........................................................................................................................108
13.1 Definirea variabilelor i funciilor simbolice........................................................................108
13.2 Substituii ..............................................................................................................................109
13.3 Reprezentarea simbolic a numerelor ..................................................................................111
13.4 Definirea de variabile simbolice reale i complexe ..............................................................112
13.5 Matrice simbolice..................................................................................................................113
13.6 Crearea de funcii abstracte...................................................................................................116
13.7 Reprezentarea grafic a funciilor .........................................................................................116
14 Funcii pentru calcule simbolice ...............................................................................................120
14.1 Derivarea...............................................................................................................................120
14.2 Limite de funcii....................................................................................................................121
14.2.1 Calculul limitelor de funcii ..........................................................................................121
14.2.2 Calculul limitelor laterale..............................................................................................123
14.3 Integrarea ..............................................................................................................................123
14.3.1 Calculul integralei nedefinite........................................................................................123
14.3.2 Calculul integralei definite............................................................................................124
14.3.3 Calculul integralelor ce depind de un parametru ..........................................................125
14.4 Calculul sumelor ...................................................................................................................126
14.5 Dezvoltarea n serie Taylor ...................................................................................................127
14.6 Simplificri i substituii .......................................................................................................127
15 Operaii cu polinoame simbolice ..............................................................................................129
16 Algebr liniar simbolic..........................................................................................................131
17 Rezolvarea simbolic a ecuaiilor algebrice..............................................................................133
18 Rezolvarea simbolic a ecuaiilor difereniale ordinare............................................................136
19 Transformri integrale...............................................................................................................138
19.1 Transformata Fourier ............................................................................................................138
19.2 Transformata Laplace ...........................................................................................................139
19.3 Transformata Z......................................................................................................................140


Dumitru Al. Dumitru 4
1 Lansarea aplicaiei Matlab
Lansarea aplicaiei Matlab se face:
cu un clic pe icoana aplicaiei sau,
cu un clic pe butonul Start i apoi pe opiunea Programs; n lista de aplicaii afiate se execut
un clic pe aplicaia Matlab.
1.1 Fereastra aplicaiei Matlab
Fereastra aplicaiei Matlab este cea din Figura 1. Ea cuprinde, de regul, dou ferestre:
fereastra de comenzi (Command Window) unde se introduc instruciunile Matlab,
fereastra cu instruciunile introduse anterior, (Command History).


Figura 1. Fereastra aplicaiei Matlab.
Utilitatea fereastrei cu instruciunile introduse anterior, (Command History) este aceea c, la un clic
dublu pe o instruciune din aceast fereastr, ea este copiat n fereastra de comenzi (Command
Window), i executat.
Este posibil de a afia i alte ferestre:
directorul de lucru Matlab, (Current Directory), ce afiaz coninutul directorului current al
aplicaiei,
fereastra Help,
fereastra Workspace, ce afiaz variabilele din program.
Meniurile aplicaiei Matlab au, n general, opiunile cunoscute. Meniul File, artat n Figura 2, are
opiunile:
New, crearea unui fiier nou,
Open, pentru a deschide un fiier existent
Close Command History, nchide fereastra Command History,
Page Setup, alege opiunile de tiprire a ferestrei active,
Print, tiprete ferestra activ,
Exit Matlab, nchide aplicaia Matlab.
Sunt afiate de asemenea ultimele patru fiiere deschise.
Aplicaia Matlab poate fi nchis i cu comanda quit sau exit n fereastra de comenzi.

Dumitru Al. Dumitru 5


Meniul File Meniul Edit
Figura 2. Meniurile File i Edit ale aplicaiei Matlab.
Meniul Edit conine opiunile cunoscute:
Undo, anuleaz ultima comand,
Redo, execut ultima comand,
Cut, mut textul selectat n Clipboard,
Copy, copiaz textul selectat n Clipboard,
Paste, copiaz textul din Clipboard,
Select All, selecteaz tot textul ferestrei active,
Find, permite cutarea n text a unui ir de caractere,
Clear Command Window, terge coninutul ferestrei de comenzi,
Clear Command History, terge coninutul ferestrei cu comenzile introduse.
Meniul Vindow, afiat n Figura 3, are opiuni de afiare sau ascundere a diverselor ferestre:
Command Window, afiaz / ascunde ferestra de comenzi,
Command History, afiaz / ascunde ferestra cu comenzile precedente,
Current Directory, afiaz / ascunde directorul de lucru,
Workspace, afiaz / ascunde spaiile de lucru,

Figura 3. Meniul Window.
Fiecare fereastr are un buton de nchidere , un buton undock, , care mut fereastra respectiv n
afara Ferestrei Matlab i un buton dock, , mut fereastra napoi n cadrul ferestrei Matlab.
Meniul Desktop din Figura 4 permite organizarea ferestrei aplicaiei.

Dumitru Al. Dumitru 6

Figura 4. Meniul Desktop.
Putem afia doar ferestrele dorite, cu opiunile Command Window, , Help. Submeniul Desktop
Layout permite de asemenea alegerea ferestrelor dorite i aranjarea lor.
Bara de instrumente a aplicaiei Matlab este artat n Figura 5. O parte din butoane corespund
opiunilor meniurilor File i Edit.


Figura 5. Bara de instrumente a aplicaiei Matlab.
Semnificaia butoanelor este cea din Tabelul 1.
Buton Semnificaie

Crearea unui nou fiier .m

Deschide un fiier

Cut

Copy

Paste

Undo

Redo

Lansare Simulink

Lansare GUIDE

Help
Selectarea directorului curent

Alegerea unui nou director
curent
Tabelul 1. Butoanele barei de instrumente a aplicaiei Matlab.
Dumitru Al. Dumitru 7
1.2 Fereastra editorului Matlab
Funciile limbajului Matlab sunt scrise n fiiere cu extensia .m cu ajutorul editorului Matlab. Ferestra
editorului este cea din Figura 6.

Figura 6. Fereastra editorului Matlab.
Meniul File al editorului are opiunile cunoscute, de a deschide un fiier nou sau unul existent, de a
salva i nchide fiiere, etc. Sunt afiate i ultimele patru fiiere deschise. Meniul File este artat n
Tabelul 2a. Meniul Edit are opiunile Cut, Copy, Paste, Undo, Redo, Find, Replace, etc. Meniul
Edit este artat n Tabelul 2b.


a) meniul File b) meniul Edit.
Tabelul 2. Meniurile File i Edit ale editorului Matlab.
Dumitru Al. Dumitru 8
Meniul Text din Figura 7a are opiuni pentru comentarea i decomentarea textului, indentarea
programului, etc. Un grup de instruciuni se poate comenta sau decomenta prin selectarea i clic pe
opiunile Comment respectiv Uncomment.
Meniul Debug din Figura 7b permite executarea instruciunilor din fiier cu opiunea Save File and
Run.



a) meniul Text b) meniul Debug
Figura 7. Meniurile Text i Debug ale editorului Matlab.
2 Elementele limbajului Matlab
2.1 Constante
Constantele utilizate n Matlab sunt numerele reale, numerele complexe i irurile de caractere.
Numerele reale
se scriu cu partea subunitar separat de cea ntreag de punct. Exemple
7.5, -4.0, -4
Numerele reale se pot scrie cu exponent, de forma en sau dn. Exemple
1.23e-2, -2.5e+2, -2.5e2
Numere complexe
Sunt predefinite constantele complexe i i j cu 1 = = j i . Numrul complex a+bi se scrie
a+bi, a+bj
Se poate defini o variabil complex,de exemplu 1 = s , cu instruciunea
s=sqrt(-1)
In acest caz numrul complex a+bi se scrie
a+b*s
In Matlab exist cteva constante predefinite: pi, eps, NaN, Inf, realmin, realmax. Semnificaia lor este
cea din Tabelul 3.
Constanta Semnificaia
pi
eps precizia calculelor, 2
-52

Inf
NaN (not-a-number) este rezultatul operaiilor 0/0, - , /
realmin cel mai mic numr real reprezentabil, 2
-1022

realmax cel mai mare numr real reprezentabil, 2
1023

i, j unitatea imaginar
Tabelul 3. Constante predefinite n Matlab.
Dumitru Al. Dumitru 9
2.2 Variabile
Numele de variabile sunt formate din litere i cifre i ncep cu o liter. Variabilele sunt create automat
la ntlnirea unui nou nume. Variabilele sunt iniializate cu instruciuni de forma
ident = expresie
Menionm c literele mici sunt diferite de literele mari. De exemplu, variabila x este diferit de
variabila X.
Pentru a afia valoarea unei variabila se tasteaz numele ei.
2.3 Operatori aritmetici. Expresii aritmetice
Operatorii aritmetici utilizai n Matlab sunt:
+, -, *, /, \, ^
Operatori +, -, *, /, sunt cei patru operatori aritmetici cunoscui. Operaia a \ b se definete ca

b
a
*
1

Operatorul ^ este ridicarea la putere. Expresia a^ b este

b
a
Funciile matematice uzuale sunt cele de mai jos:
sin asin sqrt exp abs real floor
cos acos log imag ceil
tan atan log10 round
Prioritile operatorilor sunt cele cunoscute. Operatorii + i unari au cea mai mare prioritate, urmai
de operatorul ^, urmat de urmai de operatorii *, /, \, iar operatorii + i binari au cea mai mic
prioritate. Operatorii unari sunt asociativi la dreapta, operatorii binari sunt asociativi este la stnga. De
exemplu, expresia 2^2^3 = (2^2)^3 i are rezultatul 64. Funcia round() rotunjete la cel mai apropiat
ntreg, funcia floor() rotunjete in jos, funcia ceil() rotunjete n sus la cel mai apropiat ntreg.
Exemple de expresii aritmetice i valorile lor sunt artate n Tabelul 4.

Expresie aritmetic Valoare
2 ^ 2.5 5.6569
4 / 3 1.3333
4 \ 3 0.75
8 / 4 / 2 = (8 / 4) / 2 1
3.3 ^ 2 ^ 1.5=(3.3 ^ 2) ^ 1.5 35.9370
-2^-3 -0.125
floor(1.9) 1
floor(-1.9) -2
ceil(1.1) 2
ceil(-1.1) -1
round(1.1) 1
round(1.9) 2
Tabelul 4. Expresii aritmetice.
In cadrul expresiilor aritmetice se pot utiliza paranteze rotunde, ( i ), pentru a modifica prioritile
operatorilor.
Pentru a suprima afiarea rezultatelor, la sfritul unei instruciuni se scrie operatorul;
Continuarea unei instruciuni pe mai multe linii se face cu operatorul
2.4 Operatori relaionali. Expresii relaionale
Operatorii relaionali din Matlab sunt:
< <=, >, >=, = =, ~=
sau
lt, le, gt, ge, eq, ne
Dumitru Al. Dumitru 10
O expresie relaional este format din dou expresii aritmetice separate de un operator relaional.
Rezultatul unei expresii relaionale este true (adevrat) sau false (fals) ce au valorile 1 i repectiv 0.
Prioritatea oricrui operator aritmetic este mai mare dect cea a operatorilor relaionali. Exemple de
expresii relaionale i valorile lor sunt prezentate n Tabelul 5.
Expresie relaional Valoare
2 ~= 2 0
2 < 7 1
3 < -5 0
ne(2, 3) 1
ge(2, 7) 0
lt(-2, 5) 1
Tabelul 5. Expresii relaionale.
Dou funcii utile sunt any i all ce se aplic asupra vectorilor. Funcia any are valoarea true dac cel
puin un component al vectorului este diferit de zero, iar all are valoarea true dac toate componentele
vectorului sunt diferite de zero.
2.5 Operatori booleeni. Expresii booleene
2.5.1 Operatori booleeni ce conecteaz expresii relaionale
Aceti operatori sunt &&, || i ~ i reprezint operatorii i (and), sau (or) i respectiv nu (not). Sunt
predefinite constantele booleene true i false ce au valorile 1 i repectiv 0. Operatorul ~ este unar i
are aceeai prioritate ca i operatorii + i unari. Prioritile celorlali operatori booleeni sunt respectiv
&& i ||. Prioritatea oricrui operator aritmetic sau relaional este mai mare dect cea a operatorilor
booleeni && i ||. In scrierea expresiilor booleene se pot utiliza paranteze rotunde, ( i ), pentru a grupa
termeni.
Exemple. Fie variabilele a i b cu valorile
a = 2
b = 3
Expresii booleene cu aceste variabile i valoarea lor sunt prezentate n Tabelul 6.
Expresie booleean Valoare
a < 5 && b < 7 1
a > 5 && b < 7 0
a > 0 || b + 1 > 2 1
~(1 > -1) 0
Tabelul 6. Expresii booleene.
In scrierea expresiilor booleene sunt utile teoremele lui De Morgan:
~(a || b) = ~a && ~b
~(a && b) = ~a || ~b
2.5.2 Operatori booleeni ce acioneaz asupra scalarilor i elementelor
matricelor
Aceti operatori sunt &, |, i ~. Ei reprezint operatorii and (i), or (sau), i respectiv not (nu). Orice
numr diferit de 0 este considerat c reprezint valoarea adevrat, orice numr 0 reprezint valoarea
fals. Operatorul ~ este unar i are aceeai prioritate ca i operatorii + i unari. Operatorii & i | sunt
operatori binari. Prioritile lor sunt respectiv & i |, i mai mici dect cele ale operatorilor aritmetici.
Exemple de expresii booleene sunt prezentate n Tabelul 7.
Expresie boolean Valoare
~1 0
~5.2 0
~-7.4 0
~0 1
a & ~ a 0
Dumitru Al. Dumitru 11
a | ~a 1
~1 > -1 1
~2 > 1 0
Tabelul 7. Expresii booleene.
In ultimele exemple se evalueaz mai nti expresia ~1, deoarece operatorul ~ are prioritate mai mare
ca >, vezi tabelul cu prioritile operatorilor de mai jos..
Exist funcia xor cu dou argumente, ce corespunde operatorului xor (sau exclusiv). Funcia xor are
valoarea true (adevrat) dac un singur argument are valoarea true (adevrat). De exemplu, expresia
xor(3, 4)
are valoarea zero.
2.6 Prioritile i asociativitatea operatorilor
Prioritile i asociativitatea operatorilor din Matlab sunt cele artate n Tabelul 8. Operatorii sunt
scrii n ordinea prioritii.

Operator Asociativitate
+unar, - unar, ~ dreapta
^ stnga
*, /, \ stnga
+binar, - binar stnga
<, <=, >, >=, = =, ~= stnga
& stnga
| stnga
&& stnga
|| stnga
Tabelul 8. Prioritile i asociativitatea operatorilor.
2.7 Operaii cu iruri de caractere
Sirurile de caractere se scriu ntre ' (apostrofuri). De exemplu, irul abc se scrie
'abc'
Dac n ir apare caracterul ' acesta se scrie ca '' (dou apostrofuri). De exemplu, irul a'b se scrie
'a''b'
Un ir de caractere este un vector ce conine codurile numerice ale caracterelor. Caracterele se
reprezint n Matlab n codul ASCII. Indicele primului element din ir este 1.
Numrul de caractere se obine cu funcia length() sau cu funcia size(). De exemplu
length('abc')
are rezultatul 3, iar
size('abc')
are ca rezultat matricea [1 3].
Operatorul de concatenare a irurilor este []. De exemplu
['abcd' '+-*/' '123']
are ca rezultat irul
abcd+-*/123
Cteva funciile pentru lucrul cu caractere sunt urmtoarele:
funcia strcat() cu forma
strcat(s1, s2, , sn)
concateneaz irurile s1, s2, , sn,
funcia strcmp() cu forma
strcmp(s1, s2)
compar dou iruri i are rezultatul 1 (true) dac irurile sunt egale i 0 (false) n caz contrar.
Sirurile sunt egale cnd conine aceleai caractere i au aceeai lungime,
Dumitru Al. Dumitru 12
funciile isletter() i isspace() cu formele
isletter(s)
isspace(s)
au ca argument irul s i ca rezultat un vector de aceeai dimensiune cu irul, ce conine 1
pentru caracterele litere / spaii i 0 n caz contrar. Caracterele spaii sunt '\t', '\n' i ' ',
funcia ischar() cu forma
ischar(s)
are ca rezultat 1 dac argumentul s este un ir i 0 n caz contrar,
funcia findstr() cu forma
findstr(s1, s2)
caut irul cel mai scurt n cel mai lung. Rezultatul funciei este un vector cu indicii fiecrei
apariii a unui ir n cellalt.
funciile lower() i upper() cu formele
lower(s)
upper(s)
au ca argument irul s i ca rezultat irul convertit n litere mici / mari.
Exemplu. Funcia
findstr('abcdab', 'ab')
are ca rezultat vectorul cu indicii apariiei irului ab n irul abcdab.
1 5
Exemplu. Fie irurile
str1 = sir1 ;
str2 = sir2
Expresia
strcmp(str1, str2)
are valoarea zero deoarece irurile nu sunt egale.
Exemplu. Expresia
strcat ('xyz', 'a+x')
are ca rezultat irul
xyza+x
2.8 Vectori i matrice
2.8.1 Operaii cu vectori i matrice
Definirea unui vector sau a unei matrice se face scriind elementele ntre paranteze drepte, [ ].
Operatorul [ ] se va numi operator de concatenare. Exemplu de vector
[-1.3, sqrt(3), (1+2)*4/5]
Caracterele , i spaiu separ coloanele. Caracterele ; i CR (cariage return) separ liniile. De exemplu,

A = [1, 2, 3 ;
4 5 6
7 8 9]
definete o matrice cu 3 linii i 3 coloane. Prima linie este separat de cea de a doua prin ;, a doua linie
este separat de a treia prin CR.
Indicii vectorilor i matricelor ncep de la 1. Elementul
ij
a al matricei a se scrie a(i, j).
Operaiile cu matrice se efectueaz cu operatorii +, -, *, /, \, ^, .*, ./, .\ i .^. Semnificaia operatorilor +,
-, * este cea de adunare, scdere i nmulire a matricelor cu dimensiuni corespunztoare. Ceilali
operatori au semnificaia din Tabelul 9.

Dumitru Al. Dumitru 13
Operator Exemplu Semnificaie
/ a/b a * inv(b)
\ a\b inv(a) * b
^ a^b
b
a
.* c=a.*b
ij ij ij
b a c * =
./ c = a / b
ij ij ij
b a c / =
.\ c = a.\b
ij ij ij
a b c * =
.^ c = a ^ b
ij ij ij
b a c ^ =
Tabelul 9. Operaii cu matrice.
Prioritile operatorilor .*, ./, .\ i .^ sunt cele ale operatorilor *, /, \ i ^. In cazul operatorului ^, unul
dintre operanzi trebuie s fie scalar.
Transpusa unei matrice se calculeaz cu operatorul '.
Tabelul 10 arat cteva funcii utile pentru lucrul cu vectori i matrice..
Funcia Rezultat
length(x) lungimea vectorului x
sum(x) suma elementelor vectorului x
prod(x) produsul elementelor vectorului x
det(A) determinantul matricei A
inv(A) inversa matricei A
[m n] = size(A) dimensiunile matricei A
Tabelul 10. Funcii pentru lucrul cu vectori i matrice.
n cazul n care matricea este singular sau aproape singular, se afiaz un mesaj de eroare.
funcia size(A) are ca rezultat o matrice cu o linie i dou coloane cu dimensiunile matricei A,
m i n.
Operatorii booleeni ~, &, | i xor se aplic asupra elementelor vectorilor i matricelor. In cazul
operatorilor &, | i xor matricele trebuie s aib aceleai dimensiuni.
Exemple. Fie matricele :
a = [ 0 1 b = [1 2
2 3] i 3 4]
Expresia ~b are rezultatul
[0 0
0 0]
Expresia a & b are rezultatul
[0 1
1 1]
iar expresia a | b are rezultatul
[1 1
1 1]
Expresia xor(a, b) are rezultatul
[1 0
0 0]
Funciile matematice uzuale, sin, cos, etc., pot avea ca argumente vectori i matrice. In acest caz
funcia se aplic asupra fiecrui component al vectorului sau matricei (vectorizarea funciilor). Fie de
exemplu matricea
A = [1 2 ;
3 4]
Avem rezultatele :
sin(A) = [0.8415 0.9093 ;
0.1411 -0.7568]
log(A) = [0 0.6931 ;
1.0986 1.3863]
Dumitru Al. Dumitru 14
2.8.2 Generarea vectorilor
Se pot genera vectori ale cror elemente cresc cu o valoare dat cu operatorul :. In prima form,
expresia
vi : vf
genereaz un vector cu primul element vi i urmtoarele elemente cu valorile vi + 1, vi + 2, , pn la
ultimul element ce are valoare <=vf. De exemplu, expresia
1: 3
genereaz vectorul
1 2 3
iar expresia
1: 3.3
genereaz vectorul
1 2 3
In a doua form, expresia
vi: r: vf
genereaz un vector cu primul element vi, urmtoarele elemente vi+r, vi+2*r, , pn la ultimul
element ce are valoare <=vf. De exemplu, expresia
1: 0.5: 3
genereaz vectorul
1 1.5 2 2.5 3
Expresia
1: 0.7 : 3
genereaz vectorul
1.7 2.4
Putem atribui aceti vectori ca valori unor variabile. De exemplu, instruciunea
A = [1:1:3; 2:1::4];
genereaz matricea
A = [1 2 3
2 3 4]
2.8.3 Lucrul cu matrice mprite n blocuri
Indicii elementelor matricelor i vectorilor ncep de la 1. Indicii pot fi numere pozitive, expresii sau
vectori cu elemente pozitive. Expresia : reprezint toate elementele unei linii sau ale unei coloane.
Exemplu. Fie matricea
A = [1 2 3 4;
5 6 7 8;
9 8 7 6;
5 4 3 2]
Expresia A(1:2,2:3) este matricea format din elementele de la intersecia liniilor 1, 2 i coloanelor 2, 3
[2 3
6 7]
Expresia A(2, :) este linia a doua a matricei,
[5 6 7 8]
Expresia A(1:3, 2:4) este matricea format din elementele de la intersecia liniilor 1, 2, 3 i coloanelor
2, 3, 4
[2 3 4;
6 7 8;
8 7 6]
2.8.4 Concatenarea matricelor
Operatorul de concatenare este []. El concateneaz elementele sale ntr-un tablou. De exemplu, pentru
a defini un vector x putem scrie
x = [12.3 -2.74 14]
Dumitru Al. Dumitru 15
Instruciunea
y = [[1 2 3], [4 5 6], 7]
creaz vectorul
y = [1 2 3 4 5 6 7]
Fie A matricea de mai sus. Instruciunea
B = [A [-1 -2 -3 -4]']
concateneaz matricea A i vectorul coloan [-1 -2 -3 -4]'. Rezultatul este matricea
B = [1 2 3 4 -1
5 6 7 8 -2
9 8 7 6 -3
5 4 3 2 -4]
Instruciunea
B = [A; [-1 -2 -3 -4]]
concateneaz matricea A i vectorul linie [-1 -2 -3 -4] n matricea
B = [1 2 3 4
5 6 7 8
9 8 7 6
5 4 3 2
-1 -2 -3 -4]
Fie de exemplu, vectorul coloan
v = (1 : 3)'
Instruciunea
m = [v v.^3 3.^v]
are ca rezultat matricea
m = [1 1 3
2 8 9
3 27 27]
2.8.5 Funcii ce creaz matrice speciale
Funciile din Tabelul 11 creaz matrice speciale. In acest tabel m reprezint numrul de linii iar n
numrul de coloane.

Funcia Semnificaie
zeros(m, n) Matrice cu toate elementele zero
ones(m, n) Matrice cu toate elementele unu
rand(m, n) Matrice cu elementele numere aleatoare
cu distribuie uniform
randn(m, n) Matrice cu elementele numere aleatoare
cu distribuie normal
eye(m, n) Matrice cu 1 pe diagonal i restul
elementelor 0. eye(n) creaz o matrice
unitate de dimensiune n.
Tabelul 11. Funcii ce creaz matrice speciale.
De exemplu, instruciunea
A = zeros(2, 5);
creaz matricea

0 0 0 0 0
0 0 0 0 0

iar instruciunea
f = 5 * ones(3, 2);
creaz matricea
Dumitru Al. Dumitru 16

5 5
5 5
5 5

2.8.6 Modificarea dimensiunilor matricelor
Este posibil de a transforma o matrice cu anumite dimensiuni ntr-o matrice cu alte dimensiuni. Este
posibil de a transforma o matrice ntr-un vector sau invers. Transformarea matricelor se face n felul
urmtor : elementele matricei originale se aaz ntr-un vector, coloan dup coloan. Vectorul obinut
se transform ntr-o matrice creind din vector coloanele noii matrice. Funcia ce face aceste
transformri se numete reshape. In continuare se prezint cteva exemple de utilizare a acestei funcii.
Fie matricea a

a = [1 2 3; 4 5 6]
a =
1 2 3
4 5 6

reshape(a, 3, 2)
ans =
1 5
4 3
2 6

reshape(a, 6, 1)
ans =
1
4
2
5
3
6
Fie vectorul b

b = [1 2 3 4 5 6]
b =
1 2 3 4 5 6

reshape(b, 2, 3)
ans =
1 3 5
2 4 6
2.9 Structuri
Este posibil de a defini structuri. Elementele structurilor se adreseaz cu operatorul . Ca exemplu vom
defini o structur cu dou componente, x i y ca mai jos.

a.x = 2;
a.y = 3;
b = a.x + a.y
b =
5
a
a =
Dumitru Al. Dumitru 17
x: 2
y: 3
2.10 Funciile load i save
Funcia load citete fiiere text sau binare ce conin matrice sau vectori. Fiecare linie din fiier este
scris ntr-o linie a unei matrice. De exemplu, instruciunea
load mag.dat
citete fiierul mag.dat i creaz cu datele din acest fiier matricea mag.
Funcia save salveaz un vector sau o matrice ntr-un fiier de date. Fiecare linie a matricei este
nscris ntr-o linie din fiier. Aceste fiiere pot fi apoi citite cu funcia load. Fie de exemplu matricea
x = [1, 2, 3 ; -2.2, -3.5, -7 ; 3.3, 4, 7]
Instruciunea
save x
salveaz martricea x ntr-un fiier cu numele x.mat (extensia implicit este mat). Instruciunea
save x.dat
salveaz matricea x ntr-un fiier cu numele x.dat.
2.11 Introducerea datelor de la tastatur
Pentru introducerea de valori de la tastatur se utilizeaz instruciunea input cu formele
var = input(prompt)
var = input(prompt, s)
unde
var - variabila creia i este atribuit valoarea citit,
prompt irul de caractere afiat pe ecran ca prompter,
s dac exist parametrul s, valoarea citit este atribuit variabilei var ca ir de caractere i nu
ca valoare numeric.
De exemplu, instruciunea
a = input(>)
afiaz pe ecran prompterul >, citete o valoare de la tastatur, o atribuie varabilei a i o afiaz pe
ecran, ca mai jos
a>-2.5
2.12 Funcii pentru lucrul cu iruri de caractere
Sirurile de caractere n Matlab sunt vectori de caractere. Ele se prelucreaz ca i tablourile de numere.
Caracterele se reprezint n Matlab n codul ASCII.
Tabelul 12 prezint cteva funcii utile pentru lucrul cu irurile de caractere.

Funcia Operaia realizat
char(x) convertete un numr ntr-un caracter
num2str (x) convertete numere n iruri de caractere
str2num(sir) convertete un ir de caractere ntr-un numr
Tabelul 12. Funcii pentru lucrul cu iruri de caractere.
Expresia
x = a:1:f
genereaz vectorul
x = [97 98 99 100 101 102]
cu codurile ASCII ale caracterelor. Expresia
char(x)
convertete numerele n caractere ASCII i genereaz irul de caractere
abcdef
Raia r poate fi i negativ. De exemplu, expresia
char( ['h':-1:'a'])
Dumitru Al. Dumitru 18
sau expresia
char( 'h':-1:'a')
genereaz vectorul
hgfedcba
Funcia poate prelucra i matrice. De exemplu, iinstruciunea
x = ['e': -1: 'a'; 'a':1:'e']
creaz matricea
101 100 99 98 97
97 98 99 100 101
Expresia
char(x)
aplicat asupra acestei matrice are rezultatul
edcba
abcde
Funcia num2str convertete numere n iruri de caractere. Formele funciei sunt
num2str(x)
i
num2str(x, n)
unde x este numrul convertit sau matricea convertit n ir de caractere iar n specific numrul
maxim de cifre semnificative convertite.
Exemplu.
num2str(2.3134)
convertete numrul 2.3134 n irul '2.3134', n timp ce
num2str(2.3134, 3)
convertete numrul 2.3134 n irul '2.31'.
Exemplu
num2str(rand(1, 2), 3)
convertete argumentul, matricea rand(1, 2), n irul de caractere
'0.821 0.445'
Funcia str2num convertete un ir de caractere ntr-un numr. Forma funciei este
str2num(sir)
unde sir este irul ce va fi convertit n numr.
Exemplu. Fie instruciunea
x = str2num('2.5') + str2num('-3.7')
Se convertesc irurile de caractere n numere i rezultatul este
x =
-1.2000
2.13 Formatarea rezultatelor
Alegerea formatului de afiare a numerelor se face cu instruciunea format cu sintaxa
format tip
format (tip)
Cele dou forme ale instruciunii sunt echivalente. Valorile pentru tip sunt cele din Tabelul 13.

Tip Rezultat
short Se afiaz 4 cifre dup virgul, fr exponent
long Se afiaz 14 cifre dup virgul, fr exponent
short e Se afiaz 4 cifre dup virgul, cu exponent
long e Se afiaz 14 cifre dup virgul, cu exponent
bank Se afiaz 2 cifre dup virgul, fr exponent
compact Suprim caracterele CR pentru a afia mai puine
linii vide
Tabelul 13. Parametrul instruciunii format.
Dumitru Al. Dumitru 19

format short
pi/10

ans =
0.3142

format short e
pi/10

ans =
3.1416e-001

format bank
pi/10

ans =
0.31

format short e
format compact
pi/10
ans =
3.1416e-001
2.14 Celule. Tablouri de celule
O celul este un obiect ce poate s conin obiecte de orice tip, vectori, matrice, alte celule, etc.
Elementele unei celule se scriu ntre acolade, { i }. De exemplu, o celul ce conine vectorul [1 2 3] se
definete astfel :

Z = {[1 2 3]}

Z =
[1x3 double]

Este posibil de a defini tablouri de celule ce pot conine ca elemente celule cu obiecte de tipuri
diferite, tablouri, vectori sau matrice, structuri, iruri de caractere, etc. Tablourile de celule se definesc
asemntor cu tablourile obinuite, dar cu elementele scrise ntre acolade, { i }. Vectorii de celule
sunt utili la scrierea unor mesaje pe mai multe linii. Ca exemplu, un vector coloan de celule ce
conine ca elemente iruri de caractere este urmtorul
A = {abc ; xyz ; mnp}
Un tablou de celule se creaz cu funcia cell() sau prin atribuire. De exemplu, instruciunile
A = cell(2, 3)
B = {[], [], [] ; [], [], []}
creaz dou tabele de celule, A i B, cu dou linii i trei coloane cu celule vide.
Exist dou moduri de a adresa celulele unui tablou :
cnd utilizm paranteze rotunde, (), adresm celulele tabloului,
cnd utilizm acolade, {}, adresm valorile celulelor tabloului.
Fie de exemplu tabloul cu dou celule

D = {[1 2], [-1+j, 2+3j]}

D =
[1x2 double] [1x2 double]
Dumitru Al. Dumitru 20

Dup cum se observ, tabloul conine obiecte de tipuri diferite. Vrem s extragem datele din tablou.
Rezultatul instruciunii

C1 = D(2)

C1 =
[1x2 double]

este o celul.
Rezultatul instruciunii

C2 = D{2}

C2 =
-1.0000 + 1.0000i 2.0000 + 3.0000i

este chiar data din celul (este un tablou).
Vom crea un tablou cu dou celule X, cu aceleai componente ca D. Vom atribui primei celule ca
valoare vectorul [1, 2] utiliznd paranteze rotunde pentru indice. Elementul atribuit trebuie s fie o
celul.

X(1) = {[1, 2]}

X =
[1x2 double]

Vom atribui celei dea doua celule ca valoare vectorul [-1+j, 2+3j] utiliznd acolade. Elementul atribuit
trebuie s fie un tablou (datele din celul).

X{2} = [-1+j, 2+3j]

X =
[1x2 double] [1x2 double]

Afiarea primului element al vectorului [1, 2] din prima celul a lui X se face cu expresia X{1}(1)

X{1}(1)

ans =
1

Amintim c X{1} are ca rezultat vectorul [1, 2] din prima celul, iar X{1}(1) are ca rezultat primul
component al acestui vector.
Fie un vector cu dou celule cu elementele vectorii [1, 2.3] i [-3.28, 7].

Z = {[1, 2.3], [-3.28, 7]}

Z =
[1x2 double] [1x2 double]

Suma celor doi vectori se face ca mai jos.

Z{1} + Z{2}
Dumitru Al. Dumitru 21

ans =
-2.2800 9.3000

Afiarea elementelor unui tablou de celule se face cu funcia celldisp(). Ca exemplu, s afim vectorul
de celule X.

celldisp(X)

X{1} =
1 2

X{2} =
-1.0000 + 1.0000i 2.0000 + 3.0000i

Pentru a concatena elementele unui vector de celule se utilizeaz operatorul []. Exemplu. Concatenarea
elementelor vectorului X se face cu expresia

[X{:}]

ans =
1.0000 2.0000 -1.0000 + 1.0000i 2.0000 + 3.0000i

Aplicarea unei funcii asupra fiecrei celule a unui tablou se va exemplifica n capitolul referitor la
funcii.


Dumitru Al. Dumitru 22
3 Instruciuni Matlab
3.1 Instruciunea for
Instruciunea for are forma
for ident = vi:r:vf
bloc de instruciuni
end
Aici vi este valoarea iniial a variabilei ident, r este raia iar vf este valoarea final. Cnd r > 0,
instruciunea for execut blocul de instruciuni repetat cu variabila ident lund valorile vi, vi + r, vi +
2*r, ... att timp ct ident <= vr. Dac r are valoarea unu, expresia se poate scrie vi : vf.
Exemplu. Programul urmtor creaz un vector a cu cinci elemente, cu valorile 1, 1 / 2, ..., 1/5.
for i = 1 :5
a(i) = 1 / i ;
end
Menionm c, raia r poate fi i negativ. Atunci variabila ident ia valorile vi, vi + r, vi + 2*r, ... att
timp ct ident >= vr.
Instruciunea for are i urmtoarea form
for ident = expresie
bloc de instruciuni
end
Aici expresie este un vector sau o matrice.
Cnd expresie este un vector, ident ia ca valoare cte un element al vectorului i execut blocul de
instruciuni. Exemplul de mai sus poate fi scris ca
j = [1 : 1 : 5] ;
for i = j
a(i) = 1 / i ;
end
Atunci cnd expresie este o matrice, variabila ident ia pe rnd ca valoare cte o coloan a matricei i
execut blocul de instruciuni.
Exemplu. Fie matricea

1 2
2 4
3 6
a


=




Pentru fiecare coloan a
i
a matricei vrem s calculm matricea a
i
* a
i
. Fie instruciunile

a = [ [1 2 3] [-2 -4 -6]]
for i = a
i * i
end

Rezultatul este
ans =

1 2 3
2 4 6
3 6 9

ans =

4 8 12
8 16 24
Dumitru Al. Dumitru 23
12 24 36
Menionm c, n prima form a instruciunii, expresia vi : r : vf este un vector linie.
Instruciunea for se utilizeaz n acelai mod n cazul tablourilor de celule. Fie vectorul de celule de
mai jos

D = {[1 2], [-1+2j, 2+3j]}

D =
[1x2 double] [1x2 double]

Afiarea componentele celulelor cu instruciunea for se face astfel

for i = 1:2
D{i}
end

ans =
1 2

ans =
-1.0000 + 2.0000i 2.0000 + 3.0000i

Reamintim c D{i} are ca rezultat valoarea celulei.
3.2 Instruciunea while
Instruciunea while execut repetat un bloc de instruciuni att timp ct o condiie este adevrat.
Forma instruciunii este
while condiie
bloc de instruciuni
end
Ca exemplu, vom rezolva problema de mai sus.

i = 1 ;
while i <= 5
a(i) = 1 / i ;
end

In general condiia poate fi o expresie complex. In acest caz se consider partea real a expresiei.
Exemplu. Fie matricea cu elemente complexe
4 5 6
4 5 2 0
b
i i

=

+ +


Vom afia coloanele matricei atta timp ct fiecare coloan are toate elementele nenule. Fie programul
de mai jos.

i = 1 ;
while i <= 3 && all(b( :, i)
b( :, i)
i = i + 1
end

Rezultatul este urmtorul.

ans =
Dumitru Al. Dumitru 24

4.0000
4.0000 + 1.0000i

ans =

5.0000
5.0000 + 2.0000i

Operatorul && se execut n felul urmtor. Se evalueaz primul operand. Dac valoarea lui este fals,
rezultatul este fals i al doilea operand nu se mai evalueaz. Dac primul operand este adevrat,
rezultatul este al doilea operand. In felul n care este scris expresia, nu se poate ajunge la eroarea
indice eronat.
3.3 Instruciunile continue i break
Instruciunea break produce ieirea din instruciunile for, while.
Instruciunea continue produce trecerea la urmtoarea iteraie a instruciunilor for i while.
3.4 Instruciunea if
Instruciunea if execut un bloc de instruciuni n funcie de valoarea unei condiii. Forma instruciunii
if este
if condiie1
bloc1
elseif condiie2
bloc2
..............
elseif condiien
blocn
else
bloc
end
Exemplu. Vom afia un mesaj dup cum valoarea unei variabile este pozitiv sau nu.

test = -5 ;
if test >= 0
variabila este pozitiva
else
variabila este negativa
end
3.5 Instruciunea switch
Instruciunea switch execut un bloc de instruciuni n funcie de valoarea unei condiii. Forma
instruciunii switch este

switch condiie
case expresie
bloc
case expresie
bloc
.............
case expresie
bloc
otherwise
Dumitru Al. Dumitru 25
bloc
end

condiia din instruciune este orice expresie aritmetic, relaional sau boolean. Pentru nceput
instruciunea switch evalueaz condiia, rezultatul evalurii este un numr oarecare. Cnd condiia este
o expresie boolean sau relaional, rezultatul evalurii este 0 sau 1 (fals sau adevrat). Instruciunea
execut apoi blocul de instruciuni a crui expresie case coincide cu valoarea condiiei.
Comentariile din programe au forma

% comentariu

Dumitru Al. Dumitru 26
4 Funcii
4.1 Definirea funciilor
Funciile se definesc n fiiere cu extensia m. Linia de definiie a unei funcii este
function [y1, y2, , yn ] = numefuncie (x1, x2, xk)
Variabilele x1, x2, , xk sunt parametri de intrare. Variabilele y1, y2, , yn sunt calculate de funcie
i sunt parametrii de ieire. Parametrii din definiia funciei se numesc formali. Funciile pot avea
propriile variabile locale. Funciile opereaz asupra variabilelor din propriul lor spaiu, adic
variabilele locale i parametrii.
Exemplu de funcie ce calculeaz patratul i cubul unei valori

function [p, c] = pc(x)
c = x * x;
p = c * x;

O funcie este apelat ca termen ntr-o expresie. Parametrii formali din definiia funciei sunt nlocuii
la apelare cu parametrii actuali. Parametrii de intrare actuali pot fi expresii ce conin constante ,
variabile sau funcii. De exemplu, funcia de mai sus este apelat ca
[a, b] = pc(2.3)
Orice funcie are 2 parametri implicii de intrare:
nargin numrul de parametri de intrare
nargout numrul de parametri de ieire
Execuia unei funcii se termin n mod normal la sfritul funciei. Pentru a termina execuia funciei
mai nainte se utilizeaz instruciunea
return
4.2 Instruciunea global
Instruciunea global se utilizeaz pentru a defini variabile globale. Dac mai multe funcii i spaiul de
baz trebuie s utilizeze aceeai variabil, acest variabil trebuie declarat global, n fiecare funcie
i n spaiul de baz. La atribuirea unei valori acestei variabile n orice funcie sau n spaiul de baz,
valoarea este accesibil tuturor funciilor i spaiul de baz ce au declarat variabila ca global.
Forma instruciunii global este
global v1 v2
Exemplu. Fie funcia urmtoare ce utilizeaz o variabil global numit comp ce conine o matrice.

function lm = fcn(x)
% declara variabila globala comp
global comp
lm = x(1) * comp(1, 1) + x(2) * comp(2, 2) ;

Programul urmtor citete o matrice n variabila global comp i apoi apeleaz funcia fcn.

% declara variabila globala comp
global comp
% citeste datele din fisierul comp.txt n matricea comp
load comp.txt
x = [1, 2] ;
fcn(x)
Dumitru Al. Dumitru 27
4.3 Variabile handle de funcii
O variabil tip handle de funcii conine toate informaiile necesare despre o funcie care trebuie
apelat mai trziu. De obicei, o variabil tip handle de funcii este pasat ca argument unei alte funcii.
Instruciunea
fh = @numefuncie
memoreaz n variabila fh un handle al funciei numefuncie. Variabila fh poate fi pasat ca argument
altei funcii. Apelarea funciei numefuncie pasat printr-o variabil handle se face astfel
fh (lista de parametri)
unde lista de parametri conine parametrii actuali ai funciei numefuncie.
Exemplu. Fie funcia fun1(x) care calculeaz valoarea (x + 1) ^ 2. Funcia este memorat n fiierul
fun1.m.

function y = fun1(x)
y = (x + 1) ^ 2;

S calculm valoarea fun1(2.3). Funcia poate fi apelat n dou moduri:
ca o expresie n membrul drept al unei instruciuni de atribuire,

z = fun1(2.3)

z =
10.8900

printr-o variabil handle,

fh = @fun1;
z = fh(2.3)

z =
10.8900

Exemplu. Fie funcia fun2 ce calculeaz suma i suma ptratelor a dou numere. Funcia este
memorat n fiierul fun2.m

function [a b] = fun2(x, y)
a = x + y;
b = x^2 + y^2;

Vom apela funcia cu valorile x = 2.1, y = -3.3 :
ca o expresie n membrul drept al unei instruciuni de atribuire,

[z1 z2] = fun2(2.1, -3.3)

z1 =
-1.2000

z2 =
15.3000

printr-o variabil handle,

hf = @fun2;
[z1 z2] = hf(2.1, -3.3)
Dumitru Al. Dumitru 28

z1 =
-1.2000

z2 =
15.3000

In exemplele anterioare, funciile erau definite n fiiere .m. Este posibil s definim n program funcii
limitate la o singur expresie, fr nume, i s le atribuim unei variabile handle. Ele sunt apelate prin
variabila handle, ca mai ninte. Asemenea funcii fr nume se numesc anonime. Definiia unei funcii
anonime este
@(lista parametrilor formali de intrare) expresia funciei
Exemplu. S definim o funcie anonim ce calculeaz expresia (x + 1) ^ 2 i s o apelm cu x = 1.3.

fx = @(x)(x+1)^2 ;
z = fx(1.3)

z =
5.2900

Exemplu. S definim o funcie anonim care calculeaz suma i suma ptratelor a dou numere n
vectorul [x+y, x ^ 2+y ^ 2].
fz = @(x, y) [x+y, x^2+y^2] ;
Apelm funcia cu valorile x = 2.1, y = -3.3.

[z] = fz(2.1, -3.3)

z =
-1.2000 15.3000

O funcie definit ntr-un fiier .m poate avea ca parametru de intrare o variabil handle. Variabila
handle se poate iniializa cu o funcie definit ntr-un fiier .m, cu o funcie anonim, sau cu o funcie
standard Matlab. In acest fel, o funcie poate avea ca parametri alte funcii.
Fie fcn o funcie ce are ca parametru o alt funcie
x = fcn(f, list de parametri)
Aici f este o variabil handle, iar lista de parametri va conine parametrii lui f i ali parametri ai
funciei fcn. Fie fun o funcie ce va fi pasat ca parametru funciei fcn. Apelarea funciei fcn se face cu
urmtoarea secven de instruciuni:

% creaza variabila handle f
f = @fun ;
% paseaza variabila handle i
% lista de parametri actuali ai functiilor fcn si fun
x = fcn(f, lista de parametri actuali);

Exemplu. Fie funcia funb(x) ce va calcula expresia sin(f(x)), unde f(x) este o funcie oarecare, ce va fi
parametru al funciei funb. Funcia funb este memorat n fiierul funb.m.

function b = funb(fcn, x)
% fcn - variabila handle a unei functii
% ce calculeaz o expresie f(x)
y = fcn(x);
b = sin(y);

Dumitru Al. Dumitru 29
Vrem s calculm expresiile sin(x^2) i sin(x^3) cu x = 1.1. Vom defini funcia funa ce calculeaz
valoarea x^3 ca

function a = funa(x)
a = x * x * x;

i func care calculeaz valoarea x^2 ca

function a = func(x)
a = x * x;

Apelm funcia funb cu primul parametru handle al funciei funa i al doilea parametru 1.1 i obinem

fh = @funa
z = funb(fh, 1.1)

z =
0.9714

Apelm funcia funb cu primul parametru handle al funciei func i al doilea parametru 1.1 i obinem

fh = @func
z = funb(fh, 1.1)

z =
0.9356

Exemplul de mai sus are rolul de a exemplifica utilizarea funciilor Matlab ce au ca parametri alte
funcii. In cazul n care funcia ce este parametru este simpl, putem utiliza o funcie anonim ca
parametru.

z = funb(@(x)x^3, 1.1)
z =
0.9714
Limbajul Matlab are funcia standard feval care se utilizeaz pentru evaluarea funciilor standard i a
celor utilizator din fiierele .m. Funcia feval utilizeaz o variabil tip handle pentru a evalua funciile.
Funcia feval are forma
feval(handle, arg1, arg2, , argn)
unde:
handle variabil handle a funciei ce va fi evaluat
arg1, arg2, ..., argn parametrii funciei ce va fi evaluat
Vom rescrie exemplele de mai sus utiliznd funcia feval. Fie funcia funb ce calculeaz expresia
sin(f(x)). Ea poate avea urmtoarea definiie:

function b = funb(fcn, x)
% fcn - variabila handle a unei functii
% ce calculeaza o expresie f(x)
b = sin(feval(fcn, x));

Exemplu. Fie funcia funa ce calculeaz cubul unei variabile x

function a = funa(x)
a = x * x * x;

Dumitru Al. Dumitru 30
Funcia funb este apelat pentru a calcula sin(1.1
3
) astfel

fh = @funa;
b = funb(fh, 1.1);

O alt variant pentru funcia funb este urmtoarea

function b = funb(fcn, x)
% fcn - variabila handle a unei functii
% ce calculeaza o expresie f(x)
z = feval(fcn, x);
b = sin(z);

Pentru a calcula sin(x
2
) este suficient s definim o funcie ce calculeaz ptratul unei variabile x i s o
pasm ca parametru funciei funb

function a = func(x)
a = x * x ;

Funcia funb este apelat pentru a calcula sin(1.1
2
) astfel:

fh = @func;
b = funb(fh, 1.1);

Funcia feval poate evalua i funcii anonime. De exemplu, pentru a calcula valoarea expresiei x^3
pentru x = 1.5 putem scrie

feval(@(x)x^3, 1.5)

ans =
3.3750

Matlab are funcia predefinit functions ce are ca parametru o variabil tip handle de funcii i ca
rezultat o structur cu informaiile despre funcia coninut n variabila handle. De exemplu, pentru a
obine structura cu informaii despre funcia funa vom scrie
a = functions(@funa)
iar rezultatul va fi

a =

function: 'funa'
type: 'simple'
file: c:\matlab\work\funa

Pentru a afla doar fiierul n care este definit funcia vom afia cmpul file al structurii a n felul
urmtor
a.file
iar rezultatul va fi
ans =
c:\matlab\work\funa
Dumitru Al. Dumitru 31
4.4 Vectorizarea funciilor
Toate funciile standard Matlab pot aplicate asupra vectorilor i matricelor. In acest caz funcia se
aplic asupra fiecrui element al vectorului sau matricei (vectorizarea funciei). Fie de exemplu
vectorul
a = [1.1, -2.3, pi]
Instruciunea
b = sin(a)
are rezultatul
[0.8912, -0.7457, 0]
4.5 Aplicarea funciilor asupra tablourilor de celule
Funcia cellfun() permite s aplicm o funcie asupra fiecrui element al unui tablou de celule. Atunci
cnd rezultatul funciei este un scalar i valorile scalare pot fi concatenate ntr-un tablou, cellfun() are
forma
A = cellfun(fun, C1, C2, )
unde Ci sunt tablouri de celule, iar fun este o variabil handle de funcie ce se plic asupra fiecrie
celule din Ci.
Exemplu. S calculm lungimea tablourilor din celulele vectorului X

cellfun(@length, X)

ans =

2 2

Funcia cellfun are i forma
A = cellfun(fun, C1, C2, Param1, val1, )
unde Parami sunt parametri, iar vali sunt valorile acestor parametri.
Atunci cnd funcia fun nu are ca rezultat un scalar, sau rezultatele nu pot fi concatenate ntr-un tablou,
utilizm parametrul UniformOutput pus la valoarea false.
Exemplu. S aplicm funcia abs asupra elementelor vectorului de celule X. Rezultatul aplicrii
funciei abs asupra unei celule este un vector.

R = cellfun(@abs, X, 'UniformOutput' , false)

R =
[1x2 double] [1x2 double]

celldisp(R)

R{1} =
1 2

R{2} =
1.4142 3.6056


Dumitru Al. Dumitru 32
5 Reprezentri grafice
5.1 Reprezentarea curbelor plane
Reprezentarea curbelor n plan se face cu funciile din Tabelul 14:

Funcia Tipul graficului
plot scar liniar pe ambele axe
loglog scar logaritmic pe ambele axe
semilogx scar logaritmic pe axa x
semilogy scar logaritmic pe axa y
polar coordinate polare
stem grafic cu linii terminate cu cercuri
stairs grafic n scar
bar grafic cu bare
Tabelul 14. Funcii pentru reprezentarea curbelor plane.
Funciile au ca parametri perechi de vectori x1, y1, , xn, yn. Vectorii x1, x2, ..., xn conin abscisele
curbelor, iar vectorii y1, y2, ..., yn conin ordonatele curbelor. Forma funciei plot este
plot(x1, y1, , xn, yn)
Proprietile liniilor cu care se traseaz graficele sunt : culoarea (graficele pot fi trasate cu diverse
culori), stilul (continu, etc.) i simbolurile de marcaj (punctele de pe grafic pot fi marcate cu diverse
simboluri). Aceste trei proprieti (culoare, simbol de marcaj i stilul liniei) se specific utiliznd
simbolurile din Tabelul 15 printr-un ir de caractere, cte unul pentru fiecare proprietate.

Culoare Simbol Marker Simbol Stil linie Simbol
albastru b punct . continu -
verde g cerc o punctat :
rou r x x ntrerupt --
mov c plus +
roz m asterisc *
galben y ptrat s
negru k
Tabelul 15. Culori, tipuri de linii i de puncte pentru grafice.
Pentru a utiliza o anumit culoare, tip de linie sau simbol la curba (xi, yi), perechea de vectori xi, yi
este urmat de un ir de caractere din tabelul de mai sus de forma cml ce precizeaz culoarea,
markerul i simbolul cu care se traseaz curba. De exemplu, funcia
plot(x, y, 'b')
traseaz curba (x, y) cu culoarea albastru.
Reprezentarea curbelor n mai multe ferestre se face cu instruciunea
subplot(m, n, p)
Aceast instruciune mparte ecranul ntr-o matrice de m*n ferestre i traseaz axele n fereastra p,
unde p = 1, ..., m * n. Instruciunea plot urmtoare reprezint curba n fereastra p.
Funcia
xlabel(sir)
scrie eticheta axei x (un text sub axa x). Funcia
ylabel(sir)
scrie eticheta axei y (un text dealungul axei y). Funcia
title(sir)
scrie un text ca titlu al figurii.
Instruciunile precedente pot avea i ali parametrii, care s modifice tipul, dimensiunea, stilul sau
culoarea fontului. Un parametru util este FontSize ce d dimensiunea fontului. De exemplu, funcia
xlabel('sir', 'FontSize', 14)
Dumitru Al. Dumitru 33
scrie eticheta axei x cu dimensiunea fontului 14.
Afiarea unei legende pentru cele n curbe dintr-o figur se face cu instruciunile
legend(sir1, sir2, ..., sirn)
sau
legend(sir1, sir2, ..., sirn, pos)
Prima instruciune scrie legenda n colul dreapta sus. A doua instruciune scrie legendele n poziia
specificat de argumentul pos, ce are valorile din Tabelul 16.

pos Poziia
0 cea mai bun poziie
1 colul dreapta-sus
2 colul stnga-sus
3 colul stnga-jos
4 colul dreatpa-jos
-1 n afara graficului
Tabelul 16. Specificarea poziiei legendei.
Legenda arat tipul, markerul i culoarea folosite pentru a reprezenta curba, plus textul specificat.
Menionm c, figura, aria de desenare, curba, etichetele axelor, etc., sunt obiecte grafice cu
proprieti, create de funciile plot, xlabel, ylabel, etc. Toate funciile grafice au ca rezultat un handle al
obiectului grafic creat, curb, eticheta axei, legenda, titlul, etc. Acest handle poate fi memorat ntr-o
variabil i poate fi utilizat pentru a obine sau prescrie proprieti ale obiectului grafic.
De exemplu, pentru a afia legenda la figuri unde s-a utilizat instruciunea subplot, se utilizeaz
variabila handle a instruciunii plot ca mai jos
h = plot(t, x)
legend(h, sir)
Funcia
grid
traseaz o gril pe figur.
Limitele axelor se pot specifica cu instruciunea
axis(xmin, xmax, ymin, ymax)
Selectarea automat a axelor se face cu instruciunea
axis auto
Vom exemplifica utilizarea acestor instruciuni pentru reprezentarea grafic a funciilor sin(t) i cos(t)
pe intervalul [0, 2 ]. Programul este urmtorul

t = 0 :0.001 :2*pi ;
plot(t, sin(t), t, cos(t))
xlabel(time)
grid
title(sin(time), cos(time))

Rezultatul este prezentat n Figura 8.

Dumitru Al. Dumitru 34

Figura 8. Reprezentarea grafic a funciilor sin i cos pe intervalul [0, 2 ].
Este posibil de a utiliza litere greceti, alte caractere speciale sau expresii simple n instruciunile ce
afiaz iruri: title, xlabel i ylabel. Acestea se scriu dup regulile din Latex. Caracterele se definesc n
text sub forma
\nume caracter
Exemple de caractere sunt prezentate n Tabelul 17.

Caracter Definiie Caracter Definiie Caracter Definiie
\theta \leq \leftarrow

\Theta \geq \rightarrow


\Pi \neq \uparrow

\alpha ' \prime \downarrow

\pm \partial \leftrightarrow

\infty

\equiv \int

\times \div

\surd

\lfloor \rfloor

\subseteq

\supseteq
Tabelul 17. Definirea caracterelor speciale.
Definiia literelor greceti mari ncepe cu liter mare, a celor mici cu liter mic, de exemplu \Omega
pentru i respectiv \omega pentru .
Expresiile se definesc dup urmtoarele reguli:
expresii cu exponeni; expresia a
b
se definete ca a^b,
expresii cu indici; expresia x
i
se definete ca x_i,
dac este cazul, expresiile se grupeaz ntre acolade, { i }.
De exemplu, expresia e
at
se definete ca
e^a^t
Dumitru Al. Dumitru 35
sau
e^{at}
Expresia
i
a se definete ca
a_i
iar expresia x
i+j
se definete ca
x_{i+j}
Pentru a afia un text inclinat, (stilul italic), vom defini acel text ca
\ittext
iar pentru afiare cu litere groase (bold) vom defini textul ca
\bftext
Pentru exemplificare vom reprezenta grafic funcia sin() pe intervalul [0, 2 ]. Vom scrie urmtoarele
texte:
pe axa y, textul sin(),
pe axa x, textul 0 2 ,
titlul graficului va fi Functia sin().
Programul este urmtorul

t = 0: 0.001: 2*pi;
x = sin(t);
plot(t, x)
xlabel('0 \leq \theta \leq 2\pi')
ylabel('sin(\theta )')
title('Functia sin(\theta)')
grid

Rezultatul programului este cel din Figura 9.


Dumitru Al. Dumitru 36
Figura 9. Reprezentarea grafic a funciei sin() pe intervalul [0, 2 ].
Pentru a utiliza interpreterul Latex generm un ir de caractere cu expresia ce dorim s fie afiat i
apelm funcia text. Pentru exemplificare vom reprezenta funcia sin(t)/t . Legenda axei x, t[s], va fi
scris cu litere groase (bold).
xlabel('\bft[s]')
Vom afia pe figur formula sin(t) / t n centrul figurii. Pentru aceasta vom crea un ir de caractere cu
formula scris n Latex
texstr = '$\frac{sin(t)}{t}$';
Sirurile de caractere se afiaz pe grafic ntr-o anumit poziie cu funcia text cu forma
text(NumeProprietate, ValoareProprietate, )
Proprietile des utilizate ale obiectului text sunt :
String irul ce va fi afiat,
FontSize d dimensiunea fontului n uniti de font,
FontUnits unitile de font, points, normalized, pixels, centimeters,
HorizontalAlignment aliniamentul orizontal, left, center, right,
VerticalAlignment aliniamentul vertical, top, middle, bottom,
Interpreter interpreterul utilizat, latex, tex, none,
Units unitile de msur, points, normalized, pixels, centimeters
Position poziia irului, [x, y].
Opiunea normalized a proprietii Units transform colul din stnga jos al dreptunghiului figurii n
(0, 0) i cel din dreapta sus n (1, 1).
Vom apela funcia text astfel :
text('string', texstr, 'interpreter', 'latex', 'fontsize',40,...
'units','norm', 'pos',[.5 .5]);
Programul este urmtorul

t = 0:0.01:4*pi;
x = sin(t) ./ t;
plot(t, x)
grid
xlabel('\bft[s]')
texstr = '$\frac{sin(t)}{t}$';
text('string',texstr, 'interpreter', 'latex', 'fontsize',40,...
'units','norm', 'pos',[.5 .5]);

Rezultatul programului este cel din Figura 10.

Dumitru Al. Dumitru 37

Figura 10. Reprezentarea grafic a funciei sin(t) / t.
Implicit, fiecare instruciune plot creaz o nou figur. Dei o instruciune plot poate reprezenta grafic
mai multe curbe, uneori este necesar s reprezentm mai multe curbe pe aceeai figur cu mai multe
instruciuni plot. Instruciunea
hold on
menine figura curent i proprietile axelor, astfel nct urmtoarele instruciuni plot reprezint curbe
pe aceeai figur. Instruciunea
hold off
reface modul implicit al instruciunii plot, de a terge graficele precedente i de a reface proprietile
iniiale ale axelor nainte de a desena un noi grafice.
Exemplu. Fie programul:

t = 0: 0.01: pi;
a = sin(2 * t);
b = cos(4 * t);
plot(t, a);
hold on
plot(t, b)

El traseaz dou curbe cu dou instruciuni plot pe aceeai figur.
Axele pot fi fcute vizibile sau invizibile cu opiunile on i off:
axis on
axis off
In unele cazuri avem nevoie s reprezentm simultan mai multe figuri. Dup cum am spus mai nainte,
acest lucru se face cu instruciunea
subplot (m, n, p)
Dumitru Al. Dumitru 38
care mparte figura ntr-o matrice de mxn axe i selecteaz axa p pentru reprezentarea grafic ce se va
face cu instruciunea plot urmtoare.
Ca exemplu vom reprezenta curbele sin(t), cos(t), sin
2
(t) i cos(t) n funcie de sin(t) ntr-o matrice de
patru figuri. Porgramul este urmtorul.

t = 0: pi/20: 2*pi;
x = sin(t);
y = cos(t);
z = x .* x;

subplot(2, 2, 1)
plot(t, x)
grid
xlabel('t[s]')
ylabel('sin(t)')

subplot(2, 2, 2)
plot(t, y)
grid
xlabel('t[s]')
ylabel('cos(t)')

subplot(2, 2, 3)
plot(t, z)
grid
xlabel('t[s]')
ylabel('sin^2(t)')

subplot(2, 2, 4)
plot(x, y)
grid
xlabel('sin(t)')
ylabel('cos(t)')

Rezultatul rulrii programului este cel din Figura 11.

Dumitru Al. Dumitru 39

Figura 11. Reprezentare grafic ntr-o matrice de figuri.
5.2 Editarea unei figuri
Figurile i componentele lor, aria de desenare, curbele, etichetele axelor, titlul, etc., sunt obiecte cu
proprieti ce pot fi modificate. Modificarea proprietilor obiectelor se poate face n dou feluri :
interactiv, cu editorul de proprieti,
prin program, cu instruciuni ce modific proprietile.
Vom prezenta n continuare cele dou moduri de prelucrare a figurilor.
Bara de meniu a unei figuri este cea din n Figura 12. Salvarea unei figuri se face cu opiunile meniului
File. Editarea figurii se face cu opiunile meniului Edit. Inserarea de text, sgei sau linii, titlu, etc se
poate face cu opiunile meniului Insert sau cu butoanele barei de instrumente a figurii. Opiunile
acestor meniuri sunt artate n Tabelul 19.

Figura 12. Bara de meniu i bara de instrumente ale unei figuri.

Dumitru Al. Dumitru 40

a) meniul File b) meniul Edit c) meniul Insert
Tabelul 18. Meniurile File, Edit i Insert ale unei figuri.
Salvarea unei figuri se face cu opiunile Save sau Save As ale meniului File.
La editarea unei figuri se pot aduga text, linii sau sgei. Pentru aceasta se utilizeaz butoanele barei
de instrumente din Figura 12, vezi i Figura 13, sau opiunile Arrow, Line i Text ale meniului Insert
din Tabelul 18.


Figura 13. Butoane pentru editarea unei figure.
Semnificaia acestor butoane i a opiunilor meniului Insert este cea din Tabelul 19.

Buton Meniul Insert Semnificaie

Selecteaz figura

Text Adaug text

Arrow Adaug o sgeat

Line Adaug o linie
Tabelul 19. Inserarea de texte, linii sau sgei.
Procedura de adugare a unui text, a unei sgei sau a unei linii cu butoanele barei de instrumente este
urmtoarea :
1. se selecteaz figura cu un clic pe butonul sau prin afiarea meniul Insert,
2. clic pe unul din butoanele , sau , sau pe opiunile Text, Arrow, sau Line ale
meniului Insert,
3. se introduce textul, sgeata sau linia dorit.
5.3 Modificarea interactiv a proprietilor obiectelor grafice
O reprezentare grafic este format din obiecte grafice ce formeaz un arbore. La primul nivel se afl
un obiect numit root care reprezint ecranul. Pe urmtorul nivel se gsesc obiectele tip figure
(figurile). Obiectele tip figure au ca i componente obiecte tip axes care reprezint axele (zona de
desenare). Obiectele tip axes au ca i componente obiecte tip line ce reprezint curbele. Acest arbore
este afiat de Editorul de proprieti ca n Figura 14.

Dumitru Al. Dumitru 41

Figura 14. Arborele unei figuri afiat de Editorul de proprieti.
Obiectele interesante sunt axes i line ce permit modificarea proprietilor axelor i curbelor.
5.3.1 Modificarea proprietilor axelor
Obiectul axes reprezint zona de desenare : axele, etichetele axelor i titlul figurii, etc.
Proprietile obiectului axes sunt : tipul (numele fontului), dimensiunea i stilul fontului utilizat n
afiarea textelor de pe axe i din zona de desenare, unitatea de msur (pixeli, inci, centimetri, etc.),
limitele axelor, poziia axelor, culoarea zonei de desenare, etc. Modificarea acestor proprieti se face
cu editorul de proprieti. Editorul de proprieti se lanseaz n mai multe moduri :
clic pe opiunea Axes Properties a meniului Edit,
clic pe opiunea Figure Properties a meniului Edit i n caseta Edit Properties for se alege
opiunea axes, vezi Figura 14,
se afiaz meniul contextual din Figura 15 dup procedura de mai jos i clic pe opiunea
Properties.
1. se selecteaz figura cu un clic pe butonul ,
2. se execut un clic cu butonul stng pe axe sau pe figur pentru selectare,
3. se execut un clic cu butonul drept pe figur, curb, legendele axelor, titlul figurii care afiaz
un meniu contextual. In Figura 15 este afiat meniul contextual afiat la un clic pe figur.
4. se execut un clic pe opiunea Properties a acestor meniuri, ce afiaz caseta editorului de
proprieti.


Figura 15. Meniu contextual pentru editarea unei figuri.
Caseta editorului de proprieti pentru modificarea axelor, Property Editor Axes, are cteva seciuni
importante, seciunea Style din Figura 16 i seciunile X, Y, Z, vezi Figura 17 pentru seciunea X.
Modificarea stilului (proprietilor) axelor, font (dimensiune, tip), etc., se face n seciunea Style a
casetei de dialog Property Editor Axes din Figura 16. In aceast seciune se pot modifica :
titlul figurii n caseta de text Title,
stilul textului titlului se alege n seciunea text a editorului afiat cu un clic pe butonul
Properties,
culoarea fondului se alege din lista Background,
grosimea liniilor axelor se alege din lista Axes line width,
fontul, tip i dimensiune pentru axe se aleg din casetele Font name, Font size, Font units,
Font angle, etc.

Dumitru Al. Dumitru 42

Figura 16. Caseta Property Editor, seciunea Style.
Modificarea limitelor axelor se face n seciunile X, Y, Z ale casetei de dialog corespunztoare. Caseta
axei X este artat n Figura 17. Atunci cnd opiunea Limits este validat, limitele sunt alese automat
astfel nct este reprezentat ntreaga figur. Pentru a modifica limitele pentru a afia doar o parte din
figur se invalideaz opiunea Limits i se aleg limitele dorite. Se mai pot modifica :
eticheta axei n caseta de text Label,
stilul textului etichetei axei, tipul fontului, dimensiune, culoare, etc., se alege n seciunea Text
a editorului afiat cu un clic pe butonul Properties,
culoarea axei se alege din lista Color,
scala, linear sau logaritmic, se alege validnd unul din butoanele din zona Scale,
poziia axei se alege din lista Location.

Dumitru Al. Dumitru 43

Figura 17. Caseta Property Editor, modificarea limitelor axelor.
5.3.2 Modificarea proprietilor curbelor
Modificarea proprietilor liniei cu care se traseaz curba se face cu caseta de text Property Editor
Line din Figura 18. In seciunea Style a acestei casete se pot alege:
1. n seciunea Line Properties:
stilul liniei din lista Line style,
grosimea liniei din lista Line width,
culoarea liniei din lista Line color.
2. n seciunea Marker Properties:
simbolul cu care se marcheaz punctele curbei din lista Style,
dimensiunea simbolului din lista Size,
culoarea simbolului din lista Edge color.

Dumitru Al. Dumitru 44

Figura 18. Caseta Property Editor pentru modificarea proprietilor curbei.
Menionm c o serie de proprieti ale figurii, axelor, liniei se pot alege din opiunile meniurilor
contextuale afiate la un clic cu butonul drept pe figur, scala axelor, etichetele axelor. Aceste meniuri
sunt artate n Tabelul 20.






a) clic pe eticheta unei
axe sau titlul figurii
b) clic pe figur sau
axele figurii
c) clic pe curb,
text, linie, sgeat
Tabelul 20. Meniuri contextuale afiate la un clic pe figur.
Dumitru Al. Dumitru 45
In toate cazurile, un clic pe opiunea Properties afiaz caseta editorului de proprieti. In meniul din
Tabelul 20a se pot modifica dimensiunea, stilul i culoarea fontului. In meniul din Tabelul 20c se
modific grosimea, stilul i culoarea curbei, a unei sgei, linii sau text. Opiunile Cut, Copy, Paste
efectueaz operaiile respective cu Clipboardul. Opiunea Clear terge obiectul respective.
In Figura 19 este artat o figur editat. S-au modificat stilul i dimensiunea fontului axelor, eticheta
axei X i titlul figurii.


Figura 19. Exemplu de figur editat.
Un alt exemplu de figur editat este cea din Figura 20. Aici s-au inserat o sgeat i un text i s-au
modificat stilul acestora i al curbei. Inserarea obiectelor s-a fcut utiliznd bara de instrumente a
figurii. Modificarea proprietilor se poate face cu editorul de proprieti s-au utiliznd opiunile
meniurilor contextuale afiate cu un clic cu butonul drept al mousului pe obiect.

Dumitru Al. Dumitru 46

Figura 20. Exemplu de figur editat.
In cazul utilizrii Editorului de proprieti se afiaz arborele figurii, vezi Figura 21, apoi se afiaz
casete de dialog corespunztoare obiectelor de unde se aleg proprietile dorite.


Figura 21. Ierarhia obiectelor grafice ale unei figuri.
5.4 Modificarea programat a proprietilor obiectelor grafice
O figur este compus din mai multe obiecte grafice. Obiectele grafice formeaz un arbore care are ca
rdcin un obiect numit Root care corespunde ecranului. Figurile, (obiecte tip Figure), sunt
urmtoarele obiecte grafice. De regul, ele sunt create automat de funciile pentru reprezentri grafice,
plot, etc. Toate figurile sunt copiii obiectului Root. Orice alte obiecte grafice sunt copii ai unei figuri.
Obiecte interesante ale unei figuri sunt Axes, Line i Text. Obiectele tip Axes definesc axele, o
regiune n figur unde sunt reprezentate curbele. Obiectele Axes sunt prini ai obiectelor de tip Line
i Text. Obiectele tip Line sunt create de funciile pentru reprezentri grafice, plot, etc. i reprezint
curbele. Obiectele tip Text sunt create de funciile title, xlabel i ylabel reprezint iruri de caractere.
Dumitru Al. Dumitru 47
Fiecare obiect grafic este identificat de o variabil handle care este rezultatul funciei ce l creaz.
Utiliznd aceast variabil handle se pot modifica proprietilor obiectului grafic. Pentru modificarea
proprietilor unui obiect se utilizeaz funcia set cu forma
set(handle-obiect, NumeProprietate, ValoareProprietate)
Pentru a obine valoarea unei proprieti a unui obiect se utilizeaz funcia get cu forma
get(handle-obiect, NumeProprietate)
In aceste instruciuni handle-obiect este variabila handle a obiectului. Pentru a obine valoarea
variabilei handle-obiect pentru diverse obiecte se utilizeaz funciile din Tabelul 21.

Obiect grafic Funcie
Figure gcf
Axes gca
Obiectul curent selectat gco
Tabelul 21. Funcii ce dau variabila handle pentru obiecte grafice.
Instruciunea
get(handle-obiect)
afiaz toate proprietile obiectului identificat de variabila handle-obiect.
Ierarhia obiectelor grafice este cea din Figura 22. Dup cum se vede din Figura 22 obiectele de tip
Line i Text sunt copiii obiectului Axes.

Figura 22. Ierarhia obiectelor grafice.
Aceast ierarhie este afiat i de Editorul de proprieti, vezi Figura 14. In continuare vom prezenta
proprietile importante ale obiectelor grafice.
Toate obiectele grafice au proprietile comune din Tabelul 22.

Proprietate Coninut
Parent Variabila handle-obiect a printelui
Children Vector cu variabile handle-obiect ale copiilor
Type Tipul obiectului
Tabelul 22. Proprieti comune obiectelor grafice.
Stergerea unui obiect grafic se face cu funcia
delete(handle-obiect)
5.4.1 Obiectul Root
Obiectul Root reprezint ecranul. Proprietile interesante ale acestui obiect sunt cele din Tabelul 23.

Proprietate Valori
ScreenSize [left, bottom, width, height]
Units {pixels, inches, centimeters, points}
Tabelul 23. Proprietile obiectului Root.
Dumitru Al. Dumitru 48
Obiectul Root are handle 0.
Toate celelalte obiectele grafice au proprietile comune referitoare la font din Tabelul 24.

Proprietate Valori
FontAngle {normal, italic, oblic}
FontName {Courier, FixedWidth}
FontSize Dimensiunea fontului n FontUnits
FontUnits {points, normalized, pixels, inches}
FontWeight {normal, bold, light}
Tabelul 24. Proprieti commune obiectelor grafice relative la font.
5.4.2 Obiectul Figure
Proprietile obiectului Figure sunt cele din Tabelul 25.

Proprietate Valoare
Position [left, bottom, width, height]
Units {pixels, inches, centimeters, points}
DefaultAxesColor {b, g, r, c, m, y, k}
CurrentAxes Sistemul curent de axe
Tabelul 25. Proprietile obiectului Figure.
Proprietatea Position este un vector cu patru componente ce dau poziia fa de colul stnga jos al
ecranului i dimensiunile figurii. Unitatea de msur este dat de proprietatea Units. Sistemul curent de
axe este variabila handle a obiectului Axes creat cu funcia axes. De regul, figurile sunt create de
funciile pentru reprezentri grafice, plot, etc.
Obiectul figure poate fi creat cu funcia
hf = figure (proprietate, valoare, )
unde hf este variabila handle a obiectului.
La crearea unei figuri ne intereseaz proprietatea ScreenSize a obiectului Root. Ea se obine ca
scrsz = get(0, ScreenSize)
rezultatul este un vector cu patru componente, [left, bottom, width, height]. La crearea unei figuri,
aceste componente pot fi utilizate pentru a defini poziia figurii pe ecran.
5.4.3 Obiectul Axes
Obiectul Axes corespunde zonei de desenare n care sunt reprezentate axele, curbele i textele afiate
pe axe sau n zona de desenare. Obiectul axes se creaz cu instruciunea
haxes = axes(proprietate, valoare, )
unde haxes este variabila handle a obiectului.
Orice figur are un sistem curent de axe (aria curent de desenare). Acest sistem de axe este
proprietatea CurrentAxes a figurii i este variabila handle a unui sistem de axe creat cu funcia axes.
De exemplu, instruciunile
ha = axes()
set(gcf, currentaxes, ha)
creaz un sistem de axe i l face sistemul curent de axe al figurii.
Obiectul Axes are proprietile din Tabelul 26. Ele reprezint poziia zonei de desenare n figur,
poziia axelor, etichetele axelor i titlul, culoarea axelor i a textului.

Proprietate Valoare
Position [left, bottom, width, height]
OuterPosition [left, bottom, width, height]
Units {pixels, inches, centimeters, points}
XAxisLocation {top, bottom}
YAxisLocation {left, right}
Dumitru Al. Dumitru 49
Color {none, [r, g, b]}
XColor {b, g, r, c, m, y, k}
YColor {b, g, r, c, m, y, k}
XLabel Variabila handle-obiect a axei X
YLabel Variabila handle-obiect a axei Y
Title Variabila handle-obiect a titlul figurii
Tabelul 26. Proprietile obiectului Axes.
Proprietatea Position este un vector cu patru componente ce specific dreptunghiul ce ncadreaz zona
de desenare. left i bottom dau poziia colului stnga jos al dreptunghiului fa de colul stnga jos al
figurii. width i height dau dimensiunile dreptunghiului, vezi Figura 23. Unitatea de msur este dat
de proprietatea Units. Proprietatea OuterPosition este tot un vector cu patru componente ce specific
dreptunghiul ce incadreaz zona de desenare, axele i titlul. left i bottom dau poziia colului stnga
jos al dreptunghiului fa de colul stnga jos al figurii. width i height dau dimensiunile
dreptunghiului. Unitatea de msur este dat de proprietatea Units.
Pentru a modifica, de exemplu, dimensiunea fontului axelor la valoarea 18 se utilizeaz funcia
set(gca, FontSize, 18)


Figura 23. Poziia axelor n cadrul unei figuri.
Celelalte proprieti ale obiectului Axes sunt evidente. Codurile culorilor sunt cele din Tabelul 15.
Exemple de utilizare a acestor proprieti vor fi prezentate ulterior.
5.4.4 Obiectul Line
Obiectul Line reprezint o curb. Proprietile acestui obiect sunt cele din Tabelul 27.

Proprietate Valoare
XData Vector cu abscise
YData Vector cu ordonate
Color {b, g, r, c, m, y, k}
Tabelul 27. Proprietile obiectului Line.
Un obiect Line este creat cu instruciunea line de forma
hline = line (proprietate, valoare, )
unde hline este variabile handle a obiectului.
5.4.5 Obiectul Text
Obiectul Text reprezint un ir de caractere creat i afiat de instruciunile xlabel, ylabel, title. Obiectul
Text are proprietile din Tabelul 28.

Proprietate Valoare
String text
Dumitru Al. Dumitru 50
HorizontalAlignment {left, center, right}
VerticalAlignment {top, middle, bottom}
Interpreter {latex, tex, none}
Units {points, normalized, pixels, centimeters}
Position [x, y]
Tabelul 28. Proprietile obiectului Text.
Opiunea normalized a proprietii Units transform colul din stnga jos al dreptunghiului figurii n
(0, 0) i cel din dreapta sus n (1, 1).
Un obiect text este creat cu funcia text are forma
ht = text(x, y, sir de caractere)
sau forma
ht = text(x, y, sir de caractere, NumeProprietate, ValoareProprietate)
Funcia text are ca rezultat variabila handle al obiectului creat, ht.
Funcia scrie textul dintre apostrofuri n punctul de coordonate (x, y) al figurii. x i y pot fi vectori, caz
n care textul este scris n toate perechile de coordonate date de x i y. Dac textul este un tablou cu
acelai numr de linii ca dimensiunea vectorilor x i y, atunci funcia text afiaz n fiecare punct linia
corespunztoare din tablou. Parametri NumeProprietate i ValoareProprietate dau caracteristicile
textului: tipul i dimensiunea fontului, etc.
Exemplu. Vom reprezenta grafic funcia sin(t) creind direct figura, aria de desenare, i curba. Vom
crea o figur cu limea jumtatea din laimea ecranului i nlimea jumtatea din nlimea ecranului.
Poziia punctului din stnga jos va fi (1, limea ecranului / 2). Dimensiunile ecranului, n pixeli, se
obin cu funcia
scrsz = get(0, 'screensize')
Figura se creaz cu instruciunea
hf = figure('position', [1, scrsz(4)/2, scrsz(3)/2, scrsz(4)/2])
Vom crea o arie de desenare cu instruciunea
ha = axes('position', [0.13, 0.11, 0.775, 0.815])
pentru a avea loc pentru etichetele axelor.
Vom reprezenta grafic o funcie cu instruciunea
hl = line(t, st)
Programul este cel de mai jos.

t = 0: 0.01: 2*pi;
st = sin(t);

scrsz = get(0, 'screensize')

scrsz =
1 1 1440 900

hf = figure('position', [1, scrsz(4)/2, scrsz(3)/2, scrsz(4)/2])

hf =
1

ha = axes('position', [0.13 0.11 0.775 0.815])

ha =
158.0076

hl = line(t, st)

hl =
Dumitru Al. Dumitru 51
159.0076

thx = text('string', 't')

thx =
160.0076

set(ha, 'xlabel', thx)

thy = text('string', 'sin(t)')

thy =
161.0077

set(ha, 'ylabel', thy)

grid

Rezultatul fiecrei funcii a programului este cel din figurile de mai jos. Menionm c, odat curba
creat, etichetele axelor se puteau crea i cu funciile xlabel i ylabel.


Figura 24. Figura creat cu instruciunea figure.


Dumitru Al. Dumitru 52

Figura 25. Figura i aria de desenare.



Figura 26. Figura, aria de desenare i curba.
Dumitru Al. Dumitru 53

Figura 27. Figura, aria de desenare, curba i etichetele axelor.
5.4.6 Modificarea proprietilor obiectelor grafice
In acest paragraf vom exemplifica modificarea proprietilor obiectelor grafice ce constituie o figur.
Putem de exemplu afla eticheta axei X astfel :

% fa este variabila handle-obiect a obiectului axes
fa = get(gca)
% afiaz proprietile obiectului axes
get(fa)
% fxlabel este variabila handle-obiect a obiectului axa X
fxlabel = get(fa, xlabel)
% obine valoarea proprietii string a obiectului axa X
% care este eticheta axei X
get(fxlabel, string)

Vom exemplifica utilizarea obiectelor grafice cu un program care reprezint grafic funcia sin() pe
intervalul [0, 2 ]. Vom scrie urmtoarele texte:
pe axa y textul sin(),
pe axa x textul 0 2 ,
textul titlului va fi Plot of sin(),
n punctul (, 0) vom afia mesajul sin().
Toate textele vor fi scrise cu font cu dimensiunea 14. Pentru aceasta vom pune proprietatea FontSize a
obiectului Axis la valoarea 14 cu instruciunea
set(gca, 'FontSize', 14)
Programul este urmtorul

t = 0: 0.01: 2 ;
x = sin(t);
plot(t, x)
set(gca, 'FontSize', 14)
title('Plot of sin(\Theta)')
Dumitru Al. Dumitru 54
xlabel('0 \leq \Theta \leq \pi')
ylabel('sin(\pi )')
text(pi, 0, '\leftarrow sin(\pi)', 'FontSize', 14)
grid

Rezultatul programului este cel din Figura 28.


Figura 28. Reprezentarea grafic a funciei sin() pe intervalul [0, 2 ].
Textul mesajului este scris n punctual de coordinate (, 0) la scala axelor.
Ca un alt exemplu vom reprezenta grafic o curb n partea dreapt a unei figuri iar n partea stng
vom scrie parametrii curbei. Fie curba
) sin( * t Ae y
t


= , t = [0, 4]
Textul cu parametrul curbei este definit sub forma unui vector de celule. Vom utiliza funcia axes care
creaz axele ntr-o poziie arbitrar. Funcia
axes(position, [left, bottom, width, height])
creaz axele (o zon de desenare) n dreptunghiul [left, bottom, width, height] relativ la colul stnga
jos al figurii, n uniti normalizate, unde (0, 0) este colul din stnga jos, iat (1, 1) este colul din
dreapta sus, i d un handle la obiectul creat.
In exemplul nostru vom crea mai nti un sistem de axe invizibil cu instruciunea
h = axes('position', [0 0 1 1], 'visible', 'off');
Apoi vom face acest sistem de axe sistemul current de axe al figurii.
set(gcf, 'currentAxes', h)
Vom scrie apoi parametrii curbei cu o instruciune text. Vom crea apoi un nou sistem de axe n dreapta
figurii cu instruciunea
axes('position', [.25 .1 .7 .8]);
i vom reprezenta grafic curba cu o instruciune plot.

Dumitru Al. Dumitru 55
t=0: 0.01: 4;
str(1) = {'Plot of the function'};
str(2) = {'y=A{\ite}^{-\alpha{\itt}}*sin(-\alpha{\itt})'};
str(3) = {'with the values'};
str(4) = {'A=0.25'};
str(5) = {'\alpha = 0.05'};
str(6) = {'t = 0: 0.01: 4'};
h = axes('position', [0 0 1 1], 'visible', 'off');
set(gcf, 'currentAxes', h)
text(0.05, .6, str, 'FontSize', 8)
axes('position', [.25 .1 .7 .8]);
A = 0.25 ;
alfa = 0.05 ;
z = A*exp(-alfa*t) .* sin(-alfa *t);
plot(t, z)
grid

Rezultatul programului este cel din Figura 29.


Figura 29. Reprezentarea unei curbe.
Ca un alt exemplu vom reprezenta dou curbe pe acelai grafic n dou sisteme de axe. Culoarea zonei
de desenare va fi verde. Pentru acesta vom utiliza instruciunea
set(gcf, 'defaultaxescolor', 'g');
Fie (x1, y1) vectorii cu perechi de puncte ai primei curbe. Aceast curb va fi trasat cu culoarea roie
cu o instruciune de forma
h11 = line(x1, y1, color, r);
Dumitru Al. Dumitru 56
Poziia axelor acestei curbe este cea implicit, la stnga i jos. Vom prescrie culoarea celor dou axe
roie. Pentru aceasta se obine variabila handle a obiectului Axes corespunznd curbei i apoi se
prescriu culorile axelor.
ax1 = gca;
set(ax1, 'XColor', 'r', 'YColor', 'r');
Se creaz un nou obiect Axes cu aceeai poziie cu obiectul Axes al primei curbe, poziia axelor fiind
sus i dreapta, culoare axelor neagr:
ax2 = axes('position', get(ax1, 'position'), ...
'XAxisLocation', 'top', 'YAxisLocation', 'right', ...
'Color', 'none', 'XColor', 'k', 'YColor', 'k');
Se reprezint a doua curb n noile axe, noul obiect Axes fiind printele obiectului Line ce reprezint
curba (x2, y2).
h12 = line(x2, y2, 'Color', 'k', 'parent', ax2);
Programul final este cel de mai jos.

x1 = [0:.1: 40];
y1 = 4 .* cos(x1) ./ (x1 + 2);
x2 = [1: .2: 20];
y2 = x2 .^ 2 ./ x2 .^ 3;
set(gcf, 'defaultaxescolor', 'g');
h11 = line(x1, y1, 'color', 'r');
ax1 = gca;
set(ax1, 'XColor', 'r', 'YColor', 'r');
ax2 = axes('position', get(ax1, 'position'), ...
'XAxisLocation', 'top', 'YAxisLocation', 'right', ...
'Color', 'none', 'XColor', 'k', 'YColor', 'k');
h12 = line(x2, y2, 'Color', 'k', 'parent', ax2);
grid

Rezultatul rulrii programului este cel din Figura 30.

Dumitru Al. Dumitru 57

Figura 30. Reprezentarea a dou curbe pe un grafic.
Obiectul Figure are proprietatea CurrentObject ce conine variabila handle-object a ultimului obiect
grafic din figur selectat de utilizator. Valoarea acestei variabile este dat de funcia gco sau cu
instruciunea
get(gcf, CurrentObject)
Cunoscnd variabila handle-object a obiectului selectat se pot modifica proprietile acesteia. Obiectul
selectat poate fi Axes, Line sau Text adugat de utilizator pe figur.

Dumitru Al. Dumitru 58
6 Transformata Fourier discret
Fie x(t) o funcie de timp i fie x vectorul valorilor eantionate ale funciei
x = (x
1
, x
2
, , x
N
)
Transformata Fourier discret a funciei este
X = (X
1
, X
2
, , X
N
)
unde numerele X
i
sunt date de relaia
( ) ( )
( )( )

=
N
n
N
n k j
e n x k X
1
1 1 2
, N k 1
Transformata Fourier discret invers se calculeaz cu relaia
( ) ( )
( )( )

=

=
N
k
N
n k j
e k X
N
n x
1
1 1 2
1

, N n 1
Vom exemplifica cele de mai sus reprezentnd transformata Fourier discret a unui semnal. Fie funcia
de timp
x(t) = sin(2 * pi * 50 * t) + 1.5 * sin(2 * pi * 100 * t) + ...
sin(2 * pi * 200 * t) + .5 * sin(2 * pi * 350 * t)
Funcia ce calculeaz transformata Fourier discret este
fft(x)
unde x este vectorul valorilor funciei de timp n puncte echidistante. Funcia
ifft(X)
calculeaz transformata Fourier invers.
Se va scrie o funcie Matlab care calculeaz transformata Fourier rapid a lui x(t) i reprezint pe x(t)
i modulul transformatei Fourier n dou ferestre.
Funcia Matlab este urmtoarea

function testx

t = 0: 0.001 : 0.511;
fe = 1 / (t(2) - t(1)); % 1 / T
x = sin(2 * pi * 50 * t) + 1.5 * sin(2 * pi * 100 * t) + ...
sin(2 * pi * 200 * t) + .5 * sin(2 * pi * 350 * t);
Xt = fft(x);
Xm = abs(Xt);
N = length(x);
X = Xm(1: N / 2 + 1);
f = [0: N / 2] * fe / N; % k * fs / N, k = [0: N /2]
% afisaza x si X in doua ferestre
% afisaza x
subplot(2, 1, 1)
plot(t, x);
grid
xlabel('t [s]')
% afisaza X
subplot(2, 1, 2)
plot(f, X)
grid
xlabel('f [rad / s]')

Rezultatul execuiei acestei funcii este cel din Figura 31

Dumitru Al. Dumitru 59

Figura 31. Funcie de timp i transformata Fourier discret.
Dumitru Al. Dumitru 60
7 Integrarea ecuaiilor difereniale ordinare
Fie o ecuaie diferenial ordinar de forma
x
'
= f(t, x)
unde t este variabila independent, de regul timpul. Se cere determinarea soluiei ecuaiei pe un
interval dat, [t
0
, t
f
], n condiia iniial x(t
0
) = x
0
dat.
Determinarea soluiei ecuaiei se face utiliznd o metod de integrare existent n Matlab. Metodele de
integrare apeleaz o funcie care calculeaz membrul drept al ecuaiei difereniale (derivata). Funcia
are forma
xdot = valdot(t, x)
unde t i x sunt parametrii de intrare ai funciei:
t timpul,
x vectorul soluiei la momentul t.
Funcia valdot calculeaz derivata xdot la momentul t. xdot este un vector coloan. Funcia respectiv
este scris ca un fiier cu extensia m i este parametru al metodei de integrare (un handle al acestei
funcii este pasat metodei de integrare).
Exemplu. Fie ecuaia diferenial
y'' + 3y' + 2y = 0
n condiiile iniiale y
0
= 1, y
0
' = 0.
Funcia pentru calculul derivatelor este

function xdot = valdot(t, x)
xdot(1) = x(2);
xdot(2) = -3 * x(2) 2 * x(1);
xdot = xdot
'
;

Funcia se scrie urmnd procedura de transformare a unei ecuaii difereniale ordinare de ordin
superior ntr-un sistem de ecuaii difereniale ordinare de ordinul I. Reamintim c, vectorul derivatelor
trebuie s fie coloan, astfel nct n ultima instruciune din funcie se transpune vectorul xdot.
Dou metode existente n Matlab sunt cele de tip Runge-Kutta de ordin 2 i 4. Forma funciilor
corespunztoare este
[ ] ( )
0
, , @
45
23
x ts valdot
ode
ode
x t

=
unde vectorul t
s
= [t
0
, t
f]
conine limitele intervalului pe care se calculeaz soluia, iar x
0
este vectorul
condiiilor iniiale. Funcia valdot calculeaz derivata ca mai sus.
Vom calcula soluia ecuaiei de mai sus pe 5 s n condiiile iniiale y
0
= 1 i y'
0
= 0. Programul este
urmtorul:

ts = [0 5];
x0 = [1 0]';
[t x] = ode45(@valdot, ts, x
0
);
plot(t, x)
grid
xlabel('t [s]')
legend('x', 'x''')

Soluia ecuaiei este reprezentat n Figura 32.
Funciile Matlab ce integreaz ecuaii difereniale ordinare ajusteaz dimensiunea pasului de integrare
pn la satisfacerea unui criteriu de eroare. Parametrii metodei de integrare se pot prescrie cu funcia
odeset de forma
options = odeset('numeparametru', valoare, )
Parametrii ce se pot prescrie sunt
RelTol eroarea relativ,
Dumitru Al. Dumitru 61
AbsTol eroarea absolut,
InitialStep valoarea iniial a pasului de integrare,
MaxStep valoarea maxim a pasului de integrare.
Funciile estimeaz eroarea la un pas de integrare calculnd soluia odat cu un pas de integrare h i
apoi cu pasul h/2.
Eroarea relativ este o valoare scalar, pozitiv. Implicit ea este aleas egal cu 1e-3.
Eroarea absolut este un scalar sau un vector cu componente pozitive pentru fiecare component al
soliiei. Implicit ea este aleas egal cu 1e-6.
Pasul de integrare h se njumtete pn cnd eroarea estimat satisface relaia
e(i) < max(RelTol * abs(y(i)), AbsTol(i))


Figura 32. Soluia ecuaiei difereniale y'' + 3y' + 2y = 0 n condiiile iniiale y
0
=1, y'
0
=0.
Parametrul options, dac exist, va fi al patrulea parametru al funciei de integrare, ca n exemplul de
mai jos.
[t, x] = ode45(@valdot, ts, x0, options)
In unele cazuri, ecuaia diferenial ordinar depinde de parametri. Este de dorit ca aceti parametri s
fie pasai funciei de integrare, care la rndul ei s i paseze ca parametri funciei ce calculeaz
membrul drept al ecuaiei difereniale. Fie de exemplu ecuaia diferenial ordinar
y'' + p
1
y' + p
2
y = 0
n condiiile iniiale y
0
= 1, y
0
' = 0. p
1
i p
2
sunt parametri.
Vom pune ecuaia sub forma sistemului de ecuaii difereniale de ordinul I.
x
1
' = x
2

x
2
' = -p
1
* x
2
p
2
* x
1

In acest caz p
1
i p
2
trebuie s fie parametri ai funciei fct ce calculeaz membrul drept al sistemului de
ecuaii difereniale de ordin I, ca mai jos

function dx = fct(t, x, p1, p2)
Dumitru Al. Dumitru 62
dx(1) = x(2);
dx(2) = -p1 * x(2) p2 * x(1);
dx = dx'

Vom apela funcia ode45 cu aceti parametri n felul urmtor

ts = [0 10];
x0 = [1 0]';
[t, x] = ode45(@fct, ts, x0, [], p1, p2);

Parametrii ce intervin n funcia de calcul al derivatelor, se scriu n expresia funciei de integrare dup
parametrul options. In exemplul de mai sus, parametrul options este un vector vid, [], deoarece nu a
fost definit. Programul de integrare a ecuaiei difereniale pentru valorile -2, -3 i -0.4, -0.6 pentru
parametrii p
1
i p
2
este urmtorul.

ts = [0, 12];
x0 = zeros(2,1);
[t, x] = ode45(@chpar, ts, x0, [], -2, -3);
[t1, x1] = ode45(@chpar, ts, x0, [], -0.4, -0.6);
plot(t, x(:, 1), t1, x1(:, 1))
grid
xlabel('t[s]')

Soluia ecuaiei difereniale, pentru cele dou seturi de valori ale parametrilor p
1
i p
2
, este cea din
Figura 33.

Figura 33. Soluia ecuaiei difereniale y'' + p
1
y' + p
2
y = 0 n condiiile iniiale y
0
=1, y'
0
=0, pentru diverse valori ale
parametrilor.
Dumitru Al. Dumitru 63
8 Filtre numerice
Un filtru numeric este descris de ecuaia cu diferene
1 1 2 1 1 1 2 1 + +
+ + + = + + +
m n m n n k n k n n
u b u b u b y a y a y a K K
sau, echivalent, de funcia de transfer
( )
k
k k
m
m m
a z a z a
b z b z b
z H
+ + +
+ + +
=

K
K
1
2 1
1
2 1

Calculul ieirii filtrelor numerice cu o intrare i o ieire se face cu funcia
y = filter(b, a, u)
Vectorii a i b din definiia funciei conin coeficienii filtrului. Vectorul u conine valorile intrrii.
Vectorul y conine ieirea filtrului.
Exemplu. Fie sistemul descris de funcia de transfer
125 . 0 75 . 0
5 . 0
) (
2
+

=
z z
z
z H
Intrarea este


Figura 34. Intrarea filtrului numeric.
Funcia pentru calculul ieirii este cea de mai jos.

function flt

a = [1, -0.75, 0.125];
b = [0, 1, -0.5];
x=[5 5 5 5 5 -5 -5 -5 -5 -5 5 5 5 5 5 -5 -5 -5 -5 -5 0 0 0 0 0];
y = filter(b, a, x);

dm = size(x);
sz = dm(2);
t = 1: 1: sz;
plot(t, x, t, y);
grid
xlabel('t')
ylabel('u, y')

Rezultatul funciei este cel din Figura 35.
Dumitru Al. Dumitru 64

Figura 35. Intrarea i ieirea filtrului numeric.

Dumitru Al. Dumitru 65
9 Rezolvarea ecuaiilor algebrice neliniare
Rezolvarea sistemelor de ecuaii algebrice neliniare se face cu funcia fsolve. Fie un sistem de ecuaii
neliniare
f(x) = 0
unde x este un vector cu n componente, iar f(x) este o funcie vectorial cu n componente. Funcia
fsolve are ca parametri funcia f(x) i punctul iniial x0. Funcia f(x) poate fi definit ntr-un fiier .m.
Funcia fsolve poate avea ca parametru de intrare i o structur options ce conine criterii de oprire a
calculului, modul de afiare a rezultatelor, etc. Structura options se creaz cu funcia optimset cu forma
options = optimset(param1, val1, param2, val2, )
unde parami este numele unui parametru i vali este valoarea acelui parametru. Parametrii ce se pot
prescrie sunt:
MaxIter numrul maxim de iteraii,
TolFun tolerana valorii funciei; minimizarea se termin atunci cnd valoarea funciei ntre
iteraii se modific mai puin dect TolFun,
TolX tolerana punctului x; minimizarea se termin atunci cnd punctul x ntre iteraii se
modific mai puin dect TolX.
Display modul de afiare a rezultatelor [ off | iter | notify | final ]; iter afiaz rezultatele dup fiecare
iteraie, final afiaz doar rezultatul final.
Funcia fsolve are urmtoarele forme:
funcia
x = fsolve(fun, x0)
are ca rezultat punctul de minim x al funciei fun. x0 este punctul iniial, iar x este punctul n
care funcia atinge minimul,
funcia
x = fsolve(fun, x0, options)
are ca rezultat punctual de minim x al funciei fun. x0 este punctul iniial, iar options este o
structur cu criterii de oprire a minimizrii care primete valori ca mai sus,
funcia
[x, fval] = fsolve(fun, x0, )
are ca rezultat punctul de minim x al funciei fun i valoarea funciei, fval, n acest punct,
funcia
[x, fval, exitflag] = fsolve(fun, x0, )
are ca rezultat i variabila exitflag cu condiiile de oprire a minimizrii:
0numrul maxim de iteraii mai mare ca Maxiter,
1mrimea gradientului mai mic dect cea specificat,
2modificarea n x mai mic dect TolX,
3 modificarea n funcia obiectiv mai mic dect TolFun.
Exemplu. S rezolvm sistemul de ecuaii neliniare
x
2
-2y
2
+ 4.82 = 0
2x + 4y
2
-16.74 = 0
Punctul iniial este x0 = 1.3 i respectiv y0 = 1.7.
Funcia se definete n fiierul fval.m ca mai jos



f unct i on f = f val ( x)

f ( 1) = x( 1) * x( 1) - 2 * x( 2) * x( 2) + 4. 82;
f ( 2) = 2 * x( 1) + 4 * x( 2) * x( 2) - 16. 74;

Apelm funcia fsolve cu forma

x = f sol ve( @f val , [ 1. 3 1. 7] ' )
Dumitru Al. Dumitru 66

i obinem rezultatul

Opt i mi zat i on t er mi nat ed: f i r st - or der opt i mal i t y i s l ess t han opt i ons. Tol Fun.

x =

1. 4494
1. 8602

Apelm funcia fsolve cu forma

[ x f ] = f sol ve( @f val , [ 1. 3 1. 7] ' )

i obinem rezultatul

Opt i mi zat i on t er mi nat ed: f i r st - or der opt i mal i t y i s l ess t han opt i ons. Tol Fun.

x =

1. 4494
1. 8602


f =

1. 0e- 009 *

- 0. 1235 0. 4388

Apelm funcia fsolve cu forma

[ x f exi t f l ag] = f sol ve( @f val , [ 1. 3 1. 7] ' )

i obinem rezultatul

Opt i mi zat i on t er mi nat ed: f i r st - or der opt i mal i t y i s l ess t han opt i ons. Tol Fun.

x =

1. 4494
1. 8602


f =

1. 0e- 009 *

- 0. 1235 0. 4388


exi t f l ag =

1


Dumitru Al. Dumitru 67
10 Interpolarea funciilor
Fie o funcie f(x) ale crei valori sunt date prin perechi de puncte (x
i
, y
i
), i = 1, n. Pentru a
determina valoarea funciei ntr-un punct x se interpoleaz ntre valorile funciei corespunznd
punctelor x
i
.
Funcia Matlab de interpolare este interp1 cu formele:
YA = interp1(X, Y, XA)
YA = interp1(X, Y, XA, 'metoda')
Vectorii X i Y conin punctele x
i
i respectiv y
i
. Punctele x
i
sunt n ordine cresctoare. interp1
calculeaz YA, valoarea funciei n punctul XA. Dac XA este scalar, interp1 calculeaz valoarea
funciei n acest punct. Dac XA este vector, rezultatul YA este un vector cu valorile funciei n
punctele din vectorul XA. Un exemplu este cel de mai jos.

xtab = [10 16 25 32 40 100 250];
ytab = [1.6 2.1 2.5 3 3.5 4 5];
a = 32;
rez = interp1(xtab, ytab, a);

In forma a doua se poate specifica metoda de interpolare. Metode disponibile sunt 'linear' i 'cubic'. In
prima form se utilizeaz interpolarea liniar.
Dumitru Al. Dumitru 68
11 Operaii cu polinoame
Fie polinomul
A(x) = a
1
x
n
+ a
2
x
n-1
+ + a
n
x + a
n+1

cu coeficieni reali sau compleci. Acest polinom este dat prin vectorul coeficienilor
A = (a
1
a
2
a
n
a
n+1
)
Calculul rdcinilor polinomului se face cu funcia
R = roots(A)
care are ca rezultat vectorul R cu rdcinile polinomului.
Exemplu. Fie polinomul
A(x) = (1 + 2i)x
2
+ 2.3x + 5.2
Calculul rdcinilor polinomului se face ca mai jos.

A = [1+2i 2.3 5.2];
R = roots(A)

R =

0.4846 + 1.7674i
-0.9446 - 0.8474i

Calculul valorii polinomului A n punctual x se face cu funcia
polyval(A, x)
Valoarea polinomului A(x) n punctul x = 2 3.5i este

polyval(A, 2-3.5i)

ans =

29.5500 -38.5500i

Valoarea polinomului A pentru prima rdcin este

polyval(A, R(1))

ans =

0 +1.7764e-015i

Dumitru Al. Dumitru 69

12 Interfee grafice
Limbajul Matlab are posibilitatea de a construi interfee grafice. Exist dou moduri de a construi o
interfat grafic :
cu aplicaia GUIDE,
prin utilizarea funciilor Matlab de creare a unei interfee grafice.
12.1 Construirea unei interfee grafice cu aplicaia GUIDE
12.1.1 Descrierea aplicaiei GUIDE
Aplicaia GUIDE este un mediu de dezvoltat interfee grafice. Aplicaia GUIDE se lanseaz din linia
de comand cu instruciunea
guide
Comanda guide lanseaz editorul Layout care afiaz caseta de dialog GUIDE Quick Start din Figura
36.


Figura 36. Caseta de dialog GUIDE Quick Start.
Seciunea Create New GUI permite alegerea unui ablon de interfa grafic. Seciunea Open
Existing GUI deschide o interfa grafic existent.
Crearea unei noi interfee grafice se face astfel:
n seciunea Create New GUI se selecteaz ablonul Blank GUI (Default),
clic pe butonul OK i editorul Layout afiaz o interfaa grafic goal ca n Figura 37.
In partea stng a ferestrei este afiat paleta de componente din care se pot insera diverse obiecte
grafice: butoane, meniuri, casete de text, etc. In partea dreapt a ferestrei se afl aria de desenare n
care se insereaz componentele interfeei. Dimensiunile interfeei se pot modifica prin tragerea
butonului din dreapta jos a ariei de desenare din Figura 37.

Dumitru Al. Dumitru 70

Figura 37. Fereastra editorului Layout. Interfa grafic goal afiat cu opiunea Blank GUI.
Meniul File din Tabelul 29 are n general opiunile cunoscute. O parte din opiuni se pot activa i din
butoanele barei de instrumente din Figura 38.


Figura 38. Bara de instrumente a aplicaiei GUIDE.

Tabelul 29. Meniul File al editorului Layout.
Opiunile meniului File sunt urmtoarele:
opiunea New i butonul afiaz caseta de dialog GUIDE Quick Start din Figura 36,
opiunea Open i butonul afiaz caseta de dialog pentru deschiderea unei interfee grafice
existente,
opiunea Close nchide editorul Layout,
opiunea Save i butonul salveaz interfaa creat,
Dumitru Al. Dumitru 71
opiunea Save As salveaz interfaa grafic creat sub un nume nou,
opiunea Preferences afiaz caseta de dialog Preferences unde se pot alege diverse opiuni ale
mediului de programare Matlab; Figura 39 prezint seciunea corespunztoare aplicaiei
GUIDE; aici se va marca opiunea Show names in component palette i, n paleta de
componente, se vor afia i numele componentelor; fereastra editorului Layout va arta ca n
Figura 40.


Figura 39. Caseta de dialog Preferences cu opiunile aplicaiei GUIDE.
Meniul File afiaz i ultimele patru interfee grafice create.
Dumitru Al. Dumitru 72

Figura 40. Fereastra editorului Layout. Interfa grafic goal afiat cu opiunea Blank GUI. Paleta cu
componente afiaz i numele componentelor.
Aria de desenare se poate poate modifica astfel nct s afieze sau s ascund riglele pe cele dou axe,
s afiaze sau s ascund grila de desenare, s modifice distana ntre liniile grilei, etc. Aceste opiuni
se activeaz n caseta de dialog Grid and Rulers din Figura 41, afiat cu un clic pe opiunea Grid and
Rulers a meniului Tools.


Figura 41. Caseta de dialog Grid and Rulers.
Aria de desenare cu opiunea Show rulers activat este artat n Figura 42. In acest caz se pot vedea
coordonatele cursorului.
Dumitru Al. Dumitru 73

Figura 42. Aria de desenare cu opiunea Show rulers activat.
Putem trasa linii pentru ghidarea alinierii componentelor ca n Figura 43


Figura 43. Linii pentru ghidarea alinierii componentelor.
Acest lucru se face cu clic pe rigla orizontal sau vertical dup care se trage linia n interiorul zonei
de desenare cu butonul stng al mousului apsat. Liniile odat trasate, se pot deplasa cu butonul stng
al mousului apsat.
Dumitru Al. Dumitru 74
12.1.2 Crearea interfeei grafice
Componentele interfeei grafice se selecteaz n paleta cu componente din partea stng i se trag n
aria de desenare din partea dreapt (drag and drop). Figura 44 arat o interfat grafic cu elementele
plasate n aria de desenare.
Elementele interfeei grafice se pot copia, terge, muta, etc., cu opiunile meniului Edit, cu butoanele
barei de instrumente sau cu opiunile meniului contextual al obiectului, selectat cu un clic cu butonul
drept pe obiect, vezi Tabelul 30.



a) meniul Edit b) meniu contextual
Tabelul 30. Meniul Edit i meniu contextual al unui obiect grafic.
Semnificaia opiunilor meniului Edit este urmtoarea :
opiunea Cut i butonul mut componentul selectat n Clipboard,
opiunea Copy i butonul copiaz componentul selectat n Clipboard,
opiunea Paste i butonul copiaz componentul din Clipboard,
opiunea Clear terge componentul selectat,
opiunea Select All selecteaz toate componentele interfeei grafice,
opiunea Duplicate creaz un nou component de tipul celui selectat,
opiunea Undo i butonul anuleaz ultima comand,
opiunea Redo i butonul execut ultima comand.
Obiectele componente ale interfeei se pot selecta n mai multe feluri :
un component al interfeei se poate selecta cu un clic de mouse,
mai multe componente se pot selecta cu clic de mouse pe cte un component i tasta Ctrl inut
apsat,
toate componentele interfeei se selecteaz cu un clic pe opiunea Select All a meniului Edit.
Aciunile Cut, Copy, Duplicate i Clear se execut asupra unui obiect selectat.
O parte din opiunile meniului Edit exist i n meniul contextual al obiectului afiat cu un clic cu
butonul drept pe obiect, vezi Tabelul 30.
Dumitru Al. Dumitru 75

Figura 44. Interfa grafic.
Dup plasarea elementelor n aria de desenare, elementele nu sunt n general aliniate, au numele
obiectului grafic din paleta de obiecte, iar secvena de deplasare de la un obiect la altul cu tasta Tab
este cea n care au fost adugate interfeei. Interfaa grafic cu elementele plasate n aria de desenare
poate fi modificat astfel:
obiectele pot fi aliniate orizontal i vertical,
se poate prescrie secvent de deplasare de la un obiect la altul cu tasta Tab,
se pot modifica proprietilor obiectelor grafice : numele obiectelor grafice, fontul, culorile
fondului i primplanului, poziia, se pot adaug elementele dorite n caseta Listbox, sau opiuni
n meniul Popup, etc.
Prelucrarea interfeei grafice se face cu opiunile meniurilor View, Tools i meniului contextual al
obiectului, artate n Tabelul 31. O parte din aceste opiuni pot fi activate i cu butoane din bara de
instrumente. Aceste opiuni sunt :
Align Objects i butonul afiaz caseta Align Objects ce permite alinierea obiectelor,
Property Inspector i butonul afiaz caseta Property Inspector ce permite modificarea
proprietilor obiectelor,
Tab Order Editor permite alegerea secvenei de deplasare de la un obiect la altul cu tasta Tab,
Grid and Rulers a meniului Tools modific opiunile relative la aria de desenare (a fost
prezentat mai nainte),
Object Browser i butonul afiaz un arbore cu obiectele interfeei.

Dumitru Al. Dumitru 76


a) meniul View b) meniul Tools c) meniu contextual
Tabelul 31. Meniurile View, Tools ale editorului Layout i meniul contextual al obiectului grafic.
12.1.3 Alinierea componentelor
Alinierea componentelor se face cu opiunea Align Objects a meniului Tools sau cu butonul din
bara de instrumente. Fie de exemplu interfaa din Figura 45, cu trei butoane ce trebuie aliniate. La
activarea opiunii Align objects se afiaz caseta de dialog Align Objects din Figura 45. In caset se
pot prescrie:
divese moduri de aliniere vertical i orizontal,
distana ntre obiecte n pixeli.
Dup alegerea modului de aliniere i a distanei ntre obiecte clic pe butonul Apply i apoi pe butonul
OK.

Figura 45. Interfaa grafic.
Rezultatul alinierii celor trei butoane din Figura 45 este artat n Figura 46.

Dumitru Al. Dumitru 77

Figura 46. Interfaa grafic din Figura 45 cu obiectele aliniate.
Putem ncadra diverse obiecte ale interfeei cu un contur reprezentat de obiectul Frame. Acest lucru se
face astfel:
1. se selecteaz obiectul Frame i se ncadreaz obiectele dorite cu un contur,
2. clic pe opiunea Send to Back a meniului contextual al elementului sau a meniului Layout.

Aciunea Interfaa grafic
Obiectele ce vor fi ncadrate cu un contur

Se selecteaz obiectul Frame i se
ncadreaz cele dou obiectele Edit Text
cu un contur

Clic pe opiunea Send to Back a
meniului contextual al elementului sau a
meniului Layout

Tabelul 32. Incadrarea obiectelor grafice cu un contur.
Tabelul 32 prezint un exemplu de ncadrare a obiectelor grafice cu un contur.
12.1.4 Modificarea proprietilor obiectelor grafice

Modificarea proprietilor obiectelor grafice se face cu Inspectorul de proprieti. Caseta de dialog a
Inspectorului de proprieti se afiaz selectnd opiunea Property Inspector a meniului View sau a
meniului contextual al obiectului, sau cu clic pe butonul al barei de instrumente. Proprietile
obiectelor grafice sunt artate n Tabelul 33.
Pentru modificarea proprietilor un obiect grafic se selecteaz obiectul cu un clic cu butonul stng i
n Tabelul 33 se modific proprietile dorite.
Proprietile obiectelor sunt utilizate de aplicaia GIUDE la desenarea lor pe ecran.
O proprietate comun tuturor obiectelor este Position detaliat n Figura 47. Aceast proprietate este
vectorul [x y width height] ce conine coordonatele punctului stnga jos al obiectului i limea i
Dumitru Al. Dumitru 78
nlimea obiectului n raport cu co;ul stnga jos al ferestrei interfeei. Modificnd aceast proprietate
se pot modifica dimensiunile i poziia obiectelor n interfat.


Figura 47. Proprietatea Position.



Dumitru Al. Dumitru 79

Tabelul 33. Proprietile obiectelor grafice.
O proprietate comun tuturor obiectelor este String. In cazul obiectelor tip buton sau text static,
valoarea proprietii este chiar numele obiectului. In cazul unui obiect Popup Menu sau Listbox,
valoarea proprietii const n irurile de caractere cu opiunile meniului, respectiv opiunile casetei
Listbox. In cazul unei casete de text, EditText, este chiar textul din caset. Modificarea acestei
proprieti se face astfel:
1. se afiaz caseta Inspectorului de proprieti,
2. se selecteaz obiectul n interfaa grafic,
3. se selecteaz proprietatea String cu un clic ; ea apare ca n Figura 48 sau n Figura 49,
4. proprietatea String se poate modifica n dou moduri :
a. se introduce n partea dreapt irul de caractere dorit,
b. clic pe butonul care afiaz caseta de dialog String din Figura 50 n care se introduce
irurile de caractere dorite.
Pentru a modifica numele butonului Push Button din interfaa din Figura 44 vom selecta proprietatea
String cu un clic i vom introduce n partea dreapt irul de caractere dorit. Procedura este
urmtoarea :
1. se selecteaz butonul Push Button n interfaa grafic,
2. se selecteaz proprietatea String n caseta Inspectorului de Proprieti ca n Figura 48,
3. n partea dreapt se nlocuiete numele implicit Push Button al butonului cu numele dorit.


Figura 48. Modificarea numelui unui buton.
In interfaa din Figura 44 s-au modificat numele butoanelor i textul static i s-a ters textul din caseta
Edit Text..
Adugarea de opiuni la un obiect de tip Popup Menu se face astfel :
1. se selecteaz obiectul Popup Menu din interfaa grafic,
2. se selecteaz proprietatea String n caseta Inspectorului de Proprieti ca n Figura 49,
3. clic pe butonul care afiaz caseta de dialog String din Figura 50 n care se introduce textul
opiunilor dorite; dup nserarea textului unei opiuni clic pe butonul Return,
4. dup introducerea tuturor opiunilor clic pe butonul OK al casetei de dialog.


Figura 49. Adugarea de opiuni unui meniu.
Dumitru Al. Dumitru 80

Figura 50. Caseta de dialog String a obiectelor grafice.
In acelai mod s-au introdus irurile n caseta Listbox. Rezultatul este cel din Figura 51.


Figura 51. Interfaa grafic din Figura 44 cu numele obiectelor modificate.
Caseta cu obiectele interfeei grafice inspectate cu opiunea Object Browser este cea din Figura 52.
Caseta prezint arborele obiectelor interfeei grafice. Acest arbore are ca rdcin un obiect tip figure.

Dumitru Al. Dumitru 81

Figura 52. Obiectele interfeei din Figura 51.
Menionm dou proprieti importante pentru toate obiectele grafice :
proprietarea Style conine un ir de caractere cu tipul obiectului,
proprietatea Tag conine numele obiectului, generat de aplicaia GUIDE i utilizat n numele
funciilor generate de aplicaia GUIDE n fiierul cu funcii Matlab.
Tipurile posibile ale obiectelor nterfeelor grafice sunt cele din Figura 53.


Figura 53. Tipurile obiectelor grafice.
Numele generate pentru obiectele grafice au forma text1, text2, pushbutton1, etc. Ele sunt formate din
tipul elementului i numrul obiectului de tipul respectiv din interfa, n ordinea n care a fost adugat.
Interfaa grafic poate fi salvat n dou moduri:
cu un clic pe opiunea Save As al meniului File,
cu un clic pe opiunea Run a meniului Tools sau pe butonul al barei de instrumente.
Aplicaia GUIDE creaz :
o figur (un fiier cu extensia .fig),
un fiier cu instruciuni ce realizeaz funciile obiectelor interfeei (cu extensia .m). Acest fiier
trebuie completat cu instruciunile corespunztoare pentru ca obiectele interfeei s realizeze
funciile dorite.
Interfaa construit este lansat n execuie n dou moduri:
cu un clic pe fiierul guidex2.fig i arat ca n Figura 54,
de la linia de comand, guidex2. In acest mod n linia de comand pot exista i parametri.

Dumitru Al. Dumitru 82

Figura 54. Interfaa grafic din Figura 51.
12.2 Programarea interfeei grafice
La salvarea interfeei grafice create, aplicaia GUIDE genereaz un fiier ce trebuie completat cu
instruciuni corespunztoare aciunilor ce trebuie executate de obiectele interfeei. Acest fiier este
afiat cu clic pe opiunea M-file Editor a meniului View sau a meniului contextual afiat la un clic cu
butonul drept pe un obiect al interfeei, sau cu un clic pe butonul al barei de instrumente.
12.2.1 Organizarea interfeei grafice
Interfaa grafic este o aplicaie dirijat de evenimente. Evenimentele ce apar sunt :
un clic pe obiectul grafic, buton, meniu, caset Listbox, etc.,
deplasarea cursorului unui obiect Slider cu mousul,
apsarea tastei Enter n cazul unui obiect tip Text.
Sistemul de operare creaz o coad cu mesaje, n ordinea n care apar evenimentele. Fiecare mesaj
conine codul unui eveniment i momentul lui de apariie. Sistemul de operare ia cte un mesaj din
coad i apeleaz o funcie specific obiectului ce a generat mesajul. Aceste funcii se numesc
callback. Aplicaia GUIDE genereaz un fiier cu funcii callback, cte una pentru fiecare obiect al
interfeei, care trebuie completate de programator. In afar de funciile callback ce trateaz
evenimentele ce apar, aplicaia GUIDE mai genereaz :
funcii pentru iniializarea aplicaiei,
funcii pentru iniializarea unor obiecte ale interfeei.
Aceste funcii sunt apelate o singur dat de sistemul de operare, la lansarea n execuie a interfeei.
Vom prezenta n continuare toate aceste funcii.
Exemplu. Fie interfaa grafic din Figura 55, cu numele test, care cuprinde dou casete de text i un
buton. In caseta de text din stnga se introduce un numr. La apsarea butonului, n caseta din dreapta
apare numrul nmulit cu doi.

Dumitru Al. Dumitru 83

Figura 55. Proiectarea unei interfee grafice.
Obiectele grafice ale interfeei sunt artate n Figura 56.


Figura 56. Obiectele interfeei grafice din Figura 55.
La execuie interfaa apare ca n Figura 57.



Dumitru Al. Dumitru 84

Figura 57. Interfa grafic.
Aplicaia GUIDE creaz un fiier cu numele test.fig i unul cu numele fiier test.m. Funciile generate
n fiierul test.m sunt urmtoarele.
Se genereaz o funcie test cu prototipul
function varargout = test(varargin)
care iniializeaz aplicaia. Parametrul de intrare varargin conine o list cu argumentele liniei de
comand. Reamintim c interfaa creat poate fi lansat n execuie n dou feluri :
cu un clic pe fiierul test.fig,
de la linia de comand, cu numele interfeei, test, caz n care linia de comand poate avea i
parametri, iruri de caractere dup numele interfeei. Aceti parametrii, dac exist, sunt pasai
interfeei n vectorul varargin.
Codul funciei test este urmtorul.

function varargout = test(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @test_OpeningFcn, ...
'gui_OutputFcn', @test_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
Dumitru Al. Dumitru 85
gui_mainfcn(gui_State, varargin{:});
end

Urmtoarea funcie se numete test_OpeningFcn i este apelat de sistemul de operare nainte ca
interfaa s devin vizibil. Parametrii funciei test_OpeningFcn sunt urmtorii:
hObject variabil handle corespunztoare obiectului figure,
handles structur cu variabile handle ale obiectelor interfeei i date utilizator,
varargin lista cu argumentele liniei de comand.
Funcia generat de aplicaia GUIDE este urmtoarea:

function test_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to test (see VARARGIN)

% Choose default command line output for test
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

Datele aplicaiei sunt memorate ntr-o structur numit handles care conine variabilele handle ale
tuturor obiectelor interfeei i date utilizator. Structura handles este pasat ca parametru de intrare
tuturor funciilor callback ale aplicaiei. In acest fel, toate funciile callback pot utiliza valorile
proprietilor obiectelor grafice i datele aplicaiei. Utilizatorul poate nscrie n structura handles datele
dorite ce vor fi accesibile tuturor funciilor callback.
Instruciunea
handles.output = hObject;
adaug un nou element, output, la structura handles i i atribuie ca valoare parametrul de intrare
hObject care este variabile handle a figurii. Acest handle este utilizat de funcia urmtoare,
test_OutputFcn.
Funcia guidata memoreaz sau regsete datele aplicaiei n structura handles. Funcia
guidata(h, data)
memoreaz structuraa data. Parametrii funciei sunt:
h variabil handle a figurii sau a unui obiect al interfeei,
data structura pe care aplicaia vrea s o memoreze.
In cazul nostru, structura ce va fi memorat este totdeauna structura handles.
Funcia
data = guidata(h)
furnizeaz structura memorat anterior.
In funcia test_OpeningFcn am modificat structura handles (am adugat elementul output), i o
memorm cu instruciunea
guidata(hObject, handles);
Urmtoarea funcie se numete test_OutputFcn.

function varargout = test_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
Dumitru Al. Dumitru 86
varargout{1} = handles.output;

Parametrii de intrare ai funciei sunt cei ai funciei anterioare. Funcia furnizeaz valorile de ieire ale
aplicaiei. varargout este un vector de celule ce poate conine oricte valori. Implicit, funcia atribuie
primului component al structurii varargout elementul handles.output
varargout{1} = handles.output;
Acest element conine ca valoarea variabila handle al figurii, atribuit n funcia anterioar,
test_OpeningFcn.
Structura handles n cazul interfeei proiectate este prezentat n Figura 58. Ea conine variabile handle
pentru figur i toate obiectele interfeei. Numele acestor variabile este valoarea proprietii Tag a
obiectelor.


Figura 58. Variabila handles a interfeei.

Aplicaia GUIDE genereaz n general dou funcii pentru fiecare obiect al interfeei:
o funcie pentru iniializarea obiectului, apelat o singur dat de sistemul de operare la crearea
obiectului,
o funcie callback, apelat de sistemul de operare la fiecare selectare a obiectului, pentru
tratarea evenimentelor corespunztoare obiectului.
Vom prezenta n continuare aceste funcii. Obiectele interfeei noastre au numele edit1, edit2 i
respective pushbutton1 (proprietatea Tag a obiectelor), i sunt utilizate de aplicaia GUIDE la crearea
numelor funciilor asociate obiectelor.
Urmtoarea funcie, specific obiectelor tip EditText, este apelat o singur dat la crearea obiectului.
Ea poate fi utilizat pentru a prescrie proprietile obiectului: culoarea fondului, etc. Parametrii funciei
sunt :
hObject variabila handle a obiectului edit1,
handles - structur cu variabile handle ale obiectelor interfeei i date utilizator. Ea este creat
dup ce toate funciile CreateFcn asociate obiectelor interfeei au fost apelate.
Funcia este urmtoarea.

% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

O funcie identic este generat pentru obiectul EditText edit2.
Dumitru Al. Dumitru 87
Urmtoarele funcii sunt funciile callback pentru fiecare obiect al interfeei generate de aplicaia
GUIDE.
Funcia edit1_Callback este funcia callback pentru obiectul EditText edit1. Ea este apelat ori de cte
ori obiectul edit1 este selectat. Parametrii funciei sunt:
hObject variabila handle a obiectului edit1,
handles - structur cu variabile handle ale obiectelor interfeei i date utilizator
Funcia este prezentat n continuare:

function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double

Pentru a obine textul din caseta de text (valoarea proprietii String) se utilizeaz funcia
get(hObject,'String')
O funcie identic este generat pentru cellalt obiect EditText, edit2.
Funcia pushbutton1_Callback este funcia callback pentru obiectul tip PushButton pushbutton1. Ea
este apelat ori de cte ori apare un eveniment pentru acest obiect (clic pe buton). Parametrii funciei
sunt:
hObject variabila handle a obiectului pushbutton1,
handles - structur cu variabile handle ale obiectelor interfeei i date utilizator.
Funcia este urmtoarea.

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
12.2.2 Programarea interfeei grafice
Funciile interfeei pot fi modificate cu editorul de fiiere Matlab (M-file Editor) care se lanseaz cu un
clic pe opiunea M-file Editor a meniului View sau a meniului contextual afiat la un clic cu butonul
drept pe un obiect al interfeei, sau cu un clic pe butonul al barei de instrumente. Fereastra acestui
editor este artat n Figura 59.

Dumitru Al. Dumitru 88

Figura 59. Fereastra editorului de fiiere Matlab.
La un clic pe butonul se afiaz meniul din Figura 60. Un clic pe o funcie plaseaz cursorul la
nceputul acestei funcii n fiier.


Figura 60. Meniu cu funciile interfeei grafice.
Vom modifica acum funciile callback ale interfeei grafice. Operaiile pe care trebuie s le execute
interfaa grafic sunt:
s citeasc numrul introdus n caseta de text edit1,
s nmuleasc acest numr cu 2,
s afieze rezultatul n caseta de text edit2.
Funcia edit1_Callback va fi modificat astfel nct s citeasc numrul introdus n caseta de text i s-
l memoreze ca valoare a proprietii String a obiectului. Funcia modificat este artat mai jos.

function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
Dumitru Al. Dumitru 89
% str2double(get(hObject,'String')) returns contents of edit1 as a double
input = str2num(get(hObject, 'String'));
if(isempty(input))
set(hObject, 'String', 0);
end
guidata(hObject, handles);

Funcia
get(hObject,'String')
d coninutul casetei de text ca ir de caractere. Funcia str2num convertete irul de caractere n
numr. Dac irul de caractere a fost vid atunci n caseta de text se nscrie caracterul 0 cu funcia
set(hObject, 'String', 0)
In final, funcia
guidata(hObject, handles)
memoreaz valorile proprietilor obiectului n structura handles.

Funcia pushbutton1_Callback va fi modificat nct s citesc proprietatea String a obiectului edit1,
care este numrul introdus n caseta de text edit1, s nmuleasc cu 2 acest numr i s-l nscrie n
caseta de text edit2. Funcia modificat este cea de mai jos.

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
a = get(handles.edit1, 'String');
rez = str2num(a) * 2;
c = num2str(rez);
set(handles.edit2, 'String', c);
guidata(hObject, handles);

Instruciunea
a = get(handles.edit1, 'String');
regsete valoarea proprietii String a obiectului edit1. Instruciunea
rez = str2num(a) * 2;
convertete acest ir n numr i l nmulete cu 2. Instruciunea
c = num2str(rez);
convertetye rezultatul n ir de caractere, iar instruciunea
set(handles.edit2, 'String', c) ;
memoreaz acest ir ca valoare a proprietii String a casetei de text edit2. Sirul va fi afiat n caseta
de text.
In final funcia
guidata(hObject, handles);
memoreaz valorile proprietilor obiectelor n structura handles.
12.2.3 Adugarea unor grafice la interfa
Vom crea o interfa cu un grafic al funciei sin(t) pe intervalul [0, 2]. Interfaa este cea din Figura 61.
Numele ei va fi testfigure.

Dumitru Al. Dumitru 90

Figura 61. Interfa grafic.
Aplicaia GUIDE genereaz un program dup cum s-a artat anterior. Vom repeta aici definiia
funciei testfigure_OutputFcn n care vom introduce datele ce se vor afia.

% --- Outputs from this function are returned to the command line.
function varargout = testfigure_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;

Vom genera n aceast funcie datele ce se vor reprezenta grafic, vom crea obiectul plot respectiv i
vom memora acest obiect n structura handles, n cmpul current_data, ca mai jos. Funcia
modificat este urmtoarea.

% --- Outputs from this function are returned to the command line.
function varargout = testfigure_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
t = 0:0.1:2*pi;
x = sin(t);
h = plot(t, x);
xlabel('t [s]');
Dumitru Al. Dumitru 91
ylabel('sin(t)');
grid
handles.current_data = h;
% Get default command line output from handles structure
varargout{1} = handles.output;

Interfaa este cea din Figura 62.


Figura 62. Interfaa grafic cu graficul funciei sin(t).
Vom crea o interfa cu dou butoane care s reprezinte funcia sin(t) sau cos(t) dup cum apsm un
buton sau altul. Interfaa este cea din Figura 63. Numele ei este douagrafice.
Pentru nceput generm graficul funciei cos ntr-un obiect plot memorm acest obiect n structura
handles, n cmpul current_data, ca mai sus. Aceast funcie este afiat iniial.

%- - - Execut es j ust bef or e douagr af i ce i s made vi si bl e.
f unct i on douagr af i ce_Openi ngFcn( hObj ect , event dat a, handl es, var ar gi n)
%Thi s f unct i on has no out put ar gs, see Out put Fcn.
%hObj ect handl e t o f i gur e
%event dat a r eser ved - t o be def i ned i n a f ut ur e ver si on of MATLAB
%handl es st r uct ur e wi t h handl es and user dat a ( see GUI DATA)
%var ar gi n command l i ne ar gument s t o douagr af i ce ( see VARARGI N)
t = 0: 0. 1: 2*pi ;
y = cos( t ) ;
hs = pl ot ( t , y) ;
xl abel ( ' t [ s] ' ) ;
yl abel ( ' cos( t ) ' ) ;
gr i d
handl es. cur r ent _dat a = hs;
gui dat a( hObj ect , handl es)
%Choose def aul t command l i ne out put f or douagr af i ce
handl es. out put = hObj ect ;

%Updat e handl es st r uct ur e
Dumitru Al. Dumitru 92
gui dat a( hObj ect , handl es) ;

%UI WAI T makes douagr af i ce wai t f or user r esponse ( see UI RESUME)
%ui wai t ( handl es. f i gur e1) ;


Figura 63. Interfa grafic.
In funcia pushbutton1_Callback asociat primului buton generm graficul funciei sin n obiectul plot,
memorm variabila handle a acestui obiect n cmpul current_data din structura handles i memorm
aceast structur.

%- - - Execut es on but t on pr ess i n pushbut t on1.
f unct i on pushbut t on1_Cal l back( hObj ect , event dat a, handl es)
%hObj ect handl e t o pushbut t on1 ( see GCBO)
%event dat a r eser ved - t o be def i ned i n a f ut ur e ver si on of MATLAB
%handl es st r uct ur e wi t h handl es and user dat a ( see GUI DATA)
t = 0: 0. 1: 2*pi ;
x = si n( t ) ;
hs = pl ot ( t , x) ;
xl abel ( ' t [ s] ' ) ;
yl abel ( ' si n( t ) ' ) ;
gr i d
handl es. cur r ent _dat a = hs;
gui dat a( hObj ect , handl es)

Funcia pushbutton2_Callback a celui de-al doilea buton este asemntoare.

%- - - Execut es on but t on pr ess i n pushbut t on2.
f unct i on pushbut t on2_Cal l back( hObj ect , event dat a, handl es)
%hObj ect handl e t o pushbut t on2 ( see GCBO)
%event dat a r eser ved - t o be def i ned i n a f ut ur e ver si on of MATLAB
%handl es st r uct ur e wi t h handl es and user dat a ( see GUI DATA)
t = 0: 0. 1: 2*pi ;
y = cos( t ) ;
hs = pl ot ( t , y) ;
xl abel ( ' t [ s] ' ) ;
Dumitru Al. Dumitru 93
yl abel ( ' cos( t ) ' ) ;
gr i d
handl es. cur r ent _dat a = hs;
gui dat a( hObj ect , handl es)

Vom crea acum o interfa cu dou obiecte grafice de tipul axes. Vom afia cte un grafic n fiecare
obiect axes la un clic pe un buton.
Funcia asociat butonului este artat mai jos.

%- - - Execut es on but t on pr ess i n pushbut t on1.
f unct i on pushbut t on1_Cal l back( hObj ect , event dat a, handl es)
%hObj ect handl e t o pushbut t on1 ( see GCBO)
%event dat a r eser ved - t o be def i ned i n a f ut ur e ver si on of MATLAB
%handl es st r uct ur e wi t h handl es and user dat a ( see GUI DATA)
t = 0: 0. 1: 2 * pi ;
sx = si n( t ) ;
cx = cos( t ) ;
axes( handl es. axes1)
pl ot ( t , sx)
gr i d on
axes( handl es. axes2)
pl ot ( t , cx)
gr i d on


Figura 64. Afiarea a dou curbe.
Afiarea unei curbe ntr-un obiect tip axes se face ca mai jos. Se genereaz curba

t = 0: 0. 1: 2 * pi ;
sx = si n( t ) ;

Se definete graficul ce va fi utilizat, aici obiectul axes1, i se afiaz curba cu instruciunea plot()

axes( handl es. axes1)
pl ot ( t , sx)
Dumitru Al. Dumitru 94
gr i d on

Funcia axes(h) unde h este o variabil handle definete obiectul h ca axe curente. Funcia plot
urmtoare reprezint grafic o curb n aceste axe curente.
12.2.4 Modificarea proprietilor obiectelor grafice la rularea programului
Vom construi o interfa grafic cu dou butoane, Button1 i Button2, i o caset de text. Butonul 2
este iniial dazactivat. Un clic pe butonul 1 activeaz butonul 2. Un clic pe butonul 2 afiaz un mesaj
n caseta de text.
Interfaa grafic este cea din Figura 65. Ea are numele buttons i se proiecteaz ca n exemplele
anterioare.


Figura 65. Proiectarea interfeei grafice.
Pentru a crea butonul 2 dezactivat, proprietatea Enable a butonului se pune la valoarea off, vezi Figura
66.

Dumitru Al. Dumitru 95

Figura 66. Caseta cu proprieti a butonului 2.
Fiierul generat de aplicaie este cel de mai jos.

function varargout = buttons(varargin)
% BUTTONS M-file for buttons.fig
% BUTTONS, by itself, creates a new BUTTONS or raises the existing
% singleton*.
%
% H = BUTTONS returns the handle to a new BUTTONS or the handle to
% the existing singleton*.
%
% BUTTONS('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in BUTTONS.M with the given input arguments.
%
% BUTTONS('Property','Value',...) creates a new BUTTONS or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before buttons_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to buttons_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help buttons
Dumitru Al. Dumitru 96

% Last Modified by GUIDE v2.5 11-Aug-2010 22:50:48

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @buttons_OpeningFcn, ...
'gui_OutputFcn', @buttons_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before buttons is made visible.
function buttons_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to buttons (see VARARGIN)

% Choose default command line output for buttons
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes buttons wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = buttons_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
Dumitru Al. Dumitru 97
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.pushbutton2, 'enable', 'on')
guidata(hObject, handles);

% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.edit1, 'string', 'action')
guidata(hObject, handles);


function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double


% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

Funciile modificate sunt cele corespunztoare butoaneler. Funcia asociat butonului 1 este cea de mai
jos.

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.pushbutton2, 'enable', 'on')
guidata(hObject, handles);

In aceast funcie se activeaz butonul 2 cu instruciunea
set(handles.pushbutton2, 'enable', 'on')
care pune proprietatea enable a butonului 2 la valoarea on. Funcia
guidata(hObject, handles)
memoreaz valorile proprietilor obiectului n structura handles.
Funcia asociat butonului 2 scrie n caseta de text un mesaj.

Dumitru Al. Dumitru 98
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.edit1, 'string', 'action')
guidata(hObject, handles);

Funcia
set(handles.edit1, 'string', 'action')
memoreaz irul action n caseta de text. Se memoreaz apoi proprietile obiectului n structura
handles.
Interfaa grafic este cea din Figura 67.


Figura 67. Interfat grafic.
12.2.5 Poziionarea unui punct pe o curb
Vom construi o interfa grafic ce poate poziiona un punct pe un grafic cu dou slidere. Interfaa va
avea un grafic al unei funcii, dou slidere pentru axele x i y i dou casete de text n care se vor afia
poziiile cursoarelor celor dou slidere. Punctul va fi marcat pe figur cu x.
Interfaa este cea din Figura 68. Ea are numele pointoncurve i se proiecteaz ca n exemplele
anterioare. In partea stng a ferestrei am afiat componentele n palet cu nume. Pentru aceasta clic pe
meniul File, opiunea Preferences, ce afiaz caseta Preferences din Figura 39. In arborele din stnga
clic pe nodul GUIDE i se marcheaz opiunea Show names in component palette. Sliderul se
deseneaz orizontal sau vertical desennd corespunztor dreptunghiul ce l ncadreaz.
Vom afia graficul funciei sin(t) pe intervalul [0, 1]. Intervalul de valori pentru slidere va fi [0, 1].


Dumitru Al. Dumitru 99

Figura 68. Interfa grafic.
Programul interfeei grafice este urmtorul.

function varargout = pointoncurve(varargin)
% POINTONCURVE M-file for pointoncurve.fig
% POINTONCURVE, by itself, creates a new POINTONCURVE or raises the existing
% singleton*.
%
% H = POINTONCURVE returns the handle to a new POINTONCURVE or the handle to
% the existing singleton*.
%
% POINTONCURVE('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in POINTONCURVE.M with the given input arguments.
%
% POINTONCURVE('Property','Value',...) creates a new POINTONCURVE or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before pointoncurve_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to pointoncurve_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help pointoncurve

% Last Modified by GUIDE v2.5 12-Aug-2010 14:23:03

% Begin initialization code - DO NOT EDIT
Dumitru Al. Dumitru 100
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @pointoncurve_OpeningFcn, ...
'gui_OutputFcn', @pointoncurve_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before pointoncurve is made visible.
function pointoncurve_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to pointoncurve (see VARARGIN)

% Choose default command line output for pointoncurve
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes pointoncurve wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = pointoncurve_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;
t = 0:0.01:1;
x = sin(t);
h = plot(t, x);
xlabel('t [s]');
ylabel('sin(t)');
grid
handles.current_data = h;
ht = text('String', 'x', 'units', 'norm', 'pos', [0, 0]);
Dumitru Al. Dumitru 101
handles.texhan = ht;
guidata(hObject, handles);


% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
posx = get(hObject, 'Value');
set(handles.edit1, 'String', posx);
posy = get(handles.edit2, 'String');
% delete previous point
ht = handles.texhan;
delete(ht);
ht = text('String', 'x', 'units', 'norm', 'pos', [posx, str2num(posy)]);
handles.texhan = ht;
guidata(hObject, handles);

% --- Executes during object creation, after setting all properties.
function slider1_CreateFcn(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end


% --- Executes on slider movement.
function slider2_Callback(hObject, eventdata, handles)
% hObject handle to slider2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
posy = get(hObject, 'Value');
set(handles.edit2, 'String', posy);
posx = get(handles.edit1, 'String');
% delete previous point
ht = handles.texhan;
delete(ht);
ht = text('String', 'x', 'units', 'norm', 'pos', [str2num(posx), posy]);
handles.texhan = ht;
guidata(hObject, handles);

% --- Executes during object creation, after setting all properties.
function slider2_CreateFcn(hObject, eventdata, handles)
Dumitru Al. Dumitru 102
% hObject handle to slider2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end


function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double


% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end



function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double


% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

Dumitru Al. Dumitru 103

Graficul funciei sin(t) este generat n funcia pointoncurve_OutputFcn(), ca ntr-un exemplu anterior.

% --- Outputs from this function are returned to the command line.
function varargout = pointoncurve_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;
t = 0:0.01:1;
x = sin(t);
h = plot(t, x);
xlabel('t [s]');
ylabel('sin(t)');
grid
handles.current_data = h;
ht = text('String', 'x', 'units', 'norm', 'pos', [0, 0]);
handles.texhan = ht;
guidata(hObject, handles);

Vom marca pe grafic punctul iniial (0, 0) cu x. Pentru aceasta vom afia pe grafic un ir x cu funcia
text n punctul (0, 0). Funcia text are ca rezultat un handle la obiectul creat.
ht = text('String', 'x', 'units', 'norm', 'pos', [0, 0]);
Vom memora variabila handle asociat obiectului text creat n structura handles n variabila
handles.texhan.
handles.texhan = ht;
Memorm structura handles cu funcia
guidata(hObject, handles);

Marcarea punctelor pe grafic se face n funciile callback associate celor dou slidere. Vom prezenta
doar funcia slider1_Callback asociat primului slider.

% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
posx = get(hObject, 'Value');
set(handles.edit1, 'String', posx);
posy = get(handles.edit2, 'String');
% delete previous point
ht = handles.texhan;
delete(ht);
ht = text('String', 'x', 'units', 'norm', 'pos', [posx, str2num(posy)]);
handles.texhan = ht;
guidata(hObject, handles);

Se citete poziia sliderului cu instruciunea
Dumitru Al. Dumitru 104
posx = get(hObject, 'Value');
i se nscrie valoarea n variabila handle a sliderului cu instruciunea
set(handles.edit1, 'String', posx);
Se citete valoarea poziiei celuilalt slider cu instruciunea
posy = get(handles.edit2, 'String');
Menionm c, valoarea este memorat ca ir de caractere.
Stergem punctul anterior. Citim n variabila ht variabila handle a obiectului text creat anterior,
memorat n handles.texhan i tergem obiectul cu instruciunea delete.
ht = handles.texhan;
delete(ht);
Afim pe grafic un character x n punctul cu coordonatele celor dou slidere.
ht = text('String', 'x', 'units', 'norm', 'pos', [posx, str2num(posy)]);
Memorm n structura handles n handles.texhan variabila handle ht a obiectului text creat i memorm
structura handles
handles.texhan = ht;
guidata(hObject, handles);
Interfaa cu punctul selectat pe grafic este cea din Figura 69.

Figura 69. Interfaa cu punctul selectat pe grafic.
12.2.6 Introducerea datelor cu casete de dialog
Casetele de dialog se pot utiliza pentru a introduce cantiti mici de date sau pentru a afia mesaje.
Vom exemplifica utilizarea unei casete de dialog la rezolvarea urmtoarei probleme: calculul sumei,
diferenei, produsului sau ctului a dou numere introduse ntr-o caset de dialog mpreun cu
operatorul dorit, +, -, * sau /.
Interfaa proiectat este cea din Figura 70. Obiectele grafice tip text au numele edit1, edit2, edit3.
Obiectul tip text static ce conine textul oper are numele text1. La un clic pe butonul Calcul se va afia
o caset de dialog n care vom introduce cele dou numere i operatorul dorit. Numerele vor fi afiate
apoi n cele dou casete text din stnga, iar rezultatul n caseta din dreapta. Operatorul va fi afiat n
obiectul tip text static ce conine iniial irul oper.
Dumitru Al. Dumitru 105
Caseta de dialog va conine un numr de casete text n care se vor introduce datele dorite. Caseta de
dialog se creaz cu funcia inputdlg cu formele:

answer=inputdlg(prompt,dlg_title)
answer=inputdlg(prompt,dlg_title,num_lines)
answer=inputdlg(prompt,dlg_title,num_lines,defAns)
answer = inputdlg(prompt,dlg_title,num_lines,defAns,options)

unde:
prompt structur cu mesajele afiate deasupra casetelor text,
dlg_title ir de caractere cu numele casetei de dialog,
num_lines numrul de linii (casete de text) n care se vor introduce date,
defAns valorile implicite ale datelor din casetele text,
options structur cu opiuni pentru caseta de dialog.
answer structur cu datele introduse.


Figura 70. Interfat grafic.
Aplicaia GUIDE genereaz un fiier cu funcii asociate obiectelor grafice dup cum s-a artat mai
nainte. Funcia asociat butonului, completat cu afiarea casetei de dialog i calculele necesare este
cea de mai jos.

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

prompt = {'Primul numar', 'Operator', 'Al doilea numar'};
titlu = 'Operatii cu numere';
answer = inputdlg(prompt, titlu);
Dumitru Al. Dumitru 106
set(handles.edit1, 'string', answer{1});
set(handles.edit2, 'string', answer{3});
a = str2num(answer{1});
b = str2num(answer{3});
oper = answer{2};
if oper == '+'
c = a + b;
elseif oper == '-'
c = a - b;
elseif oper == '*'
c = b * a;
elseif oper == '/'
c = a / b
else
c = NaN;
end
d = num2str(c);
set(handles.edit3, 'string', d);
set(handles.text1, 'string', oper);
guidata(hObject, handles);

Pentru nceput definim parametrii casetei de dialog. Structura prompt va conine mesajele afiate
deasupra casetelor text, 'Primul numar', 'Operator' i 'Al doilea numar'
prompt = {'Primul numar', 'Operator', 'Al doilea numar'};
Definim irul titlu cu numele casetei
titlu = 'Operatii cu numere';
Caseta de dialog se afiaz cu instruciunea
answer = inputdlg(prompt, titlu);
La un clic pe buton se afiaz caseta din Figura 71.


Figura 71. Caseta de dialog cu numerele introduse.
Sirurile de caractere introduse sunt memorate n structura answer.
Memorm irurile ce corespund celor dou numere n casete text ale interfeei, edit1 i edit2
set(handles.edit1, 'string', answer{1});
set(handles.edit2, 'string', answer{3});
Convertim irurile de caractere n numere n variabilele a i b
a = str2num(answer{1});
b = str2num(answer{3});
Memorm irul ce conine operatorul n variabila oper
oper = answer{2};
Efectum calculele corespunztoare cu rezultatul n variabila c. Convertim variabila c n ir de
caractere i memorm acest ir n caseta de text edit3.
Dumitru Al. Dumitru 107
d = num2str(c);
set(handles.edit3, 'string', d);
Memorm irul oper ca proprietate 'String' a obiectului text static text1.
set(handles.text1, 'string', oper);
Memorm structura handles
guidata(hObject, handles);

Interfaa cu rezultatele afiate este cea din Figura 72.


Figura 72. Interfaa grafic cu rezultatele calculului.
Putem afia casete de dialog cu mesaje diferite. Aceste casete se creaz cu instruciunea msgbox cu
formele:

h = msgbox(Message)
h = msgbox(Message,Title)
Parametrii funciei sunt:
Message ir de caractere cu mesajul afiat,
Title ir de caractere cu titlul casetei

Dumitru Al. Dumitru 108
13 Calcul simbolic
13.1 Definirea variabilelor i funciilor simbolice
Calculul simbolic opereaz cu obiecte simbolice: variabile, matrice i expresii simbolice. Variabilele
simbolice se definesc n dou feluri:
cu instruciunea syms, care definete variabile simbolice,
orice variabil ce primete ca valoare o expresie simbolic devine o variabil simbolic;
atribuirea de valori unei variabile se face cu operatorul =.
Instruciunea syms are forma
syms var var var .
unde var sunt nume de variabile simbolice.
Exemplu. Definim variabilele simbolice a, b i c cu instruciunea syms i atribuim variabilei a ca
valoare expresia simbolic b + c.

syms a b c
a = b + c
a =
b+c

Fie instruciunea

m = b +c

m este acum o variabil simbolic, deoarece a primit ca valoare o expresie simbolic.
Expresiile simbolice se definesc la fel ca expresiile aritmetice din Matlab, n care variabilele numerice
sunt nlocuite cu variabile simbolice. Se includ aici i vectorii i matricele cu elemente expresii
simbolice, asupra crora se pot efectua calcule simbolice analoge calculelor numerice din Matlab.
Expresiile simbolice au ca termeni variabile simbolice i funcii simbolice i ca operatori aritmetici:
+, -, *, /, \, ^
Operatori, +, -, *, /, sunt cei patru operatori aritmetici cunoscui. Operaia a \ b se definete ca

b
a
*
1

Operatorul ^ este ridicarea la putere. Expresia a^ b este

b
a
Prioritile operatorilor aritmetici sunt cele cunoscute. Operatorii + i unari au cea mai mare
prioritate, urmai de operatorii *, /, \, ^, iar operatorii + i binari au cea mai mic prioritate.
Operatorii unari sunt asociativi la dreapta, operatorii binari sunt asociativi este la stnga. In cadrul
expresiilor aritmetice se pot utiliza paranteze rotunde, ( i ), pentru a modifica prioritile operatorilor.
Funciile matematice uzuale ce se pot utiliza n expresiile simbolice sunt cele de mai jos :
sin asin sqrt exp
cos acos abs log
tan atan log10
Exist nc un mod de a crea expresii simbolice, funcia sym. Aceast funcie are forma
sym(' expresie simbolica')
i are ca rezultat o expresie simbolic ce poate fi atribuit unei variabile simbolice. Reamintim c o
expresie simbolic are ca termeni variabile simbolice, definite anterior.
Exemple. S definim funcia simbolic liniar f(x) = a * x + b. Primul mod de a defini funcia este de a
defini variabilele simbolice a, x, b i f cu instruciunea syms i apoi atribuim lui f ca valoare expresia
simbolic:

syms a x b f;
Dumitru Al. Dumitru 109
f = a * x + b;

Al doilea mod definete expresia simbolic cu funcia sym:

syms a x b f;
f = sym (a * x + b);

In unele cazuri trebuie s crem expresii simbolice n care intervin constante. Acest lucru se face cu
funcia sym. De exemplu, pentru a crea o funcie simbolic constant ce are valoarea 3 vom scrie

f = sym(3)

sau

f = sym(3)

Reamintim c instruciunea

f = 3

creaz o variabil numeric ce are valoarea 3.
Exemplu. Vom defini variabilele simbolice a, b i x i polinoamele simbolice f(x) = a*x
2
+ 2 i g(x) =
x + b i vom calcula produsul lor, f(x) * g(x). Programul este urmtorul

syms a b x f g;
f = a *x^2+2
g = x + b
f * g

f =
a*x^2+2

g =
x+b

ans =
(a*x^2+2)*(x+b)
Exemplu. S definim variabila simbolic x i funcia simbolic 1 ) (
2
+ + = x x x g .

symb x g;
g = sqrt(x^2 +x +1)

13.2 Substituii
Este posibil s atribuim valori numerice variabilelor simbolice i, n acest caz, expresiile simbolice
sunt evaluate la valoarea numeric corespunztoare. Aceste substituii ale variabilelor simbolice cu
valori numerice se fac cu funcia subs cu formele
subs(expresie simbolic, variabil simbolic, valoare numeric)
n cazul cnd substituim o singur variabil, i
subs(expresie simbolica, {variabile simbolice}, {valori numerice})
n cazul cnd substituim mai multe variabile.
Exemplu. Fie funcia simbolic f(x) = x
2
- 3*x + 2. Vom substitui variabila simbolic x cu valoarea 2.

Dumitru Al. Dumitru 110
syms f x;
f = x^2 3 * x + 2;
subs(f, x, 2)

ans =
0

Vom substitui acum variabila simbolic x cu valoarea -2

subs(f, x, -2)

ans =
12

Exemplu. Fie funcia de dou variabile f(x, y) = x
2
+ x*y
2
. Vom substitui mai nti variabila simbolic
x cu 2.

syms x y f;
f = x^2 + x * y;

subs(f, x, 2)

ans =
4+2*y

Vom substitui acum pe y cu 3.

subs(f, y, 3)

ans =
x^2+3*x

Vom substitui acum pe x cu -1 i pe y cu 2.

subs(f, {x, y}, {-1, 2})

ans =
-1

Reamintim c, lista cu variabilele simbolice ce vor fi substituite i lista cu valori sunt ncluse ntre
acolade, { }.
In cazul cnd substituim o singur variabil simbolic cu o valoare, funcia subs are i urmtoarea
form simpl
subs(expresie simbolic, valoare numeric)
Dac expresia simbolic depinde de mai mult de o variabil i variabila pentru care se face substituia
nu este specificat, substituia se face pentru variabila simbolic implicit, care se alege dup
urmtoarea regul: se alege litera cea mai apropiat de x din alfabet; dac exist dou litere egal
deprtate de x, se alege ultima din alfabet din cele dou.
Exemplu. Fie expresia simbolic

syms x t;
f = t^2 * cos(x + t)

f =
Dumitru Al. Dumitru 111
t^2*cos(x+t)

subs(f, 2)

ans =
t^2*cos(2+t)

Dup cum se observ, se substituie variabila simbolic x cu valoarea 2, aleas dup regula de mai sus.
Variabilele simbolice dintr-o expresie se pot determina cu funcia findsym.
Exemplu. Fie variabilele i expresiile simbolice:

syms t omega psi f x g;
f = cos(omega * t + psi);
g = x^3 x +1
findsym(f)

ans =
omega, psi, t

findsym(g)

ans =
x

Variabila simbolic implicit dintr-o expresie f se poate determina cu funcia
findsym(f, 1)
Exemplu. Fie expresia simbolic

syms x t;
f = t^2 * cos(x + t)

f =
t^2*cos(x+t)

findsym(f, 1)
ans =
x

Menionm c pentru afiarea expresiilor simbolice ntr-un format apropiat de cel din matematic se
utilizeaz funcia pretty ce are ca parametru expresia simbolic.
13.3 Reprezentarea simbolic a numerelor
Numerele se reprezint simbolic n urmtoarele feluri:
n virgul mobil, sub forma unei mantise nmulit cu 2 la un anumit exponent; mantisa
conine 13 cifre hexazecimale,
ca numr raional, ca raport a dou numere ntregi,
ca numr raional plus precizia relativ; precizia relativ este diferena ntre valoarea numrului
raional i valoarea lui reprezentat n virgul mobil, i este exprimat n funcie de eps,
precizia reprezentrii numerelor n virgul mobil,
ca numr zecimal cu un numr specificat de cifre semnificative; implicit, numrul de cifre este
32, dar el poate fi specificat cu funcia digits dup cum se arat mai jos.
Conversia ntre numr i reprezentarea sa simbolic se face cu funcia sym cu un parametru ce
specific tipul reprezentrii simbolice dup cum se arat n Tabelul 34. In Tabelul 34, n expresia
funciei sym, x este o variabil Matlab.
Dumitru Al. Dumitru 112

Reprezentarea simbolic Funcia sym()
n virgul mobil sym(x, f)
ca numr raional sym(x, r)
ca numr raional plus precizia relativ sym(x, e)
ca numr zecimal cu un numr specificat de
cifre semnificative
sym(x, d)
Tabelul 34. Reprezentarea simbolic a numerelor.
Operaiile cu numere raionale se fac dup regulile din aritmetic.
Exemplu. Fie expresia

sym(2)/sym(3) + sym(4)/sym(5)

ans =
22/15

Exemplu. Fie numrul 0.2, a crui valoare va fi convertit ntr-un numr symbolic n formele de mai
sus.

sym(0.2, f)

ans =
'1.999999999999a'*2^(-3)

sym(0.2, r)
ans =

1/5

sym(0.2, e)

ans =
1/5+eps/20

sym(0.2, d)

ans =
.20000000000000001110223024625157

digits(10)
sym(0.2, d)

ans =
.2000000000
13.4 Definirea de variabile simbolice reale i complexe
O variabil complex este o pereche ordonat de dou variabile reale. Fie x i y dou variabile reale. O
variabil complex este z = x + i * y, unde x este partea real, y este partea imaginar a variabilei z, iar
i = 1 . Pentru a defini o variabil complex trebuie s definim mai nti dou variabile simbolice
reale, corespunznd prii reale i celei imaginare a variabilei complexe, apoi utilizm formula de mai
sus n care variabila i este predefinit. Pentru aceasta se utilizeaz instruciunea syms cu opiunea real
sau funcia sym cu aceeai opiune:
Dumitru Al. Dumitru 113
cu instruciunea syms
syms x y real
z = x + i * y
cu funcia sym
x = sym(x, real);
y = sym(y, real);
z = x + i * y
In expresiile cu numere complexe se pot utiliza funciile matematice standard: real, imag, conj, abs,
etc.
Exemplu. S definim o variabil simbolic complex i s calculm conjugata, partea real i
modulul.

syms x y;
z = x + i * y;
conj(z)

ans =
x-i*y

real(z)

ans =
x

abs(z)

ans =
(x^2+y^2)^(1/2)

Dac dorim s tergem proprietatea real a unei variabile declarat anterior cu instruciunea syms sau
funcia sym, utilizm instruciunea syms cu opiunea unreal.
Exemplu.

syms x real;
syms x unreal;

13.5 Matrice simbolice
Matricele simbolice au ca elemente obiecte simbolice, constante, variabile sau expresii simbolice.
Operaiile cu matrice se efectueaz cu operatorii +, -, *, /, \, ^, .*, ./, .\ i .^. Semnificaia operatorilor +,
-, * este cea de adunare, scdere i nmulire a matricelor cu dimensiuni corespunztoare. Semnificaia
celorlali operatori este cea Tabelul 35.

Operator Exemplu Semnificaie
/ a/b a * inv(b)
\ a\b inv(a) * b
^ a^b
b
a
.* c=a.*b
ij ij ij
b a c * =
./ c = a / b
ij ij ij
b a c / =
.\ c = a.\b
ij ij ij
a b c * =
.^ c = a ^ b
ij ij ij
b a c ^ =
Tabelul 35. Operaii cu matrice simbolice.
Dumitru Al. Dumitru 114
Elementele matricelor simbolice se adreseaz cu indici n acelai fel ca elementele matricelor
numerice. Putem defini matrice simbolice n dou feluri:
matrice cu elemente simbolice,
s convertim matrice numerice n matrice simbolice cu funcia sym.
Exemplu. S definim matricea cu elemente simbolice

d c
b a

syms a b c d;
M = [a b; c d]

M =
[ a, b]
[ c, d]

det(M)

ans =
a*d-b*c

inv(M)

ans =
[ d/(a*d-b*c), -b/(a*d-b*c)]
[ -c/(a*d-b*c), a/(a*d-b*c)]

R = M * inv(M)

R =
[ a*d/(a*d-b*c)-b*c/(a*d-b*c), 0]
[ 0, a*d/(a*d-b*c)-b*c/(a*d-b*c)]

R = inv(M) * M

R =
[ a*d/(a*d-b*c)-b*c/(a*d-b*c), 0]
[ 0, a*d/(a*d-b*c)-b*c/(a*d-b*c)]

Pentru a afia expresia R n form matematic utilizm funcia pretty.

pretty(R)

[ a d b c ]
[--------- - --------- 0 ]
[a d - b c a d - b c ]
[ ]
[ a d b c ]
[ 0 --------- - ---------]
[ a d - b c a d - b c]


Putem simplifica expresiile de mai sus cu funcia simplify i obinem matricea unitate.

simplify(M*inv(M))

Dumitru Al. Dumitru 115
ans =

[ 1, 0]
[ 0, 1]

Exemplu. S definim matricele simbolice

c b
a 0
i

d c
b a
i calculm suma i produsul lor.
.
syms a b c d;
A = [a 0; b c]

A =
[ a, 0]
[ b, c]

B = [-a b; -c d]

B =

[ -a, b]
[ -c, d]

R = A+B

R =

[ 0, b]
[ b-c, c+d]

R = A*B

R =

[ -a^2, a*b]
[ -a*b-c^2, b^2+c*d]

Pentru a scrie expresia simbolic R n form matematic, utilizm funcia pretty

pretty(R)

[ 2 ]
[ -a a b ]
[ ]
[ 2 2 ]
[-a b - c b + c d]

Exemplu. S definim matricea simbolic cu elemente complexe


+
b i a c
c b i a
*
*
.
syms a b c real;
A = [a+i*b c; -c a-i*b]

A =

Dumitru Al. Dumitru 116
[ a+i*b, c]
[ -c, a-i*b]

det(A)

ans =

a^2+b^2+c^2

conj(A)

ans =

[ a-i*b, c]
[ -c, a+i*b]

Exemplu. Fie H matricea Hilbert de dimensiune patru. S convertim aceast matrice ntr-o matrice
simbolic. Calculele cu numere simbolice raionale se fac cu precizie infinit.

H = hilb(4)
H = sym(H)
det(H)
inv(H)

13.6 Crearea de funcii abstracte
In multe cazuri este avantajos s crem o funcie nedeterminat (abstract) care acioneaz asupra
obiectelor simbolice i apoi poate fi utilizat n expresii. Acest lucru se face cu instruciunea
f = sym(f(x))
Variabila simbolic f poate fi utilizat apoi n expresii simbolice. De exemplu, pentru a crea expresia
simbolic

h
x f h x f ) ( ) ( +

vom scrie
df = (sub(f, x, x+h) f)/h
13.7 Reprezentarea grafic a funciilor
Reprezentarea grafic a funciilor se face cu funcia ezplot.
Reprezentarea grafic a unei funcii de o variabil, f(x), se face cu funcia
ezplot(f, [min, max])
unde min i max sunt limitele domeniului. Dac limitele sunt omise, domeniul de reprezentare este -
2< x < 2.
Exemplu. S reprezentm grafic funcia
1
) (
3

=
x
x
x f

syms f x;
f = x^3 / (x - 1);
ezplot(f)
grid

Reprezentarea grafic a funciei este cea din Figura 73.

Dumitru Al. Dumitru 117

Figura 73. Reprezentarea grafic a unei funcii.
Curbele plane definite parametric prin formulele simbolice x = x(t) i y = y(t) se reprezint grafic cu
funcia
ezplot(x, y, [tmin, tmax])
unde tmin, tmax sunt limitele domeniului de reprezentare. Dac limitele sunt omise, domeniul de
reprezentare este 0 < t < 2.
Exemplu. Reprezentarea grafic a curbei definit parametric prin ecuaiile:
x = 2 sin(2t)
y = 4cos(2t)

syms x y t;
x = 2 * sin(2 * t);
y = 4 * cos(2 * t);
ezplot(x, y);
grid

Dumitru Al. Dumitru 118

Figura 74. Graficul unei curbe definit parametric.
Curba este reprezentat n Figura 74. Variabila independent t ia valori n intervalul
0 < t < 2.
Curbele plane definite implicit de relaia f(x, y) = 0 se reprezint grafic cu funcia
ezplot(f, [xmin, xmax, ymin, ymax])
unde xmin, xmax, ymin, ymax sunt limitele domeniului de reprezentare. Funcia
ezplot(f, [min, max])
reprezint grafic funcia f(x, y) = 0 pe domeniul min < x < max, min < y < max. In cazul n care
domeniul nu este precizat, funcia
ezplot(f)
reprezint grafic funcia f(x, y) = 0 pe domeniul -2< x < 2, -2< y < 2.
Exemplu. S reprezentm grafic funcia x
4
+ y
3
x y =0. Programul este urmtorul

syms x y f;
f = x^4 + y^3 x y
ezplot(f)
grid

Funcia este reprezentat n Figura 75.
Dumitru Al. Dumitru 119

Figura 75. Reprezentarea unei curbei implicite.

Alte exemple de reprezentri grafice vor fi prezentate n paragrafele urmtoare.
Dumitru Al. Dumitru 120

14 Funcii pentru calcule simbolice
Funciile ce vor fi prezentate efectueaz urmtoarele categorii de calcule:
derivarea,
limite de funcii,
integrarea ,
calculul sumelor,
dezvoltarea n serie Taylor,
simplifcarea expresiilor i substituirea,
operaii cu polinoame,
algebra liniar,
rezolvarea ecuaiilor algebrice,
rezolvarea ecuaiilor difereniale ordinare.
14.1 Derivarea
Calculul derivatei simbolice se face cu funcia diff, care poate calcula derivatele funciilor de una sau
mai multe variabile, derivate de ordin 1 sau de ordin superior, etc. Funcia are urmtoarele forme:
pentru a calcula derivata de ordin nti a unei funcii n raport cu variabila x
diff(f, x)
pentru a calcula derivata de ordin n a unei funcii n raport cu variabila x
diff(f, x, n)
pentru a calcula derivata unei funcii n raport cu variabila implicit
diff(f)
variabila implicit se alege dup regula enunat la funcia subs n paragraful de mai sus
referitor la substituii.

Exemple. Derivate de ordin nti.

syms x;
f = cos(2 * x);
diff(f)

ans =
-2*sin(2*x)

syms x y f;
f = x * cos(y) y * cos(x);
diff(f, x), diff(f, y)

ans =
cos(y)+y*sin(x)

ans =
-x*sin(y)-cos(x)

syms x f;
f = exp(i * x)
diff(f, x)

ans =

i*exp(i*x)
Dumitru Al. Dumitru 121

Derivata unei matrice simbolice este matricea obinut derivnd fiecare element. Exemplu.

syms x y;
A = [ x^2 x*y; 2*x y^3]

A =

[ x^2, x*y]
[ 2*x, y^3]

diff(A)

ans =
[ 2*x, y]
[ 2, 0]

Calculul iacobianului,
) , , , (
) , , , (
K
K
z y x D
h g f D
, se face cu funcia jacobian cu forma
jacobian([f; g; h; ], [x, y, x, ])
Primul argument al funciei jacobian este un vector coloan cu funciile f, g, h, , al doilea argument
este un vector linie cu variabilele x, y, z,
Exemplu. Fie transformarea dat de funciile:
x = r * cos(t)
y = r* sin(t)
Determinantul funcional (iacobianul) transformrii se calculeaz astfel:

syms x y r t;
x = r * cos(t);
y = r * sin(t);
D = jacobian([x; y], [r, t])

D =
[ cos(t), -r*sin(t)]
[ sin(t), r*cos(t)]

Determinantul transformrii se calculeaz i se simplific astfel

det(D)

ans =
cos(t)^2*r+r*sin(t)^2

simplify(det(D))

ans =
r
14.2 Limite de funcii
14.2.1 Calculul limitelor de funcii
Fie de calculat limita
) (
lim
x f
a x

Dumitru Al. Dumitru 122
Calculul limitei funciei se face cu funcia limit cu forma
limit(f, x, a)
unde a este un numr, sau inf pentru (infinit).
Funcia limit are i forma
limit(f, a)
caz n care variabila dup care se calculeaz limita este variabila implicit care se alege dup regula
enunat la funcia subs n paragraful referitor la substituii
Exemplu. S calculm limita

2 2 3
1
2
2
lim
+ +
+

x x
x x
x

syms x f g;
f = x^2 x +1;
g = 3*x^2 + 2*x +2;
limit(f / g, x, inf)

ans =
1/3

Exemplu. S calculm limita

n
n
n

+

1
1
lim

Dup cum se tie, aceast limit este e.

syms g n;
limit((1 + 1 / n)^n, n, inf)

ans =
exp(1)

Exemplu. S calculm limita
( ) ( ) x
x
cos 1
lim
0
+



syms f x;
f = 1 + cos(x);
limit(f, x, 0)

ans =
2
Exemplu. S se calculeze limita

( ) ( )
h
x h x
h
sin sin
lim
0
+



syms g x h;
g = (sin(x+h)-sin(x))/h;
limit(g, h, 0)

ans =
cos(x)

Exerciii. S se calculeze limitele
Dumitru Al. Dumitru 123
1)
n
n
n
x

+

1
lim

2)
n
n
n
x



1
lim

14.2.2 Calculul limitelor laterale
Fie de calculat limitele laterale:
) (
lim
x f
a x
+


i
) (
lim
x f
a x


Ele se calculeaz cu funcia limit cu formele
limit(f, x, a, right)
pentru limita la dreapta, i
limit(f, x, a, left)
pentru limita la stnga.
Exemplu. S calculm limitele laterale ale funciei ( )
x
x
x f = n punctul x = 0.
syms x f;
f = abs(x) / x;
limit(f, x, 0, right)

ans =
1

limit(f, x, 0, left)

ans =
-1
14.3 Integrarea
14.3.1 Calculul integralei nedefinite
Fie de calculate integrala nedefinit a funciei f(x)
( )

dx x f
Integrarea simbolic se efectueaz cu funcia int cu formele:
int(f, x)
n care specificm variabila de integrare, sau
int(f)
cnd variabila de integrare se alege dup regula enunat n paragraful referitor la substitiii.
Exemplu. S calculm integrala funciei
f(x) = a * sin(x) + b * cos(x)

syms f a x b;
f = a * sin(x) + b * cos(x);
int(f, x)

ans =
-a*cos(x)+b*sin(x)
Exerciiu. S se calculeze primitivele funciilor din tabelul Tabelul 36.
Dumitru Al. Dumitru 124

x
n

x
x
1
+
( ) ( ) x x
2 2
cos sin
1

a
x

2 2
1
a x +

2 2
1
a x +

x
1

( ) x
2
cos
1

( ) x
2
sin
1

Tabelul 36. Funcii pentru care se vor calcula primitive.
14.3.2 Calculul integralei definite
Calculul integralei definite a funciei f(x)

b
a
dx x f ) (
se face cu funcia
int(f, x, a, b)
sau cu funcia
int(f, a, b)
In ultimul caz, variabila de integrare se alege dup regula specificat anterior.
Exemplu. S calculm integrala

+ +
3
1
3
) 2 ( dx x x

syms x f;
f = x^3 + x + 2;
int(f, 1, 3)

ans =
28

Exemplu. S calculm integrala

dx e
x
2
2

i s se reprezinte grafic funcia de sub integral.

syms f x;
f = exp(- x^2 / 2);
ezplot(f)
grid
int(f, x, -inf, inf)

ans =
2^(1/2)*pi^(1/2)

Reprezentarea grafic a funciei este cea din Figura 76.

Dumitru Al. Dumitru 125

Figura 76. Funcia erorilor.
14.3.3 Calculul integralelor ce depind de un parametru
Fie o funcie f(x) ce depinde de un parametru. Dac parametrul nu are o valoare specificat, el este
presupus un numr complex. In cazul cnd parametrul este un numr real sau un numr pozitiv, el
trebuie declarat ca atare n instruciunea syms.
Exemplu. Fie funcia
( )
2
ax
e x f

=
Vrem s calculm
( )


dx x f
Integrala este convergent n cazul n care parametrul a este pozitiv. Vom declara n instruciunea syms
c variabila a este pozitiv.

syms a positive;
syms x;
f = exp(-a * x^2)
R = int(f, x, -inf, inf)

R =
1/a^(1/2)*pi^(1/2)

pretty( R )

1/2
pi
Dumitru Al. Dumitru 126
-----
1/2
a~

In cazul n care parametrul a este complex vom scrie

syms a x;
f = exp(-a * x^2)
R = int(f, x, -inf, inf)
14.4 Calculul sumelor
Fie de efectuat calculul simbolic al sumei

=
=
n k
m k
k x ) (
Calculul simbolic al sumei se face cu instruciunea symsum cu formele
symsum(x, v, m, n)
sau
symsum(x, m, n)
unde x este termenul general al sumei, iar m i n sunt limitele inferioar i superioar, care pot fi
numere ntregi sau ,

simbolizat

prin

inf. In prima form variabila dup care se face nsumarea este v,
n a doua form se utilizeaz variabila simbolic implicit, determinat de funcia findsym.
Exemplu. Fie de calculat suma

=
n
k
k
1

syms k n;
s = symsum(k, 1, n)

s =
1/2*(n+1)^2-1/2*n-1/2

pretty(s)
2
1/2 (n + 1) - 1/2 n 1 / 2

Exemplu. Fie de calculate sumele

=
n
k
k
1
1
,

=1
1
k
k
,

=1
2
1
k k

syms k n;
r = symsum(1 / k, 1, n)

r =
Psi(n+1)+eulergamma

r = symsum(1 / k, 1, inf)

r =
inf

r = symsum(1/k^2, 1, inf)

r =
1/6*pi^2
Dumitru Al. Dumitru 127
14.5 Dezvoltarea n serie Taylor
Fie o funcie f(x) care are derivate pn la ordinul n. Funcia
taylor(f, n, x, a)
d dezvoltarea n serie Taylor a funciei f(x) pn la ordinul n 1 n jurul punctului a.
( )
( )
( )

=

1
0
!
n
k
k
k
k
a f
a x
Dac argumentul a lipsete, funcia
taylor(f, n, x)
d dezvoltarea n serie MacLaurin a funciei a funciei f(x) pn la ordinul n 1 (dezvoltarea n serie n
jurul punctului a = 0). Dac argumentul x lipsete, variabila independent este determinat de funcia
fyndsym. Dac argumentul n lipsete n = 6.
Exemplu. S calculm dezvoltarea n serie Taylor a funciei sin(x) n jurul originii.

syms x f;
f = sin(x);
taylor(f, 5)

ans =
x-1/6*x^3

Exemplu. S calculm dezvoltarea n serie Taylor a funciei e
x
n jurul originii.

syms f x;
f = exp(x);
T = taylor(f, 5, 0)

T =
1+x+1/2*x^2+1/6*x^3+1/24*x^4

pretty(T)

2 3 4
1 + x + 1/2 x + 1/6 x + 1/24 x

Exemplu. S calculm dezvoltarea n serie Taylor a funciei e
x
n jurul punctului x =1.

syms x f;
f = exp(x);
T = taylor(f, 3, 1)

T =
exp(1)+exp(1)*(x-1)+1/2*exp(1)*(x-1)^2

pretty(T)
2
exp(1) + exp(1) (x - 1) + 1/2 exp(1) (x - 1)

14.6 Simplificri i substituii
Funciile de mai jos aplic diverse identiti asupra expresiilor simbolice.
Funcia expand cu forma
expand(f)
Dumitru Al. Dumitru 128
aplic identitile din Tabelul 37 asupra polinoamelor, funciilor exponeniale i logaritmice, funciilor
trigonometrice directe i inverse.

f expand(f)
a*(x + y) a * x + a * y
a*(x -y) a * x a * y
a^(x+y) a^x*a^y
a^(x-y) a^x/a^y
exp(a + b) exp(a) * exp(b)
exp(a-b) exp(a)/exp(b)
log(x*y) log(x) + log(y)
log(x/y) log(x) log(y)
log(a^y) y*log(a)
sin(a + b) sin(a)*cos(b)+cos(a)*sin(b)
sin(2 * asin(a)) 2*a*(1-a^2)^(1/2)
Tabelul 37. Expandarea expresiilor simbolice.
la expandarea logaritmilor argumentele trebuie s fie pozitive,
funcia expand poate expanda toate funciile trigonometrice directe, sin(a+b), cos(a+b),
tan(a+b),
funcia expand poate expanda toate funciile trigonometrice inverse, sin(k * asin(x)), cos(k *
acos(x)), tan(k * atan(x)), etc., unde k este un numr natural.
Funcia simplify cu forma
simplify(f)
aplic identitile din Tabelul 38 asupra expresiilor simbolice..

f simplify(f)
sin(x)^2 + cos(x)^2 1
a^x * a^y a^(x+y)
a^x / a^y a^(x-y)
exp(a) * exp(b) exp(a + b)
exp(a) / exp(b) exp(a b)
exp(log(x)) x
log(exp(x) x
Tabelul 38. Simplificarea expresiilor simbolice.
Dumitru Al. Dumitru 129

15 Operaii cu polinoame simbolice
In cele ce urmeaz se vor considera polinoame simbolice cu coeficieni numere raionale. Fie
polinomul
a
n
x
n
+ a
n-1
x
n-1
+ + a
1
x + a
0

Polinomul poate fi reprezentat n una din urmtoarele forme:
o combinaie liniar a puterilor lui x, ca mai sus,
produs de factori ireductibili peste mulimea numerelor raionale,
sub forma Horner a
0
+ x(a
1
+ x(x(a
n-1
+ xa
n
))).
Conversia ntre aceste trei forme se face cu urmtoarele funcii:
funcia collect(p) transform polinomul n prima form,
funcia factor(p) transform polinomul n forma a doua,
funcia horner(p) transform polinomul n forma a treia.
Argumentul p al acestor funcii poate fi i un vector sau o matrice cu elementele expresii simbolice.
Funcia collect mai are nc o form
collect(p, v)
n care al doilea parametru v specific variabila dup care se va face dezvoltarea.
Exemplu. Fie polinomul
p(x) = x
3
7x
2
+ 14x 8
Vom converti polinomul n cele trei forme cu funciile de mai sus.

syms p, x;
p = x^3 7*x^2 + 14 * x -8;
q = factor(p)

q =
(x-1)*(x-2)*(x-4)

collect(q)

ans =
x^3-7*x^2+14*x-8

s = horner(p)

s =
-8+(14+(-7+x)*x)*x

collect(s)

ans =
x^3-7*x^2+14*x-8

Funcia factor poate descompune n factori i numere ntregi sau tablouri cu ntregi simbolici. In cazul
tablourilor funcia factor descompune fiecare element. Reamintim c, ntregii simbolici se creaz cu
funcia sym.
Exemplu. Vom factoriza numerele 22, 333, 4444, , 999999999. Pentru aceasta vom construi un
vector simbolic cu numerele de mai sus i vom aplica funcia factor asupra lui.

syms N;
for k = 2:9
S = 0;
Dumitru Al. Dumitru 130
for j = 1:k
S = S + 10^(j 1);
end
S = S * k;
N(k - 1) = S;
end
[N factor(N)]


ans =

[ 22, (2)*(11) ]
[ 333, (3)^2*(37) ]
[ 4444, (2)^2*(11)*(101) ]
[ 55555, (5)*(41)*(271) ]
[ 666666, (2)*(3)^2*(7)*(11)*(13)*(37) ]
[ 7777777, (7)*(239)*(4649) ]
[ 88888888, (2)^3*(11)*(73)*(101)*(137) ]
[ 999999999, (3)^4*(37)*(333667) ]

Exemplu. S factorizm polinoamele de forma x
n
+ 1 i x
n
1 pn la gradul 6.

syms x;
n = (1:6);
p = x .^ n +1;
q = x .^ n 1;
f = factor(p);
g = factor(q);
[p, f, q, g]

ans =

[ x+1, x+1, x-1, x-1]
[ x^2+1, x^2+1, x^2-1, (x-1)*(x+1)]
[ x^3+1, (x+1)*(x^2-x+1), x^3-1, (x-1)*(x^2+x+1)]
[ x^4+1, x^4+1, x^4-1, (x-1)*(x+1)*(x^2+1)]
[ x^5+1, (x+1)*(x^4-x^3+x^2-x+1), x^5-1, (x-1)*(x^4+x^3+x^2+x+1)]
[ x^6+1, (x^2+1)*(x^4-x^2+1), x^6-1, (x-1)*(x+1)*(x^2+x+1)*(x^2-x+1)]

Este posibil s convertim un polinom cu coeficieni numerici ntr-un polinom simbolic. Coeficienii
numerici sunt dai printr-un vector n ordinea descresctoare a puterilor lui x i ei sunt convertii n
numere raionale simbolice. Coversia se face cu funcia
poly2sym(c)
poly2sym(c, v)
In prima forma variabila implicit este x, n forma a doua este v.
Este posibil de asemenea conversia unui polinom symbolic cu coeficienii numere raionale ntr-un
polinom numeric. Aceast conversie se face cu funcia
sym2poly(s)
unde s este polinomul symbolic. Rezultatul funciei este un vector numeric cu coeficienii polinomului
n ordinea descresctoare a puterilor variabilei independente a polinomului simbolic.
Dumitru Al. Dumitru 131

16 Algebr liniar simbolic
Operaiile ce se pot efectua asupra matricelor simbolice se mpart n dou categorii:
operaiile cunoscute efectate asupra matricelor cu elemente simbolice,
conversia unei matrice numerice ntr-o matrice cu numere simbolice i efectuarea operaiilor
cunoscute cu numere simbolice.
Operaiile ce se pot efectua asupra unei matrice simbolice A sunt cele din Tabelul 39.

Operaia Funcia
calculul determinantului det(A)
calculul inversei inv(A)
calculul spaiului nul null(A)
calculul spaiului coloanelor colspace(A)
e
At
expm(A * t)
Tabelul 39. Operaii asupra matricelor cu elemente simbolice.
Operaiile ce se pot efectua asupra matricelor numerice i matricelor cu numere simbolice sunt artate
n Tabelul 40.

Operaia Funcia
Calculul valorilor proprii
E = eig(A)
[V, E] = eig(A)
Calculul polinomului caracteristic
poly(A)
poly(A, v)
Forma canonic Jordan
J = jordan(A)
[V, J] = jordan(A)
Descompunerea dup valorile
singulare
S = svd(A)
[U, S, V] = svd(A)
Tabelul 40. Operaii asupra matricelor cu numere simbolice.
Funcia poly are ca rezultat polinomul caracteristic al matricei A n form simbolic. In prima form,
variabila polinomului este variabila simbolic implicit, determinat cu ajutorul funciei findsym, n a
doua forma este v.
Exemplu. Fie matricea simbolic

1 1 1
1 2 2
2 1 a

S se calculeze determinantul i inverse acestei matrice.

syms a M;
M = [1, a, 2; 2, 2, 1; 1, 1, -1];
D = det(M)

D =
-3+3*a

D = inv(M)

D =
[ -1/(a-1), 1/3*(a+2)/(a-1), 1/3*(a-4)/(a-1)]
[ 1/(a-1), -1/(a-1), 1/(a-1)]
[ 0, 1/3, -2/3]
Dumitru Al. Dumitru 132


Exemplu. Fie matricea

1 0 0
0 2 0
1 0 1

S se determine forma canonic Jordan.

syms M;
M = sym([1, 0, 1; 0, 2, 0; 0, 0, 2])
J = jordan(M)

J =
2 0 0
0 1 1
0 0 1

[V, J] = jordan(M)

V =
0 1 0
1 0 0
0 0 1


J =
2 0 0
0 1 1
0 0 1


Dumitru Al. Dumitru 133

17 Rezolvarea simbolic a ecuaiilor algebrice
Fie e o variabil simbolic ce are ca valoare o expresie algebric simbolic. Rezolvarea ecuaiei
algebrice
e = 0
se face cu funcia solve cu formele
solve (e, x)
cnd se rezolv ecuaia dup variabila simbolic x i
solve(e)
cnd expresia simbolic e are o singur variabil, sau ecuaia se rezolv dup variabila simbolic
implicit aleas dup regula enunat n paragraful relativ la substituii. Funcia solve poate avea ca
argument i o expresie simbolic ntre paranteze:
solve (expresie imbolic, x)
sau
solve(expresie simbolic)
Rezultatul funciei solve este:
un vector cu soluii, dac rezultatul funciei solve este un vector cu un numr de componente
egal cu numrul de variabile,
o structur n care numele cmpurilor sunt numele variabilelor ecuaiilor, dac rezultatul
funciei solve este o variabil.
Exemplu. S determinm soluiile ecuaiei de gradul doi
ax
2
+ bx + c = 0

syms a b c x f;
f = a*x^2+b*x+c;
solve(f)

Exemplu. S rezolvm ecuaia de gradul doi de mai sus n raport cu variabila b.

syms a b c x f;
f = a*x^2+b*x+c;
solve(f, b)

In cazul cnd ecuaia de rezolvat are forma f(x) = g(x), utilizm funcia solve cu forma a doua
solve(f(x) = g(x), x)
sau
solve(f(x) = g(x))
Exemplu.
Funcia solve poate rezolva i sisteme de ecuaii algebrice. Fie sistemul de dou ecuaii algebrice
f(x, y) = 0
g(x, y) = 0
Dac dorim ca rezultatul funciei solve s fie un vector cu soluii, funcia solve are forma
[x, y] = solve(f, g)
sau forma
[x, y] = solve(f(x, y), g(x, y))
Dac dorim ca rezultatul s fie o structur, n stnga semnului egal vom scrie o variabil.
Exemplu. S rezolvm sistemul de ecuaii:
( )
2
x xy tg =
1 2
2
2
2
= + y
x


syms x y;
Dumitru Al. Dumitru 134
f=tan(x*y)-x^2

f =
tan(x*y)-x^2

g=0.5*x^2+2*y^2-1

g =
1/2*x^2+2*y^2-1

s = solve(f,g)

s =
x: [2x1 sym]
y: [2x1 sym]

Rezultatul este o structur cu dou cmpuri, x i y.

s.x

ans =
[ 0]
[ 0]

s.y

ans =
[ 1/2*2^(1/2)]
[ -1/2*2^(1/2)]

Exemplu. Fie de rezolvat sistemul de trei ecuaii:
1 log +

=
z
y
x

2 2
2 4 . 0 x z y + =

20
2
xy
z + =

syms x y z
f = x - log(y/z)-1

f =
x-log(y/z)-1

g=y-0.4-z^2+2*x^2

g =
y-2/5-z^2+2*x^2

h=z-2-x*y/20

h =
z-2-1/20*x*y

Dumitru Al. Dumitru 135
s=solve(f,g,h)

s =
x: [1x1 sym]
y: [1x1 sym]
z: [1x1 sym]

In acest caz soluia s este o structur cu componentele x, y i z. Rezultatele sunt:

s.x

ans =
-1.4453427795204872025615216821349

s.y

ans =
.17231322974245725394289003908468

s.z

ans =
1.9875474158787942273692241116145
Dumitru Al. Dumitru 136

18 Rezolvarea simbolic a ecuaiilor difereniale ordinare
Fie ecuaia diferenial ordinar de ordinul nti
y = f(y, t)
Soluia general a acestei ecuaii difereniale depinde de o constant arbitrar C. Dac ne intereseaz o
soluie care la momentul iniial t
0
trece prin punctul y
0
, constanta C ia valoarea y
0
. In continuare vom
presupune c soluia ecuaiei difereniale exist. In funcie de proprietile funciei f, soluia poate s
fie unic sau nu.
Rezolvarea ecuaiilor difereniale ordinare se face cu funcia dsolve care poate rezolva ecuaii
difereniale de ordin superior i sisteme de ecuaii difereniale ordinare. Funcia dsolve are ca
parametri:
expresia simbolic a ecuaiei difereniale sau, n cazul unui sistem, expresiile simbolice ale
ecuaiilor sistemului; n aceste expresii, derivata de ordin nti este notat cu D, iar derivatele
de ordin superior cu D2, D3, , Dn. In notaia de mai sus dy/dt se noteaz cu Dy, d
2
y/dt
2
se
noteaz cu D2y, etc.
condiiile iniiale ale ecuaiei difereniale, dac exist, sunt argumentele urmtoare ale funciei
dsolve; ele au forma y(t
0
) = y
0
, Dy(t
0
) = y
0
, etc.,
variabila independent implicit este t; variabila independent poate fi i alt variabil
simbolic, care va fi ultimul argument al funciei dsolve.
Toi parametrii funciei dsolve sunt inclui ntre apostrofuri.
Soluia ecuaiei difereniale poate fi:
un vector cu un numr de componente egal cu cel al variabilelor dependente, dac rezultatul
funciei dsolve este un vector,
o structur n care numele cmpurilor sunt numele variabilelor dependente, dac rezultatul
funciei dsolve este o variabil.
Exemplu. Fie ecuaia diferenial
y + y = 0
S calculm soluia general a ecuaiei i soluia ce trece prin punctele y(0) = 1, y(0)=-1. Instruciunile
sunt urmtoarele:

syms y
y = dsolve(D2y + y = 0)

syms y
y = dsolve(D2y + y = 0, y(0) = 1, Dy(0) = -1)

Exemplu. Fie sistemul de ecuaii difereniale:
x = x y
y = x + y
Vom calcula soluia odat ntr-un vector i alt dat ntr-o structur.

syms x y
[x, y] = dsolve(Dx = x y, Dy = x + y)

x =
-exp(t)*(sin(t)*C1-cos(t)*C2)

y =
exp(t)*(cos(t)*C1+sin(t)*C2)
s = dsolve(Dx = x y, Dy = x + y)

s =
Dumitru Al. Dumitru 137
x: [1x1 sym]
y: [1x1 sym]

s.x

ans =
-exp(t)*(sin(t)*C1-cos(t)*C2)

s.y

ans =
exp(t)*(cos(t)*C1+sin(t)*C2)

[x, y] = dsolve('Dx = x - y', 'Dy = x + y', 'x(0) = 1', 'y(0) = 2')

x =
-exp(t)*(2*sin(t)-cos(t))

y =
exp(t)*(2*cos(t)+sin(t))

Exemplu. S se rezolve ecuaia diferenial
y''+3y'+2y = e
3t
+ 2t + 1

[y] = dsolve('D2y + 3* Dy + 2*y = exp(3*t) +2*t + 1')

y =

1/20*exp(3*t)*(1+20*t*exp(-3*t)-20*exp(-3*t))+C1*exp(-t)+C2*exp(-2*t)

[y] = dsolve('D2y + 3* Dy + 2*y = exp(3*t) +2*t + 1', 'y(0) = 1', 'Dy(0) = 0')

y =
1/20*exp(3*t)*(1+20*t*exp(-3*t)-20*exp(-3*t))+11/4*exp(-t)-4/5*exp(-2*t)
Dumitru Al. Dumitru 138

19 Transformri integrale
In acest capitol vom prezenta funciile ce calculeaz transformatele Fourier, Laplace i Z, directe i
inverse.
19.1 Transformata Fourier
Transformata Fourier direct se definete cu formula
( ) ( )

= dx e x f w F
iwx

unde f(x) este o funcie simbolic scalar de argument x, iar F(w) este transformata Fourier de
argument w.
Transformata Fourier direct simbolic a funciei f se calculeaz cu funcia:
F = fourier(f)
F = fourier(f, v)
F = fourier(f, u, v)
In prima form, variabila funciei f este x, iar a funciei F este w (variabilele implicite). In forma a
doua, variabila funciei f este x, (variabila implicit), iar a funciei F este v. In forma a treia, variabila
funciei f este u, iar a funciei F este v.
Transformata Fourier invers se definete cu formula
( ) ( )


= dw e w F x f
iwx
2
1

unde F(w) este o funcie simbolic scalar de argument w, iar f(x) este transformata Fourier invers de
argument x.
Transformata Fourier invers simbolic a funciei F se calculeaz cu funcia:
f = ifourier(F)
f = ifourier(F, u)
f = ifourier(F, v, u)
In prima form, variabila funciei F este w, iar a funciei f este x (variabilele implicite). In forma a
doua, variabila funciei F este w, (variabila implicit), iar a funciei f este u. In forma a treia, variabila
funciei F este v, iar a funciei f este u.
Exemplu. S calculm transformata Fourier a funciei
( )
2
x
e x f

=

syms x;
f = exp(-x^2);
F = fourier(f)

F =
pi^(1/2)*exp(-1/4*w^2)

Pentru verificare vom calcula transformata Fourier invers a funciei F

ifourier(F)

ans =
exp(-x^2)

Exemplu. S se calculeze transformata Fourier a funciei
( ) ( ) t e t f
at
1

=
cu a >0. Funcia 1(t) este funcia treapt unitar
Dumitru Al. Dumitru 139
( )

>
<
=
0 1
0 0
1
t
t
t
Ea este predefinit ca heaviside(t).

syms t f F
syms a positive
f = exp(-a*t)*heaviside(t)

f =
exp(-a*t)*heaviside(t)

F = fourier(f)

F =
1/(a+i*w)

Pentru verificare vom calcula transformata Fourier invers a funciei F

ifourier(F)

ans =
exp(-a*x)*heaviside(x)

19.2 Transformata Laplace
Transformata Laplace direct se definete cu formula
( ) ( )

=
0
dt e t f s F
ist

unde f(t) este o funcie simbolic scalar de argument t, iar F(s) este transformata Laplace de argument
s.
Transformata Laplace direct simbolic a funciei f se calculeaz cu funcia:
F = laplace(f)
F = laplace (f, v)
F = laplace (f, u, v)
In prima form, variabila funciei f este x, iar a funciei F este w (variabilele implicite). In forma a
doua, variabila funciei f este t, (variabila implicit), iar a funciei F este v. In forma a treia, variabila
funciei f este u, iar a funciei F este v.
Transformata Laplace invers se definete cu formula
( ) ( )

+

=
i c
i c
ist
ds e s F
i
x f
2
1

unde F(s) este o funcie simbolic scalar de argument s, iar f(x) este transformata Laplace invers de
argument t.
Transformata Laplace invers simbolic a funciei F se calculeaz cu funcia:
f = ilaplace(F)
f = ilaplace (F, u)
f = ilaplace (F, v, u)
In prima form, variabila funciei F este s, iar a funciei f este t (variabilele implicite). In forma a doua,
variabila funciei F este s, (variabila implicit), iar a funciei f este u. In forma a treia, variabila funciei
F este v, iar a funciei f este u.
Exemplu. S calculm transformata Laplace a funciei
( )
at
e t f

=
Dumitru Al. Dumitru 140

syms f F t s
syms a positive
f = exp(-a *t)

f =
exp(-a*t)

F = laplace(f)

F =
1/(s+a)

Exemplu. S calculm transformata Laplace invers a funciei
( )
a s
s F
+
=
1


syms f F s t
syms a positive

F = 1/(s+a)

f = ilaplace(F)

f =
exp(-t*a)
19.3 Transformata Z
Transformata Z direct se definete cu formula
( ) ( )

=
0 n
n
z n f z F
unde f este o funcie simbolic scalar de argument n, iar F(z) este transformata Z de argument z.
Transformata Z direct se calculeaz cu funcia:
F = ztrans(f)
F = ztrans(f, w)
F = ztrans(f, k, w)
In prima form variabila funciei f este n, iar a funciei F este z, In a doua form variabila funcie f este
n (variabila implicit), iar variabila funciei F este w. In a treia forma variabila funciei f este k, iar a
funciei F este w.
Transformata Z invers se calculeaz cu formula
( ) ( )

=
R z
n
dz z z F
i
n f
1
2
1


unde F(z) este o funcie simbolic scalar de argument z, iar f(n) este transformata Z invers de
argument n.
Transformata Z invers se calculeaz cu funcia:
f = iztrans(F)
f = iztrans(F, k)
f = iztrans(F, w, k)
In prima form, variabila funciei F este z, iar a funciei f este n (variabilele implicite). In forma a
doua, variabila funciei F este z, (variabila implicit), iar a funciei f este k. In forma a treia, variabila
funciei F este w, iar a funciei f este k.
In exemplele urmtoare vom nota cu T perioada de eantionare. Momentele de eantionare vor fi nT.
Dumitru Al. Dumitru 141
Exemplu. S calculm transformata Z a funciei
( ) ) exp( anT n f =
Funcia de timp ce este eantionat este f(t) = e
-at
.

syms a n T
f = exp(-a*T*n)

f =
exp(-a*T*n)

F = ztrans(f)

F =
z/exp(-a*T)/(z/exp(-a*T)-1)

Vom calcula acum transformata Z invers a funciei F

iztrans(F)

ans =
exp(-a*T)^n

Exemplu. S calculm transformata Z invers a funciei
( )
a z
z
z F

=

syms a z;
F = z / (z a);
f = iztrans(F)

f =
a^n

Funcia eantionat este f(n) = a
n
. Cu notaia
T
e a

= obinem ( )
nT
e n f

= . In consecin, funcia de
timp ce este eantionat este ( )
t
e t f

= , unde
T
ln
= .
Exemplu. S calculm transformata Z invers a funciei
( )
a z
z
z F
+
=

syms a z;

F = z / (z + a);
f = iztrans(F)

f =
(-a)^n

Exemplu. S se calculeze transformata Z invers a funciei
( )
( )
2
1
=
z
z
z F
syms z F
Dumitru Al. Dumitru 142
F = z/(z-1)^2

F =
z/(z-1)^2

f = iztrans(F)
n

Funcia de timp ce este eantionat este f(t) = t/T. Vom calcula acum transformata Z a funciei f.

ztrans(f)

ans =
z/(z-1)^2

S-ar putea să vă placă și