![]() | Biologie | Chimie | Didactica | Fizica | Geografie | Informatica |
| Istorie | Literatura | Matematica | Psihologie |
CALCULUL SIMBOLIC IN MATLAB
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 reprezentam simbolic o expresie in care
apare raportul:
, atunci utilizam comanda:
r=sym('(1+sqrt(5))/2')
Acum pot fi efectuate diferite calcule matematice utilizand variabila r. Spre exemplu, relatia:
f=r^2-r-1
returneaza raspunsul:
f = (1/2+1/2*5^(1/2))^2-3/2-1/2*5^(1/2)
Daca se da comanda: simplify(f) se obtine valoarea 0.
Sa presupunem ca dorim sa studiem functia patatica: f=ax2+bx+c. Comanda
f = sym('a*x^2+b*x+c')
asigneaza expresia simboica ax2 + bx + c variabilei f. In acest caz insa nu se creeaza variabile corespunzatoare termenilor a, b, c si x. Pentru a putea efectua opeatii matematice cu aceasta expresie trebuie create variabilele in mod explicit, adica:
a = sym('a')
b = sym('b')
c = sym('c')
x = sym('x')
sau mai simplu:
syms a b c x (care este mai recomandata deoarece este mai putin de scris).
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
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:
limit(f,x,a)
sau limit(f,a), calculeaza ![]()
iar limit(f,x,a,'left') si limit(f,x,a,'right') calculeaza limitele la dreapta si la stanga.
Calculul
unor serii Suma unor serii de numere poate fi calculata utilizand
comanda symsum. Spre exemplu, suma
seriei
este ![]()
syms x k
s1 = symsum(1/k^2,1,inf)
s1 = 1/6*pi^2
Simplificari Iata trei expresii diferite:
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
Folosind urmatorele comenzi ele pot fi puse sub forma obisnuita:
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 reprezentari diferite ale aceleiasi functii matematice. Fiecare din cele trei forme poate fi preferata intr-o anumita situatie. Prima forma este cea mai des utilizata reprezentare a unui polinom. Cea de-a doua este forma factorizata, cea care prezinta radacinile polinomului. Cea de-a treia forma este reprezentarea Horner.
Exista cateva functii ce aplica o serie de identitati algebrice si trigonometrice pentru a transforma o reprezentare a unei functii in alta posibil mai simpla sau mai utila. Aceste functii sunt: collect, expand, horner, factor, simplify, si simple.
Functia collect grupeaza termenii polinomului in ordine descescatoare a puterilor variabilei simbolice:
f=(x-1)*(x-2)*(x-3)
collect(f)
x^3-6*x^2+11*x-6
Functia expand asigura distributivitatea inmultirii fata de adunare. Iata cateva exeple:
|
f |
expand(f) |
|
a*(x + y) (x-1)*(x-2)*(x-3) x*(x*(x-6)+11)-6 exp(a+b) cos(x+y) |
a*x+a*y x^3-6*x^2+11*x-6 x^3-6*x^2+11*x-6 exp(a)*exp(b) cos(x)*cos(y)-sin(x)*sin(y) |
Functia horner transforma un polinom in reprezentarea Horner a acestuia.
f= x^3-6*x^2+11*x-6
horner(f)
-6+(11+(-6+x)*x)*x
Functia factor exprima un polinom cu coeficienti rationali in produs de polinoame de grad minim.
f= x^3-6*x^2+11*x-6
factor(f)
(x-1)*(x-2)*(x-3)
Functia simplify poate fi utilizata pentru simplificarea unor expresii ce contin identitati algebrice, puteri intregi sau fractionale, functii trigonometrice, exponentiale sau logaritmice si functii 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 ecuatiilor algebrice
Daca S este o expresia simbolica, atunci solve(S) determina valorile variabilei simbolice pentru care S este zero. De exemplu, ecuatia de gradul II se rezolva 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))]
Daca se doreste rezolvarea unei ecuatii de forma f(x) = q(x), trebuie folosite siruri de caractere intre apostroafe:
s = solve('cos(2*x)+sin(x)=1')
s =
[ 0] [ pi] [ 1/6*pi] [ 5/6*pi]
Rezolvarea ecuatiilor diferentiale
Functia dsolve
calculeaza solutii simbolice pentru ecuatii diferentiale ordinare. Ecuatiile
trebuie specificate prin expresii simbolice ce contin litera D pentru a nota
diferentiala. D2, D3, . DN corespund derivatei de ordinul 2, 3 . . . N. In mod
implicit, variabila independenta este t. Astfel, expresia D2y 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')
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)
Calculul transformatei Z directe si inverse
Transformata Z directa pentru un sir de numere
este data de relatia: ![]()
In MATLAB exista doua posibilitati pentru calculul transformatei Z:
F =ztrans(f) sau F(z) = symsum(f(n)/z^n, n, 0, inf),
unde n este variabila simbolica a expresiei f.
f = sin(a*n)
ztrans(f,w)
ans= sin(a)*w/(1-w*cos(a)+w^2)
Transformata Z inversa are urmatoarea sintaxa:
f = iztrans(F)
Expresia F are z ca variabila independenta implicita.
Calculul transformatei Laplace directe si inverse
Transformata Laplace pentru o functie f(t) este data
de relatia: 
In Matlab se utilizeaza comanda L = laplace(F) unde expresia simbolica F are pe t ca variabila independenta implicita. Functia returnata este o functie in s.
f = t^4
laplace(f)
ans= 24/s^5
Transformata
Laplace inversa este data de relatia
, iar in MATLAB se utilizeaza comanda: F =
ilaplace(L) cu variabila independenta implicita s.
f = 1/s^2
ilaplace(f)
ans= t
TEMA:
Sa se calculeze derivatele de ordinul I si II pentru urmatoarele functii:
,
, ![]()
Sa se calculeze urmatoarele integrale:
,
,
,
, 
Sa se calculeze urmatoarele limite si serii:
,
,
, ![]()
Sa se rezolve urmatoarele ecuatii diferentiale:
y"+(y2-1)y'+y=0, y"+5y'y2+y=0
y"'+7y"-y'tg(y')+3y+1=0, in C.I. y"'(0)=0.4, y"(0)=0,y'(0)=0.2
Sa se rezolve urmatoarele sisteme de ecuatii:
, ![]()
Sa se calculeze transformata Z directa pentru sirurile:
f(n)=1, f(n)=1/n, f(n)=1/n2
Sa se calculeze transformata Z inversa pentru functiile:
F(z)=
, F(z)=
, F(z)=
, F(z)=![]()
Sa se calculeze transformata Laplace directa pentru functiile:
f(t)=e-4t+sin(t-2)+t2e-2t, f(t)=sin(at), f(t)=cos(at), f(t)=eatsin(bt)
Sa se calculeze transformata Laplace inversa pentru functiile:
,
,
, ![]()
Copyright © 2025 - Toate drepturile rezervate