Sunteți pe pagina 1din 26

Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 

ordinare 

 
Cap. 8. REZOLVAREA NUMERICĂ A ECUAȚIILOR ŞI 
SISTEMELOR DE ECUAȚII DIFERENȚIALE ORDINARE 
 
8.1. Aspecte introductive 
Studiul  comportamentului  dinamic  al  sistemelor  fizice, 
economice, financiare, biologice ş.a. conduce la modele matematice 
sub  forma  ecuațiilor  sau  sistemelor  de  ecuații  diferențiale  ordinare, 
liniare  sau  neliniare.  În  general  acestea  nu  pot  fi  rezolvate  pe  cale 
analitică,  prin  metode  clasice,  datorită  faptului  că  uneori  nu  se 
cunosc expresiile funcțiilor care definesc derivatele, iar alteori aceste 
expresii sunt complicate. 
  În acest capitol se abordează în principal metodele numerice 
de  rezolvare  a  ecuațiilor  diferențiale  de  ordinul  întâi,  care  vor  fi 
extinse  în  subcapitolul  8.3  asupra  sistemelor  de  ecuații  diferențiale 
de  ordinul  întâi  precum  şi  asupra  ecuațiilor  diferențiale  de  ordin 
superior. 
  Problema  de  rezolvare  a  unei  ecuații  diferențiale  de  ordinul 
întâi se pune în felul următor [B3]. Se consideră ecuația diferențială 
ordinară 
dy
= f ( x, y ) ,   f : [a, b] x I → R ,    [a, b ], I ⊂ R  ,  a = x0 ,     (8.1.1) 
dx
dy
(se notează  y ' =  ,  I – interval) , 
dx
cu condiția inițială 
y 0 = y ( x 0 )  .                        (8.1.2) 
Se  cere  să  se  determine  expresia  functiei  y(x)  care  verifică  relațiile 
(8.1.1) şi (8.1.2). Problema enunțată este cunoscută ca problemă de 
tip Cauchy. 
  Ecuația diferențială ordinară (8.1.1), în care y’ este exprimată 
explicit, poate fi rearanjată şi sub următoarea formă implicită: 
F(x, y, y’) = 0 ,   F : [a, b] x I 1 x I 2 → R  ,   [a, b ], I 1 , I 2 ⊂ R ,    (8.1.3) 
cu I1 şi I2 – intervale. 
  Se  presupune  că  s‐a  efectuat  în  prealabil  un  studiu  al 
problemei  enunțate,  constatându‐se  existența  şi  unicitatea  soluției. 

134 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
În continuare, pentru determinarea aproximativă a soluției se poate 
proceda în două moduri (de exemplu, [K2]): 
a) fie se caută o funcție z(x) care să aproximeze cât mai bine pe 
y(x)  pentru  x∈ [a, b] ,  ceea  ce  reprezintă  o  rezolvare 
aproximativă analitică; 
b) fie  se  determină  valorile  y1,  y2,  …,  yn  care  să  aproximeze  cât 
mai bine valorile exacte y(x1), y(x2), …, y(xn), ale lui y(x) pentru 
x∈ [a, b]  dacă punctele x1, x2, …, xn ∈  [a, b]  sunt considerate 
echidistante: 
x i +1 − x i = h, i = 0, n − 1  ,                     (8.1.4) 
în  care  h  reprezintă  pasul  de  discretizare  (de  integrare)  şi 
capetele intervalului căruia îi aparține variabila independentă 
x sunt: x0=a, xn=b. 
  Acest  ultim  mod  de  determinare  aproximativă  a  soluției,  b), 
numit şi metodă numerică propriu‐zisă, este ilustrat în fig.8.1. 

 
Fig.8.1. Punerea problemei de rezolvare a unei ecuații diferențiale 
ordinare printr‐o metodă numerică propriu‐zisă. 
În  cadrul  capitolului  vor  fi  prezentate  numai  metode 
numerice  propriu‐zise  (de  tip  b),  caracterizate  prin  faptul  că 
determinarea  valorilor  aproximative  y1,  y2,  …,  yn  se  va  face  folosind 
relații de următoarea formă generală care pune în evidență funcția g: 

135 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 

y i = y i −1 + h ⋅ g ( x j , y j , h), i = 1, n, j = 1, i − 1  .               (8.1.5) 


Metodele de integrare numerică se împart în două categorii 
în funcție de numărul de puncte utilizate anterior punctului current 
(xi, yi): 
1) metode monopas sau cu paşi separați, care la determinarea 
lui  yi  (a  se  vedea  relația  (8.1.5))  utilizează  informațiile 
referitoare numai la un singur punct anterior, corespunzător 
lui xi−1; 
2) metodele  multipas  sau  cu  paşi  legați,  care  la  determinarea 
lui  yi  utilizează  informațiile  referitoare  la  mai  multe  puncte 
anterioare, corespunzătoare lui xi−1, xi−2, … . 
Abele categorii pot utiliza: 
- algoritmi expliciți (direcți), la care punctul curent nu 
apare în expresia funcției g, sau 
- algoritmi  impliciți  (iterativi,  de  tip  predictor‐
corector), la care punctul curent apare în expresia lui 
g. 

8.2. Metode monopas pentru ecuații diferențiale 
  Metodele  monopas  sunt  caracterizate  prin  faptul  că  la 
calculul  valorilor  aproximative  y i , i = 1, n ,  sunt  folosite  folosesc 
numai  informațiile  din  punctul  anterior  ( xi −1 , y i −1 ) ,  relația  (8.1.5) 
obținând forma particulară: 
y i = y i −1 + h ⋅ g ( x i −1 , y i −1 , h), i = 1, n  .                   (8.2.1) 
  Metodele  se  diferențiază  între  ele  prin  forma  funcției  g,  dar 
toate sunt bazate pe dezvoltarea în serie Taylor în vecinătatea lui xi: 
h h2
y ( x i ) = y ( x i −1 ) + y ' ( x i −1 ) + y" ( x i −1 ) + ...                (8.2.2) 
1! 2!
şi reținerea unui anumit număr de termeni din (8.2.2). 
  Algoritmii  expliciți  determină  valorile  y i , i = 1, n ,  prin 
efectuarea  unui  număr  finit  de  operații  aritmetice  elementare 
aplicând direct o relație de tip (8.2.1). 
  Algortimi  predictor‐corector  determină  valorile  y i , i = 1, n , 
printr‐un  proces  de  calcul  iterativ  cu  convergență  teoretic  infinită, 
dar practic finită, conform următoarelor etape: 
a) se inițializează valoarea lui yi: 

136 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 

