Sunteți pe pagina 1din 46

SOFT MATEMATIC

Curs 7
Ana-Maria MOSNEAGU
Universitatea Al. I. Cuza Iasi
Facultatea de Matematica
7 ianuarie 2014
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 1 / 46
Rezolvarea ecuat iilor diferent iale ordinare
MATLAB are facilitat i foarte puternice de rezolvare a problemelor cu
valori init iale (IVP) pentru ecuat ii diferent iale ordinare (ODE) (de ordinul
I), de forma:
y

(t) = f (t, y(t)), y(t


0
) = y
0
,
cu y
0
R si f : D R, D = {(t, y) R
2
; |t t
0
| a, |y y
0
| b},
a, b > 0. Astfel trebuie scrisa o funct ie care evalueaza f si apoi trebuie
apelata una dintre rutinele de care dispune MATLAB pentru a integra
IVP pentru ODE. Aceasta rutina trebuie sa primeasca ca parametri numele
funct iei (ca sir de caractere sau ca function handle), mult imea valorilor lui
t pe care se cere solut ia (intervalul de integrare) si valoarea init iala y
0
.
Dintre cele mai folosite rutine MATLAB n acest sens sunt funct iile
ode23 si ode45, care au la baza metoda Runge-Kutta de ordinul 2-3,
respectiv 4-5, cu pas variabil:
[t y] = rutina(f, tspan, y0);
unde rutina este ode23 sau ode45.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 2 / 46
Rezolvarea ecuat iilor diferent iale ordinare
Argumentul de intrare tspan este un vector ce specica intervalul de
integrare. Daca este un vector cu doua elemente, tspan=[t0,tf], rutina
integreaza de la t0 la tf. Daca tspan are mai mult de doua elemente
rutina returneaza solut iile n acele puncte. Rezultatele numerice obt inute
sunt pastrate n doi vectori, t vectorul coloana al absciselor si y - tabloul
solut iilor. Lungimea tabloului t nu este cunoscuta a priori.
De exemplu, sa rezolvam urmatoarea problema:

(t) = y
2t
y
, t > 0
y(0) = 1.
Mai ntai scriem o funct ie care evalueaza membrul drept al ODE n sierul
funct ie rhs.m.
function out = rhs(t,y)
out = y - 2.0*t/y;
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 3 / 46
Rezolvarea ecuat iilor diferent iale ordinare
Urmeaza scriptul prog1.m, care compara rezultatele numerice obt inute cu
rutina ode23 versus ode45:
%prog1.m
clear
t0 = 0;
tf = input(tfinal: );
y0 = 1;
[t y] = ode23(rhs, [t0 tf], y0);
plot(t,y,LineWidth,3); grid
xlabel(t);
ylabel(y);
[u z] = ode45(@rhs, [t0 tf], y0);
hold on
plot(u,z,ro,MarkerSize,10)
hold off
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 4 / 46
Rezolvarea ecuat iilor diferent iale ordinare

In acest caz, poate calculata solut ia exacta a problemei. Aceasta este


y(t) =

2t + 1. Completam scriptul prog1.m cu urmatoarele linii:


hold on
w = sqrt(2.*t + 1);
plot(t,w,gv)
hold off
legend(ode23,ode45,Exact sol.,Location,NorthWest);
Pentru a obt ine solut iile n anumite puncte, vom da tspan astfel:
h = 0.01;
tspan = t0:h:tf;
Apelurile funct iilor ode23 si ode45 se nlocuiesc cu
[t y] = ode23(@rhs, tspan, y0);
[u z] = ode45(rhs, tspan, y0);
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 5 / 46
Rezolvarea sistemelor de ecuat ii diferent iale de ordinul I cu
condit ii init iale
Sa se rezolve sistemul de ecuat ii diferent iale:

1
(x) = y
1
(x) + y
2
(x)
y

