Anda di halaman 1dari 110

Matlab

1
1 Lansarea aplicaiei Matlab ........................................................................................... 4
2 Elementele limbajului Matlab ..................................................................................... 7
2.1 Constante .............................................................................................................. 7
2.2 Variabile ............................................................................................................... 7
2.3 Operatori aritmetici. Expresii aritmetice .............................................................. 8
2.4 Operatori relaionali. Expresii relaionale ............................................................ 8
2.5 Operatori booleeni. Expresii booleene ................................................................. 9
2.5.1 Operatori booleeni ce conecteaz expresii relaionale .................................. 9
2.5.2 Operatori booleeni ce acioneaz asupra scalarilor i elementelor de matrice
................................................................................................................................ 9
2.6 Vectori i matrice ............................................................................................... 10
2.6.1 Generarea vectorilor .................................................................................... 11
2.6.2 Lucrul cu matrice mprite n blocuri ......................................................... 12
2.6.3 Concatenarea matricelor .............................................................................. 12
2.6.4 Funcii ce creaz matrice speciale ............................................................... 13
2.6.5 Modificarea dimensiunilor matricelor ......................................................... 13
2.7 Vectori de celule ................................................................................................. 14
2.8 Structuri .............................................................................................................. 14
2.9 Funciile load i save .......................................................................................... 14
2.10 Introducerea datelor de la tastatur ................................................................. 15
2.11 Funcii pentru lucrul cu iruri de caractere ...................................................... 15
3 Instruciuni Matlab .................................................................................................... 16
3.1 Instruciunea for ................................................................................................. 16
3.2 Instruciunea while ............................................................................................. 16
3.3 Instruciunile continue i break .......................................................................... 16
3.4 Instruciunea if .................................................................................................... 16
3.5 Instruciunea switch ............................................................................................ 17
4 Funcii ........................................................................................................................ 18
4.1 Definirea funciilor ............................................................................................. 18
4.2 Instruciunea global ............................................................................................ 18
4.3 Variabile handle de funcii ................................................................................. 19
4.4 Vectorizarea funciilor ........................................................................................ 20
5 Reprezentri grafice .................................................................................................. 21
5.1 Reprezentarea curbelor plane ............................................................................. 21
5.2 Editarea unei figuri ............................................................................................. 27
5.3 Modificarea interactiv a proprietilor obiectelor grafice ................................. 28
5.3.1 Modificarea proprietilor axelor ................................................................ 29
5.3.2 Modificarea proprietilor curbelor ............................................................. 31
5.4 Modificarea programat a proprietilor obiectelor grafice ............................... 35
5.4.1 Obiectul Figure ............................................................................................ 36
5.4.2 Obiectul Axes .............................................................................................. 36
5.4.3 Obiectul Line ............................................................................................... 37
5.4.4 Obiectul Text ............................................................................................... 37
5.4.5 Modificarea proprietilor obiectelor grafice .............................................. 38
6 Transformata Fourier discret a unui semnal ............................................................ 42
7 Integrarea ecuaiilor difereniale ordinare ................................................................. 44
8 Filtre numerice .......................................................................................................... 48
9 Interfee grafice ......................................................................................................... 50
9.1 Construirea unei interfee grafice cu aplicaia GUIDE ...................................... 50
9.2 Programarea interfeei grafice ............................................................................ 64
2
10 Calcul simbolic ........................................................................................................ 73
10.1 Definirea variabilelor i funciilor simbolice ................................................... 73
10.2 Substituii ......................................................................................................... 75
10.3 Reprezentarea simbolic a numerelor ............................................................. 77
10.4 Definirea de variabile simbolice reale i complexe .......................................... 78
10.5 Matrice simbolice ............................................................................................. 79
10.6 Crearea de funcii abstracte .............................................................................. 82
10.7 Reprezentarea grafic a funciilor .................................................................... 82
11 Funcii pentru calcule simbolice ............................................................................. 86
11.1 Derivarea ......................................................................................................... 86
11.2 Limite de funcii .............................................................................................. 88
11.2.1 Calculul limitelor de funcii ...................................................................... 88
11.2.2 Calculul limitelor laterale .......................................................................... 89
11.3 Integrarea ......................................................................................................... 90
11.3.1 Calculul integralei nedefinite .................................................................... 90
11.3.2 Calculul integralei definite ........................................................................ 90
11.3.3 Calculul integralelor ce depind de un parametru ....................................... 92
11.4 Calculul sumelor ............................................................................................. 92
11.5 Dezvoltarea n serie Taylor ............................................................................. 93
11.6 Simplificri i substituii ................................................................................. 94
12 Operaii cu polinoame ............................................................................................ 96
13 Algebr liniar ........................................................................................................ 99
14 Rezolvarea simbolic a ecuaiilor algebrice .......................................................... 101
15 Rezolvarea ecuaiilor difereniale ordinare .......................................................... 104
16 Transformri integrale ........................................................................................... 106
16.1 Transformata Fourier ..................................................................................... 106
16.2 Transformata Laplace .................................................................................... 107
16.3 Transformata Z .............................................................................................. 108
3
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.
Fereastra aplicaiei Matlab este cea din Figura 1. Ea cuprinde 2 ferestre:
fereastra de comenzi (Command Window) unde se introduc instruciunile
Matlab,
fereastra cu instruciunile introduse anterior, (Command History).
Figura 1. Fereastra aplicaiei Matlab.
Este posibil de a afia i alte ferestre:
directorul de lucru Matlab,
Lanch Pad ce permite lansarea altor aplicaii, Simulink, biblioteci de aplicaii.
Afiarea acestor ferestre se face cu opiunile meniului View.
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.
4
Sunt afiate de asemenea ultimele 4 fiiere deschise.
Aplicaia Matlab poate fi nchis i tastnd comanda quit n fereastra de comenzi.
Menuil 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.
Menui View, afiat n Figura 3, are opiuni de afiare sau ascundere a diverselor
ferestre:
Command Window, afiaz ferestra de comenzi,
Command History, afiaz ferestra cu comenzile precedente,
Current Directory, afiaz directorul de lucru,
Workspace, afiaz spaiile de lucru,
Launch Pad, afiaz un director ce permite lansarea altor aplicaii, Simulink,
biblioteci de aplicaii, etc, vezi Figura 3.
Fiecare fereastr are un buton de nchidere , i un buton care mut fereastra
respectiv n afara Ferestrei Matlab.
5
Meniul View Fereastra Launch Pad
Figura 3. Meniul View al aplicaiei Matlab.
Bara de instrumente a aplicaiei Matlab este artat n Figura 4. O parte din butoane
corespund opiunilor meniurilor File i Edit.
Figura 4. 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
Help
Selectarea directorului curent
Alegerea unui nou director
curent
Tabelul 1. Butoanele barei de instrumente a aplicaiei Matlab.
6
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
Siruri 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'
In Matlab exist cteva constante predefinite: pi, eps, NaN, Inf, realmin, realmax.
Semnificaia lor este cea din Tabelul 2.
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 2. Constante predefinite n Matlab.
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.
7
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
cos acos log imag
tan atan log10
Prioritile operatorilor 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. De exemplu, expresia 2^2^3 = (2^2)^3 i are rezultatul 64. Exemple de
expresii aritmetice i valorile lor sunt artate n Tabelul 3.
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
Tabelul 3. Expresii aritmetice.
In cadrul expresiilor aritmetice se pot utiliza paranteze rotunde, (), 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:
< <=, >, >=, = =, ~=
O expresie relaional este format din dou expresii aritmetice separate de un
operator relaional. Rezultatul unei expresii relaionale este adevrat sau 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 4.
Expresie relaional Valoare
2 ~= 2 0
2 < 7 1
3 < -5 0
Tabelul 4. Expresii relaionale.
8
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 5.
Expresie booleean Valoare
a < 5 && b < 7 1
a > 5 && b < 7 0
a > 0 || b + 1 > 2 1
~(1 > -1) 0
Tabelul 5. 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 de matrice
Aceti operatori sunt &, | i ~.i reprezint operatorii i, sau i respectiv 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 6.
Expresie boolean Valoare
~1 0
~5.2 0
~-7.4 0
~0 1
a & ~ a 0
a | ~a 1
~1 > -1 1
Tabelul 6. Expresii booleene.
Prioritile i asociativitatea operatorilor din Matlab sunt cele artate n Tabelul 7.
Operatorii sunt scrii n ordinea prioritii.
9
Operator Asociativitate
+unar, - unar, ~ dreapta
*, /, \, ^ stnga
+binar, - binar stnga
&, | stnga
<, <=, >, >=, = =, ~= stnga
&&, || stnga
Tabelul 7. Prioritile i asociativitatea operatorilor.
2.6 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.
Indicii vectorilor i matricelor ncep de la 1. Elementul ij
a
a 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. Semnificaia celorlali operatori este cea din Tabelul
8.
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 8. Operaii cu matrice.
In cazul operatorului ^, unul dintre operanzi trebuie s fie scalar.
Funcia
length(x)
are ca rezultat lungimea vectorului x. Funcia
[m n] = size(A)
are ca rezultat o matrice cu o linie i dou coloane cu dimensiunile matricei A, m i n.
Transpusa unei matrice se calculeaz cu operatorul '. Funcia
det(A)
calculeaz determinantul matricei A, iar funcia
inv(A)
calculeaz inversa matricei A. In cazul n care matricea este singular sau aproape
singular, se afiaz un mesaj de eroare.
10
Operatorii booleeni ~, & i | se aplic asupra elementelor matricelor.
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]
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]
2.6.1 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 1.7 2.4
11
2.6.2 Lucrul cu matrice mprite n blocuri
Indicii 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
[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
[2 3 4;
6 7 8;
8 7 6]
2.6.3 Concatenarea matricelor
Operatorul de concatenare este []. De exemplu, pentru a defini un vector x putem scrie
x = [12.3 -2.74 14]
Fie A matricea de mai sus. Expresia
B = [A [-1 -2 -3 -4]']
sau
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]
Expresia
B = [A; [-1 -2 -3 -4]]
concateneaz matricea A i vectorul linie [-1 -2 -3 -4]
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]
12
2.6.4 Funcii ce creaz matrice speciale
Funciile din Tabelul 9 creaz matrice speciale.
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 9. Funcii ce creaz matrice speciale.
In Tabelul 9, m reprezint numrul de linii iar n numrul de coloane. 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
]
]
]
]
]