y i = y i −1 + h ⋅ g p ( x i −1 , y i −1 , h)  ;                   (8.2.3) 
b) la  un  pas  oarecare  k,  k  =  1,  2,  3,  …,  al  procesului  iterativ  de 
calcul se determină noua valoare a lui yi: 
y ik = y i −1 + h ⋅ g c ( x i −1 , y i −1 , xi , y ik −1 , h)  ;                 (8.2.4) 
c) calculul este terminat când yi a fost determinat cu o precizie 
impusă / dorită: 
y ik − y ik −1 ≤ ε  ,                       (8.2.5) 
cu eroarea ε > 0 prestabilită. 
Relația (8.2.3), aplicată o singură dată, constituie formula de 
predicție (predictor), iar relația (8.2.4), aplicată în mod repetat până 
la atingerea preciziei dorite, constituie formula de corecție (corector). 
În continuare sunt prezentate metodele de tip Euler. În acord 
cu  clasificarea  prezentată  în  subcapitolul  8.1,  metodele  de  tip  Euler 
sunt metode monopas cu algoritm explicit la care din dezvoltarea în 
serie Taylor (8.2.2) sunt reținuți numai primii doi termeni: 
y i = y i −1 + h ⋅ y i' −1  .                       (8.2.6) 
Ținând seama de expresia ecuației diferențiale (8.1.1), relația (8.2.6) 
se transformă pentru versiunea clasică a metodei Euler în: 
y i = y i −1 + h ⋅ f ( x i −1 , y i −1 )  .                     (8.2.7) 
  Prin  urmare,  rezolvarea  ecuației  diferențiale  de  ordinul  întâi 
(8.1.1)  prin  versiunea  clasică  a  metodei  Euler  se  face  în  modul 
următor:  pornind  de  la  condiția  inițială  (8.1.2),  se  aplică  succesiv 
relația (8.2.7) pentru  i = 1, n  rezultând toate valorile căutate. 
  În  fig.8.2  este  prezentată  interpretarea  geometrică  a 
metodelor de tip Euler (pentru i = 1). 

137 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 

 
Fig.8.2. Interpretarea geometrică a metodelor de tip Euler (pentru i=1). 
Exemplul  8.1:  Se  consideră  următoarea  ecuație  diferențială 
ordinară: 
y’ = f(x, y) = y – x + 2 , 
cu condiția inițială: 
y0 = y(x0) = y(0) = 0 . 
Să se rezolve numeric pentru x ∈  [0, 1] , cu un pas de discretizare h = 
0.1 (n = 10) utilizând versiunea clasică a metodei Euler. 
  Soluție:  Se  efectuează  calculele  aferente  versiunii  clasice  a 
metodei  Euler.  Pentru  aceasta  se  particularizează  relațiile  (8.1.4), 
(8.2.6) şi (8.2.7) rezultând succesiv: 
f 0 = f ( x 0 , y 0 ) = f (0, 0) = 0 − 0 + 2 = 2 ;  
x1 = 0 + h = 0 + 0.1 = 0.1 ;  
y1 = y 0 + h ⋅ f 0 = 0 + 0.1 ⋅ 2 = 0.2 ;  
f 1 = f ( x1 , y1 ) = f (0.1, 0.2) = 0.2 − 0.1 + 2 = 2.1 ;  
x 2 = x1 + h = 0.1 + 0.1 = 0.2 ;  
y 2 = y1 + h ⋅ f 1 = 0.2 + 0.1 ⋅ 2.1 = 0.41 ;  
f 2 = f ( x 2 , y 2 ) = f (0.2, 0.4) = 0.41 − 0.2 + 2 = 2.21 ;  
x 3 = x 2 + h = 0.2 + 0.1 = 0.3 ;  
y 3 = y 2 + h ⋅ f 2 = 0.41 + 0.1⋅ 2.21 = 0.631 ;  
f 3 = f ( x 3 , y 3 ) = f (0.3, 0.631) = 0.631 − 0.3 + 2 = 2.331  . 

138 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
Rămâne  ca  exercițiu  pentru  cititor  efectuarea  calculelor 
pentru  i = 4,10   precum  şi  rezolvarea  aceluiaşi  exemplu  în  cazurile 
h=0.05 (n=20) şi h=0.025 (n=40). 
  Versiunea  clasica  a  metodei  Euler  este  simplă,  însă  puțin 
precisă,  fiind  recomandabilă  doar  în  cazul  rezolvărilor  rapide 
aproximative. 
  Versiunea  Cauchy  a  metodei  Euler  asigură  îmbunătățirea 
preciziei  şi  stabilității  numerice,  cu  prețul  creşterii  volumului  de 
calcule. Această versiune se deosebeşte de cea clasică prin înlocuirea 
relației (8.2.7) cu: 
y i = y i −1 + h ⋅ f [x i −1 + 0.5h, y i −1 + 0.5h ⋅ f ( xi −1 , y i −1 )]  ,        (8.2.8) 
adică y’ nu se mai aproximează pe intervalul  [ xi −1, xi ]  cu valoarea de 
la  începutul  intervalului,  ci  cu  o  aproximație  a  valorii  de  la  mijlocul 
acestui interval. 
Exemplul  8.2:  Să  se  rezolve  ecuația  diferențială  din  cadrul 
exemplului  8.1  în  aceleaşi  condiții  cu  versiunea  Cauchy  a  metodei 
Euler. 
  Soluție:  De  data  aceasta  se  obțin  succesiv  următoarele 
rezultate: 
f 0 = f ( x 0 , y 0 ) = f (0, 0) = 0 − 0 + 2 = 2 ;  
x1 = 0 + h = 0 + 0.1 = 0.1 ;  
f (0 + 0.5h, 0 + 05h ⋅ f 0 ) = f (0 + 0.5 ⋅ 0.1, 0 + 0.5 ⋅ 0.1 ⋅ 2) = 2.05 ;  
y1 = y 0 + h ⋅ 2.05 = 0 + 0.1⋅ 2.05 = 0.205 ;  
f 1 = f ( x1 , y1 ) = f (0.1, 0.205) = 0.205 − 0.1 + 2 = 2.105 ;  
x 2 = x1 + h = 0.1 + 0.1 = 0.2 ;  
f ( x1 + 0.5h, y1 + 0.5h ⋅ f1 ) = f (0.1 + 0.5 ⋅ 0.1, 0.205 +
+ 0.5 ⋅ 0.1 ⋅ 2.105) = 2.1602 ;
y 2 = y1 + h ⋅ 2.1602 = 0.205 + 0.1 ⋅ 2.1602 = 0.421 .  
Se  lasă  în  sarcina  cititorului  efectuarea  calculelor  pentru 
i = 3,10  precum şi rezolvarea aceluiaşi exemplu în cazurile h=0.05 şi 
h=0.025. 
Ambele  metode  de  tip  Euler  prezintă  dezavantajul  unui 
număr mare de calcule în situația în care intervalul [a, b] este relativ 
larg şi aceasta deoarece este nevoie de un număr foarte mare de paşi 

139 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
de  discretizare  pentru  a  acoperi  intervalul.  În  plus,  erorile  făcute  la 
fiecare  pas  (a  se  vedea  şi  fig.8.2)  se  pot  acumula  şi  propaga 
imprevizibil. Acest ultim aspect este de foarte mare importanță şi va 
fi discutat în cadrul acestui capitol. 
Alte  metode  care  asigură  îmbunătățirea  în  continuare  a 
preciziei şi a erorii de trunchiere pe un pas de integrare sunt cele de 
tip  Runge‐Kutta.  Conform  clasificării  din  pargraful  precedent, 
metodele  de  tip  Runge‐Kutta  sunt  metode  monopas  cu  algoritm 
explicit. 
Pentru  reducerea  erorii,  la  determinarea  lui  y i , i = 1, n ,  se 
calculează valorile lui f(x, y) într‐un număr de puncte intermediare ale 
intervalului  [ xi −1 , x i ] ,  acest  număr  de  puncte  fiind  legat  direct  de 
ordinul p al metodei. 
Forma  generală  a  metodelor  de  tip  Runge‐Kutta  este  (de 
exemplu, [P1]): 
k1 = h ⋅ f ( xi −1 , y i −1 )  ,                       (8.2.9) 
j −1
k j = h ⋅ f ( x i −1 + h ⋅ b j , y i −1 + ∑ c jm k m ), j = 2, p  ,            (8.2.10) 
m =1