2
(x) = x y
1
(x), x > 0
y
1
(0) = 0.1, y
2
(0) = 0.2.
Se considera vectorul y = [y
1
, y
2
]. Se deneste vectorul expresiilor
derivatelor ntr-un sier funct ie (fsist.m):
function out = fsist(x,y)
out =[y(1)+y(2); x-y(1)];
Apoi se rezolva sistemul de ecuat ii diferent iale prin execut ia urmatorului
script:
xf = input(xf= );
[x y] = ode23(fsist, [0 xf], [0.1 0.2]);
plot(x,y(:,1),x,y(:,2),r--)
legend(y1,y2,0)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 6 / 46
Rezolvarea ecuat iilor diferent iale de ordin superior
Sa se rezolve urmatoarea IVP pentru ODE de ordin II:

(t) = 1.2y

(t) y(t) + 10, t [0, T], T > 0


y(0) = 2, y

(0) = 0.
Notam cu y
1
= y si y
2
= y

. Problema devine:

1
(t) = y
2
(t)
y

2
(t) = 1.2y
2
(t) y
1
(t) + 10, t [0, T]
y
1
(0) = 2, y
2
(0) = 0,
si deci

1
(t) = f (t, y
1
(t), y
2
(t))
y

2
(t) = g(t, y
1
(t), y
2
(t)), t [0, T]
y
1
(0) = 2, y
2
(0) = 0,
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 7 / 46
Rezolvarea ecuat iilor diferent iale de ordin superior
cu

f (t, y
1
(t), y
2
(t)) = y
2
(t)
g(t, y
1
(t), y
2
(t)) = 1.2y
2
(t) y
1
(t) + 10.
Problema revine, deci, la rezolvarea unui sistem de ODE de ordin 1.
%fun1.m
function out = fun1(t,y)
out=[y(2);-1.2*y(2)-y(1)+10];
%progr.m
T = input(T= );
[t y] = ode45(fun1, [0 T], [2 0]);
plot(t,y(:,1))
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 8 / 46
Rezolvarea sistemelor de ecuat ii diferent iale de ordinul I cu
condit ii init iale
Sa se rezolve sistemul de ecuat ii diferent iale:

1
(x) = y
1
(x) + y
2
(x)
y

2
(x) = x y
1
(x), x > 0
y
1
(0) = 0.1, y
2
(0) = 0.2.
Se considera vectorul y = [y
1
, y
2
]. Se deneste vectorul expresiilor
derivatelor ntr-un sier funct ie (fsist.m):
function out = fsist(x,y)
out =[y(1)+y(2); x-y(1)];
Apoi se rezolva sistemul de ecuat ii diferent iale prin execut ia urmatorului
script:
xf = input(xf= );
[x y] = ode23(fsist, [0 xf], [0.1 0.2]);
plot(x,y(:,1),x,y(:,2),r--)
legend(y1,y2,0)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 9 / 46
Rezolvarea ecuat iilor diferent iale de ordin superior
Sa se rezolve urmatoarea IVP pentru ODE de ordin II:

(t) = 1.2y

(t) y(t) + 10, t [0, T], T > 0


y(0) = 2, y

(0) = 0.
Notam cu y
1
= y si y
2
= y

. Problema devine:

1
(t) = y
2
(t)
y

2
(t) = 1.2y
2
(t) y
1
(t) + 10, t [0, T]
y
1
(0) = 2, y
2
(0) = 0,
si deci

1
(t) = f (t, y
1
(t), y
2
(t))
y

2
(t) = g(t, y
1
(t), y
2
(t)), t [0, T]
y
1
(0) = 2, y
2
(0) = 0,
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 10 / 46
Rezolvarea ecuat iilor diferent iale de ordin superior
cu

