Sunteți pe pagina 1din 21

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

neliniare 

 
Cap. 6. REZOLVAREA NUMERICĂ A ECUAȚIILOR ŞI 
SISTEMELOR DE ECUAȚII ALGEBRICE NELINIARE 
 
Se consideră o ecuație având forma generală: 
f(x)=0 ,                (6.1) 
cu f : I ⊂ R → R. În particular, f poate fi polinom sau poate fi adus la o 
formă polinomială, dar de interes sunt şi ecuațiile transcendente. 
Rezolvarea ecuației (6.1) înseamnă găsirea zerourilor funcției f, 
adică a valorilor x = c care satisfac (6.1). 
Metodele  de  rezolvare  numerică  a  ecuațiilor  algebrice 
neliniare se împart în trei categorii: 
a) metode de separare sau localizare a soluțiilor ecuației (6.1), adică 
de izolare a unor subdomenii ale domeniului de definiție I, care să 
conțină câte unul din zerourile funcției f (a se vedea şirul lui Rolle); 
b) metode de determinare, cu o precizie a priori fixată, a unei soluții 
care a fost izolată în prealabil, pornind de la o valoare aproximativă 
a  acesteia,  în  cele  ce  urmează  vor  fi  prezentate  două  astfel  de 
metode,  referite  şi  ca  metode  de  partiționare  a  intervalului  [L1], 
[M3], [N1], [S1]; 
c) metode de determinare a tuturor soluțiilor, aplicabile, de regulă, 
în cazul în care f este un polinom. 
În continuare sunt prezentate elemente legate de noțiunea de 
soluție  aproximativă.  Se  presupune  că  c  este  valoarea  exactă  a  unei 
soluții  a  ecuației  (6.1),  iar  c'  o  valoare  aproximativă  a  acestei  soluții. 
Soluția aproximativă poate fi definită în două moduri: 
1) o valoare x = c' cu proprietatea | c' − c|  < ε x , cu ε x > 0 şi f(c) = 0; 
2) o valoare x = c' cu proprietatea | f(c') | < ε  f , cu ε f > 0 şi f(c) = 0. 
Cele două moduri de definire sunt ilustrate în fig.6.1 şi respectiv fig.6.2. 

90 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

 
Fig.6.1. Soluția aproximativă definită în primul mod. 

 
Fig.6.2. Soluția aproximativă definită în cel de‐al doilea mod. 

6.1.  Metode  de  calcul  al  unei  soluții  reale  a  unei  ecuații 
algebrice neliniare 
Într‐un  număr  mare  de  aplicații  este  necesară  determinarea 
unei  soluții  reale  a  ecuației  (6.1),  separată  în  prealabil  în  intervalul 
[a,b]: 
f(x) = 0,  x ∈ [a, b] .                       (6.1.1) 
În continuare vor fi prezentate două metode de partiționare 
a intervalului. 

91 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 
A.  Metoda  bisecției  (înjumătățirii  intervalului)  este  destinată 
rezolvării  ecuației  (6.1.1),  pentru  care  a  fost  separată  în  prealabil  o 
singură soluție în intervalul [a, b], adică: 
f(a) ⋅ f(b) < 0 .                          (6.1.2) 
Se consideră că f este continuă pe intervalul [a, b], iar soluția 
în cauză va fi determinată cu erorile admise ε  x (pentru soluție) şi ε  f 
(pentru funcție). 
Metoda  se  bazează  pe  faptul  că,  pornind  de  la  intervalul  [a, 
b], la fiecare pas se restrânge domeniul în care se caută soluția prin 
înjumătățirea  intervalului  de  la  pasul  anterior,  până  la  atingerea 
preciziei  dorite.  Metoda  bisecției  este  o  metodă  simplă,  însă  slab 
convergentă (de exemplu, [L1]). 
Algoritmul metodei bisecției este următorul: 
I) Se  inițializează  limitele  intervalului  de  căutare,  “r”  şi  “s”,  cu 
valorile limitelor intervalului în care a fost separată soluția: 
r0 = a ,  s0 = b                          (6.1.3) 
(indicele superior corespunde iterației curente). 
II) La  pasul  de  calcul  k,  k  =  1,  2,  3,  …,  este  determinată  noua 
valoare a soluției: 
r k −1 + s k −1
xk =  .                        (6.1.4) 
2
III) La acelaşi pas k este calculat produsul f(xk) şi f(rk−1), rezultând 
noile limite ale intervalului de căutare: 
‐ dacă  f(x k) ⋅ f(r k−1) < 0, atunci: 
       r k = r k‐1  şi  s k = x k ;                        (6.1.5) 
k k−1
‐ dacă  f(x ) şi f(r ) > 0, atunci: 
       r k = x k  şi  s k = s k−1 ;                       (6.1.6) 
k k−1
‐ dacă  f(x ) şi f(r ) = 0, atunci calculul este terminat şi: 
       c = x k .                          (6.1.7) 
IV) Procesul  de  calcul  este  considerat  terminat  când  sunt 
îndeplinite condițiile (6.1.8) şi / sau (6.1.9): 
|s k − r k| ≤ ε x ;                          (6.1.8) 
|f(x )| ≤ ε f . 
 k
                        (6.1.9) 
În  fig.6.3  este  ilustrată  interpretarea  geometrică  a  metodei 
bisecției. 

92 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

