Documente Academic
Documente Profesional
Documente Cultură
1. Derivarea numeric .
Diferenµe nite progresive, regresive ³i centrale pentru f ′(x).
Fie f ∈ C 2 ([a, b]). Din Teorema lui Taylor rezult , pentru h > 0:
h2
f (x + h) = f (x) + f ′ (x)h + f ′′ (ξ) , ξ ∈ (x, x + h) ⇒
2
f (x + h) − f (x) h f (x + h) − f (x)
f ′ (x) = − f ′′ (ξ) = + O(h) ⇒
h 2 h
f (x + h) − f (x)
f ′ (x) ≈ (1)
h
Relaµia (1) se nume³te formula de apoximare prin diferenµe nite progresive pentru
f ′ (x).
Are loc estimarea erorii de trunchiere:
′ f (x + h) − f (x) h ′′
= |f (ξ)| ≤ h M = O(h)
|et | = f (x) −
h 2 2
unde M = maxt∈[x,x+h] |f ′′ (t)|. Preciz m c orice funµie continu pe un interval închis este ³i
m rginit .
1
unde M = maxt∈[x−h,x] |f ′′ (t)|.
Fie f ∈ C 3 [a, b]. Din Teorema lui Taylor rezult , pentru h > 0:
h2 h3
f (x + h) = f (x) + f ′ (x)h + f ′′ (x) + f (3) (ξ1 ) ,
2 6
ξ1 ∈ (x, x + h)
h2 h3
f (x − h) = f (x) − f ′ (x)h + f ′′ (x) − f (3) (ξ2 ) ,
2 6
ξ2 ∈ (x − h, x)
Obµinem astfel formula de aproximare prin diferenµe nite centrale pentru f ′ (x):
f (x + h) − f (x − h)
f ′ (x) ≈
2h
cu erorea de trunchiere, et :
h2 (3)
′ f (x + h) − f (x − h) = |f (ξ1 ) + f (3) (ξ2 )|
|et | = f (x) −
2h 12
2 h2
h
≤ |f (3) (ξ1 )| + |f (3) (ξ2 )| ≤ M = O(h2 )
12 12
unde M = maxt∈[x,x+h] |f (t)| + maxt∈[x−h,x] |f ′′′ (t)|.
′′′
Diferenµe nite centrale pentru f ′′ (x). Fie f ∈ C 4 [a, b]. Din Teorema lui Taylor rezult ,
pentru h > 0:
′ h2 ′′
(3) h3 (4) h4
f (x + h) = f (x) + f (x)h + f (x) + f (x) + f (ξ1 ) ,
2 6 24
ξ1 ∈ (x, x + h)
′ ′′ h2 (3) h3 (4) h4
f (x − h) = f (x) − f (x)h + f (x) − f (x) + f (ξ2 ) ,
2 6 24
ξ2 ∈ (x − h, x)
2
cu eroarea de trunchiere, et :
f (x + h) − 2f (x) + f (x − h) h2
′′ 2
|et | = f (x) −
≤ 24 M = O(h )
h2
unde M = maxt∈[x,x+h] |f 4 (t)| + maxt∈[x−h,x] |f 4 (t)|.
Ex. 1 Fie functia f (x) = x3 − 7x2 + 2x + 4, f : [a, b] ⇒ R .
,
3
S se construiasc grac, derivata funcµiei f ³i derivata obµinut numeric în baza funcµiei
gradient. Într-un alt grac construiµi eroarea, reprezentând diferenµa în modul dintre derivata
exact ³i cea calculat numeric.
2. Integrarea numeric .
Fie f : [a, b] −→ R o funcµie integrabil ³i e
Z b
I(f ) := f (x) dx (3)
a
b−a a+b
I2 (f ) = f (a) + 4 f + f (b) (6)
6 2
Aplic m formula de cuadratur a dreptunghiului pe ecare subinterval x2k−1 , x2k+1 ⊂ [a, b],
k = 1, m
m m
(8)
X X
I0sumata (f ) = f (x2k )(x2k+1 − x2k−1 ) = 2h f (x2k )
k=1 k=1
4
Are loc identitatea:
Z b m Z xk+1
(9)
X
I(f ) = f (x) dx = f (x) dx
a k=1 xk
xk+1 .
Aplic m formula de cuadratur a trapezului pe ecare subinterval xk , xk+1 ⊂ [a, b], k =
1, m + 1
m
X f (xk ) + f (xk+1 )
I1sumata (f ) = · (xk+1 − xk )
k=1
2
m
h X h
= (f (xk ) + f (xk+1 )) = (f (x1 ) + f (x2 )
2 k=1 2 (10)
+ f (x2 ) + f (x3 ) + . . . + f (xm ) + f (xm+1 ))
m
h X
= (f (x1 ) + 2 f (xk ) + f (xm+1 ))
2 k=2
Formula de cuadratur sumat Simpson. Fie diviziune echidistant a = x1 < x2 < . . . <
x2m < x2m+1 = b, m ≥ 1, a intervalului [a, b]:
m
[
[a, b] = x2k−1 , x2k+1 ; xk = a + (k − 1)h , k = 1, 2m + 1
k=1
b−a
h :=
2m
Are loc identitatea:
Z b m Z x2k+1
(11)
X
I(f ) = f (x) dx = f (x) dx
a k=1 x2k−1
În ecare subinterval x2k−1 , x2k+1 ⊂ [a, b], k = 1, m, consider m nodurile de interpolare x2k−1 ,
x2k ³i x2k+1
Aplic m formula de cuadratur Simpson pe ecare subinterval x2k−1 , x2k+1 ⊂ [a, b], k = 1, m:
m
X 1 4 1
I2sumata (f ) = f (x2k−1 ) + f (x2k ) + f (x2k+1 ) ×
k=1
3 3 3
x2k+1 − x2k−1
× (12)
2
m m−1
h X X
= (f (x1 ) + 4 f (x2k ) + 2 f (x2k+1 ) + f (x2m+1 ))
3 k=1 k=1
5
Ex. 4
a) S se construiasc în Python procedura Integrare, având sintaxa
I =Integrare(f, a, b, m, metoda), care calculeaz valoarea aproximativ a integralei I(f ) =
Z b
f (x)dx conform formulelor de cuadratur sumate a dreptunghiului, trapezului ³i Simp-
a
son. Variabila metoda este un ³ir de caractere din mulµimea { 'dreptunghi', 'trapez',
'Simpson'}.
b) S se calculeze erorile absolute |I(f ) − I0sumata |, |I(f ) − I1sumata |, |I(f ) − I2sumata |
c) Se vor folosi urm toarele date: f (x) = x3 −7x2 +2x+4, [a, b] = [−3, 7], n = 2m+1 = 101 în
cazul metodei dreptunghiului ³i Simpson, ³i n = m + 1 = 101 în cazul metodei trapezului.
Obs. Metoda Simpson r mâne ca tem de cas .
Submodulul integrate din modului Scipy .
Z b
Submodulul integrate pune la dispoziµie proceduri care calculeaz numeric I(f ) := f (x) dx.
a
Printre acestea menµion m dou categorii de funcµii, prima categorie cere ca parametru functia ,
f si limitele intervalului de integrare a, b, iar a doua categorie cere ca parametri doi vectori x si
, ,
y.
Funcµia quad din modulul Integrate
1 import s c i p y as s c
2 f = lambda x : x ** 3 = 7 * x ** 2 +2* x+4
3 a = =3
4 b = 7
5 Iaprox , e r r = s c . i n t e g r a t e . quad ( f , a , b )
6 p r i n t ( Iaprox )
Funcµia quad returneaz un tuplu care conµine valoarea aproximativ a integralei, Iaprox ³i o
estimare a erorii absolute, err.
Dac funcµia f are una sau mai multe variabile, subrutina quad integreaz funcµia în raport cu
prima variabil . Se pot specica valori pentru variabilele opµionale, atribuind parametrului args
în lista parametrilor funcµiei quad, un tuplu cu valorile variabilelor opµionale.
1 import s c i p y as s c
2 f = lambda x , a1 , a2 , a3 , a4 : 1 * x ** 3 +a2 * x ** 2 +a3 * x+a4
3 a = =3
4 b = 7
5 Iaprox , e r r = s c . i n t e g r a t e . quad ( f , a , b , a r g s = ( 1 , = 7, 2 , 4) )
6 p r i n t ( Iaprox )
6
4 n = 100
5 x = np . l i n s p a c e ( a , b , n )
6 y = f (x)
7 I_trapz = s c . i n t e g r a t e . t r a p z ( y , x )
8 p r i n t ( I_trapz )
9 I_simps = s c . i n t e g r a t e . simps ( y , x )
10 p r i n t ( I_simps )
Obs.: Pentru o aproximare mai bun se va alege o disrcetizare mai n , de exemplu n = 1000.
6. CALCUL SIMBOLIC
Calculul simbolic este pentru manipularea si evaluarea expresiilor algebrice. Variabilele inde-
,
pendente care apar în expresii sunt denite simbolic folosind caractere sau siruri de caractere. ,
Variabilele simbolice se pot deni în mai multe moduri, folosind una dintre variantele: sm.Symbol,
sp.symbols si sp.var.
,
Este foarte important s se dea cât mai multe informatii despre natura variabilelor simbolice.
,
Acest lucru va ajuta Python s manipuleze si s simplice mai ecient expresiile analitice.
,
Alte tipuri de restrictii pe care le suport variabile simbolice si cuvintele cheie cu care se veric
, ,
tipul lor.
Tipul variabilei simbolice Atributul prin care se veric tipul variabilei simbolice
real is real
imaginary is imaginary
positive is positive
negative is negative
integer is integer
odd is odd (se refera doar la intregi)
even is even (se refera doar la intregi)
prime is prime (se refera doar la intregi)
1 x = sp . Symbol ( "x" )
2 y = sp . Symbol ( "y" , p o s i t i v e=True )
3 sp . p p r i n t ( sp . s q r t ( x ** 2) )
4 sp . p p r i n t ( sp . s q r t ( y ** 2) )#A e x t r a s r dacina p t r a t µ i n ând cont de f a p t u l c y
este pozitiv
Functia sp.pprint (pretty print) aseaz expresiile simbolice într-o form cât mai natural ,
, ,
7
5 p r i n t ( f ' c o s ( n p i ) e s t e { sp . c o s ( n2 * p i ) } daca n e s t e i n t r e g ' )
6 p r i n t ( f ' c o s ( n p i ) e s t e { sp . c o s ( n3 * p i ) } daca n e s t e i n t r e g s i par ' )
1 sp . p p r i n t ( sp . p i ) #Constanta p i
2 sp . p p r i n t ( sp . E) #Constanta Euler
3 sp . p p r i n t ( sp . oo ) #I n f i n i t
1 r1 = sp . R a t i o n a l ( 2 , 3)
2 r2 = sp . R a t i o n a l ( 4 , 5)
3 exp = r1 * r2 + r2 / r1
4 sp . p p r i n t ( exp )
Functii simbolice
,
1 x = sp . Symbol ( "x" )
2 expr = 1 + 2 * x ** 2 + 3 * x ** 3
3 sp . p p r i n t ( expr )
4
5 #S i m p l i f i c a r e a u n e i e x p r e s i i cu sp . s i m p l i f y ( )
6 expr = 2 * ( x ** 2 = x ) = x * ( x + 1)
7 sp . p p r i n t ( expr )
8 sp . p p r i n t ( sp . s i m p l i f y ( expr ) )
9
10 #D e s f a c e r e a p a r a n t e z e l o r u n e i e x p r e s i i
11 expr = ( x + 1) * ( x + 2)
12 sp . p p r i n t ( sp . expand ( expr ) )
13
14 # S c r i e r e a e x p r e s i e i ca produs de f a c t o r i primi
15 sp . p p r i n t ( sp . f a c t o r ( x ** 2 = 1) )
16
8
17 # c o l l e c t ( ) r e s c r i e e x p r e s i a sub forma unui polinom dupa v a r i a b i l a p r e c i z a t a
18 expr = x + y + x * y * z + x ** 2 * y
19 sp . p p r i n t ( expr . c o l l e c t ( x ) )
20 sp . p p r i n t ( expr . c o l l e c t ( y ) )
21
28 #S i m p l i f i c a r e a u n e i f r a c t i i
29 sp . c a n c e l ( y / ( y * x + y ) )
30
Dac expresia depinde de mai multe variabile si se doreste a se înlocui aceste variabile cu noi ex-
, ,
presii, atunci metoda subs va primi drept parametru un dictionar cu cuvinte cheie, variabile care
,
se înlocuiesc, iar valorile pentru cuvintele cheie ind expresiile cu care se înlocuiesc variabilele.
1 x , y , z = sm . symbols ( "x , y , z " )
2 f = x ** 2 + y ** 2 + 2 * z
3 f_subs = f . subs ({ x : x+1, y : y+2, z : x })
4 sp . p p r i n t ( f_subs )
Evaluarea numeric
Pentru evaluarea numeric a unei expresii putem folosi metoda evalf. În cazul în care functia f ,
are mai multe variabile, metoda evalf primeste ca parametru un dictionar cu sintaxa:
, ,
sau, mai simplu, se pot construi functii numerice în baza unei expresii simbolice folosind funcµia
,
lambdify care prime³te ca parametri un tuplu/list de variabile ³i expresia în baza c reia dorim
s construim funcµia.
1 func_num = sp . lambdify ( ( x , y , z ) , f )
9
Obs.: Functiile denite cu sintaxa lambdify primesc ca argumente valori scalare. Dac îns
,
D m mai jos dou secvente de cod care calculeaz simbolic derivata, respectiv integrala
,
6 expr = ( x + 1) ** 3 * y ** 2 * ( z = 1)
7 expr . d i f f ( x , y , z )#D e ri v a ta de o r d i n u l 3 î n r a p o r t cu v a r i a b i l e l e x , y , z
1 expr = x ** 4 + x ** 3 + x ** 2 + x + 1
2 a = 0
3 b = 1
4 sp . i n t e g r a t e ( expr , ( x , a , b ) )#C a l c u l e a z a i n t e g r a l a d e f i n i t
Rezolvarea ecuaµiilor
1 x = sp . Symbol ( "x" )
2 s o l = sp . s o l v e ( x ** 2 + 2 * x = 3)
Funcµia solve rezolv chiar ³i sisteme de ecuaµii, în cazul acesta funcµia prime³te ca parametri o
list de expresii, reprezentând ecuaµiile sistemului, ³i o list de variabile reprezentând necunos-
cutele sistemului.
1 x,y = sp . symbols ( "x , y" )
2 eq1 = x + 2 * y = 1
3 eq2 = x = y + 1
4 sol = sp . s o l v e ( [ eq1 , eq2 ] , [ x , y ] , d i c t=True ) #d i c t = True dac s e dore ³ t e
r e p r e z e n t a r e a s o l u µ i e i sub forma unui d i c µ i o n a r
5 print ( sol )
10
2. S se calculeze simbolic, prima ³i a doua derivat ³i s se construiasc gracele acestora
pe acela³i interval în aceea³i gur .
3. S se ae zerourile funcµiei f (x) ³i punctele de extrem ³i s se construiasc pe gracul
funcµiei.
Ex. 6 Fie sistemul
(
x2 + y 2 = 9
(13)
y = x2
11
Date de intrare: f, tinit , tf , xinit , N ;
Date de ie³ire: (ti )i=1 , (xi )i=1,N .
tf − tinit
STEP 1: t1 = tinit ; h = ;
N −1
for i = 2 : N do
ti = ti−1 + h;
endfor
x1 = xinit ;
STEP 2: for i = 1 : N − 1 do
K1 = hf (ti , xi );
2 2
K2 = hf (ti + h, xi + K1 );
3 3
1
xi+1 = xi + (K1 + 3K2 );
4
endfor
ALGORITM (Metoda Runge-Kutta de ordinul 4)
Date de intrare: f, tinit , tf , xinit , N ; Date de ie³ire: (ti )i=1,N , (xi )i=1,N .
tf − tinit
STEP 1: t1 = tinit ; h = ;
N −1
for i = 2 : N do
ti = ti−1 + h;
endfor
x1 = xinit ;
STEP 2: for i = 1 : N − 1 do
K1 = hf (ti , xi );
h K1
K2 = hf (ti + , xi + );
2 2
h K2
K3 = hf (ti + , xi + );
2 2
K4 = hf (ti + h, xi + K3 );
1
xi+1 = xi + (K1 + 2K2 + 2K3 + K4 );
6
endfor
1 import sympy as sp
2 t = sp . symbols ( " t " ) #Se d e c l a r v a r i a b i l a s i m b o l i c
3 x = sp . Function ( "x" ) # Se d e f i n e ³ t e func µ i a a b s t r a c t f a r a s e cunoa ³ t e î n
p r e a l a b i l , at â t v a r i a b i l e l e c â t ³ i e x p r e s i a a c e s t e i a
4 ode = x ( t ) . d i f f ( t ) = t = 2 * x ( t )# Se d e f i n e s t e e x p r e s i a s i m b o l i c x ' ( t ) = f ( t , x ) ,
r e p r e z e n t ând membrul s t âng a l ecua µ i e i x ' ( t ) = f ( t , x ) = 0
5 ode_sol = sp . d s o l v e ( ode )#Rezolv ecua µ i a d i f e r e n µ i a l
6 sp . p p r i n t ( ode_sol )
12
Funcµia sp.dsolve g se³te soluµia general a ecuatiei diferentiale care depinde de constanta de integrare C1 .
, ,
Aceasta va calculat conform condiµiei iniµiale. Valoarea pe care o returneaz sp.dsolve este o egalitate
reprezentând simbolic soluµia ecuatiei diferentiale. Atributele instanµei ode_sol sunt lhs pentru a accesa termenul
, ,
13
x′ (t) = 2 x + t2 cos(t)
t (18)
x(π/2) = 1
Urm toarea secvenµ rezolv numeric problema Cauchy pe intervalul [π/2, 2π] în baza functiei , integrate.odeint
din modulul scipy.
1 import s c i p y as s c
2 t = sp . symbols ( " t " )
3 x = sp . Function ( "x" )
4 f = 2/ t * x ( t ) + t ** 2 * sp . c o s ( t )#E x p r e s i a s i m b o l i c d e s c r i i n d ecua µ i a d i f e r e n µ
ial
5 f_np = sp . lambdify ( ( x ( t ) , t ) , f , 'numpy ' ) #Construc µ i a î n baza e x p r e s i e i s i m b o l i c e
f a u n e i func µ i i numerice c a r e prime ³ t e ca parametru v e c t o r i sau m a t r i c e din
numpy .
6 x0 = 1
7 tp = np . l i n s p a c e ( np . p i /2 ,2 * np . p i , 100 ) #D i s c r e t i z a r e a i n t e r v a l u l u i de s t u d i u
8 xp = s c . i n t e g r a t e . o d e i n t ( f_np , x0 , tp ) #C a l c u l u l s o l u µ i e i numerice a p ro b l e m e i
Cauchy
S se reprezinte grac.
Rezolvarea numeric a unui sistem de ecuaµii liniare cu date iniµiale
Fie sistemul
(
x′ (t) = 5x − 3y + 8
(19)
y ′ (t) = x + y + 32t
8 x0 = ( 2 , 0 ) #Un tuplu cu d a t e l e i n i t i a l e
9 tp = np . l i n s p a c e ( 0 , 1 , 100 )
10 xp = s c . i n t e g r a t e . o d e i n t ( f_np , x0 , tp )
sau
1 import s c i p y as s c
2 t = sp . symbols ( " t " )
3 x = sp . Function ( "x" )
4 y = sp . Function ( "y" )
5 d e f f ( xy , t ) :
6 x , y = xy
7 r e t u r n [ 5 * x = 3 * y +8,x+y+32* t ] #sau tupl u
8 x0 = ( 2 , 0 )
9 tp = np . l i n s p a c e ( 0 , 1 , 100 )
10 xp = s c . i n t e g r a t e . o d e i n t ( f , x0 , tp )
14
1. Metoda punctului central
2. Metoda Heun
3. Metoda Runge-Kutta
S se reprezinte grac solutia si s se reprezinte eroarea, i.e. diferenta în valoarea absolut dintre solutia calculat
, , , ,
Obs.: Algoritmii se vor adapta pentru cazul sistemelor de ecuaµii diferenµiale. Întrucât functia f = (f1 , f2 ) are
,
dou componente, se vor construi K1, K2, K3, K4 m rimi cu dou comonente, prima component va folosit
pentru calculul solutiei x = x(t), iar cealalt component va folosit la determinarea numeric a solutiei
, ,
15