5 5
5 5
5 5
2.6.5 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 funciei.
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
13
reshape(a, 6, 1)
ans =
1
4
2
5
3
6
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.7 Vectori de celule
Este posibil de a defini vectori ce conin ca elemente tablouri, vectori sau matrice.
Aceti vectori se scriu ntre acolade, { i }. Asemenea vectori sunt utili la scrierea
unor mesaje pe mai multe linii. Ca exemplu, un vector coloan ce conine ca elemente
iruri de caractere este urmtorul
A = {abc ; xyz ; mnp}
2.8 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 =
x: 2
y: 3
2.9 Funciile load i save
Funcia load citete fiiere text sau binare ce conin matrice sau vectori. Fiecare linie
a matricei este scris ntr-o linie din fiier, cu elementele separate de spaii. 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. 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
14
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.10 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.11 Funcii pentru lucrul cu iruri de caractere
Funciile urmtoare sunt utile la scrierea unor mesaje. 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-o matrice. Forma funciei este
str2num(s)
unde s 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
15
3 Instruciuni Matlab
3.1 Instruciunea for
Instruciunea for are forma
for ident = vi:r:vf
bloc de instruciuni
end
Instruciunea for execut blocul de instruciuni repetat cu variabila ident lund
valorile vi, vi + r, vi + 2*r, ... att timp ct ident <= vr.
Exemplu. Programul urmror creaz un vector a cu cinci elemente, cu valorile 1, 1 / 2,
..., 1/5.
for i = 1 :5
a(i) = 1/i ;
end
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
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
16
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
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
17
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 parametrii de intrare. Variabilele y1, y2, , yn sunt
parametrii de ieire. Funciile opereaz asupra variabilelor din propriul lor spaiu,
adic variabilele locale i parametri.
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 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 declar o variabil global, atunci ele utilizeaz aceeai
variabil. La atribuirea unei valori acestei variabile n orice funcie, valoarea este
accesibil tuturor funciilor ce au declarat variabila ca global.
Exemplu. Fie funcia urmtoare ce utilizeaz o variabil global numit comp
function lm = fcn(x)
% declara variabila globala comp
global comp
lm = x(1) * comp(1, 1) + x(2) * comp(2, 2) ;
Programul urmtor citete variabila global comp i apoi cheam 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)
18
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. El poate fi pasat ca
argument altei funcii.
Exemplu. Fie urmtoarea secven de instruciuni:
f = @fun ; % creaza variabila handle f
x = fcn(f, 1, 2); % paseaza variabila handle la funcia fcn
O variabil tip handle de funcii este utilizat de funcia Matlab feval pentru a evalua
funcia. Funcia Matlab 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
Exemplu. Fie funcia funa ce calculeaz cubul unei variabile x
3
function a = funa(x)
a = x * x * x;
Fie funcia funb ce calculeaz sin(x
3
) i utilizeaz funcia funa pentru a calcula x
3
. Ea
poate avea urmtoarea definiie:
function b = funb(fcn, x)
% fcn - variabila handle a unei functii
% ce calculeaza o expresie de x
b = sin(feval(fcn, x))
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 de 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
2
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);
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
19
handle. De exemplu, pentru a obine structura cu informaii despre funcia funa vom
scrie
a = functions(@funa)
Pentru a afla 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
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]
20
5 Reprezentri grafice
5.1 Reprezentarea curbelor plane
Reprezentarea curbelor n plan se face cu urmtoarele funcii:
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 10. 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)
Graficele pot fi trasate cu diverse culori, tipuri de linii, iar punctele de pe grafic pot fi
marcate cu diverse simboluri ca n Tabelul 11.
Culoare Simbol Marker Simbol 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 11. 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
21
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)
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)
A doua instruciune scrie legendele n poziia specificat. Argumentul pos are valorile
din Tabelul 12.
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 12. Specificarea poziiei legendei.
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 5.
22
Figura 5. 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 13.
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
Tabelul 13. 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,
23
dac este cazul, expresiile se grupeaz ntre acolade, { i }.
De exemplu, expresia e
at
se definete ca
e^a^t
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 6.
24