Fig.6.3. Interpretarea geometrică a metodei bisecției. 
Exemplul 6.1: Se consideră ecuația: 
f(x) = 0,  în care  f(x) = 2⋅tg x – 10⋅x + 3 , 
pentru care s‐a separat o soluție în intervalul [–1, 1]. Să se determine 
soluția  ecuației  utilizând  metoda  bisecției,  erorile  admise  fiind  ε  x  = 
10‐3 şi ε f = 10‐2. 
Soluție: Se parcurg etapele metodei bisecției. Astfel: 
I)  Se fac inițializările: 
r  = –1 ,  s0 = 1 ,  |r0 – s0| = 2 . 
0

Iterația k = 1: 
r0 + s0
II) x1 = = 0  ; 
2
III) f(x1) = f(0) = 3 , 
f(r0) = f(–1) = 9.885 , 
f(x1) ⋅ f(r0) > 0   ⇒   r1 = x1 = 0 ,  s1 = s0 = 1 . 
IV)  Se  verifică  dacă  sunt  îndeplinite  condițiile  de  terminare 
(6.1.8) şi (6.1.9): 
|r1 – s1| = 1 > ε x   şi   |f(x1)| = 3 > ε f . 
Condițiile de terminare nefiind îndeplinite, algoritmul se continuă cu: 
Iterația k = 2: 

93 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

r 1 + s1
II) x2 = = 0.5  ; 
2
III) f(x2) = f(0.5) = –0.9074 , 
f(r1) = f(0) = 3 , 
f(x2) ⋅ f(r1) < 0   ⇒   r2 = r1 = 0 ,  s2 = x2 = 0.5 . 
IV) |r2 – s2| = 0.5 > ε x   şi   |f(x2)| = 0.9074 > ε f . 
Se trece la iterația următoare: 
Iterația k = 3: 
r2 + s2
II) x3 = = 0.25  ; 
2
III) f(x3) = f(0.25) = 1.011 , 
f(r2) = f(0) = 3 , 
f(x3) ⋅ f(r2) > 0   ⇒   r3 = x3 = 0.25 ,  s3 = s2 = 0.5 . 
IV) |r3 – s3| = 0.25 > ε x   şi   |f(x3)| = 1.011 > ε f . 
Prin urmare, algoritmul se continuă. 
Iterația k = 4: 
r 3 + s3
II) x4 = = 0.375  ; 
2
III) f(x4) = f(0.375) = 0.037 , 
f(r3) = f(0.25) = 1.011 , 
f(x4) ⋅ f(r3) > 0   ⇒   r4 = x4 = 0.375 ,  s4 = s3 = 0.5 . 
IV) |r4 – s4| = 0.125 > ε x   şi   |f(x4)| = 0.375 > ε f . 
Se  poate  observa  că  erorile  au  scăzut,  însă  nu  suficient  de 
mult pentru ca să fie îndeplinite cele două condiții de terminare. 
Lăsăm cititorului ca exercițiu continuarea algoritmului până la 
îndeplinirea condițiilor (6.1.8) şi (6.1.9). 
B.  O  altă  metodă,  de  regulă  mai  rapid  convergentă  decât  cea 
anterioară, este metoda falsei poziții (cunoscută şi sub denumirile de 
metoda coardei, metoda secantei sau metoda împărțirii intervalului 
în părți proporționale). 
Metoda  se  bazează  pe  faptul  că,  pornind  de  la  intervalul  [a, 
b],  la  fiecare  pas  este  restrâns  domeniul  de  căutare  a  soluției,  prin 
împărțirea  intervalului  de  la  pasul  anterior  în  raportul  valorilor 

94 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 
funcției la  capetele intervalului. Interpretarea geometrică a metodei 
este dată în fig.6.4, în care coarda are ecuația: 
x − a f ( x) − f (a )
=  ,                   (6.1.10) 
b − a f (b) − f (a)

 
Fig.6.4. Interpretarea geometrică a metodei falsei poziții. 
de unde rezultă abscisa punctului de intersecție cu axa Ox: 
a ⋅ f (b) − b ⋅ f (a)
x1 =  .                    (6.1.11) 
f (b) − f (a)
Deci  se  obține  următoarea  formulare  pentru  algoritmul 
metodei falsei poziții: 
I) Se  inițializează  limitele  intervalului  curent  de  căutare,  “r”  şi 
“s”: 
r0 = a ,  s0 = b                       (6.1.12) 
0 0
şi se calculează f(r ) şi f(s ). 
II) La un pas oarecare k, k = 1, 2, 3, …, al procesului iterativ de 
calcul, este calculată noua valoare a soluției: 
r k −1 ⋅ f ( s k −1 ) − s k −1 ⋅ f (r k −1 )
x = k
.                (6.1.13) 
f ( s k −1 ) − f (r k −1 )
III) La acelaşi pas k este calculată valoarea f(x  k), rezultând noile 
limite  ale  intervalului  de  căutare,  r  k  şi  s  k,  conform  relațiilor 
(6.1.5) … (6.1.7), împreună cu valorile funcției f(r k) şi f(s k). 
IV) Calculul este terminat când sunt îndeplinite condițiile (6.1.8) 
şi / sau (6.1.9). 

95 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 
Exemplul 6.2: Se consideră ecuația de la exemplul 9.1. Să se 
rezolve această ecuație utilizând metoda falsei poziții. 
Soluție:  Se  aplică  metoda  falsei  poziții  parcurgând  etapele 
mai sus descrise: 
I) Se fac inițializările: 
r  = –1 ,  s0 = 1 
0