f (t, y
1
(t), y
2
(t)) = y
2
(t)
g(t, y
1
(t), y
2
(t)) = 1.2y
2
(t) y
1
(t) + 10.
Problema revine, deci, la rezolvarea unui sistem de ODE de ordin 1.
%fun1.m
function out = fun1(t,y)
out=[y(2);-1.2*y(2)-y(1)+10];
%progr.m
T = input(T= );
[t y] = ode45(fun1, [0 T], [2 0]);
plot(t,y(:,1))
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 11 / 46
Lucrul cu siere n MATLAB
Pentru a salva anumite variabile ntr-un sier se foloseste comanda
>>save nume_fisier lista_variabile
unde variabilele din lista variabile sunt separate prin blanc. Rezultatul
salvarii se pastreaza n sierul nume fisier de tip .mat, n format binar, specic
MATLAB. Variabilele salvate pot ncarcate prin
>>load nume_fisier
Fiecare linie din sier este scrisa ntr-o linie a unei matrice ce are acelasi nume cu
al sierului (fara extensie). Se pot face salvari si n format ASCII, n dubla
precizie sau prin adaugare la un sier existent. Pentru detalii a se vedea help
save si help load.
>> clear;
>> x = linspace(-pi,pi,201);
>> y = sin(x);
>> save file1.txt -ascii x y
>> load file1.txt
>> file1, size(file1), plot(file1(1,:),file1(2,:))
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 12 / 46
Calcul simbolic cu toolbox-urile Symbolic Math
Exista doua Toolbox-uri Symbolic Math ce ncorporeaza facilitat i de calcul
simbolic n mediul numeric al MATLAB. Acestea se bazeaza pe nucleul
Maple:
Symbolic Math Toolbox asigura accesul la nucleul Maple si la
pachetul de algebra liniara al Maple;
Extended Symbolic Math Toolbox asigura accesul la facilitat ile
pachetelor negrace Maple, facilitat ile de programare si proceduri
denite de utilizator.
Toolbox-ul Symbolic Math deneste un nou tip de date MATLAB numit
obiect simbolic sau sym. Un obiect simbolic este o structura de date care
memoreaza o reprezentare sub forma de sir a simbolului. Toolbox-ul
Symbolic Math utilizeaza obiectele simbolice: variabile, matrice si expresii
simbolice. Aritmetica cu care se opereaza asupra obiectelor simbolice este
implicit cea rat ionala.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 13 / 46
Calcul simbolic
Obiectele simbolice se construiesc cu ajutorul declarat iei sym. De exemplu,
instruct iunea
>> x = sym(x)
produce o variabila simbolica numita x. Pentru a crea mai multe obiecte
simbolice se foloseste forma syms:
>> syms x y z a b c
Expresiile simbolice se denesc la fel ca expresiile aritmetice din MATLAB,
variabilele numerice ind nlocuite cu variabile simbolice. Operat iile ce se
pot realiza pe variabilele simbolice sunt aceleasi cu cele ce se pot realiza
pe variabilele numerice. De asemenea, se pot efectua calcule simbolice cu
matrice avand elemente expresii simbolice. Funct iile matematice uzuale
(sin, sqrt, exp, log etc.) se pot utiliza n expresiile simbolice.
>> syms x t
>> f = cos(t*x) + t*exp(x)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 14 / 46
Calcul simbolic
Daca o variabila primeste ca valoare o expresie simbolica atunci aceasta
devine o variabila simbolica:
>> f = x + y^a
Un alt mod de a crea o expresie simbolica este prin folosirea funct iei sym,
astfel:
>> f = sym(x + y^a)
Funct ia sym se foloseste si n cazul n care vrem sa transformam o
constanta ntr-o variabila simbolica:
>> f = sym(2)
sau
>> f = sym(2)
Pentru a asa expresiile simbolice ntr-un format apropiat de cel din
matematica se utilizeaza funct ia pretty ce are ca parametru expresia
simbolica.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 15 / 46
Calcul simbolic. Numere complexe
Pentru a deni o variabila simbolica complexa, trebuie sa denim mai ntai
doua variabile simbolice reale, corespunzand part ii reale si celei imaginare
a variabilei complexe, variabila i ind predenita.

In acest caz se poate
folosi funct ia sym cu opt iunea real sau comanda syms cu aceeasi opt iune.
De exemplu,
>> x = sym(x, real);
>> y = sym(y, real);
>> z = x + i * y
sau
>> syms x y real
>> z = x + i * y

In expresiile cu numere complexe se pot utiliza funci ile matematice uzuale:


real, imag, conj, abs etc.
>> conj(z), abs(z)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 16 / 46
Matrice simbolice
Matricele simbolice au ca elemente obiecte simbolice: constante, variabile
sau expresii simbolice. Operat iile ce se pot realiza pe matrice simbolice
sunt aceleasi cu cele ce se pot realiza pe matrice cu elemente numerice.
>> clear
>> syms a b c d;
>> A = [a b; c d]
A =
[ a, b]
[ c, d]
>> det(A)
>> B = inv(A)
>> pretty(B) % pentru afisare in forma matematica a lui B
>> A^2
>> B.^2
>> A*B, simplify(A*B)
>> A.*B
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 17 / 46
Funct ii pentru calcule simbolice
Toolbox-ul Symbolic Math det ine funct ii pentru:
simplifcarea expresiilor si substituire,
limite de funct ii,
derivare,
integrare,
calculul sumelor,
dezvoltarea n serie Taylor,
operat ii cu polinoame,
algebra liniara,
rezolvarea ecuat iilor algebrice,
rezolvarea ecuat iilor diferent iale ordinare.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 18 / 46
Substitut ii ale variabilelor simbolice cu valori numerice
Daca dorim sa atribuim anumite valori numerice variabilelor simbolice n
scopul evaluarii numerice a expresiei simbolice corespunzatoare, se
foloseste funct ia subs cu forma generala
subs(expr_simbolica, {var_simbolice}, {valori_numerice})

In cazul n care substituim o singura variabila, atunci variabila simbolica si


cea numerica nu mai trebuie plasate ntre acolade. De exemplu, e funct ia
de doua variabile f (x, y) = ax
2
+ by
2
cxy, cu a, b, c parametri.
>> clear
>> syms x y a b c
>> f = a*x^2 + b*y^2 - c*x*y;
>> subs(f, x, 2)
ans=
4*a + b*y^2 - 2*c*y
>> subs(f, {x,y}, {2,1})
ans=
4*a + b - 2*c
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 19 / 46
Substitut ii

In cazul n care substituim o singura variabila simbolica cu o valoare


numerica, funct ia subs pate avea urmatoarea forma mai simpla
subs(expr_simbolica, valoare_numerica)
Daca expresia simbolica depinde de mai mult de o variabila si variabila
pentru care se face substitut ia nu este specicata, substitut ia se face
pentru variabila simbolica implicita, care se alege dupa urmatoarea regula:
se alege din alfabet litera cea mai apropiata de x; daca exista doua litere
egal departate de x, se alege ultima din alfabet dintre cele doua.
Exemplu. Daca n exemplul de mai sus apelam funct ia subs astfel:
>> subs(f, 2)
ans=
4*a + b*y^2 - 2*c*y
atunci se substituie variabila simbolica x cu valoarea 2, variabila simbolica
ind aleasa dupa regula de mai sus.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 20 / 46
Substitut ii
Pentru a determina variabilele simbolice dintr-o expresie se foloseste
funct ia findsym:
>> findsym(f)
ans=
a, b, c, x, y
Variabila simbolica implicita dintr-o expresie se determina astfel:
>> findsym(f, 1)
ans=
x
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 21 / 46
Simplifcarea expresiilor
Funct ia simplify este o funct ie care aplica diverse tipuri de identitat i
pentru a aduce o expresie la o forma mai simpla. De exemplu,
>> clear, syms x a, f = (x^2 - a^2) / (x + a);
>> simplify(f)
ans=
-a+x
O alta funct ie pentru simplicare este simple, care are drept scop
obt inerea unei expresii echivalente care sa aiba cel mai mic numar de
caractere:
>> [es,how] = simple (cos(x)^2+sin(x)^2)
es =
1
how =
simplify
Cel de-al doilea parametru de iesire are rolul de a inhiba mesajele lungi
referitoare la procesul de simplicare.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 22 / 46
Derivare
Derivata simbolica se calculeaza cu funct ia diff. Se pot calcula derivatele
funct iilor de una sau mai multe variabile, derivatele de ordin 1 sau de ordin
superior etc. Funct ia are urmatoarele forme:
diff(f) % pentru a calcula derivata unei functii
in raport cu variabila implicita
diff(f, x) % pentru a calcula derivata de ordin 1 a unei
functii in raport cu variabila x
diff(f, x, n) % pentru a calcula derivata de ordin n a
unei functii in raport cu variabila x
Exemple:
>> clear, syms a x
>> f = sin(a*x) + x*exp(a*x);
>> diff(f, x)
ans=
cos(a*x)*a+exp(a*x)+x*a*exp(a*x)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 23 / 46
Derivare
>> diff(f, x, 2)
ans=
-sin(a*x)*a^2+2*a*exp(a*x)+x*a^2*exp(a*x)
>> clear, syms x y
>> g = x^2 + y^2 +x*y;
>> diff(g, x)
ans=
2*x+y
>> diff(g, y)
ans=
2*y+x
Derivata unei matrice simbolice este matricea obt inuta derivand ecare
element. De exemplu,
>> clear, syms x y;
>> A = [ x^2 x*y; x*y y^2];
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 24 / 46
Derivare
>> diff(A)
ans=
[2*x, y]
[ y, 0]
Jacobianul unei transformari,
D(f ,g,h, )
D(x,y,z, )
, se calculeaza cu funct ia
jacobian cu forma generala:
jacobian([f; g; h;...], [x, y, x,...])
Exemplu. Fie transformarea data prin:

x = r cos(t)
y = r sin(t)
. Jacobianul
acestei transformarii si determinantul matricei Jacobiene se calculeaza
astfel:
>> clear, syms x y r t
>> x = r * cos(t)
>> y = r * sin(t)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 25 / 46
Derivare
>> J = jacobian([x; y], [r, t])
J =
[cos(t), -r*sin(t)]
[sin(t), r*cos(t)]
>> detJ = det(J)
detJ=
cos(t)^2*r+r*sin(t)^2
>> detJ = simplify(detJ)
detJ=
r
Exercit iu
Calculat i derivatele part iale si Jacobianul funct iei:
f : R (0, ) R
3
, f (x, y) = (xy, x
2
+ y, x ln y).
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 26 / 46
Calculul limitelor de funct ii
Presupunem ca avem de calculat limita lim
xa
f (x). Limita unei funct iei se
calculeaza cu funct ia limit cu forma generala
limit(f, x, a)
unde a este un numar sau inf (pentru innit). Funct ia limit se poate
apela si sub forma
limit(f, a)
caz n care variabila dupa care se calculeaza limita este variabila implicita.
Exemple: Sa se calculeze limitele:
a) lim
x
x
2
3x + 2
4x
2
7
>> clear, syms x;
>> f = (x^2-3*x+2)/(4*x^2-7);
>> limit(f,inf)
ans=
1/4
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 27 / 46
Calculul limitelor
b) lim
n

1 +
1
n

n
>> clear, syms n;
>> g = (1+1/n)^n;
>> limit(g,inf)
ans=
exp(1)
c) lim
x0
sin(x)
x
>> clear, syms x;
>> h = sin(x)/x;
>> limit(h,0)
ans=
1
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 28 / 46
Calculul limitelor laterale
Daca avem de calculat limitele laterale lim
xa
x>a
f (x) si lim
xa
x<a
f (x), putem folosi
funct ia limit cu un parametru suplimentar, astfel:
limit(f, x, a, right)
pentru limita la dreapta si
limit(f, x, a, left)
pentru limita la stanga.
Exemplu. Sa se calculeze limitele laterale ale funct iei
|x|
x
n punctul x = 0.
>> clear, syms x;
>> f = abs(x) / x;
>> limit(f, x, 0, right)
ans = 1
>> limit(f, x, 0, left)
ans = -1
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 29 / 46
Integrarea
Pentru calculul integralei (simbolice) nedenite

f (x)dx se foloseste
funct ia int cu formele:
int(f, x)
atunci cand se specica variabila de integrare, sau
int(f)
cand variabila de integrare este variabila simbolica implicita.
Exemplu. Sa se calculeze primitiva funct iei f (x) = sin(ax) + xe
ax
>> clear, syms x a
>> f = sin(a*x) + x*exp(a*x);
>> Int_f = int(f,x)
Int_f=
-1/a*cos(a*x)+1/a^2*(a*x*exp(a*x)-exp(a*x))
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 30 / 46
Integrarea
Dand comanda diff(Int f,x) nu se obt ine neaparat f ci o expresie
echivalenta, dar dupa simplicare, folosind comanda
simple(diff(Int f,x)), se obt ine un sir de mesaje care informeaza
utilizatorul asupra regulilor utilizate si n nal expresia simbolica a lui f .
Calculul integralei denite a funct iei f (x),
b