Figura 6. Reprezentarea grafic a funciei sin() pe intervalul [0, 2 ].
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 exelor, 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
25
In unele cazuri avem nevoie s reprezentm simultan mai multe figuri. Acest lucru se
face cu instruciunea
subplot (m, n, p)
care mparte figura ntr-o matrice de mxn exe 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 7.
26
Figura 7. 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 8. 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 15.
Figura 8. Bara de meniu i bara de instrumente ale unei figuri.
27
a) meniul File b) meniul Edit c) meniul Insert
Tabelul 14. 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 8 sau Figura 9, sau opiunile Arrow, Line
i Text ale meniului Insert din Tabelul 14.
Figura 9. Butoane pentru editarea unei figure.
Semnificaia acestor butoane i a opiunilor meniului Insert este cea din Tabelul 15.
Buton Meniul Insert Semnificaie
Selecteaz figura
Text Adaug text
Arrow Adaug o sgeat
Line Adaug o linie
Tabelul 15. 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. se execut 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
28
componente obiecte tip line ce reprezint curbele. Acest arbore este afiat de Editorul
de proprieti ca n Figura 10.
Figura 10. 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 :
se execut clic pe opiunea Axes Properties a meniului Edit,
se execut clic pe opiunea Figure Properties a meniului Edit i n caseta Edit
Properties for se alege opiunea axes, vezi Figura 10,
se afiaz meniul contextual din Figura 11 dup procedura de mai jos i se
execut 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 11 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 11. Meniu contextual pentru editarea unei figuri.
Caseta editorului de proprieti pentru modificarea axelor Property Editor Axes are
cteva seciuni importante, seciunea Style din Figura 12 i seciunile X, Y, Z, vezi
Figura 13 pentru seciunea X.
29
Modificarea stilului (proprietilor) axelor, font (dimensiune, tip), etc., se face n
seciunea Style a casetei de dialog Property Editor Axes din Figura 12. 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.