şi se calculează valorile funcției f în r0 şi s0: 
f(r0) = f(–1) = 9.885 ,  f(s0) = f(1) = –3.885 . 
Pentru  k  =  1,  2,  3,  …,  se  repetă  etapele  II)  …  IV),  până  când 
condițiile etapei IV) sunt îndeplinite: 
Iterația k = 1: 
II) Se determină x1 cu formula (6.1.13): 
r 0 ⋅ f ( s 0 ) − s 0 ⋅ f (r 0 ) − (−3.885) − 9.885
x = 1
= = 0.4357 . 
f ( s 0 ) − f (r 0 ) − 3.885 − 9.885
III) Se determină valoarea funcției f în x1: 
f(x1) = f(0.4375) = –0.426 . 
Întrucât f(x1) ⋅ f(r0) < 0, din (6.1.5) rezultă: 
r1 = r0 = –1 ,  s1 = x1 = 0.4357 
şi valorile corespunzătoare ale funcției f: 
f(r1) = f(–1) = 9.855 ,  f(s1) = f(0.4357) = –0.426 . 
IV) Sunt verificate condițiile de terminare a algoritmului: 
|r  – s | = 1.4357 > ε x ,  |f(x1)| = 0.426 > ε f . 
1 1

Se  observă  că  relațiile  (6.1.8)  şi  (6.1.9)  nu  sunt  satisfăcute,  prin 
urmare se trece la iterația următoare. 
Iterația k = 2: 
II) Se determină x2: 
r 1 ⋅ f ( s 1 ) − s 1 ⋅ f (r 1 ) − (−0.426) − 0.4357 ⋅ 9.885
x2 = = =
f ( s 1 ) − f (r 1 ) − 0.426 − 9.885 . 
= 0.3764.
III) Se determină f(x2): 
f(x2) = f(0.3764) = 0.265 . 
Deoarece f(x2) ⋅ f(r1) > 0, din (6.1.6) rezultă: 

96 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 
r2 = x2 = 0.3764 ,  s2 = s1 = 0.4357 . 
f(r2) = f(0.3764) = 0.265 ,  f(s2) = f(0.4357) = –0.426 . 
IV) Sunt verificate condițiile de terminare a calculelor: 
|r  – s | = 0.0587 > ε x ,  |f(x2)| = 0.265 > ε f . 
2 2

Relațiile  (6.1.8)  şi  (6.1.9)  nefiind  satisfăcute,  se  trece  la  iterația 
următoare. 
Se  poate  observa  că  erorile  au  scăzut  semnificativ,  scăderea 
lor fiind mai rapidă decât în cazul metodei bisecției, însă încă nu s‐a 
ajuns  la  îndeplinirea  condițiilor  de  terminare  a  calculelor.  Prin 
urmare,  algoritmul  se  continuă.  Se  lasă  ca  exercițiu  pentru  cititor 
continuarea  algoritmului  până  la  obținerea  soluției  aproximative 
dorite. 

6.2. Generalități privind soluționarea numerică a sistemelor de 
ecuații algebrice neliniare 
  Un sistem de ecuații algebrice neliniare de ordinul n poate fi 
adus întodeauna la forma implicită: 
⎧ f 1 ( x1 , x 2 , K , x n ) = 0
⎪ f (x , x ,K, x ) = 0
⎪ 2 1 2 n
⎨  ,                   (6.2.1) 
⎪ L
⎪⎩ f n ( x1 , x 2 , K , x n ) = 0
în  care  funcțiile  reale  f1,  f2,  …,  fn,  de  variabile  x1,  x2,  …,  xn,  sunt 
continue pe domeniul de interes. 
Prin introducerea notațiilor matriceale: 
⎡ x1 ⎤ ⎡ f1 ⎤
⎢x ⎥ ⎢f ⎥
x= ⎢ 2⎥
,   f = ⎢ ⎥  ,   
2
                  (6.2.2) 
⎢ ... ⎥ ⎢ ... ⎥
⎢ ⎥ ⎢ ⎥
⎣xn ⎦ ⎣ fn ⎦
sistemul poate fi exprimat sub următoarea formă compactă: 
f (x) = 0  ,  f : D ⊂ R n → R n .                    (6.2.3) 
Pot fi utilizate şi forme intermediare exprimate astfel: 
f i (x) = 0, i = 1, n  .                      (6.2.4) 

97 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

Determinarea  unei  soluții  a  sistemului  (6.2.1)  înseamnă 


găsirea unui set de valori: 
⎡ c1 ⎤
⎢c ⎥
c = ⎢ 2 ⎥  ,                        (6.2.5) 
⎢ ... ⎥
⎢ ⎥
⎣c n ⎦
care satisfac (6.2.1), adică f(c) = 0. 
Metodele numerice implicate în acest proces de soluționare 
se împart în două categorii: 
I. metode de separare a unei / unor soluții de interes; 
II. metode  de  determinare,  cu  o  precizie  fixată  a  priori,  a  unei 
soluții separate în prealabil. 
În cea de‐a doua categorie se încadrează următoarele: 
a) metode  bazate  pe  exprimarea  explicită  echivalentă  a 
ecuațiilor  sistemului  (6.2.1),  numite  metode  de  aproximații 
succesive; 
b) metode  care  utilizează  derivatele  parțiale  ale  funcțiilor  fi, 
numite metode de tip Newton; 
c) metode de descreştere sau de coborâre sau de gradient. 
În cele ce urmează vor fi tratate metodele de la punctele a) şi b). 

