Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
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) = 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
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
(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
(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
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
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) = 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
(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