Documente Academic
Documente Profesional
Documente Cultură
In MATLAB pot fi efectuate in mod simbolic o serie de calcule matematice cum ar fi calculul unor
derivate, integrale, limite sau serii Taylor; in cadrul algebrei liniare determinarea inversei, valorilor
proprii, determinantului sau descompunerii unei matrici simbolice, metode de simplificare a expresiilor
algebrice, rezolvarea simbolica si numerica a ecuatiilor algebrice si diferentiale, functii speciale s.a.
Toolbox-ul Symbolic Math defineste un nou tip de date MATLAB numite obiecte simbolice. Un
obiect simbolic este o structura de date de tip sir de caractere ce reprezinta simbolul utilizat pentru a
reprezenta o variabila, o expresie matematica sau o matrice.
Crearea de variabile si expresii simbolice
Pentru construirea de variabile si expresii simbolice se utilizeaza comanda sym. De exemplu,
comenzile:
a = sym('alpha')
xb= sym('beta')
creeaza o variabila simbolica a care este tiparita pe ecran alfa si o variabila simbolica b ce este tiparita
beta. Daca se da comanda a+b, raspunsul va fi:
ans = alfa+beta
In acelasi mod se procedeaza in cazul expresiilor matematice. De exemplu, daca dorim sa
1
Conversiile numerice
Consideram urmatoarea marime constanta:
t = 0.1
Functia sym are patru optiuni pentru o reprezentare simbolica a valorii numerice aflate in t. Acestea
sunt urmatoarele:
- optiunea ‘f’ : sym(t,'f')
returneaza o reprezentare simbolica in virgula mobila:
'1.999999999999a'*2^(-4)
- optiunea ‘r’ : sym(t,'r')
returneaza forma rationala a numarului 1/10 (aceasta este setarea implicita a functiei sym)
- optiunea ’e’ sym(t,'e')
returneaza forma rationala a lui t plus diferenta intre valoarea rationala teoretica a lui t si valoarea actuala
in virgula mobila
sym(t,'e')
ans = 1/10+eps/40
- optiunea ‘d’ returneaza numarul t pe atatea cifre zecimale cate specifica instructiunea digits (valoarea
implicita fiind de 32 de cifre). sym(t,'d')
ans = .10000000000000000555111512312578
digits(7)
sym(t,'d')
ans = .1000000
O utilizare importanta a functiei sym este conversia unei matrici din forma numerica in forma
simbolica. Daca avem urmatoarea matrice:
A= 1.0000 0.5000 0.3333
0.5000 0.3333 0.2500
0.3333 0.2500 0.2000
atunci instructiunea
A = sym(A)
conduce la urmatorul rezultat
A=
[ 1, 1/2, 1/3]
[ 1/2, 1/3, 1/4]
[ 1/3, 1/4, 1/5]
Crearea de functii matematice simbolice
Exista doua modalitati de a crea functii matematice:
- folosirea expresiilor simbolice;
- crearea de fisiere matlab.
Utilizand expresii simbolice se folosesc comenzile urmatoare:
syms x y z
2
r = sqrt(x^2 + y^2 + z^2)
t = atan(y/x)
f = sin(x*y)/(x*y)
care genereaza expresiile simbolice r, t, si f.
Crearea unui fisier matlab ce contine o functie simbolica permite o utilizare mai generala a
functiilor. Spre exemplu crearea functiei sin(x)/x poate fi realizata astfel:
function z = sinc(x)
if isequal(x,sym(0))
z = 1;
else
z = sin(x)/x;
end
Calcule simbolice
Calculul derivatei Spre exemplu, pentru a calcula derivata simbolica a functiei sinus, cream expresia:
syms a x
f = sin(a*x)
dupa care folosind functia diff se calculeaza derivata acesteia in raport cu x.
diff(f)
ans = cos(a*x)*a
Se poate calcula derivata in raport cu variabila a cu comanda:
diff(f,a)
care returneaza df/da.
ans = cos(a*x)*x
Pentru a calcula derivata de ordinul 2 se utilizeaza urmatoarea comanda:
diff(f,x,2)
care returneaza urmatorul rezultat:
ans = -sin(a*x)*a^2
Calculul integralei Daca f este o expresie simbolica, atunci comanda:
int(f,v)
determina integrala nedefinita a lui f in raport cu v. De asemenea este posibil calculul integralei definite
folosind comanda:
int(f,v,a,b),
unde f este expresia ce trebuie integrata, v, variabila dupa care se face integrarea, iar a si b sunt limitele
de integrare.
Calculul limitelor
Daca f este o expresie simbolica, atunci comanda:
reprezinta relatia . Conditiile initiale pot fi specificate prin adaugarea de ecuatii. Daca nu sunt
specificate conditiile initiale, solutiile vor contine constante de integrare C1, C2, etc.
Exemple:
dsolve('Dy=1+y^2')
ans = tan(t+C1)
Pentru a specifica conditiile initiale se utilizeaza expresia:
y = dsolve('Dy=1+y^2','y(0)=1')
5
y = tan(t+1/4*pi)
Observatie: Variabila y se afla in spatiul de lucru al MATLAB-ului, insa variabila independenta t trebuie
declarata cu comanda syms t , altfel comanda diff(y,t) va da eroare.
Ecuatiile neliniare pot avea mai multe solutii, chiar daca se dau conditiile initiale.
x = dsolve('(Dx)^2+x^2=1','x(0)=0')
x = [-sin(t)]
[ sin(t)]
y = dsolve('D2y=cos(2*x)-y','y(0)=1','Dy(0)=0','x')
simplify(y)
y = -2/3*cos(x)^2+1/3+4/3*cos(x)