6.3.  Metode  bazate  pe  exprimarea  explicită  echivalentă  a 


ecuațiilor sistemului 
Se  consideră  sistemul  (6.2.1)  şi  se  cere  să  se  determine  o 
soluție c a acestui sistem, soluție care a fost separată în prealabil în 
n
domeniul  D = ∏ [a , b ] ⊂ R
i =1
i i
n
, cu erorile maxim admise εx (pentru 

valorile variabilelor) şi εf (pentru valorile funcțiilor). 
Metodele  se  bazează  pe  înlocuirea  exprimărilor  implicite 
(6.2.1) ale ecuațiilor sistemului cu exprimările explicite echivalente: 

98 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

⎧ x1 = g 1 ( x1 , x 2 , K , x n )
⎪x = g (x , x ,K, x )
⎪ 2 2 1 2 n
⎨  ,                    (6.3.1) 
⎪ L
⎪⎩ x n = g n ( x1 , x 2 , K , x n )

în care funcțiile  g i , i = 1, n , sunt continue în domeniul în care a fost 
separată soluția. 
Notând: 
⎡ g1 ⎤
⎢g ⎥
g = ⎢ 2 ⎥  ,                        (6.3.2) 
⎢ ... ⎥
⎢ ⎥
⎣g n ⎦
se obține exprimarea matriceală: 
x = g (x) , x ∈ D ⊂ R n  ,                    (6.3.3) 
cu forma intermediară: 
x i = g i (x), i = 1, n  .                      (6.3.4) 
Exprimările  explicite  sunt  întotdeauna  posibile  şi,  în  plus, 
uneori sunt posibile mai multe variante. 
În  cadrul  acestor  metode,  este  prezentat  în  continuare 
algoritmul metodei aproximațiilor succesive în versiunea Jacobi: 
I) Se  inițializează  x  cu  x0  ∈  D  (indicele  superior  se  referă  la 
iterația curentă): 
⎡ x10 ⎤
⎢ 0⎥
x
x = ⎢ 2 ⎥  . 
0
                      (6.3.5) 
⎢ ... ⎥
⎢ 0⎥
⎢⎣ x n ⎥⎦
II) La un pas oarecare k, k = 1, 2, 3, …, al procesului iterativ de 
calcul, sunt determinate noile valori ale variabilelor: 
x ik = g i ( x1k −1 , x 2k −1 , K , x nk −1 ) , i = 1, n  .                (6.3.6) 
III) Calculul  este  terminat  atunci  când  sunt  îndeplinite  condițiile 
(ambele sau una dintre acestea): 

99 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

xik − xik −1 ≤ ε x , i = 1, n  ,                    (6.3.7) 

f i (x k ) ≤ ε f , i = 1, n  .                      (6.3.8) 
Condițiile de convergență sunt: 

∂g i (x)
< 1 , i, j = 1, n  .                    (6.3.9) 
∂x j
Metoda  aproximațiilor  succesive  în  versiunea  Gauss‐Seidel 
diferă de cea anterioară prin relația (6.3.6), care devine: 
x ik = g i ( x1k , x 2k , K , x ik−1 , x ik −1 , K , x nk −1 ) , i = 1, n  ,            (6.3.10) 
adică apar valorile “noi” ale variabilelor care au fost recalculate deja 
la iterația k. 
Exemplul 6.3 [P1]: Să se rezolve sistemul algebric neliniar: 
⎧2 x12 − x 2 x 3 − 5 x1 + 1 = 0
⎪ 2
⎨ x 2 − 2 x1 − ln x 3 = 0  , 
⎪ 2
⎩ x 3 − x1 x 2 − 2 x 3 − 8 = 0
cu metoda Gauss‐Seidel, cu erorile maxime admise εx = 0,001 şi εf = 
0,1, cunoscând că s‐a separat o soluție în domeniul D = [0; 10] × [0; 
10] × [1; 10]. 
Soluție:  Se  începe  cu  rescrierea  sistemului  într‐o  formă  cu 
exprimarea explicită a variabilelor, de forma (6.3.1): 
⎧ x1 = 0.5 ⋅ ( x 2 x 3 + 5 x1 − 1)
⎪⎪
⎨ x 2 = 2 x1 + ln x 3  . 

⎪⎩ x 3 = x1 x 2 + 2 x 3 + 8
Iterația k = 0: 
⎡10⎤
I)
⎢ ⎥
Se inițializează x, de exemplu cu  x = 10  .  0
⎢ ⎥
⎢⎣10⎥⎦
Valorile  funcțiilor  f1,  f2  şi  f3  pentru  valorile  inițiale  ale  variabilelor 
sunt: 
f1(x0) = 2⋅102 – 10⋅10 – 5⋅10 + 1 = 51 , 

100 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

f2(x0) = 102 – 2⋅10 – ln 10 = 77.7 , 
f3(x0) = 102 – 10⋅10 – 2⋅10 – 8 = –28 . 
Observație: Inițializarea se poate face şi cu alte valori şi se pot 
urmări efectele asupra evoluției convergenței procesului de calcul în 
funcție de aceste valori inițiale. 
Iterația k = 1: 
II) Se utilizează formulele (6.3.10): 