p
y i = y i −1 + ∑ a m k m  .                    (8.2.11) 
m =1

  Determinarea  coeficienților  a m , m = 1, p ,  b j , j = 2, p ,  şi 


c jm , m = 1, j − 1, j = 2, p ,  se  face  prin  dezvoltare  în  serie  Taylor  a 
ambilor  membri  ai  relației  (8.2.11)  şi  identificarea  coeficienților 
expresiilor  obținute  (de  exemplu,  [K2]).  Spre  exemplu,  metoda 
Runge‐Kutta de ordinul 4 este bazată pe utilizarea relațiilor (8.2.12) 
…  (8.2.16),  prezentate  în  ordinea  de  efectuare  a  calculelor  în  cazul 
implementării metodei în Matlab: 
k1 = f ( xi −1 , y i −1 ) ,                     (8.2.12) 
k 2 = f ( xi −1 + 0.5h, y i −1 + 0.5h ⋅ k1 ) ,                (8.2.13) 
k 3 = f ( xi −1 + 0.5h, y i −1 + 0.5h ⋅ k 2 ) ,                (8.2.14) 
k 4 = f ( xi −1 + 0.5h, y i −1 + 0.5h ⋅ k 3 ) ,                (8.2.15) 
h
y i = y i −1 + ( k 1 + 2k 2 + 2k 3 + k 4 ) .                 (8.2.16) 
6

140 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
Alte  variante  de  metode  de  tip  Runge‐Kutta  cu  proprietăți 
avantajoase  sunt  metodele  Runge‐Kutta‐Merson,  Ralston  –Runge‐
Kutta şi Butcher‐Runge‐Kutta. 
O  problemă  importantă  în  cazul  aplicării  şi  implementării 
metodelor  de  tip  Runge‐Kutta  şi  nu  numai  este  reprezentată  de 
adaptarea  mărimii  pasului  de  integrare.  Astfel,  în  subdomenii  ale 
intervalului  [a,  b]  în  care  funcția  are  variații  line,  poate  fi  utilizat  un 
pas relativ mare. Dacă însă, există subdomenii în  care au loc variații 
rapide ale lui y pentru variații relativ mici ale lui x, atunci este necesar 
un  pas  mic.  În  sfârşit,  există  funcții  pentru  care  pot  fi  prezente 
ambele tipuri de subdomenii menționate. În această situație, în locul 
utilizării  unui  pas  de  integrare  mic  pe  întreg  intervalul  [a,  b]  este 
preferată  o  soluție  mai  eficientă,  de  adaptare  automată  a  mărimii 
pasului  de  integrare  în  funcție  de  valoarea  gradientului  funcției 
necunoscute,  y’(x).  Acest  procedeu  este  implementat  în  Matlab 
conform [P2]. 

8.3. Metode multipas pentru ecuații diferențiale 
Se consideră din nou ecuaţia diferenţială de ordinul întâi
(8.1.1) cu condiţia iniţială (8.1.2) şi se cere să se rezolve această
ecuaţie, adică să se determine expresia functiei y(x) care verifică
relaţiile (8.1.1) şi (8.1.2) specifice unei probleme de tip Cauchy.
  Se  pune  problema  rezolvării  ecuației  menționate  printr‐o 
metodă numerică propriu‐zisă, adică, în acord cu cele menționate în 
subcapitolul 8.1, se cere să se determine valorile y1, y2, …, yn care să 
aproximeze  cât  mai  bine  valorile  exacte  y(x1),  y(x2),  …,  y(xn),  ale  lui 
y(x)  pentru  x∈ [a, b]   dacă  punctele  x1,  x2,  …,  xn∈ [a, b]   sunt 
considerate  echidistante  cu  pasul  de  integrare  h  (definit  în  relația 
(8.1.4)). 
Metodele multipas sunt caracterizate prin faptul că la calculul 
valorilor  aproximative  y i , i = 1, n ,  se  folosesc,  spre  deosebire  de 
cazul  metodelor  monopas,  informațiile  din  mai  multe  puncte 
anterioare  punctului  curent  ( x i , y i ) ,  relația  (8.1.5)  obținând  forma 
particulară (8.3.1): 
y i = y i −1 + h ⋅ g ( xi − r , y i − r ,..., xi − 2 , y i − 2 , xi −1 , y i −1 , h), i = 1, n , 
                          (8.3.1) 
în care r ∈ N, r ≥ 2 reprezintă numărul de puncte anterioare utilizate. 

141 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
  Metodele  se  diferențiază  între  ele  prin  forma  funcției  g  şi 
valoarea  lui  r,  dar  toate  sunt  bazate  pe  utilizarea  unor  integrale 
având forma (8.3.2): 
xi

y( xi ) − y( xi −r ) = ∫ y ( x)dx  ,  
'
                 (8.3.2) 
xi − r

unde funcţia y’(x) este aproximată cu un polinom de interpolare (a se


vedea capitolul anterior).
  Algoritmii  expliciți  determină  valorile  y i , i = 1, n ,  prin 
efectuarea  unui  număr  finit  de  operații  aritmetice  elementare 
aplicând direct o relație de tip (8.3.1). 
  Algortimii predictor‐corector determină valorile  y i , i = 1, n , 
printr‐un  proces  de  calcul  iterativ  cu  convergență  teoretic  infinită, 
dar practic finită, conform următoarelor etape: 
(a) se inițializează valoarea lui yi: 
y i0 = y i −1 + h ⋅ g p ( xi − r , y i − r ,..., x i − 2 , y i − 2 , x i −1 , y i −1 , h)  ;          (8.3.3) 
(b) la un pas oarecare k, k = 1, 2, 3, …, al procesului iterativ de calcul 
este determinată noua valoare a lui yi: 
y ik = y i −1 + h ⋅ g c ( x i − r , y i − r , … , x i − 2 , y i − 2 , x i −1 , y i −1 , x i , y ik −1 , h) ; 
                           (8.3.4) 
(c) calculul  este  terminat  când  yi  a  fost  determinată  cu  o  precizie 
impusă / dorită: 
y ik − y ik −1 ≤ ε  ,                       (8.3.5) 
cu eroarea ε > 0 prestabilită. 
Relația (8.3.3), aplicată o singură dată, constituie formula de 
predicție (predictor), iar relația (8.3.4), aplicată în mod repetat până 
la atingerea preciziei dorite, constituie formula de corecție (corector). 
Comparativ  cu  metodele  monopas,  metodele  multipas 
prezintă următoarele avantaje (de exemplu, [K2]): 
• estimarea  erorii  de  trunchiere  este  relativ  simplă,  eroarea  de 
trunchiere fiind semnificativ mai mică; 
• propagarea erorilor este mai redusă, fiind îmbunătățite precizia şi 
stabilitatea numerică (asupra acestui aspect se va reveni în cadrul 
capitolului); 
• nu  este  necesar  calculul  valorilor  funcției  f(x,  y)  în  puncte 
intermediare suplimentare față de cele de tip (8.1.4). 