Figura 12. 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 13. 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 :
30
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.
Figura 13. 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 14. 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.
31
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.
Figura 14. 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 16.
32
a) clic pe eticheta unei
axe sau titlul figurii
b) clic pe figur sau
axele figurii
c) clic pe curb,
text, linie, sgeat
Tabelul 16. Meniuri contextuale afiate la un clic pe figur.
In toate cazurile, un clic pe opiunea Properties afiaz caseta editorului de
proprieti. In meniul din Tabelul 16a se pot modifica dimensiunea, stilul i culoarea
fontului. In meniul din Tabelul 16c 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 15 este artat o figur editat. S-au modificat stilul i dimensiunea fontului
axelor, eticheta axei X i titlul figurii.
Figura 15. Exemplu de figur editat.
33
Un alt exemplu de figur editat este cea din Figura 16. 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.
Figura 16. Exemplu de figur editat.
In cazul utilizrii Editorului de proprieti se afiaz arborele figurii, vezi Figura 17,
apoi se afiaz casete de dialog corespunztoare obiectelor de unde se aleg
proprietile dorite.
Figura 17. Ierarhia obiectelor grafice ale unei figuri.
34
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. Ele sunt create 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 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.
Fiecare obiect grafic este identificat de o variabil handle. 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 17.
Obiect grafic Funcie
Figure gcf
Axes gca
Obiectul curent selectat gco
Tabelul 17. 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 18. Dup cum se vede din Figura 18
obiectele de tip Line i Text sunt copiii obiectului Axes.
Figura 18. Ierarhia obiectelor grafice.
Aceast ierarhie este afiat i de Editorul de proprieti, vezi Figura 10. In continuare
vom prezenta proprietile importante ale obiectelor grafice.
35
Toate obiectele grafice au urmtoarele proprieti comune
Proprietate Coninut
Parent Variabila handle-obiect a printelui
Children Vector cu variabila handle-obiect ale copiilor
Type Tipul obiectului
Tabelul 18. Proprieti comune obiectelor grafice.
5.4.1 Obiectul Figure
Proprietile obiectului Figure sunt cele din Tabelul 19.
Proprietate Valoare
Position [left, bottom, width, height]
DefaultAxesColor {b, g, r, c, m, y, k}
Units {pixels, inches, centimeters, points}
Tabelul 19. Proprietile obiectului Figure.
Proprietatea Position este un vector cu patru componente ce dau poziia fa de colul
stnga jos al ecranului i dimensiunile figurii.
5.4.2 Obiectul Axes
Obiectul Axes corespunde zonei de desenare n care sunt reprezentate axele, curbele
i texte afiate pe axe sau n zona de desenare. Obiectul Axes are proprietile din
Tabelul 20. 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]
XAxisLocation {top, bottom}
YAxisLocation {left, right}
Color {none, }
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 20. Proprietile obiectului Axes.
Proprietatea Position este un vector cu patru componente ce dau poziia fa de colul
stnga jos al figurii i dimensiunile zonei de desenare, vezi Figura 19.