x11 = 0.5 ⋅ ( x20 ⋅ x30 + 5 ⋅ x10 − 1) = 0.5 ⋅ (10 ⋅10 + 5 ⋅10 − 1) =


 
= 8.631 ,

x 12 = 2 ⋅ x11 + ln x 30 = 2 ⋅ 8.631 + ln 10 = 4.423  , 

x 31 = x11 ⋅ x 12 + 2 ⋅ x 30 + 8 = 8.631 ⋅ 4.423 + 2 ⋅ 10 + 8 = 8.135  . 


III) Se calculează erorile: 
| x11 − x10 | = |8.631 – 10| = 1.369 > ε x , 

| x12 − x20 | = |4.423 – 10| = 5.577 > ε x , 


| x13 − x30 | = |8.135 – 10| = 1.865 > ε x . 
|f1(x1)| = 70.86 > ε f , 
|f2(x1)| = 0.206 > ε f , 
|f3(x1)| = 3.73 > ε f . 
Întrucât condițiile de terminare a calculelor nu sunt îndeplinite, este 
necesară continuarea algoritmului cu iterația următoare: 
Iterația k = 2: 
II) Se calculează x2 utilizând formulele (6.3.10): 

x12 = 0.5 ⋅ ( x12 ⋅ x31 + 5 ⋅ x11 − 1) = 0.5 ⋅ (4.423 ⋅ 8.135 + 5 ⋅ 8.631 − 1) =


= 6.251 ,
x 22 = 2 ⋅ x12 + ln x 31 = 2 ⋅ 6.251 + ln 8.135 = 3.821  , 

x 32 = x12 ⋅ x 22 + 2 ⋅ x 31 + 8 = 6.251 ⋅ 3.821 + 2 ⋅ 8.135 + 8 = 6.939  . 


III) Se determină erorile: 

101 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

| x12 − x11 | = |6.251 – 8.631| = 2.38 > ε x , 


| x22 − x12 | = |3.821 – 4.423| = 0.602 > ε x , 
| x32 − x13 | = |6.939 – 8.135| = 1.196 > ε x . 
|f1(x2)| = 21.4 > ε f , 
|f2(x2)| = 0.16 > ε f , 
|f3(x2)| = 2.39 > ε f . 
Se  poate  vedea  că  erorile  au  scăzut,  dar  nu  sunt  încă  îndeplinite 
condițiile de terminare a procesului de calcul. 
Etapele II) şi III) ale algoritmului se repetă pentru k = 3, 4, …, 
12. 
Iterația k = 13: 
II) Se calculează x13: 

x113 = 0.5 ⋅ ( x12


2 ⋅ x3 + 5 ⋅ x1 − 1) =
12 12

 
= 0.5 ⋅ (3.292 ⋅ 5.89 + 5 ⋅ 4.531 − 1) = 4.53 ,

2 =
x 13 2 ⋅ x113 + ln x 312 = 2 ⋅ 4.53 + ln 5.89 = 3.291  , 

x313 = x113 ⋅ x13


2 + 2 ⋅ x3 + 8 =
12
4.53 ⋅ 3.291 + 2 ⋅ 5.89 + 8 =
 
= 5.89 .
III) Se determină erorile: 
| x113 − x112 | = |4.53 – 4.531| = 0.001 ≤ ε x , 

2 − x2 | = |3.291 – 3.292| = 0.001 ≤ ε x , 
| x13 12

3 − x3 | = |5.89 – 5.89| = 0 ≤ ε x . 
| x13 12

|f1(x13)| = 0.008 ≤ ε f , 
|f2(x13)| = 0.003 ≤ ε f , 
|f3(x13)| = 0.004 ≤ ε f . 
Întrucât erorile calculate sunt mai mici sau cel mult egale cu 
erorile maxim admisibile, algoritmul este oprit. 

102 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

În  concluzie,  a  fost  obținută  soluția  aproximativă 


⎡ 4.43 ⎤
x = ⎢⎢3.291⎥⎥  . 
⎢⎣ 5.89 ⎥⎦

6.4. Metode de tip Newton 
În  versiunea  clasică  a  metodei  lui  Newton  sunt  utilizate 
explicit derivatele parțiale de ordinul I ale funcțiilor  f i (x), i = 1, n . 
Se presupune că s‐a ajuns la pasul k al procesului iterativ de 
calcul,  ultima  valoare  aproximativă  a  soluției  fiind  xk−1.  Se  doreşte 
determinarea unei corecții hk  −1 care, adăugată la xk−1, să conducă la 
soluția exactă c: 
c = xk−1 + hk −1 .                        (6.4.1) 
Dezvoltând  în  serie  Taylor  funcțiile  f i (x), i = 1, n ,  în 
vecinătatea lui xk −1, rezultă: 
f i (c) = 0 ⇔ f i (x k −1 + h k −1 ) = 0 ⇔
∂f i (x k −1 ) k −1 ∂f i (x k −1 ) k −1 ∂f (x k −1 ) k −1
f i (x k −1 ) + h1 + h2 + L + i hn +  
∂x1 ∂x2 ∂xn
+ L = 0 , i = 1, n .
                        (6.4.2) 
Dacă din această dezvoltare sunt reținuți doar termenii care 
conțin  derivatele  de  ordinul  I  (restul  termenilor,  cu  derivatele  de 
ordin superior, sunt neglijați), atunci poate fi aproximată acea valoare 
a lui hk −1 care nu va mai conduce la soluția exactă c, ci la noua valoare 
aproximativă  xk  a  soluției  (evident,  mai  bună  decât  xk−1,  în  cazul 
convergenței).  Prin  urmare,  relațiile  (6.4.2)  conduc  la  sistemul  liniar 
de ordinul n în necunoscutele  h1k −1 , h2k −1 , K , hnk −1 : 