a
f (x)dx se realizeaza tot cu
funct ia int, cu specicarea limitelor de integrare:
int(f, x, a, b)
atunci cand se specica variabila de integrare, sau
int(f, a, b)
atunci cand variabila de integrare este variabila simbolica implicita.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 31 / 46
Integrarea
Exemplu. Sa se calculeze

0
xsin(x)dx.
>> clear, syms x
>> g = x*sin(x);
>> Int_g = int(g,x,0,pi)
Int_g =
pi
Exemplu. Sa se reprezinte grac funct ia f (x) = e

x
2
2
pentru x R si sa
se calculeze

x
2
2
dx.
>> clear, syms x;
>> f = exp(- x^2 / 2);
>> ezplot(f); grid
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 32 / 46
Integrarea
>> int(f, x, -inf, inf)
ans =
2^(1/2)*pi^(1/2)
Fie o funct ie f (x) ce depinde de un parametru. Daca parametrul nu are o
valoare specicata, el este implicit un numar complex.

In cazul n care
parametrul este un numar real sau un numar pozitiv, el trebuie declarat ca
atare n comanda syms.
Exemplu. Integrala

0
e
tx
sin(x)
x
dx este uniform convergenta pe [0, ).
>> clear, syms x t positive;
>> f = exp(-t*x)*(sin(x)/x)
>> I = int(f, x, 0, inf)
I=
atan(1/t)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 33 / 46
Calculul sumelor
Pentru calculul simbolic al sumei
k=n

k=m
x
k
se foloseste funct ia symsum cu
formele
symsum(x, v, m, n)
sau
symsum(x, m, n)
unde x
k
este termenul general al sumei, m si n sunt limitele de sumare,
care pot numere ntregi sau .

In prima forma variabila simbolica dupa
care se face sumarea este v, iar n a doua forma se foloseste variabila
simbolica implicita.
Exemplu. Sa se calculeze sumele
a)
n

k=1
k
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 34 / 46
Calculul sumelor
>> clear, syms k n;
>> s = symsum(k, 1, n)
s =
1/2*(n+1)^2-1/2*n-1/2
>> simplify(s)
ans=
1/2*n^2+1/2*n
b)

k=1
1
k
2
>> ls = symsum(1/k^2, 1, inf)
ls =
1/6*pi^2
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 35 / 46
Dezvoltarea n serie Taylor
Fie o funct ie f (x) care are derivate pana la ordinul n. Funct ia taylor, cu
forma generala
taylor(f, n, x, a)
da dezvoltarea n serie Taylor a funct iei f (x) pana la ordinul n 1 n jurul
punctului a. Daca argumentul a lipseste, funct ia determina dezvoltarea n
serie MacLaurin a funct iei f (x) pana la ordinul n - 1 (n jurul punctului
a = 0). Daca argumentul x lipseste, variabila simbolica este cea implicita.
Daca argumentul n lipseste, implicit n = 6.
Exemplu. Sa se calculeze dezvoltarea n serie Taylor a funct iei e
x
n jurul
originii.
>> clear, syms x;
>> f = exp(x);
>> T = taylor(f, 6, 0)
T =
1+x+1/2*x^2+1/6*x^3+1/24*x^4+1/120*x^5
>> pretty(T)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 36 / 46
Polinoame simbolice

In cele ce urmeaza se vor considera polinoame simbolice cu coecient i