36
Figura 19. Poziia axelor n cadrul unei figuri.
Celelalte proprieti ale obiectului Axes sunt evidente. Codurile culorilor sunt cele din
Tabelul 11. Exemple de utilizare a acestor proprieti vor fi prezentate ulterior.
5.4.3 Obiectul Line
Obiectul Line reprezint o curb. Proprietile acestui obiect sunt cele din Tabelul 21.
Proprietate Valoare
XData Vector cu abscise
YData Vector cu ordonate
Color {b, g, r, c, m, y, k}
Tabelul 21. Proprietile obiectului Line.
5.4.4 Obiectul Text
Obiectul Text reprezint un ir de caractere creat i afiat de instruciunile xlabel,
ylabel, title. Obiectul Text are proprietile din Tabelul 22.
Proprietate Valoare
Position [left, bottom]
String text
Tabelul 22. Proprietile obiectului Text.
Pentru a modifica de exemplu dimensiunea fontului axelor, inclusiv al etichetelor i
titlului, (proprietatea FontSize a obiectului Axes) la valoarea 18 se utilizeaz funcia
set(gca, FontSize, 18)
Funcia text are forma
text(x, y, sir de caractere)
sau forma
text(x, y, sir de caractere, NumeProprietate, ValoareProprietate)
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.
37
5.4.5 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 seta
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)')
xlabel('0 \leq \Theta \leq \pi')
ylabel('sin(\pi )')
text(pi, 0, '\leftarrow sin(\pi)', 'FontSize', 14)
grid
Rezultatul programului este cel din Figura 20.
38
Figura 20. 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.
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: 900'};
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]);
z = A*exp(-alfa*t) .* sin(-alfa *t);
plot(t, z)
grid
Rezultatul programului este cel din Figura 21.
39
Figura 21. 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);
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];
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 22.
Figura 22. 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 augat de utilizator pe figur.
41
6 Transformata Fourier discret a unui semnal
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 23
42
Figura 23. Funcie de timp i transformata Fourier discret.
43
7 Integrarea ecuaiilor difereniale ordinare
Fie o ecuaie diferenial ordinar de forma
x
'
= f(t, x)
unde t este variabilaindependent, de regul timpul. Se cere determinarea soluiei
ecuaiei pe intervalul [t
0
, t
f
] dat 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 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.
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 24.
44
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,
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 24. Soluia ecuaiei difereniale y'' + 3y' + 2y = 0 n condiiile iniiale y0=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 difereniale ordinare depinde de parametri. Este de dorit ca
acei parametri s fie pasai funciei de integrare, care la rndul ei s i paseze ca
45
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.
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)
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 25.
46
Figura 25. Soluia ecuaiei difereniale y'' + p1 y' + p2 y = 0 n condiiile iniiale y0=1, y'0=0,
pentru diverse valori ale parametrilor.
47
8 Filtre numerice
Calculul ieirii filtrelor numerice cu o intrare i o ieire se face cu funcia
y = filter(b, a, u)
Filtrul este descris de ecuaia
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
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 26. 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 27.
48
Figura 27. Intrarea i ieirea filtrului numeric.
49
9 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.
9.1 Construirea unei interfee grafice cu aplicaia 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 28.
Figura 28. 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),
se execut clic pe butonul OK i editorul Layout afiaz o interfaa grafic
goal ca n Figura 29.
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 29.
50
Figura 29. Fereastra editorului Layout. Interfa grafic goal afiat cu opiunea Blank GUI.
Meniurile File i Edit ale editorului Layout i meniul contextual al obiectului grafic
din Tabelul 23 au n general opiunile cunoscute. O parte din opiuni se pot activa i
din butoanele barei de instrumente din Figura 30.
Figura 30. Bara de instrumente a aplicaiei GUIDE.
a) meniul File b) meniul Edit c) meniu contextual
Tabelul 23. Meniurile File i Edit ale editorului Layout i meniul contextual al unui obiect grafic.
Opiunile meniului File sunt urmtoarele :
51
opiunea New i butonul afiaz caseta de dialog GUIDE Quick Start din
Figura 28,
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,
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 31 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 32.
Figura 31. Caseta de dialog Preferences cu opiunile aplicaiei GUIDE.
Meniul File afiaz i ultimele patru interfee grafice create.
52
Figura 32. 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 rigle 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 33, afiat cu un clic pe opiunea Grid and Rulers a meniului Tools.
Figura 33. Caseta de dialog Grid and Rulers.
Aria de desenare cu opiunea Show rulers activat este artat n Figura 34. In acest
caz se pot vedea coordonatele cursorului.
53
Figura 34. Aria de desenare cu opiunea Show rulers activat.
Putem trasa linii pentru ghidarea alinierii componentelor ca n Figura 35
Figura 35. Linii pentru ghidarea alinierii componentelor.
54
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.
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 36 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 23. 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 23.
55
Figura 36. 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 prelucrat ca:
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 24. O parte din aceste opiuni pot fi
activate i cu butoane din bara de instrumente. Aceste opiuni sunt :
Align Objects pentru alinierea obiectelor,
Property Inspector pentru modificarea proprietilor obiectelor,
Tab Order Editor pentru 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 i a fost prezentat mai nainte,
Object Browser afiaz un arbore cu obiectele interfeei.
56
a) meniul View b) meniul Tools c) meniu contextual
Tabelul 24. Meniurile View, Tools ale editorului Layout i meniul contextual al obiectului grafic.
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 37 cu trei
butoane ce trebuie aliniate. La activarea opiunii Align objects se afiaz caseta de
dialog Align Objects din Figura 37. 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 se execut clic pe
butonul Apply i apoi pe butonul OK.
57
Figura 37. Interfaa grafic.
Rezultatul alinierii celor trei butoane din Figura 37 este artat n Figura 38.
Figura 38. Interfaa grafic din Figura 37 cu obiectele aliniate.
58
Putem ncadra diverse obiecte ale interfeei cu un contur reprezentat de obiectul
Frame. Acest lucru se face astfel:
se selecteaz obiectul Frame i se ncadreaz obiectele dorite cu un contur,
se execut 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
Se execut clic pe opiunea Send to Back
a meniului contextual al elementului sau
a meniului Layout
Tabelul 25. Incadrarea obiectelor grafice cu un contur.
Tabelul 25 prezint un exemplu de ncadrare a obiectelor grafice cu un contur.
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 26.
Pentru modificarea proprietilor un obiect grafic se selecteaz obiectul cu un clic cu
butonul stng i n Tabelul 26 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 39. Aceast
proprietate este vectorul [x y width height] ce conine coordonatele punctului stnga
jos al obiectului i limea i nlimea obiectului. Modificnd aceast proprietate se
pot modifica dimensiunile obiectelor n interfat.
Figura 39. Proprietatea Position.
59
Tabelul 26. Proprietile obiectelor grafice.
60
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:
se afiaz caseta Inspectorului de proprieti,
se selecteaz obiectul n interfaa grafic,
se selecteaz proprietatea String cu un clic ; ea apare ca n Figura 40 sau n
Figura 41,
proprietatea String se poate modifica n dou moduri :
1. se introduce n partea dreapt irul de caractere dorit,
2. se execut clic pe butonul care afiaz caseta de dialog String din
Figura 42 n care se introduce irurile de caractere dorite.
Pentru a modifica numele butonului Push Button din interfaa din Figura 36 vom
selecta proprietatea String cu un clic i vom introduce n partea dreapt irul de
caractere dorit. Procedura este urmtoarea :
se selecteaz butonul Push Button n interfaa grafic,
se selecteaz proprietatea String n caseta Inspectorului de Proprieti ca n
Figura 40,
n partea dreapt se nlocuiete numele implicit Push Button al butonului cu
numele dorit.
Figura 40. Modificarea numelui unui buton.
In interfaa din Figura 36 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 :
se selecteaz obiectul Popup Menu din interfaa grafic,
se selecteaz proprietatea String n caseta Inspectorului de Proprieti ca n
Figura 41,
se execut clic pe butonul care afiaz caseta de dialog String din Figura 42
n care se introduce textul opiunilor dorite; dup nserarea textului unei
opiuni se apas butonul Return,
dup introducerea tuturor opiunilor se apas butonul OK al casetei de dialog.
Figura 41. Adugarea de opiuni unui meniu.
61
Figura 42. Caseta de dialog String a obiectelor grafice.
In acelai mod s-au introdus irurile n caseta Listbox. Rezultatul este cel din Figura
43.