103 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

⎧ ∂f 1 k −1 ∂f 1 k −1 ∂f 1 k −1 k −1
⎪ ∂x h1 + ∂x h2 + L + ∂x hn = − f 1 (x )
⎪ 1 2 n

⎪ ∂f 2 k −1 ∂f 2 k −1 ∂f
⎪ h1 + h2 + L + 2 hnk −1 = − f 2 (x k −1 )
⎨ ∂x1 ∂x 2 ∂x n  ,              (6.4.3) 
⎪L

⎪ ∂f n k −1 ∂f n k −1 ∂f n k −1 k −1
⎪ ∂x h1 + ∂x h2 + L + ∂x hn = − f n (x )
⎩ 1 2 n

unde toate derivatele sunt calculate în xk−1. 
Introducând matricea Jacobian: 
⎡ ∂f 1 ∂f 1 ∂f 1 ⎤
⎢ ∂x L
∂x 2 ∂x n ⎥
⎢ 1 ⎥
⎢ ∂f 2 ∂f 2
L
∂f 2 ⎥
J k −1 = ⎢ ∂x ∂x 2 ∂x n ⎥  ,                  (6.4.4) 
⎢ L1 L L L⎥
⎢ ∂f ∂f n ∂f n ⎥
⎢ n L ⎥
⎢⎣ ∂x1 ∂x 2 ∂x n ⎥⎦
sistemul (6.4.3) poate fi rescris sub forma restrânsă: 
J k −1 ⋅ h k −1 = −f k −1  .                      (6.4.5) 
Prin  urmare,  algoritmul  versiunii  clasice  a  metodei  lui 
Newton este: 
I) Se  inițializează  x  cu  x0  ∈  D  (indicele  superior  corespunde 
iterației curente). 
II) La  un  pas  oarecare  k,  k  =  1,  2,  …,  al  procesului  iterativ  de 
calcul,  se  calculează  elementele  vectorului  f  k−1  şi  matricea  J 
k−1
 pentru x = xk−1. 
III) La acelaşi pas se rezolvă sistemul (6.4.5) şi se determină noile 
valori ale variabilelor: 
x k = x k −1 + h k −1  .                      (6.4.6) 
IV) Calculul este terminat când sunt îndeplinite condițiile (6.4.7) 
şi / sau (6.4.8): 
hik −1 ≤ ε x , i = 1, n  ,                      (6.4.7) 

104 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

f i (x k ) ≤ ε f , i = 1, n  .                    (6.4.8) 

Exemplul 6.4: Să se rezolve sistemul de ecuații din exemplul 
6.3 utilizând metoda clasică a lui Newton, cu erorile maxim admise εx 
= 0.01 şi εf = 0.1, cunoscând că a fost separată o soluție în domeniul D 
= [0; 10] × [0; 10] × [1; 10]. 
Soluție: Se parcurg etapele enumerate anterior: 
⎡10⎤
I)
⎢ ⎥
Se face inițializarea:  x = 10  . 
0
⎢ ⎥
⎢⎣10⎥⎦
Iterația k = 1: 
II) Se calculează elementele vectorului f 0 = f(x0): 
⎡2( x10 ) 2 − x 20 x 30 − 5 x10 + 1⎤ ⎡ 51 ⎤
⎢ ⎥
f 0 = ⎢ ( x 20 ) 2 − 2 x10 − ln x 30 ⎥ = ⎢⎢77.697⎥⎥  
⎢ ( x 30 ) 2 − x10 x 20 − 2 x 30 − 8 ⎥ ⎢⎣ − 28 ⎥⎦
⎣ ⎦
şi elementele matricei Jacobian: 
⎡4 x10 − 5 − x 30 − x 20 ⎤ ⎡ 35 − 10 − 10 ⎤
⎢ 1 ⎥⎥ ⎢
J = ⎢ −2
0
2 x 20 − 0 = ⎢ − 2 20 − 0.1⎥⎥  . 
⎢ x3 ⎥
⎢− 10 − 10 18 ⎥⎦
⎢ − x0
⎣ 2 − x10 2 x 3 − 2⎥⎦ ⎣
0

III) Sistemul (6.4.5) devine: 
⎧35h10 − 10h20 − 10h30 = −51

⎨− 2h1 + 20h2 − 0,1h3 = −77.697  . 
0 0 0


⎩− 10h1 − 10h2 + 18h3 = 28
0 0 0

⎡ − 3.445⎤
⎢ ⎥
Rezolvând sistemul de mai sus, se obține:  h = − 4.243  . 0
⎢ ⎥
⎢⎣− 2.716⎥⎦

105 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