142 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
Dezavantajele  metodelor  multipas  față  de  cele  monopas 
sunt următoarele: 
ƒ nu  este  asigurată  autopornirea  deoarece  la  primii  paşi  nu  sunt 
disponibile  informațiile  din  punctele  anterioare,  aceste  fiind 
motivul  pentru  care  sunt  utilizate  de  regulă  pentru  pornire 
metode  monopas  cu  eroare  de  trunchiere  de  acelaşi  ordin  de 
mărime; 
ƒ modificarea  pasului  de  integrare  h  (este  vorba  în  primul  rând 
despre  reducerea  acestuia,  efectuată  în  vederea  creşterii 
preciziei)  se  face  relativ  dificil,  fiind  necesare  reveniri  la  puncte 
deja determinate sau reporniri cu metode monopas; 
ƒ la unele variante poate creşte volumul de calcule. 
În  continuare  sunt  prezentate  metodele  de  tip  Adams‐
Bashforth‐Moulton.  În  acord  cu  clasificarea  prezentată  în 
subcapitolul  8.1,  metodele  de  tip  Euler  sunt  metode  multipas  cu 
algoritm  explicit  la  care,  pentru  metodele  de  tip  Adams‐Bashforth‐
Moulton de ordinul m (de exemplu, [K2], [P1], [P2]): 
‰ relația (8.3.2) este particularizată pentru r = 1; 
‰ integrandul din relația (8.3.2), y’(x) = f(x, y), este aproximat cu un 
polinom  de  interpolare  Lagrange  Pm–1(x)  de  gradul  m–1  (a  se 
vedea capitolul 7), definit prin intermediul a m perechi de valori: 
( x j , f ( x j , y j ), j = i − m + 1, i  .                   (8.3.6) 
  Algoritmul metodei Adams‐Bashforth‐Moulton de ordinul m 
=  4  (de  tip  predictor‐corector)  constă  în  parcurgerea  următoarelor 
etape,  prin  care  sunt  determinate  succesiv  valorile  y i , i = 1, n ,  pe 
baza unor procese de calcul iterativ [K2]: 
1) Se inițializează yi utilizând formula de predicție (de tip (8.3.3)): 
y i0 = y i −1 + h(55 f ( xi −1 , y i −1 ) − 59 f ( xi − 2 , y i − 2 ) +
               (8.3.7) 
+ 3 f ( xi −3 , y i −3 ) − 9 f ( xi − 4 , y i − 4 )) / 24,
în care indicele superior corespunde numărului iteraţiei curente.
2) La un pas oarecare k, k = 1, 2, 3, …, al procesului iterativ de calcul 
este  determinată  noua  valoare  a  lui  yi  utilizând  formula  de 
corecție (de tip (8.3.4)): 
y ik = y i −1 + h(9 f ( xi , y ik−−11 ) + 19 f ( xi −1 , y i −1 ) −
               (8.3.8) 
− 5 f ( xi − 2 , y i − 2 ) + f ( xi −3 , y i −3 )) / 24.
3) Calculul  este  terminat  când  yi  a  fost  determinat  cu  o  precizie 
impusă / dorită (condiția de tip (8.3.5)): 

143 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 

y ik − y ik −1 ≤ ε  ,                       (8.3.9) 
cu eroarea ε > 0 prestabilită. 
Algoritmul  este  pornit  pentru  i  =  4,  deci  valorile  f(x0,y0), 
f(x1,y1),  f(x2,y2)  şi  f(x3,y3)  trebuie  cunoscute  înainte  de  pornire.  În 
practică,  aceste  valori  trebuie  obținute  printr‐o  procedură  de 
autopornire  similară  celor  din  cazul  metodelor  de  tip  Runge‐Kutta 
[P2]. 
  Pentru  aprofundarea  aspectelor  legate  de  metodele 