Figura 43. Interfaa grafic din Figura 36 cu numele obiectelor modificate.
Caseta cu obiectele interfeei grafice inspectate cu opiunea Object Browser este cea
din Figura 44. Caseta prezint arborele obiectelor interfeei grafice. Acest arbore are
ca rdcin un obiect tip figure.
62
Figura 44. Obiectele interfeei din Figura 43.
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 45.
Figura 45. 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 :
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.
63
Interfaa construit este lansat n execuie n dou moduri:
cu un clic pe fiierul guidex2.fig i arat ca n Figura 46,
de la linia de comand, guidex2. In acest mod n linia de comand pot exista i
parametri.
Figura 46. Interfaa grafic din Figura 43.
9.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 la activarea opiunii 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.
Organizarea interfeei
Interfaa grafic este o aplicaie dirijat de evenimente. Evenimentele ce apar sunt :
un clic pe element, buton, meniu, caset Listbox,
deplasarea cursorului unui obiect Slider cu mousul,
apsarea tastei Enter n cazul unui obiect tip Text.
Sistemul de operare creaz o coad cu evenimente, n ordinea n care apar. Sistemul
de operare ia cte un eveniment din coad i apeleaz o funcie specific elementului.
Aceste funcii se numesc callback. Aplicaia GUIDE genereaz un fiier cu funcii
callback, cte una pentru fiecare element al interfeei, care trebuie completate de
64
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.
Fie interfaa grafic din Figura 47 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.
Figura 47. Proiectarea unei interfee grafice.
La execuie interfat apare ca n Figura 48.
65
Figura 48. Interfa grafic.
Figura 49. Obiectele interfeei grafice din Figura 48.
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,
66
de la linia de comand, cu numele interfeei, test, caz n care linia de comnd
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
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.
Utilizatorul poate nscrie n variabila handles datele dorite. 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);
Funcia guidata memoreaz sau regsete datele aplicaiei. Funcia
guidata(h, data)
67
memoreaz datele din variabila data. Parametrii funciei sunt:
h variabil handle a figurii sau a unui obiect al interfeei,
data orice date pe care aplicaia vrea s le memorize.
Funcia
data = guidata(h)
furnizeaz datele memorate anterior.
Structura handles n cazul interfeei proiectate este prezentat n Figura 50. Ea
conine variabile handle pentru figur i toate obiectele interfeei. Numele acestor
variabile este valoarea proprietii Tag a obiectelor. Variabila handle output
corespunde figurii. Ea primete aceast valoare cu instruciunea
handles.output = hObject;
i este memorat cu instruciunea
guidata(hObject, handles);
Figura 50. Variabila handles a interfeei.
Urmtoarea funcie furnizeaz valorile de ieire ale aplicaiei. varargout este un vector
de celule ce poate conine oricte valori.
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
varargout{1} = handles.output;
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), 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,
68
handles - 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. In momentul apelrii conine variabilele handle
corespunztoare obiectelor interfeei.
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.
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 - 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 (se
execut 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.
69
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)
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 51.
Figura 51. Fereastra editorului de fiiere Matlab.
La un clic pe butonul se afiaz meniul din Figura 52. Un clic pe o funcie
plaseaz cursorul la nceputul acestei funcii n fiier.
Figura 52. Meniu cu funciile interfeei grafice.
70
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
% 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);
Funcia 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
71
proprietii String a casetei de text edit2. In final funcia guidata(hObject, handles)
memoreaz valorile proprietilor obiectelor n structura handles.
72
10 Calcul simbolic
10.1Definirea 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, (), 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
73
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;
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)
74
Exemplu. S definim variabila simbolic x i funcia simbolic 1 ) (
2
+ + x x x g .
symb x g;
g = sqrt(x^2 +x +1)
10.2Substituii
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.
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
75
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 =
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)
76
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.
10.3Reprezentarea 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 27.
In Tabelul 27, n expresia funciei sym, x este o variabil Matlab.
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 27. 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.
77
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
10.4Definirea 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:
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;
78
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;
10.5Matrice 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 28.
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 28. Operaii cu matrice simbolice.
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]
79
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))
ans =