⎡6.555⎤
⎢ ⎥
Deci, noile valori ale lui x sunt:  x 1 = x 0 + h 0 = 5.757  . 
⎢ ⎥
⎢⎣7.284⎥⎦
IV) Întrucât | h10 | = |3.445| > εx , | h20 | = |4.243| > εx , | h30 | = |2.716| > 
εx , rezultă că nu sunt îndeplinite condițiile de terminare a calculelor. 
Prin urmare, algoritmul se continuă cu iterația următoare: 
Iterația k = 2: 
II) Se  calculează  elementele  vectorului  f  1  =  f(x1)  şi  ale  matricei 
Jacobian: 
⎡2( x11 ) 2 − x 12 x 31 − 5 x11 + 1⎤ ⎡ 12.227 ⎤
⎢ ⎥
f 1 = ⎢ ( x 12 ) 2 − 2 x11 − ln x 31 ⎥ = ⎢⎢ 18.047 ⎥⎥  , 
⎢ ( x 31 ) 2 − x11 x 12 − 2 x 31 − 8 ⎥ ⎢⎣− 7.248⎥⎦
⎣ ⎦
⎡4 x11 − 5 − x 31 − x 12 ⎤ ⎡ 21.22 − 7.284 − 5.757 ⎤
⎢ 1 ⎥
J1 = ⎢ − 2 2 x 12 − 1 ⎥ = ⎢⎢ − 2 11.514 − 0.137⎥⎥  . 
⎢ x3 ⎥
⎢− 5.757 − 6.555 12.568 ⎥⎦
⎢ − x1
⎣ 2 − x11 2 x 3 − 2⎥⎦ ⎣
1

III) Sistemul (6.4.5) este particularizat sub forma: 
⎧21.22h11 − 7.284h21 − 5.757 h31 = −12.227

⎨− 2h1 + 11.514h2 − 0.137 h3 = −18.047  . 
1 1 1


⎩− 5.757 h1 − 6.555h2 + 12.568h3 = 7.248
1 1 1

⎡ − 1.498⎤
⎢ ⎥
Rezolvând sistemul rezultă:  h 1 = − 1.84  . 
⎢ ⎥
⎢⎣− 1.069⎥⎦

⎡5.057 ⎤
⎢ ⎥
Noile valori ale lui x sunt:  x 2 = x 1 + h 1 = 3.917  . 
⎢ ⎥
⎢⎣6.215⎥⎦
IV) Se poate observa că | h11 | = |1.498| > εx, | h21 | = |1.84| > εx, | h31 | = 
|1.069| > εx, deci calculele se continuă cu iterația următoare. 

106 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 

Lăsăm  ca  exercițiu  cititorului  continuarea  algoritmului,  până 


când condițiile de terminare sunt satisfăcute. 
Există diverse versiuni ale metodei lui Newton, încercându‐se 
eliminarea determinării derivatei (de exemplu, [M3], [N1]). 

6.5. Aplicații în Matlab 
În Matlab este implementată o variantă a metodei bisecției 
sub  forma  funcției  fzero,  cu  sintaxa  următoare  (în  forma  cea  mai 
simplă): 
x = fzero(’func’,x0)
unde  func  reprezintă  numele  unei  funcții  definite  de  utilizator  şi 
corespunzătoare  membrului  stâng  al  ecuației  (6.1)  sau  sistemului 
(6.2.1), x0 este o aproximare inițială a soluției şi x reprezintă soluția, 
care  poate  fi  scalar  sau  vector  după  cum  se  rezolvă  o  ecuație 
respectiv un sistem. 
  Sintaxa  funcției  fzero  poate  fi  complicată,  prin  introducerea 
unor opțiuni (care controlează inclusiv precizia) conform [P2]. 
  În cele ce urmează este ilustrată aplicarea funcției fzero. 
Exemplul 6.5: Să se rezolve ecuația: 
x
e  – sin(πx) – 3 = 0, 
utilizând funcția fzero. 
Soluție:  Pentru  început  este  definită  funcția  Matlab  f65 
(fişierul f65.m): 
function f=f65(x);
f=exp(x)-sin(pi*x)-3;
Apoi, este aplicată funcția fzero: 
x=fzero(’f65’,0)
Zero found in the interval: [-1.28, 1.28].
x =
1.0476
A fost obținută, deci, soluția aproximativă: x = 1.0476. 
  În  continuare  va  fi  definită  o  funcție  Matlab,  denumită 
newton  (fişierul  Matlab  newton.m)  pentru  implementarea 
algoritmului  versiunii  clasice  a  metodei  lui  Newton  (a  se  vedea 
subcapitolul 6.4): 
function [sol,iter]=newton(func,dfunc,x0,eps)

107 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 
% functie pentru rezolvarea ecuatiei f(x)=0 cu
% versiunea clasica a metodei Newton
% parametri:
% func - functie definita de utilizator f(x)
% dfunc - functie definita de utilizator
% df(x)/dx
% x0 - aproximatie initiala a solutiei
% eps - precizia
% sol - solutia
% iter - numarul de iteratii
%
% initializari:
iter=0;
x=x0;
aa=feval(func,x)/feval(dfunc,x);
% iteratii:
while abs(aa)>eps,
x1=x-aa;
iter=iter+1;
x=x1;
aa=feval(func,x)/feval(dfunc,x);
end;
% solutia:
sol=x;
  În continuare este examplificată aplicarea funcției newton. 
Exemplul  6.6:  Să  se  găsească  o  soluție  aproximativă  a 
următoarei ecuații: 
2
⎛ y⎞
⎜ ⎟ − sin( y ) − 0.5 = 0  , 
⎝4⎠
situată  în  intervalul  (–1,  1)  ,  prin  versiunea  clasică  a  metodei  lui 
Newton. 
Soluție:  Rezolvarea  începe  cu  definirea  funcțiile  Matlab  f66 
(fişierul  f66.m)  pentru  membrul  stâng  al  ecuației  şi  df66  (fişierul 
df66.m) pentru derivata membrului stâng al ecuației: 
function f=f66(x);
f=(x/4)^2-sin(x)-0.5;
function f=df66(x);
f=x/2-cos(x);