numere rat ionale. Fie polinomul a
n
x
n
+ a
n1
x
n1
+ + a
1
x + a
0
Polinomul poate reprezentat ntr-una din urmatoarele forme: o
combinat ie liniara a puterilor lui x (ca mai sus), ca produs de factori
ireductibili peste mult imea numerelor rat ionale, sub forma Horner
a
0
+ x(a
1
+ x(a
2
+ ... + x(a
n1
+ xa
n
)...)). Conversia ntre aceste trei
forme de reprezentare a unui polinom se poate realiza cu urmatoarele
funct ii: collect(p) transforma polinomul n prima forma, factor(p)
transforma polinomul n cea de-a doua forma (poate descompune n factori
si numere ntregi sau tablouri de ntregi simbolici), horner(p)
transforma polinomul n forma a treia, argumentul p ind polinomul
simbolic, dar putand si un vector sau o matrice cu elemente expresii
simbolice.
Exemplu. Consideram polinomul x
4
10x
3
+ 35x
2
50x + 24
>> clear, syms x;
>> p = x^4 - 10*x^3 + 35*x^2 - 50*x + 24;
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 37 / 46
Polinoame simbolice
>> q = factor(p)
>> h = horner(p)
>> s = collect(h)
Este posibila conversia unui polinom cu coecient i numerici ntr-un
polinom simbolic. Coecient ii numerici sunt ret inut i ntr-un vector V, n
ordinea descresctoare a puterilor lui x, acestia ind convertit i n numere
rat ionale simbolice cu funct ia poly2sym(V). De asemenea, este posibila si
conversia inversa folosind funct ia sym2poly(p), unde p este polinomul
symbolic. Rezultatul funct iei este un vector numeric cu coecient ii
polinomului n ordinea descresctoare a puterilor variabilei independente a
polinomului simbolic.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 38 / 46
Rezolvarea simbolica a ecuat iilor algebrice
Fie e o variabila simbolica ce are ca valoare o expresie algebrica simbolica.
Rezolvarea ecuat iei algebrice e = 0 se realizeaza cu funct ia solve ce
admite urmatoarele forme:
solve(e, x)
atunci cand se rezolva ecuat ia dupa variabila simbolica x si
solve(e)
cand expresia simbolica e este de o singura variabila sau ecuat ia se rezolva
dupa variabila simbolica implicita. Funct ia solve poate avea ca argument
si o expresie simbolica ntre apostrofuri:
solve(expresie simbolica, x)
sau
solve(expresie simbolica)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 39 / 46
Rezolvarea simbolica a ecuat iilor algebrice
Solut ia obt inuta cu funct ia solve este: un vector cu solut ii, daca
rezultatul este un vector cu un numar de componente egal cu numarul de
variabile sau o structura n care numele campurilor sunt numele variabilelor
ecuat iilor, daca rezultatul funct iei solve este o variabila.
Exemplu. Sa se determine solut iile ecuat iei de gradul doi ax
2
+ bx + c = 0
>> clear, syms x a b c;
>> f = a*x^2+b*x+c;
>> solve(f)
x =
1/2/a*(-b+(b^2-4*a*c)^(1/2))
1/2/a*(-b-(b^2-4*a*c)^(1/2))
Daca ecuat ia de rezolvat este data sub forma f (x) = g(x), se va folosi
funct ia solve cu forma a doua
solve(f(x) = g(x), x).
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 40 / 46
Rezolvarea simbolica a ecuat iilor algebrice
Funct ia solve poate rezolva si sisteme de ecuat ii algebrice. Fie sistemul
de doua ecuat ii algebrice

f (x, y) = 0
g(x, y) = 0.
Daca rezultatul funct iei solve se doreste a un vector cu solut ii, solve
se apeleaza sub forma
[x, y] = solve(f, g)
sau sub forma
[x, y] = solve(f(x, y), g(x, y))
Daca dorim ca rezultatul sa e o structura, n stanga semnului egal vom
scrie o variabila.
Exemplu. a)Sa se rezolve sistemul de ecuat ii algebrice liniare

x 2y + z = 0
2x + y z = 1
3x + y + z = 2
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 41 / 46
Rezolvarea simbolica a ecuat iilor algebrice
>> clear, syms x y z;
>> f = x - 2*y +z; g = 2*x + y- z-1; h = -3*x + y + z-2;
>> s = solve(f,g,h,x,y,z)
In acest caz soluia s este o structura cu componentele x, y si z.
Rezultatele sunt s.x, s.y, s.z.
b) Sa se rezove sistemul de ecuat ii algebrice neliniare

y = 2e
x
y = 3 x
2
.
>> clear, syms x y;
>> [x y] = solve(y=2*exp(x),y=3-x^2,x,y)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 42 / 46
Rezolvarea simbolica a ecuat iilor diferent iale ordinare
Fie ecuat ia diferent iala ordinara de ordinul ntai y

(t) = f (y(t), t). Solut ia


generala a acestei ecuat ii diferent iale depinde de o constanta arbitrara C.