monopas  şi  multipas  este  recomandat  studiul  lucrărilor  [B1],  [B2], 
[D2], [G3], [K2], [M2], [N1], [T1]. 
Pentru  rezolvarea  ecuațiilor  diferențiale  ordinare  de  ordin 
superior,  se  procedează  după  cum  urmează.  Se  consideră  ecuația 
diferențială de ordinul n: 
y ( n ) = f ( x, y, y ' , y '' ,..., y ( n −1) )  ,                (8.3.10) 
cu x ∈  [a, b], în condițiile inițiale: 

⎧ y(x0 ) = y 0
⎪ y' ( x ) = y'
⎪ 0 0

⎪⎪ y ' ' ( x 0 ) = y ' ' 0


⎨L  .                   (8.3.11) 

⎪ y ( n − 2) (x0 ) = y ( n − 2) 0
⎪ ( n −1)
⎪⎩ y (x0 ) = y ( n −1) 0
Apoi, se introduc notațiile: 

⎧ y1 ( x ) = y ( n −1)
⎪ ( n−2)
⎪ y 2 ( x) = y
⎪⎪ y ( x) = y ( n −3)
⎨ 3  .                    (8.3.12) 
⎪ L
⎪ y (x ) = y'
⎪ n −1
⎪⎩ y n ( x ) = y
Prin  efectuarea  substituțiilor  în  relația  (8.3.10)  se  obține  că 
ecuația  diferențială  de  ordinul  n  prezentată  în  (8.3.10)  este 
echivalentă cu următorul sistem de n ecuații diferențiale ordinare de 
ordinul întâi: 

144 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 

⎧ y1′ = f ( x, y n , y n −1 ,..., y1 )
⎪ y′ = y
⎪ 2 1

⎪⎪ y 3′ = y 2
⎨  .                  (8.3.13) 
⎪ L
⎪ y n′ − 2 = y n −3

⎪⎩ y n′ −1 = y n − 2
  Condițiile inițiale pentru sistemul (8.3.13) se obțin din relațiile 
(8.3.11) şi (8.3.12) şi rezultă sub forma următoare: 

⎧ y1 ( x 0 ) = y ( n −1) 0

⎪ y 2 (x0 ) = y
( n−2)
0
⎪⎪ y ( x ) = y ( n −3)
0
⎨ 3 0  .                    (8.3.14) 
⎪ L
⎪ y (x ) = y'
⎪ n −1 0 0

⎪⎩ y n ( x 0 ) = y 0
  Pentru  rezolvarea  sistemelor  de  ecuații  diferențiale  ordinare 
de  tip  (8.3.13)  în  condițiile  inițiale  (8.3.14)  pot  fi  utiliza  metode 
numerice  similare  rezolvării  numerice  a  ecuațiilor  diferențiale 
ordinare  de  ordinul  întâi  prezentate  în  cadrul  acestui  capitol  sau  în 
lucrările  indicate.  Trebuie  acordată  însă  atenție  faptului  că  volumul 
de calcule este mai mare în cazul acestor sisteme. 

8.4.  Aspecte  privind  stabilitatea  numerică  şi  alegerea 


metodelor de rezolvare numerică a ecuațiilor diferențiale 
  Pentru  definirea  stabilității  numerice  a  unui  algoritm  este 
nevoie mai întâi să se discute despre analiza condiționării problemei 
asociate  algoritmului.  Analiza  condiționării  unei  probleme  este  un 
proces  matematic  relativ  complicat,  strâns  legat  de  teoria 
perturbațiilor  (de  exemplu,  [G4]).  În  sens  restrâns  (a  se  vedea  şi 
capitolul 3) se spune că o problemă este bine condiționată dacă mici 
variații  în  datele  problemei  provoacă  doar  mici  variații  în  soluție.  În 
caz  contrar,  se  spune  că  problema  este  rău  condiționată.  De  regulă 
este studiată condiționarea problemelor numerice din cadrul algebrei 
liniare,  obținându‐se  numere  de  condiționare,  calculabile  sau 
estimabile. Analiza condiționării pentru alte probleme – în particular, 
pentru  rezolvarea  numerică  a  ecuațiilor  şi  sistemelor  de  ecuații 

145 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
diferențiale ordinare – devine însă dificilă şi necesită un efort relativ 
mare. 
  În sens restrâns, se spune că un algoritm este numeric stabil 
dacă nu introduce o sensibilitate mai mare în raport cu datele decât 
cea  inerentă  problemei,  adică  nu  înrăutățeşte  condiționarea 
problemei  asociate  algoritmului.  Altfel  spus  (de  exemplu,  [V1]),  un 
algoritm este numeric stabil dacă rezultatul calculat de acesta este – 
sau este apropiat de – soluția exactă cu mici perturbații a problemei 
inițiale. 
  Dacă  problema  numerică  este  bine  condiționată,  atunci 
soluția  calculată  de  un  algoritm  numeric  stabil  este  apropiată  de 
soluția  exactă.  Pentru  mulți  algoritmi  –  în  particular,  pentru  cei 
destinați  rezolvării  numerice  a  ecuațiilor  şi  sistemelor  de  ecuații 
diferențiale  ordinare  –  stabilitatea  numerică  poate  fi  demonstrată 
matematic şi exprimată sub forma unor condiții de stabilitate. 
  Cu  referire  la  stabilitatea  numerică  a  algoritmilor  destinați 
rezolvării  numerice  a  ecuațiilor  diferențiale  ordinare  analizați  în 
cadrul  acestui  capitol  pot  fi  făcute  următoarele  observații  (de 
exemplu, [P1]): 
  1. În cazul metodelor de tip Euler condiția de stabilitate poate 
fi exprimată sub forma: 
–2 < h∙∂f/∂y < 0 ,                       (8.4.1) 
de unde se poate concluziona că: 
A. este necesar ca ∂f/∂y < 0 pentru asigurarea stabilității numerice, 
B. poate  apare  instabilitate  numerică  pentru  anumite  valori  ale 
pasului de integrare h. 
2. Şi în cazul metodelor de tip Runge-Kutta se pot trage
aceleaşi concluzii, rezultate din condiţia de stabilitate:
M < h∙∂f/∂y < 0 ,                       (8.4.2) 
în care parametrul M < 0 poate fi estimat şi diferă de la o metodă de 
tip Runge‐Kutta la alta. 
  Pentru  asigurarea  stabilității  numerice  se  poate  proceda  la 
reducerea valorii pasului de integrare h până la o valoare suficient de 
mică.  Însă,  metodele  de  tip  Runge‐Kutta  sunt  mai  puțin  eficiente 
decât cele de tip predictor‐corector datorită numărului mai mare de 
evaluări ale funcției la fiecare pas; deci, o reducere prea substanțială 
a  valorii  lui  h  determină  creşterea  considerabilă  a  volumului  de 
calcule  legate  de  evaluările  funcției.  Prin  urmare,  după  cum  a  fost 
menționat  şi  în  subcapitolul  8.2,  cel  puțin  din  motivul  asigurării 

146 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
stabilității  numerice  este  nevoie  de  ajustarea  cu  grijă  a  pasului  de 
integrare  pe  parcursul  procesului  de  soluționare  e  ecuației 
diferențiale. 
3. În cazul metodelor de tip Adams-Bashforth-Moulton se pot
trage concluziile A. şi B. de la metodele de tip Euler. De data aceasta
condiţia de stabilitate are expresia (8.4.3):
–1.25 < h∙∂f/∂y < 0 ,                       (8.4.3) 
care este de asemenea utilă la estimarea mărimii pasului de integrare 
h. 
Alegerea  metodei  numerice  de  integrare  a  ecuațiilor 
diferențiale  ordinare  este  strâns  legată  de  analiza  erorilor  de  calcul 
în  procesul  de  rezolvare  a  ecuațiilor  diferențiale  ordinare.  Astfel, 
după  cum  a  fost  menționat  în  capitolul  2,  erorile  de  calcul  pot  fi  de 
trei  tipuri  –  erori  de  trunchiere,  erori  de  rotunjire  şi  erori  de 
propagare – fiind importantă analiza efectului fiecărui tip de eroare în 
parte  asupra  preciziei  rezultatelor,  scopul  fiind  evident  cel  de 
reducere a erorilor de calcul. 
  Erorile  de  trunchiere  depind  de  metoda  numerică  aleasă. 
Pentru  metodele  numerice  analizate  în  cadrul  capitolului  erorile  de 
trunchiere sunt: 
♦ de  ordinul  de  mărime  al  lui  h2  pentru  versiunea  clasică  a 
metodelor  de  tip  Euler  şi  de  ordinul  de  mărime  al  lui  h3  pentru 
versiunea Cauchy a metodelor de tip Euler; 
♦ de  ordinul  de  mărime  al  lui  h5  pentru  metodele  de  tip  Runge‐
Kutta de ordinul 4; 
♦ de  ordinul  de  mărime  al  lui  h5  pentru  metodele  de  tip  Adams‐
Bashforth‐Moulton de ordinul 4. 
Erorile  de  rotunjire  depind  de  posibilitățile  echipamentului 
de  calcul  pe  care  sunt  implementați  algoritmii  de  rezolvare  a 
metodelor numerice. Aceste erori pot fi diminuate dacă se utilizează 
modul  de  lucru  în  dublă  precizie.  Cu  toate  acestea,  erorile  de 
rotunjire  cresc  pe  măsura  creşterii  numărului  de  paşi  de  integrare 
datorită propagării erorilor de la un pas la altul. 
Legat de erorile de propagare, efectul lor este simțit mai ales 
la metodele  de tip  predictor‐corector.  Este important să fie utilizate 
numai metode numeric stabile, la care erorile nu se propagă în mod 
imprevizibil sau chiar nemărginit. 
Pentru  reducerea  erorilor  de  trunchiere  este  recomandată 
micşorarea  pasului  de  integrare,  însă  aceasta  conduce  la  creşterea 

147 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
erorii de rotunjire. Pe de altă parte, micşorarea pasului de integrare 
conduce  la  creşterea  numărului  de  paşi,  cu  consecința  imediată  a 
creşterii  timpului  de  calcul.  Deci,  trebuie  căutată  –  ca  o  soluție  de 
compromis – acea valoare a pasului de integrare pentru care erorile 
de calcul (“suma” celor trei tipuri de erori menționate) să fie cât mai 
mici. 
  Ținând seama legătura dintre mărimea pasului de integrare şi 
cea a erorilor de calcul, alegerea unei anumite metode de rezolvare 
numerică  a  ecuațiilor  diferențiale  ordinare  reprezintă  o  problemă 
relativ  complexă,  autorii  sugerând  utilizarea  următoarelor 
recomandări: 
‰ Dacă  se  cer  rezolvări  rapide,  atunci  se  poate  alege  o  metodă 
simplă, de tip Euler, cu un pas de integrare relativ mic, dar cu o 
valoare absolută mult superioară celui mai mic număr posibil a fi 
reprezentat în echipamentul de calcul. 
‰ Dacă se cer rezolvări precise fără a fi important timpul de calcul, 
atunci se poate alege metoda Runge‐Kutta de ordinul 4 datorită 
avantajelor legate de autopornire. 
‰ Dacă  se  cer  rezolvări  precise  fără  modificări  semnificative  ale 
pasului  de  integrare,  atunci  se  poate  alege  metoda  Adams‐
Bashforth‐Moulton  de  ordinul  4  datorită  avantajelor  legate  de 
stabilitate numerică. 
‰ La  toate  metodele  numerice  utilizate  este  necesară  analiza 
stabilității  numerice  deoarece  toate  trebuie  să  fie  numeric 
stabile.  Dacă  aceasta  nu  poate  fi  efectuată  teoretic,  atunci 
trebuie testată în funcție de aplicație. 
În  afara  recomandărilor  amintite,  alegerea  unei  anumite 
metode numerice depinde de experiența utilizatorului şi de aplicație. 

8.5. Aplicații în Matlab 
  Pentru  implementarea  în  Matlab  a  algoritmului  metodei 
Euler  în  varianta  clasică  este  dezvoltată  funcția  feuler,  prezentată  în 
continuare [P1]: 
function [xval,yval]=feuler(f,a,b,y0,h)
% Algoritmul versiunii clasice a metodei Euler
% in rezolvarea ecuatiei dy/dx=f(x,y)
% cu conditia initiala y(x0)=y0
%
% functia f(x,y) – sa fie definita
% de utilizator,
% a=x0 si b – valorile initiale si

148 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
% finale ale lui x,
% h – pasul de integrare,
% xval si yval – vectorii cu valorile
% lui x si y
%
% n - numarul de pasi:
n=(b-a)/h+1;
x=a; xval=a;
y=y0; yval=y0;
for i=2:n,
x=x+h;
y=y+h*feval(’f’,x,y);
xval=[xval, x];
yval=[yval, y];
end
  Funcția va fi aplicată în cadrul exemplului 8.3. 
Exemplul 8.3: Să se rezolve prin versiunea clasică a metodei 
Euler următoarea ecuație diferențială: 
y’ = – 5y + 5 , 
pe intervalul x ∈ [0, 1], cu condiţia iniţială y(0) = 0.
Soluție:  Pentru  început,  se  creează  un  fişier  funcție,  cu 
numele  f.m,  pentru  definirea  membrului  drept  al  ecuației 
diferențiale: 
function dy=f(x,y)
dy=-5*y+5;
Apoi,  se  execută  următoarea  secvență  de  program  Matlab 
care  apelează  funcția  feuler  pentru  două  valori  ale  pasului  de 
discretizare: h = 0.2 şi h = 0.05: 
[xval1,yval1]=feuler(’f’,0,1,0,0.2);
[xval2,yval2]=feuler(’f’,0,1,0,0.05);
% Reprezentari grafice:
plot(xval1,yval1,'k-.',xval2,yval2,'k-')
axis([0 1 0 1.2])
grid; xlabel('x'); ylabel('y');
title('h=0.05 ---- h=0.2 -.-.-')
hhh=gcf;
set(hhh,'color',[1 1 1]);
  În  fig.8.3  este  prezentat  rezultatul  executării  programului 
anterior sub forma graficelor aferente celor două soluții ale ecuației 
diferențiale.  Se  poate  observa  clar  superioritatea  soluției  pentru 
pasul de integrare mic, h = 0.05. 

149 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
Pentru  rezolvarea  numerică  a  ecuațiilor  şi  sistemelor  de 
ecuații  diferențiale  de  ordinul  întâi  prin  metode  de  tip  Runge‐Kutta 
în  Matlab  sunt  utilizate  funcțiile  ode23  (destinată  rezolvării  prin 
metodele Runge‐Kutta de ordinul 2 şi 3) şi ode45 (destinată rezolvării 
prin  metodele  Runge‐Kutta  de  ordinul  4  şi  5).  Funcția  ode45  este 
apelabilă  în  cel  puțin  două  forme  având  următoarele  sintaxe  [M1], 
[P2]: 
ƒ [xval,yval]=ode45(’yprim’,dom,y0)
ƒ [xval,yval]=ode45(’yprim’,dom,y0,options)
în care argumentele au semnificația: 

 
Fig.8.3. Două variante de soluții ale ecuației diferențiale din exemplul 
8.3. 
yprim  variabilă  şir  conținând  numele  unui  fişier  M,  fişier 
funcție,  în  care  este  definită  derivata  funcției 
necunoscute,  y,  membrul  drept  al  ecuației  diferențiale 
(8.1.1); 
dom  domeniul (intervalul) valorilor variabilei independente x, 
dom = [a b], în care: 
a  valoarea  inițială  a  variabilei 
independente  x  (adică  x0  conform 
relației (8.1.1)), 
b  valoarea finală a variabilei independente 
x (a se vedea din nou relația (8.1.1)); 

150 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
y0  vector  (matrice  coloană)  conținând  condițiile  inițiale 
(adică y0 conform relației (8.1.2)); 
options  argument  prin  care  pot  fi  setați  anumiți  parametri  ai 
metodei de rezolvare numerică, prin intermediul funcției 
odeset. 
  Prin aplicarea funcției ode45 se obțin: 
xval  vector conținând valorile variabilei independente x; 
yval  vector conținând valorile funcției necunoscute y. 
Funcția odeset are următoarea sintaxă: 
options=odeset(’param1’,val1,’param1’,val1,…)
în  care  ‘paramj’  reprezintă  numele  unui  parametru,  iar  valj 
reprezintă  valoarea  asignată  acelui  parametru,  j = 1, 2, … .
Parametrii nespecificați rămân cu valorile lor implicite. În continuare 
sunt definiți doi dintre aceşti parametri, restul fiind definiți în [M1]: 
RelTol  precizia  relativă  dorită  a  soluției,  cu  valoarea  implicită 
RelTol=10−3; 
AbsTol  precizia  absolută  dorită  a  soluției,  cu  valoarea  implicită 
AbsTol=10−6. 
  Funcțiile  ode23  şi  ode45  implementează  metodele  de  tip 
Runge‐Kutta‐Fehlberg,  cu  adaptarea  automată  a  mărimii  pasului  de 
integrare  în  funcție  de  valoarea  gradientului  funcției  necunoscute, 
y’(x). 
  În continuare este examplificată aplicarea funcției ode45. 
Exemplul  8.4:  Să  se  rezolve  prin  metoda  Runge‐Kutta  de 
ordinul 4 următoarea ecuație diferențială: 
y” = – 1.2y’ – y + 10 , 
pe intervalul x ∈ [0, 10], cu condiţiile iniţiale y(0) = 2, y’(0) = 0.
Soluție:  Rezolvarea  începe  prin  transformarea  ecuației 
diferențiale  într‐un  sistem  de  două  ecuații  diferențiale  de  ordinul 
întâi.  Pentru  aceasta  se  procedează  conform  subcapitolului  8.3  şi  se 
introduc două funcții notate cu y1 şi y2: 
y1 = y’ ,  y2 = y . 
Rezultă următorul sistem de două ecuații diferențiale de ordinul întâi: 
y1’ = – 1.2y1 – y2 + 10 , 
y2’ = y1 , 
în condiţiile iniţiale y1(0) = 0, y2(0) = 2.
Se  creează  un  fişier  funcție,  cu  numele  yprim.m,  pentru 
definirea membrului drept al sistemului de ecuații diferențiale: 

151 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
function dy=yprim(x,y)
% dy – vectorul derivatelor:
dy=zeros(2,1);
dy(1)=-1.2*y(1)-y(2)+10;
dy(2)=y(1);
În final, se execută următoarea secvență de program Matlab 
care  apelează  funcția  ode45  pentru  precizia  absolută  AbsTol=10−2  şi 
precizia relativă RelTol=10−4: 
% Conditii initiale:
y0=[0 2]’;
% Domeniu:
dom=[0 10];
% Precizie relativa si absoluta:
options=odeset(’RelTol’,10^(-2),...
’AbsTol’,10^(-4));
% Apelare ode45:
[xval,yval]=ode45(’yprim’,dom,y0,options);
% Reprezentarea grafica:
y=yval(:,2);
plot(xval,y,'k-')
grid; xlabel('x'); ylabel('y');
title('Solutia')
hhh=gcf;
set(hhh,'color',[1 1 1]);
  În  fig.8.4  este  prezentat  rezultatul  executării  programului 
anterior sub forma graficului soluției ecuației diferențiale. 

 
Fig.8.4. Soluția ecuației diferențiale din exemplul 8.4. 

152 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
  Pentru  implementarea  în  Matlab  a  algoritmului  metodei 
Adams‐Bashforth‐Moulton de ordinul 4 este dezvoltată funcția fabm, 
prezentată  în  cele  ce  urmează.  Trebuie  remarcat  faptul  că  pentru 
pornire se efectuează 3 paşi cu o metodă Runge‐Kutta de ordinul 4. 
function [xval,yval]=fabm(f,a,b,y0,h)
% Algoritmul metodei Adams-bashforth-Moulton de
% ordinul 4
% in rezolvarea ecuatiei dy/dx=f(x,y)
% cu conditia initiala y(x0)=y0
%
% functia f(x,y) – sa fie definita de
% utilizator,
% a=x0 si b – valorile initiale si finale
% ale lui x,
% h – pasul de integrare,
% xval si yval – vectorii cu valorile
% lui x si y
%
% Pregatirea matricelor pentru metoda
% Runge-Kutta:
aab=[]; bb=[]; cc=[];
aa=[1/6 1/3 1/3 1/6];
bb=[0 0.5 0.5 1];
cc=[0 0 0 0;0.5 0 0 0;0 0.5 0 0;0 0 1 0];
% n - numarul de pasi:
n=(b-a)/h+1;
x=a; y=y0; fval(1)=feval(’f’,x,y);
ys(1)=y0; xval=a; yval=y0;
% Aplicarea metodei Runge-Kutta:
for j=2:4
k(1)=h*feval(’f’,x,y);
for i=2:4
k(i)=h*feval(’f’,x+h*bb(i),y+cc(i,1:i-
1)*k(1:i-1)’);
end
y1=y+aa*k’; ys(j)=y1; x1=x+h;
fval(j)=feval(’f’,x1,y1);
xval=[xval, x1]; x=x1;
yval=[yval, y1]; y=y1;
end
% Aplicarea metodei Adams-Bashforth-Moulton:
for i=5:n,
% Predictie:
y1=(55*fval(4)-59*fval(3)+37*fval(2)-9*...

153 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
fval(1))/24;
y1=ys(4)+h*y1;
x1=x+h; fval(5)=feval(’f’,x1,y1);
% Corectie:
yc=(9*fval(5)+19*fval(4)-5*...
fval(3)+fval(2))/24;
yc=ys(4)+h*yc;
ys(4)=yc;
xval=[xval, x1]; x=x1;
yval=[yval, y1]; y=y1;
end
  Funcția va fi aplicată în cadrul exemplului 8.5. 
Exemplul  8.5:  Să  se  rezolve  prin  metoda  Adams‐Bashforth‐
Moulton  ecuația  diferențială  prezentată  în  exemplul  8.3,  cu  aceeaşi 
condiție inițială, pe intervalul x ∈ [0, 2]. 
Soluție:  Se  creează  din  nou  fişierul  funcție  f.m  pentru 
definirea  membrului  drept  al  ecuației  diferențiale,  urmând  execuția 
secvenței  de  program  Matlab  care  apelează  funcția  fabm  pentru 
două valori ale pasului de discretizare: h=0.25 şi h=0.2: 
[xval1,yval1]=fabm(’f’,0,2,0,0.25);
[xval2,yval2]=fabm(’f’,0,2,0,0.2);
% Reprezentari grafice:
plot(xval1,yval1,'k-.',xval2,yval2,'k-')
grid; xlabel('x'); ylabel('y');
title('h=0.2 ---- h=0.25 -.-.-')
hhh=gcf;
set(hhh,'color',[1 1 1]);
  În fig.8.5 este prezentat rezultatul executării programului sub 
forma graficelor aferente celor două soluții ale ecuației diferențiale. 

154 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 

 
Fig.8.5. Două variante de soluții ale ecuației diferențiale din exemplul 
8.5 cu metoda Adams‐Bashforth‐Moulton de ordinul 4. 
  Pot  fi  observa  diferențe  între  cele  două  soluții  datorită 
diferențelor dintre paşii de integrare. În plus, valorile relativ mari ale 
celor  doi  paşi  de  integrare  conduc  rezolvarea  problemei  spre 
instabilitate numerică. 

8.6. Rezumat 
Metodele  de  integrare  numerică  se  împart  în  două  categorii  în 
funcție de numărul de puncte utilizate anterior punctului current (xi, 
yi): 
™ metode monopas (cu paşi separați), care la determinarea lui 
yi utilizează informațiile referitoare numai la un singur punct 
anterior, corespunzător lui xi−1; 
™ metodele multipas (cu paşi legați), care la determinarea lui yi 
utilizează  informațiile  referitoare  la  mai  multe  puncte 
anterioare, corespunzătoare lui xi−1, xi−2, … . 
Pentru  ambele  categorii  de  metode  sunt  utilizate  două  clase  de 
algoritmi: 
™ algoritmi expliciți (direcți), la care punctul curent nu apare în 
expresia funcției g; 

155 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
™ algoritmi  impliciți  (iterativi,  de  tip  predictor‐corector),  la 
care punctul curent apare în expresia lui g. 
Comparativ  cu  metodele  monopas,  metodele  multipas  prezintă 
următoarele avantaje: 
™ estimarea erorii de trunchiere este relativ simplă, eroarea de 
trunchiere fiind semnificativ mai mică; 
™ propagarea  erorilor  este  mai  redusă,  fiind  îmbunătățite 
precizia şi stabilitatea numerică; 
™ nu  este  necesar  calculul  valorilor  funcției  f(x,  y)  în  puncte 
intermediare suplimentare. 
Dezavantajele  metodelor  multipas  față  de  cele  monopas  sunt 
următoarele: 
™ nu  este  asigurată  autopornirea  deoarece  la  primii  paşi  nu 
sunt  disponibile  informațiile  din  punctele  anterioare,  aceste 
fiind  motivul  pentru  care  sunt  utilizate  de  regulă  pentru 
pornire metode monopas cu eroare de trunchiere de acelaşi 
ordin de mărime; 
™ modificarea pasului de integrare h (este vorba în primul rând 
despre  reducerea  acestuia,  efectuată  în  vederea  creşterii 
preciziei)  se  face  relativ  dificil,  fiind  necesare  reveniri  la 
puncte deja determinate sau reporniri cu metode monopas; 
™ la unele variante poate creşte volumul de calcule. 
Rezolvarea ecuațiilor diferențiale ordinare de ordin superior poate fi 
redusă, prin introducerea unor funcții, la rezolvarea unor sisteme de 
ecuații diferențiale ordinare de ordinul întâi. 
În sens restrâns se spune că o problemă este bine condiționată dacă 
mici variații în datele problemei provoacă doar mici variații în soluție. 
În caz contrar, se spune că problema este rău condiționată. 
În sens restrâns, se spune că un algoritm este numeric stabil dacă nu 
introduce  o  sensibilitate  mai  mare  în  raport  cu  datele  decât  cea 
inerentă  problemei,  adică  nu  înrăutățeşte  condiționarea  problemei 
asociate  algoritmului.  Altfel  spus,  [V1]),  un  algoritm  este  numeric 
stabil dacă rezultatul calculat de acesta este – sau este apropiat de – 
soluția exactă cu mici perturbații a problemei inițiale. 
Dacă  problema  numerică  este  bine  condiționată,  atunci  soluția 
calculată  de  un  algoritm  numeric  stabil  este  apropiată  de  soluția 
exactă.  Pentru  mulți  algoritmi  –  în  particular,  pentru  cei  destinați 
rezolvării  numerice  a  ecuațiilor  şi  sistemelor  de  ecuații  diferențiale 
ordinare  –  stabilitatea  numerică  poate  fi  demonstrată  matematic  şi 
exprimată sub forma unor condiții de stabilitate. 