108 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 
Urmează aplicarea funcţiei Matlab newton prezentate anterior:
[sol,iter]=newton('f66','df66',0.5,0.001)
sol =
-0.5059
iter =
5
  Prin urmare, a fost obținută soluția aproximativă x = –0.5059, 
după 5 iterații. 
  Pentru  rezolvarea  numerică  a  ecuațiilor  şi  sistemelor  de 
ecuații  algebrice  neliniare  sunt  disponibile  şi  alte  funcții  Matlab  în 
toolbox‐uri  specifice  diverselor  aplicații.  Spre  exemplu,  în 
Optimization  Toolbox  este  disponibilă  funcția  fsolve,  care 
implementează algoritimi bazați pe metoda celor mai mici pătrate. 

6.6. Rezumat 
Metodele  de  rezolvare  numerică  a  ecuațiilor  algebrice  neliniare  se 
împart în trei categorii: 
™ metode de separare (localizare) a soluțiilor, adică de izolare a 
unor subdomenii ale domeniului de definiție care să conțină 
câte unul din zerourile funcției; 
™ metode  de  determinare,  cu  o  precizie  a  priori  fixată,  a  unei 
soluții care a fost izolată în prealabil (metode de partiționare 
a  intervalului),  pornind  de  la  o  valoare  aproximativă  a 
acesteia; 
™ metode  de  determinare  a  tuturor  soluțiilor,  aplicabile,  de 
regulă, în cazul în care funcția este un polinom. 
Metoda bisecției se bazează pe faptul că, pornind de la intervalul în 
care a fost separată în prealabil o soluție, la fiecare pas se restrânge 
domeniul în care se caută soluția prin înjumătățirea intervalului de la 
pasul anterior, până la atingerea preciziei dorite. Metoda este simplă, 
însă slab convergentă. 
Metoda  falsei  poziții  (metoda  coardei,  metoda  secantei,  metoda 
împărțirii intervalului în părți proporționale) se bazează pe faptul că, 
pornind de la intervalul în care a fost separată în prealabil o soluție, la 
fiecare  pas  este  restrâns  domeniul  de  căutare  a  soluției,  prin 
împărțirea  intervalului  de  la  pasul  anterior  în  raportul  valorilor 
funcției  la  capetele  intervalului.  Metoda  falsei  poziții  este  de  regulă 
mai rapid convergentă decât metoda bisecției. 
Metodele  numerice  utilizqte  în  soluționarea  sistemelor  de  ecuații 
algebrice neliniare se împart în două categorii: 

109 
Rezolvarea numerică a ecuațiilor şi sistemelor de ecuații algebrice 
neliniare 
™ metode de separare a unei / unor soluții de interes; 
™ metode  de  determinare,  cu  o  precizie  fixată  a  priori,  a  unei 
soluții separate în prealabil, împărțite în trei clase: 
 ‐  metode  bazate  pe  exprimarea  explicită 
echivalentă  a  ecuațiilor  sistemului,  numite  metode 
de aproximații succesive, exemple: variantele Jacobi 
şi Gauss‐Seidel, 
 ‐  metode  care  utilizează  derivatele  parțiale  ale 
funcțiilor, numite metode de tip Newton, 
 ‐ metode de descreştere (de coborâre, de gradient). 

6.7. Probleme propuse 
1. Pentru următoarele ecuații să se efectueze câte trei iterații 
în  cazul  a  două  metode  de  rezolvare  numerică.  Erorile  admise  sunt 
ε x = 10 −3  şi  ε f = 10 −2 . Să se compare rezultatele obținute: 

x −1 x
a)  x = 4 + 3  ,  x ∈ [4, 5]  ;       b)  = 1  ,   x ∈ [3, 4]  ; 
x +1 2+4 x
c)  x 3 − x − 2 = 0  ,   x ∈ [1, 2]  ;        d)  x 2 = sin x  ,   x ∈ [0.7, 1]  ; 
x +1
e)  arcsin = x  ,   x ∈ [0, 1.5]  ;  f)  x 5 + 5 x + 1 = 0  ,   x ∈ [− 1, 0]  ; 
4
g)  x 3 + x = 1000  ,  x ∈ [9, 10]  ; 
h)  arctgx + acrtg10 x = 0.75  ,  x ∈ [0, 1] . 
2.  Să  se  efectueze  câte  două  iterații  ale  metodei  Newton  în 
cazul  rezolvării  următoarelor  sisteme.  Erorile  admise  sunt 
ε x = 0.01, ε f = 0.1 . 

⎧⎪ x17 − 5 x12 x 24 + 1510 = 0,


a)  ⎨    (x1 , x 2 ) ∈ [1.5, 2.5] × [2.5, 3.5]  ; 
⎪⎩ x 25 − 3 x14 = 105,
⎧ x1 + x12 − 2 x 2 x 3 = 0.1, ⎡0⎤
⎪ ⎢ ⎥
b)  ⎨ x 2 − x 22 + 3 x1 x 3 = −0.2,    x 0 = 0  . 
⎢ ⎥
⎪ ⎢⎣0⎥⎦
⎩ x 3 + x 3 + 2 x1 x 2 = 0.3,
2

110 

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