Sunteți pe pagina 1din 5

Lucrarea 5

CALCULUL SIMBOLIC ÎN MATLAB

În MATLAB pot fi efectuate în mod simbolic calcule matematice precum:


− calculul unor derivate, integrale, limite sau serii Taylor
− în cadrul algebrei liniare: determinarea inversei, valorilor proprii, determinantului sau
descompunerea unei matrici simbolice, metode de simplificare a expresiilor algebrice, rezolvarea
simbolică şi numerică a ecuaţiilor algebrice şi diferenţiale, funcţii speciale ş.a.
Toolbox-ul Symbolic Math defineşte un nou tip de date MATLAB numite obiecte
simbolice. Un obiect simbolic este o structură de date de tip şir de caractere ce reprezintă simbolul
utilizat pentru a reprezenta o variabilă, o expresie matematică sau o matrice.

Crearea de variabile şi expresii simbolice

Pentru construirea de variabile şi expresii simbolice se utilizează comanda sym. De exemplu,


comenzile:
a = sym('alpha')
b = sym('beta')
creează o variabilă simbolica a care este tiparită pe ecran alfa şi o variabilă simbolică b ce este
tiparită pe ecran beta. Dacă se dă comanda a+b, răspunsul va fi:
ans = alfa+beta
În acelasi mod se procedează în cazul expresiilor matematice. De exemplu, dacă dorim să
1+ 5
reprezentăm simbolic o expresie în care apare raportul , atunci utilizam comanda:
2
r = sym('(1+sqrt(5))/2')
Acum pot fi efectuate diferite calcule matematice utilizând variabila r. Spre exemplu, relaţia:
f = r^2-r-1
returnează răspunsul:
f = (1/2+1/2*5^(1/2))^2-3/2-1/2*5^(1/2)
Dacă se dă comanda: simplify(f) se obţine valoarea 0.
Să presupunem că dorim să studiem funcţia pătratică: f=ax2+bx+c.
Comanda
f = sym('a*x^2+b*x+c')
asignează expresia simboică ax2 + bx + c variabilei f. În acest caz însă nu se creează variabile
corespunzătoare termenilor a, b, c şi x. Pentru a putea efectua operaţii matematice cu această
expresie, trebuie create variabilele în mod explicit, adică:
a = sym('a')
b = sym('b')
c = sym('c')
x = sym('x')
sau mai simplu:
syms a b c x

Conversiile numerice

Considerăm urmatoarea mărime constantă: t = 0.1


Functia sym are patru opţiuni pentru o reprezentare simbolică a valorii numerice aflate în t.
Acestea sunt următoarele:
− optiunea ‘f’: sym(t,'f') returnează o reprezentare simbolică în virgulă mobilă:
1.999999999999a'*2^(-4)

1
− opţiunea ‘r’: sym(t,'r') returnează forma raţională a numărului 1/10 (aceasta este
setarea implicită a funcţiei sym)
− opţiunea ’e’: sym(t,'e')returnează forma raţională a lui t plus diferenţa între valoarea
raţională teoretică a lui t şi valoarea actuală în virgulă mobilă: ans = 1/10+eps/40
opţiunea ‘d’: sym(t,'d')returnează numărul t pe atâtea cifre zecimale câte specifică
instrucţiunea digits (valoarea implicită fiind de 32 de cifre)
digits(7)
sym(t,'d')
ans = .1000000
O utilizare importantă a funcţiei sym este conversia unei matrici din forma numerică în
forma simbolică. Daca avem următoarea matrice:
 1.0000 0.5000 0.3333 
 
A =  0.5000 0.3333 0.2500  , atunci instrucţiunea
 0.3333 0.2500 0.2000 
 
A = sym(A)
conduce la următorul rezultat
A =
[ 1, 1/2, 1/3]
[ 1/2, 1/3, 1/4]
[ 1/3, 1/4, 1/5]

Crearea de funcţii matematice simbolice

Există două modalităţi de a crea funcţii matematice:


− folosirea expresiilor simbolice;
− crearea de fişiere MATLAB.
Exemplu: Utilizând expresii simbolice se dau comenzile următoare:
syms x y z
r = sqrt(x^2 + y^2 + z^2)
t = atan(y/x)
f = sin(x*y)/(x*y)
care generează expresiile simbolice r, t, si f.
Crearea unui fişier MATLAB ce conţine o funcţie simbolică permite o utilizare mai
generală a funcţiilor. Spre exemplu, crearea funcţiei sin(x)/x poate fi realizată 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 simbolică a funcţiei sinus, cream expresia:
syms a x
f = sin(a*x)
după care, folosind funcţia diff, se calculează derivata acesteia în raport cu x:
diff(f)
ans = cos(a*x)*a