156 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
Erorile  de  trunchiere  depind  de  metoda  numerică  aleasă.  Pentru 
metodele  numerice  analizate  în  cadrul  capitolului  erorile  de 
trunchiere sunt: 
™ de  ordinul  de  mărime  al  lui  h2  pentru  versiunea  clasică  a 
metodelor  de  tip  Euler  şi  de  ordinul  de  mărime  al  lui  h3 
pentru versiunea Cauchy a metodelor de tip Euler; 
™ de ordinul de mărime al lui h5 pentru metodele de tip Runge‐
Kutta de ordinul 4; 
™ de ordinul de mărime al lui h5 pentru metodele de tip Adams‐
Bashforth‐Moulton de ordinul 4. 
Erorile de rotunjire depind de posibilitățile echipamentului de calcul 
pe  care  sunt  implementați  algoritmii  de  rezolvare  a  metodelor 
numerice.  Aceste  erori  pot  fi  diminuate  dacă  se  utilizează  modul  de 
lucru în dublă precizie. Cu toate acestea, erorile de rotunjire cresc pe 
măsura  creşterii  numărului  de  paşi  de  integrare  datorită  propagării 
erorilor de la un pas la altul. 
Legat  de  erorile  de  propagare,  efectul  lor  este  simțit  mai  ales  la 
metodele  de  tip  predictor‐corector.  Este  important  să  fie  utilizate 
numai metode numeric stabile, la care erorile nu se propagă în mod 
imprevizibil sau chiar nemărginit. 
Pentru  reducerea  erorilor  de  trunchiere  este  recomandată 
micşorarea  pasului  de  integrare,  însă  aceasta  conduce  la  creşterea 
erorii de rotunjire. Pe de altă parte, micşorarea pasului de integrare 
conduce  la  creşterea  numărului  de  paşi,  cu  consecința  imediată  a 
creşterii  timpului  de  calcul.  Deci,  trebuie  căutată  –  ca  o  soluție  de 
compromis – acea valoare a pasului de integrare pentru care erorile 
de calcul (“suma” celor trei tipuri de erori menționate) să fie cât mai 
mici. 
Ținând  seama  legătura  dintre  mărimea  pasului  de  integrare  şi  cea  a 
erorilor  de  calcul,  alegerea  unei  anumite  metode  de  rezolvare 
numerică  a  ecuațiilor  diferențiale  ordinare  reprezintă  o  problemă 
relativ  complexă,  autorii  sugerând  utilizarea  următoarelor 
recomandări: 
™ Dacă se cer rezolvări rapide, atunci se poate alege o metodă 
simplă, de tip Euler, cu un pas de integrare relativ mic, dar cu 
o  valoare  absolută  mult  superioară  celui  mai  mic  număr 
posibil a fi reprezentat în echipamentul de calcul. 
™ Dacă  se  cer  rezolvări  precise  fără  a  fi  important  timpul  de 
calcul, atunci se poate alege metoda Runge‐Kutta de ordinul 
4 datorită avantajelor legate de autopornire. 