In cazul IVP pentru ODE, constanta C se determina n funct ie de condit ia


init iala. Presupunem ca solut ia ecuat iei diferent iale exista, n funct ie de
proprietat ile funct iei f , solut ia putand unica sau nu. Rezolvarea
ecuat iilor diferent iale ordinare se face cu funct ia dsolve care poate rezolva
si ecuat ii diferent iale de ordin superior si sisteme de ecuat ii diferent iale
ordinare. Funct ia dsolve are ca parametri: expresia simbolica a ecuat iei
diferent iale sau, n cazul unui sistem, expresiile simbolice ale ecuat iilor
sistemului; n aceste expresii, derivata de ordin ntai este notata cu D, iar
derivatele de ordin superior cu D2, D3, , Dn. Asadar, dy/dt se noteaza
cu Dy, d
2
y/dt
2
se noteaza cu D2y etc.; condit iile init iale ale ecuat iei
diferent iale, daca exista, sunt de forma y(t0) = y0, Dy(t0) = y1 etc.;
variabila independenta implicita este t, dar variabila independenta poate
si alta variabila simbolica, care va ultimul argument al funct iei dsolve.
Tot i parametrii funct iei dsolve sunt plasat i ntre apostrofuri.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 43 / 46
Rezolvarea simbolica a ecuat iilor diferent iale ordinare
Solut ia ecuat iei diferent iale poate : un vector cu un numar de
componente egal cu cel al variabilelor dependente, daca rezultatul funct iei
dsolve este un vector sau o structura n care numele campurilor sunt
numele variabilelor dependente, daca rezultatul funct iei dsolve este o
variabila.
Exemple. a) Sa rezolvam urmatoarea problema:

(t) = y
2t
y
, t > 0
y(0) = 1.
>> clear
>> syms t positive;
>> syms y
>> y = dsolve(Dy=y-2*t/y,y(0)=1)
b) Sa se rezolve sistemul de ecuat ii diferent iale:

= x + y
y

= t x
x(0) = 0.1, y(0) = 0.2.
Vom calcula solut ia ntr-un vector si apoi ntr-o structura.
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 44 / 46
Rezolvarea simbolica a ecuat iilor diferent iale ordinare
>> clear
>> syms t positive;
>> syms x y
>> [x,y] = dsolve(Dx = x + y,Dy = t - x,x(0)=0.1,y(0)=0.2)
>> s = dsolve(Dx = x + y,Dy = t - x,x(0)=0.1,y(0)=0.2)
c) Sa se rezolve urmatoarea IVP pentru ODE de ordin II:

(t) = 1.2y

(t) y(t) + 10, t > 0


y(0) = 2, y

(0) = 0.
>> clear
>> syms t positive;
>> syms y
>> y= dsolve(D2y = -1.2*Dy-y+10) % daca nu ar fi cond. init.
>> yivp= dsolve(D2y = -1.2*Dy-y+10,y(0)=2,Dy(0)=0)
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 45 / 46
Aritmetica cu precizie variabila (vpa)
Exista trei tipuri de operat ii aritmetice n toolbox-ul Symbolic Math:
numerice operat iile MATLAB n virgula otanta, rat ionale aritmetica
simbolica exacta Maple, VPA aritmetica cu precizie variabila Maple
(variable precision arithmetic). Aritmetica de precizie variabila se realizeaza
cu ajutorul funct iei vpa. Numarul de cifre este controlat de variabila Maple
Digits. Funct ia digits aseaza valoarea lui Digits, iar digits(n), unde n
este un ntreg, seteaza Digits la n cifre. Comanda vpa(e) evalueaza
expresia e cu precizia Digits, iar vpa(e,n) evalueaza e cu n cifre.
Rezultatul este de tip sym. Cu toolbox-ul Symbolic Math, intruct iunea
>> sym(1/2+1/3)
va produce, folosind calculul simbolic, raspunsul 5/6. Tot n toolbox-ul
Symbolic Math, cu aritmetica cu precizie variabila, instruct iunile
>> digits(25)
>> vpa(1/2+1/3)
au ca rezultat .8333333333333333333333333
Ana-Maria MOSNEAGU (Matematica) SOFT MATEMATIC 7 ianuarie 2014 46 / 46