[ 1, 0]
[ 0, 1]
80
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 =

[ a+i*b, c]
81
[ -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)
10.6Crearea 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
10.7Reprezentarea 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);
82
ezplot(f)
grid
Reprezentarea grafic a funciei este cea din Figura 53.
Figura 53. 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
83
Figura 54. Graficul unei curbe definit parametric.
Curba este reprezentat n Figura 54. 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 55.
84
Figura 55. Reprezentarea unei curbei implicite.
Alte exemple de reprezentri grafice vor fi prezentate n paragrafele urmtoare.
85
11 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.
11.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;
86
f = exp(i * x)
diff(f, x)
ans =

i*exp(i*x)
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,
) , , , (
) , , , (

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

87
simplify(det(D))

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

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 deriveaz 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)
88
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
1)
n
n
n
x

,
`

.
|
+

1
lim
2)
n
n
n
x

,
`

.
|


1
lim
11.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
89
11.3 Integrarea
11.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 29.
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 29. Funcii pentru care se vor calcula primitive.
11.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)
90
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 56.
Figura 56. Funcia erorilor.
91
11.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
-----
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)
11.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
92

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
11.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)
93
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)
11.6 Simplificri i substituii
Funciile de mai jos aplic diverse identiti asupra expresiilor simbolice.
Funcia expand cu forma
expand(f)
aplic identitile din Tabelul 30 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)
94
sin(2 * asin(a)) 2*a*(1-a^2)^(1/2)
Tabelul 30. 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 31 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 31. Simplificarea expresiilor simbolice.
95
12 Operaii cu polinoame
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.
96
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;
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
97
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.
98
13 Algebr liniar
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 32.
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 32. Operaii asupra matricelor cu elemente simbolice.
Operaiile ce se pot efectua asupra matricelor numerice i matricelor cu numere
simbolice sunt artate n Tabelul 33.
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 33. 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)
99
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]
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
100
14 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))
101
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;
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 =
102
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

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
103
15 Rezolvarea 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
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 =
104
exp(t)*(cos(t)*C1+sin(t)*C2)
s = dsolve(Dx = x y, Dy = x + y)
s =
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)
105
16 Transformri integrale
In acest capitol vom prezenta funciile ce calculeaz transformatele Fourier, Laplace
i Z, directe i inverse.
16.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)
106
Exemplu. S se calculeze transformata Fourier a funciei
( ) ( ) t e t f
at
1

cu a >0. Funcia 1(t) este funcia treapt unitar


( )

'

>
<

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)
16.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)
107
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

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)
16.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

108
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.
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
+

109
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
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
110

Anda mungkin juga menyukai