2
Se poate calcula derivata în raport cu variabila a cu comanda:
diff(f,a)
df
care returnează :
da
ans = cos(a*x)*x
Pentru a calcula derivata de ordinul 2, se utilizează următoarea comandă:
diff(f,x,2)
care returnează urmatorul rezultat:
ans = -sin(a*x)*a^2

Calculul integralei
Dacă f este o expresie simbolică, atunci comanda:
int(f,v)
determină integrala nedefinită a lui f în raport cu v. De asemenea, calculul integralei definite este
posibil folosind comanda:
int(f,v,a,b),
unde f este expresia ce trebuie integrată, v, variabila după care se face integrarea, iar a şi b sunt
limitele de integrare.

Calculul limitelor
Dacă f este o expresie simbolică, atunci comanda:
limit(f,x,a) sau limit(f,a)
calculează lim f ( x) .
x →a

iar limit(f,x,a,'left') şi limit(f,x,a,'right') calculează limitele la dreapta şi la


stanga.

Calculul unor serii


Suma unei serii de numere poate fi calculată utilizând comanda symsum. Spre exemplu, suma seriei

1 2
k =1 k
2
este
6
syms x k
s1 = symsum(1/k^2,1,inf)
ans = pi^2/6
Simplificari
Se introduc cele trei expresii de mai jos în fereastra de comandă MATLAB
syms x
f = x^3-6*x^2+11*x-6
g = (x-1)*(x-2)*(x-3)
h = x*(x*(x-6)+11)-6
Ele pot fi puse sub forma obişnuită folosind următoarele comenzi: pretty(f), pretty(g), pretty(h):
x3 - 6 x2 + 11 x - 6
(x - 1) (x - 2) (x - 3)
x (x (x - 6) + 11) - 6
Aceste expresii sunt trei reprezentări diferite ale aceleiaşi funcţii matematice. Fiecare din cele trei
forme poate fi preferată într-o anumită situaţie. Prima formă este cea mai des utilizată reprezentare a
unui polinom. Cea de-a doua este forma factorizată, cea care prezintă rădăcinile polinomului. Cea
de-a treia formă este reprezentarea Horner.

3
Există câteva funcţii ce aplică o serie de identităţi algebrice şi trigonometrice pentru a
transforma o reprezentare a unei funcţii în alta, posibil mai simplă sau mai utilă. Aceste funcţii sunt:
collect, expand, horner, factor, simplify şi simple.
Funcţia collect grupează termenii polinomului în ordine descrescătoare a puterilor variabilei
simbolice:
Dacă f=(x-1)*(x-2)*(x-3)
collect(f) returnează x^3-6*x^2+11*x-6
Funcţia expand asigură distributivitatea înmulţirii faţă de adunare. Exemple:
f expand(f)
a*(x + y) a*x+a*y
(x-1)*(x-2)*(x-3) x^3-6*x^2+11*x-6
x*(x*(x-6)+11)-6 x^3-6*x^2+11*x-6
exp(a+b) exp(a)*exp(b)
cos(x+y) cos(x)*cos(y)-
sin(x)*sin(y)
Functia horner transformă un polinom în reprezentarea Horner a acestuia. Exemplu:
f= x^3-6*x^2+11*x-6
horner(f)
-6+(11+(-6+x)*x)*x
Funcţia factor exprimă un polinom cu coeficienţi raţionali în produs de polinoame de grad
minim:
f= x^3-6*x^2+11*x-6
factor(f)
(x-1)*(x-2)*(x-3)
Funcţia simplify poate fi utilizată pentru simplificarea unor expresii ce conţin identităţi
algebrice, puteri întregi sau fracţionale, funcţii trigonometrice, exponenţiale sau logaritmice şi
funcţii speciale.
f= x*(x*(x-6)+11)-6
simplify(f)
x^3-6*x^2+11*x-6
f=(1-x^2)/(1-x)
simplify(f)
x+1
Rezolvarea ecuaţiilor algebrice

Dacă S este o expresie simbolică, atunci solve(S) determină valorile variabilei simbolice
pentru care S este zero.
De exemplu, ecuaţia de gradul II se rezolvă astfel:
syms a b c x
S = a*x^2 + b*x + c;
solve(S)
ans =
[1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[1/2/a*(-b-(b^2-4*a*c)^(1/2))]
Dacă se doreşte rezolvarea unei ecuaţii de forma f(x) = q(x), trebuie folosite şiruri de
caractere între apostroafe:
s = solve('cos(2*x)+sin(x)=1')
s =
[ 0] [ pi] [ 1/6*pi] [ 5/6*pi]

4
TEMĂ

1. Să se calculeze derivata simbolică a funcţiei f = sin x + ( cos x ) .


2

4
2. Să se calculeze  2 y 2  sin y dy .
3

3. Să se rezolve ecuaţia 2 x3 − 6 x + 4 .

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