157 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 
™ Dacă se cer rezolvări precise fără modificări semnificative ale 
pasului  de  integrare,  atunci  se  poate  alege  metoda  Adams‐
Bashforth‐Moulton  de  ordinul  4  datorită  avantajelor  legate 
de stabilitate numerică. 
™ La  toate  metodele  numerice  utilizate  este  necesară  analiza 
stabilității  numerice  deoarece  toate  trebuie  să  fie  numeric 
stabile.  Dacă  aceasta  nu  poate  fi  efectuată  teoretic,  atunci 
trebuie testată în funcție de aplicație. 
În  afara  recomandărilor  amintite,  alegerea  unei  anumite  metode 
numerice depinde de experiența utilizatorului şi de aplicație. 

8.7. Probleme propuse 
1.  Să  se  rezolve,  aplicând  două  metode  de  soluționare 
numerică,  următoarele  ecuații  diferențiale  ordinare,  apoi  să  se 
compare şi să se discute rezultatele obținute: 
a)  xy ′ − y + x = 0, x ∈ [1; 2], y (1) = 1  ; 
e −1
b)  y ′ + 2 xy = x 3 , x ∈ [0; 1], y (0) =  ; 
2
4
c)  y ′ − y = x y, x ∈ [1; 2], y (1) = 2  ; 
x
d)  y ′ + y 3 = x 2 + 1, x ∈ [0; 1], y (0) = 0  ; 
y
e)  y ′ − = x, x ∈ [1; 2], y (1) = 2  ; 
x
f)  y ′ = y 2 + x 2 + 1, x ∈ [0; 1], y (0) = 0  . 
2.  Să  se  rezolve,  aplicând  două  metode  de  soluționare 
numerică,  următoarele  ecuații  diferențiale  ordinare,  apoi  să  se 
compare şi să se discute rezultatele obținute: 
a)  y ′′ + xy ′ − y + x = 0, x ∈ [1; 2], y (1) = 1, y ′(1) = 0  ; 
e −1
b)  y ′′ + y ′ + 2 xy = x 3 , x ∈ [0; 1], y (0) = , y ′(0) = 0  ; 
2
4
c)  y ′′ − y ′ − y = x y , x ∈ [1; 2], y (1) = 2, y ′(1) = 1  ; 
x
d)  y ′′ − y ′ + y 3 = x 2 + 1, x ∈ [0; 1], y (0) = 0 y ′(0) = 1  ; 

158 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații diferențiale 
ordinare 

y
e)  y ′′ + y ′ = + x, x ∈ [1; 2], y (1) = 2 y ′(1) = 0  ; 
x
f)  y ′′ − y ′ = y 2 + x 2 + 1, x ∈ [0; 1], y (0) = 0 y ′(0) = 1  . 
 

159 

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