Sunteți pe pagina 1din 16

83

Capitolul 3
REZOLV AR E A N UM ERIC Ă A E C U AŢ IILO R NELI NI ARE  I A
SISTEM ELOR DE ECU AŢII NELI NI AR E

Acest capitol este dedicat exemplificării celor mai uzuale metode numerice de rezolvare
a ecuaţiilor neliniare cu o singură necunoscută şi a sistemelor de ecuaţii neliniare cu
coeficienţi reali. Mai precis, este vorba despre aflarea numerică a soluţiilor reale ale acestora.
Clasa ecuaţiilor neliniare include acele ecuaţii care nu sunt liniare, dintre care obiectul
acestui capitol îl formează ecuaţiile algebrice (rezultate din anularea unei funcţii polinomiale)
şi cele transcendente (ecuaţiile la care necunoscuta nu este separabilă, deci nu există o
formulă analitică de rezolvare), precum şi sistemele formate din astfel de ecuaţii.
Calea numerică este în multe cazuri singura cale de rezolvare a ecuaţiilor şi sistemelor
neliniare. Marea majoritate a acestor metode numerice sunt iterative, ceea ce înseamnă că ele
construiesc un şir de numere care trebuie să conveargă către soluţie. Alegerea primului număr
din şir (soluţia iniţială) este în general arbitrară şi ea influenţează viteza de convergenţă
(uneori, chiar caracterul de convergenţă/divergenţă al metodei este influenţat). Există variante
ale diferitelor metode care propun un anume mod de alegere a punctului de start al procesului
iterativ, pentru creşterea vitezei de convergenţă.

3.1 Rezolvarea numerică a ecuaţiilor algebrice şi transcendente

În principiu, intervalele de existenţă ale soluţiilor reale ale ecuaţiilor neliniare se pot
determina mai mult sau mai puţin precis, fie analitic (cu ajutorul metodelor analizei
matematice), fie numeric [POPO 92], [PĂVĂ 81]. Această operaţiune se numeşte separarea
soluţiilor; aflarea tuturor soluţiilor reale se reduce astfel la determinarea uneia singure.
f ( x) f (a) ⋅ f (b) < 0
f ( a ) ⋅ f (c ) < 0
f (a)
f (c ) ⋅ f ( d ) < 0
⋅⋅⋅
a+b
c=
f (d ) 2
(pas 1) b x
0
a
a+c
f (c ) d=
f (b) 2
(pas 2)

Fig. 3.1 Metoda bisecţiunilor succesive

Una dintre cele mai simple metode de rezolvare a ecuaţiilor algebrice şi transcendente
este metoda bisecţiunilor succesive, folosită atunci când se ştie că o ecuaţie f(x)=0 are o
singură soluţie reală într-un anume interval.
84 Metode numerice utilizate în analiza sistemelor – aplicaţii

Principiul utilizat este simplu. Se ştie, deci, că funcţia f are variaţie de semn pe un
interval notat [a;b] (mai mult, se presupune că există o singură astfel de variaţie). Se notează
cu c abscisa mijlocului intervalului [a;b], c = ( a + b ) 2 . Dacă există variaţie de semn pe
intervalul [a;c], atunci căutarea se va efectua în continuare în acest interval; dacă nu, atunci
căutarea va continua în intervalul [c;b]. Se continuă cu înjumătăţirea noului interval, până
când lungimea intervalului curent de căutare devine mai mică decât o precizie impusă. Viteza
de convergenţă a metodei (timpul de obţinere a soluţiei) depinde de precizia impusă şi,
evident, de lungimea intervalului de căutare. Procesul iterativ de înjumătăţire a intervalului
este ilustrat în figura 3.1.
Mai jos este listat codul Matlab al unei funcţii de implementare a metodei bisecţiunilor
succesive, care primeşte ca argumente de intrare capetele intervalului iniţial, a şi b, şi precizia
dorită în determinarea soluţiei (prec), şi întoarce ca rezultat soluţia (x) şi numărul de iteraţii
care au fost necesare pentru obţinerea ei (nrit).
function [x,nrit]=bissuc(a,b,prec)
%METODA BISECŢIUNILOR SUCCESIVE, de rezolvare a unei ecuaţii algebrice sau
%transcendente, despre care se ştie că are o SINGURĂ SOLUŢIE într-un interval dat, [a;b]
if (f(a)*f(b))<=0,
if f(a)==0,
x=a;
elseif f(b)==0,
x=b;
else
nrit=0;
while abs(a-b)>prec,
c=(a+b)/2;
if f(c)==0,
x=c;
elseif f(a)*f(c)<0,
b=c;
else a=c;
end;
x=(a+b)/2;
nrit=nrit+1;
end;
end;
else
s=sprintf('In [%6.3f;%6.3f] nu e o singura solutie.',a,b);
disp(s);
x=20000;
nrit=0;
end;
Funcţia bissuc de mai sus apelează funcţia Matlab f, care implementează funcţia
matematică f, a cărei anulare a generat ecuaţia de rezolvat. De exemplu, dacă se rezolvă
ecuaţia e x − 5 x = 0 , atunci conţinutul funcţiei f este:
3. Rezolvarea numerică a ecuaţiilor neliniare şi a sistemelor de ecuaţii neliniare 85

function [y]=f(x)
y=exp(x)-5*x;
Trasarea graficului funcţiei permite separarea celor două soluţii reale, x1* şi x*2
(figura 3.2).
y

f(x)=ex–5x

f(0)>0
1
x*2 x
0
f(1)<0 x1*

Fig. 3.2 Graficul unei funcţii a cărei anulare conduce la o ecuaţie transcendentă

Funcţia f are schimbare de semn, de exemplu, în intervalul [0;1]. Apelul de aflare a


soluţiei din acest interval a ecuaţiei f(x)=0 poate fi, deci, de forma
[sol,nrit]=bissuc(0,1,1e-6), ceea ce are drept ecou la ecran:
sol =
0.25917100906372

nrit =
20
Observaţie:
Dacă se vrea rezolvarea unei alte ecuaţii folosind funcţia bissuc, atunci trebuie
modificat fie conţinutul funcţiei f, fie trebuie scrisă o altă funcţie, f1, care să fie apelată de
bissuc (trebuie modificat şi conţinutul funcţiei bissuc). O soluţie mai elegantă ar fi
adăugarea încă a unui argument de intrare funcţiei bissuc, de tip şir de caractere, care să
reprezinte numele funcţiei de apelat, de exemplu nume_f. Ca urmare, fiecare apel de tip
f(x) din bissuc va fi înlocuit de feval(nume_f,x).
O altă metodă iterativă este metoda Newton (metoda tangentei). În acest caz, soluţia este
limita şirul de iteraţii dat prin formula recurentă:
f ( xk )
(3.1) xk +1 = xk − , k=0,1,2…
f ' ( xk )

unde f(x)=0 este ecuaţia de rezolvat. Pentru convergenţa şirului de iteraţii (3.1) este suficient
ca f’(x)≠0 şi f”(x)≠0 într-o vecinătate a soluţiei, iar punctul de start, x0, să fie ales astfel încât
f ( x0 ) ⋅ f "( x0 ) > 0 . Evident, condiţia de oprire a iterării este ca modulul diferenţei dintre
două iteraţii succesive, xk +1 − xk , să fie mai mic decât o precizie impusă. Reprezentarea
grafică a procesului iterativ pentru cazul unei funcţii descrescătoare şi concave este
prezentată în figura 3.3, unde cele două cazuri evidenţiază influenţa alegerii punctului de
start, x0, asupra vitezei de convergenţă (în cazul b convergenţa este mai lentă decât în
cazul a).
86 Metode numerice utilizate în analiza sistemelor – aplicaţii

f ( x) f ( x)
− f '( x1 )
− f '( x0 ) f ( x1 )

− f '( x2 )
f ( x0 ) − f '( x1 )
f ( x2 )
f ( x1 )
f ( x2 ) x* = soluţia x x* x0 x
0 x1 x2
0 x0 x1 x2 f ( x0 )
= punct de start ales arbitrar − f '( x0 )
a b
Fig. 3.3 Construirea şirului de iteraţii la metoda Newton

Funcţia Matlab met_tang de mai jos implementează metoda tangentei; ea primeşte ca


argumente de intrare două şiruri de caractere (nume_f, numele funcţiei care conţine formula
lui f, respectiv nume_fd, numele funcţiei Matlab ce implementează derivata lui f), soluţia
iniţială (x0) şi precizia impusă în determinarea soluţiei (prec). Rezultatele returnate sunt, ca
şi în cazul funcţiei bissuc, soluţia x şi numărul de iteraţii, nrit.
function [x,nrit]=met_tang(nume_f,nume_fd,x0,prec)
%METODA NEWTON (metoda tangentei) de determinare a soluţiei unei ecuaţii algebrice
%sau transcendente
%
%(se pot folosi funcţiile:
% f1(x)=x^2-7*x+6;
% f2(x)=exp(x)-5*x;)

x1=x0+2*prec;
nrit=0;
while abs(x1-x0)>prec,
x1=x0;
x0=x1-feval(nume_f,x1)/feval(nume_fd,x1);
nrit=nrit+1;
end;
x=x0;

Exempl ul 3.1: Rezolvarea ecuaţiei f ( x) ≡ e x − 5 x = 0 necesită scrierea funcţiei fder (care


conţine pe f’(x)):
function [y]=fder(x)
y=exp(x)-5;
Alegând, de exemplu, x0=0, apelul de rezolvare a ecuaţiei este
[x,iter]=met_tang(’f’,’fder’,2,1e-6), iar rezultatul este:
x =
0.25917110181907

iter =
4
3. Rezolvarea numerică a ecuaţiilor neliniare şi a sistemelor de ecuaţii neliniare 87

Se observă că viteza de convergenţă este mai bună decât în cazul aplicării metodei
bisecţiunilor succesive (precizia impusă fiind aceeaşi, 10-6). Evident, apropierea sau
depărtarea punctului de start de soluţia ecuaţiei determină viteza de convergenţă. În cazul de
faţă, schimbarea punctului de start în x0=2 conduce la determinarea celeilalte soluţii reale a
ecuaţiei date:
x =
2.54264135777353

iter =
6
În cazul metodei aproximărilor succesive (metodei punctului fix) convergenţa nu este
garantată. Ecuaţia f(x)=0 se transformă succesiv după cum urmează:
f ( x) = 0 ⇔ f ( x) + x − x = 0 ⇔ ϕ( x) = x
1424 3
not .
= ϕ( x )
În concluzie, a determina soluţia ecuaţiei f(x)=0, notată cu x*, este echivalent cu a
determina punctul fix al funcţiei ϕ, unde ϕ(x)=f(x)+x. Este suficient ca:

(3.2) ϕ '( x) < 1 , ∀x ∈ [a; b] , x* ∈ [a; b] ,

pentru ca soluţia x* să se obţină ca limita şirului iteraţiilor construit cu formula:


(3.3) xk +1 = ϕ ( xk ) , k=0,1,2...,

pornind dintr-un punct arbitrar, x0, din intervalul [a;b]. Se foloseşte, deci, aceeaşi condiţie de
oprire ca la metoda Newton, şi anume ca xk +1 − xk să scadă sub o limită impusă; notând
ε
această limită cu ε, atunci eroarea absolută de calcul al soluţiei este . Figura
1 − max ϕ '( x)
x∈[ a;b]
3.4 arată cum această metodă poate fi convergentă (a) sau divergentă (b).
y y=x y ϕ ( x0 )
ϕ ( x0 ) ϕ ( x0 )
ϕ ( x1 ) y = ϕ ( x)
ϕ ( x1 )

x* x x
0 x0 0
x0 x *
x2 = ϕ ( x1 ) x1 = ϕ ( x0 ) x1 = ϕ ( x0 )
a b
Fig. 3.4 Metoda punctului fix: a – convergentă; b – divergentă

Funcţia Matlab de mai jos conţine implementarea metodei punctului fix (sau a
aproximărilor succesive).
function [x,nrit]=aproxsuc(nume_f,x0,prec)
%METODA APROXIMĂRILOR SUCCESIVE de determinare
%a soluţiei unei ecuaţii transcendente

x1=x0+2*prec;
88 Metode numerice utilizate în analiza sistemelor – aplicaţii

nrit=0;
while abs(x1-x0)>prec,
x1=x0;
x0=feval(nume_f,x1)+x1;
nrit=nrit+1;
end;
x=x0;
Metoda aproximărilor succesive este divergentă în cazul ecuaţiei e x − 5 x = 0 considerate
mai sus; se poate observa că derivata funcţiei ϕ( x) = f ( x) + x = e x − 4 x nu îndeplineşte
condiţia (3.2). Dar această condiţie nu este decât suficientă, adică neîndeplinirea ei nu implică
neapărat divergenţa metodei, după cum arată exemplul de mai jos.

1 1
Exempl ul 3.2: În cazul ecuaţiei f1 ( x) ≡ + +1− x = 0 , derivata funcţiei
2 x
x
1 1
ϕ( x) = f1 ( x) + x = + 1 nu îndeplineşte condiţia (3.2) pentru x>1, dar
+
x 2
x
metoda punctului fix este convergentă dacă iteraţiile pornesc, de exemplu,
din punctul x0=5.
Mai întâi se scrie funcţia f1:
function y=f1(x)
y=1/x^2+1/x+1-x;
Apelul:
[sol,it]=aproxsuc(’f1’,5,1e-4)
are ca rezultat:
sol =
1.83931782803487

it =
22
În acest caz, ultima metodă este uşor mai rapid convergentă decât metoda tangentei, după
cum se poate verifica apelând:
[sol1,it1]=met_tang(’f1’,’f1der’,5,1e-4)
cu răspunsul:
sol1 =
1.83931341409227

it1 =
26
Apelul de mai sus necesită mai întâi scrierea funcţiei Matlab f1der, care să conţină
expresia derivatei funcţiei f1(x):
function y=f1der(x)
y=-2/x^3-1/x^2-1;
De asemeni, se poate observa că şi între soluţiile furnizate de cele două metode există
diferenţe de ordinul 10-6.
Cele trei metode prezentate mai sus se pot aplica şi pentru determinarea soluţiilor reale
3. Rezolvarea numerică a ecuaţiilor neliniare şi a sistemelor de ecuaţii neliniare 89

ale ecuaţiilor algebrice cu coeficienţi reali. Evident, metoda tangentei şi cea a aproximărilor
succesive vor fi preferate celei a bisecţiunilor succesive, întrucât aceasta din urmă necesită o
informaţie apriori asupra situării soluţiei.
Există metode destinate exclusiv ecuaţiilor algebrice; una dintre acestea este metoda
Bernoulli, care constituie o cale foarte simplă de determinare a soluţiei de modul maxim.
Dându-se ecuaţia algebrică de gradul n:

(3.4) an x n + an −1x n −1 + ... + a0 = 0 , ai ∈ , i = 0, n , an ≠ 0 ,

se construieşte şirul care verifică relaţia recurentă:


an ⋅ yn + k + an −1 ⋅ yn + k −1 + ... + a0 ⋅ yk = 0 , k=0,1,2...,
echivalentă cu obţinerea fiecărui nou termen al şirului conform unei formule recurente cu n
termeni:
a a
(3.5) yn + k = − n −1 ⋅ yn + k −1 − ... − 0 ⋅ yk , k=0,1,2...,
an an
unde primele n valori se aleg arbitrar. Notând cu xM soluţia de modul maxim a ecuaţiei (3.4),
se demonstrează că:
yn + k
(3.6) xM = lim
k →∞ yn + k −1

Transpunerea numerică a metodei Bernoulli va necesita, evident, calculul unui număr


arbitrar de mare de termeni ai şirului {yk}, k≥n. În scriptul de mai jos, care determină soluţia
de modul maxim a ecuaţiei x5 + 5 x 4 + x3 + x 2 + 5 , acest număr s-a ales m=70.
%METODA BERNOULLI de determinare a soluţiei de modul maxim
%a unei ecuaţii algebrice

a=[1 5 1 1 0 5];%vectorul coeficienţilor polinomului care se anulează,


%în ordine descrescătoare a puterilor variabilei
n=length(a)-1;
y=[0 1 0 0 1];%primele n=5 valori ale şirului, alese arbitrar

m=70;
for i=1:m,
y(i+n)=0;
for j=0:(n-1),
y(i+n)=y(i+n)-y(i+j)*a(n-j+1)/a(1);
%implementarea relaţiei (3.5)
end;
end;

x=y(m+n)/y(m+n-1);
s=sprintf('Solutia de modul maxim: %6.4f.',x);
disp(s);
Execuţia scriptului de mai sus are drept rezultat afişarea mesajului:
Solutia de modul maxim: -4.8453.
90 Metode numerice utilizate în analiza sistemelor – aplicaţii

Corectitudinea rezultatului se poate verifica prin apelul funcţiei Matlab roots, de


rezolvare a ecuaţiilor algebrice, de forma P(x)=0, unde P este un polinom de grad oarecare,
cu coeficienţi complecşi, în variabila x. Această funcţie primeşte ca argument de intrare
vectorul coeficienţilor lui P în ordine descrescătoare a puterilor lui x şi returnează vectorul
coloană al rădăcinilor polinomului. În cazul de mai sus, apelul funcţiei roots este:
rad=roots([1 5 1 1 0 5])
şi produce răspunsul:
rad =
-4.8453
-0.7106 + 0.8115i
-0.7106 - 0.8115i
0.6333 + 0.6971i
0.6333 - 0.6971i
Calculând în continuare modulele rădăcinilor:
abs(rad)
se obţine:
ans =
4.8453
1.0786
1.0786
0.9418
0.9418
deci rezultatul furnizat de metoda Bernoulli este corect. Această metodă poate servi şi la
determinarea soluţiei de modul minim a unei ecuaţii de forma (3.4), prin schimbarea de
variabilă z=1/x.

3.2 Rezolvarea numerică a sistemelor de ecuaţii neliniare

Acest paragraf este dedicat rezolvării sistemelor pătratice de ecuaţii neliniare cu


coeficienţi reali (numărul de ecuaţii este egal cu cel al necunoscutelor; să notăm acest număr
cu n). Aceste sisteme se pot pune sub următoarea formă implicită:
 f1 ( x1, x2 ,...xn ) = 0
 f ( x , x ,...x ) = 0
...2 1 2 n ⇔ F ( x) = 0 ,

 f n ( x1, x2 ,...xn ) = 0
T
unde F (⋅) = [ f1 (⋅) f 2 (⋅) ... f n (⋅)] este o funcţie vectorială de variabila vectorială
T
x = [ x1 x2 ... xn ] ∈ n . Presupunând că jacobianul funcţiei F, care este o matrice
pătratică de dimensiune n×n, dată prin relaţia (3.8), este nesingulară într-un domeniu D ⊂ n
care conţine soluţia x*, atunci aceasta se obţine ca limita şirului de iteraţii obţinut cu formula:

(3.7) x k +1 = x k − J −1 ( x k ) ⋅ F ( x k ) , k=0,1,2,...,
144 42444 3
∆ xk
3. Rezolvarea numerică a ecuaţiilor neliniare şi a sistemelor de ecuaţii neliniare 91

pornind dintr-un punct de start x0 ∈ D , arbitrar ales.

 ∂f1 ( x) ∂f1 ( x) ∂f1 ( x) 


 ∂x ...
1 ∂x2 ∂xn 
 
 ∂f 2 ( x) ∂f 2 ( x) ∂f 2 ( x) 

 ...
(3.8) J ( x) =  ∂x1 ∂x2 ∂xn 
 ... 
 
 ∂f n ( x) ∂f n ( x)
...
∂f n ( x) 
 ∂x1 ∂x2 ∂xn 

Se observă că relaţia (3.7) este o egalitate vectorială (care conţine n relaţii scalare) şi care
poate fi uşor implementată în Matlab, făcând uz de facilităţile de lucru cu matrici şi vectori.
Ea poate fi privită ca generalizarea formulei de iterare (3.1), a metodei Newton, la rezolvarea
ecuaţiilor neliniare vectoriale (cum mai pot fi privite sistemele de ecuaţii neliniare).
Cantitatea − J −1 ( x k ) ⋅ F ( x k ) ≡ ∆ x k are semnificaţia unui vector de corecţie aplicat la fiecare
pas iteraţiei curente, x k . Condiţia de oprire se generalizează şi ea, adică diferenţa dintre două
iteraţii succesive, x k +1 − x k , fiind un vector, se compară în normă cu o limită dorită (în
general, se poate folosi orice definiţie a normei vectoriale).
Funcţia newtraph, al cărei cod este listat mai jos, implementează metoda Newton-
Raphson de rezolvare a sistemelor de ecuaţii neliniare.
function [sol,iter]=newtraph(nume_F,nume_dF,x0,prec)
%metoda NEWTON-RAPHSON de rezolvare a SISTEMELOR PĂTRATICE DE
%ECUAŢII NELINIARE
%x0 este punct de start, ca vector coloană
n=length(x0);
dx=2*prec*ones(n,1);
x_c=x0;
iter=0;

while (norm(dx)>prec),
%funcţia norm, din biblioteca Matlab, calculează norma euclidiană a unui vector
J=feval(nume_dF,x_c);
dx=-inv(J)*feval(nume_F,x_c);
%funcţia inv, din biblioteca Matlab, calculează inversa unei matrice pătratice
x_c=x_c+dx;
iter=iter+1;
end;

sol=x_c;
Primele două argumente de intrare – nume_F şi nume_dF – sunt de tip şir de caractere,
reprezentând numele funcţiei Matlab care conţine expresia funcţiei F şi, respectiv, numele
funcţiei Matlab care conţine expresia jacobianului funcţiei F. Al treilea argument, x0, este
punctul de start (acesta este aici un vector coloană, a cărui dimensiune anunţă dimensiunea
sistemului pătratic care se rezolvă la un moment dat). Al patrulea argument, prec, este
92 Metode numerice utilizate în analiza sistemelor – aplicaţii

precizia dorită în calculul soluţiei. Analog celorlaltor funcţii scrise până acum, argumentele
de ieşire sunt două: soluţia, ca vector coloană (sol), şi numărul de iteraţii (iter).

Exempl ul 3.3: Se va testa funcţia newtraph pentru rezolvarea următorului sistem de 3


ecuaţii cu 3 necunoscute:
 f ( x , x , x ) ≡ x2 + 4 x2 + x2 − 2 = 0
 1 1 2 3 1 2
2
3
3
(3.9)  f 2 ( x1, x2 , x3 ) ≡ 6 x1 + 3x2 + x3 − 7 = 0 ,
 f ( x , x , x ) ≡ x − 5 x − 3x 2 + 2 = 0
 3 1 2 3 1 2 3

T
care are soluţia x = [1 0 1] , dar nu este unica. Jacobianul asociat sistemului, calculat cu
formula (3.8), este:
 2 x1 8 x2 2 x3 
 
J ( x) =  6 6 x2 3x32 
 1 −5 −6 x3 
 
T
Funcţiile Matlab care implementează funcţia vectorială F (⋅) = [ f1 (⋅) f 2 (⋅) f3 (⋅)] şi,
respectiv, jacobianul ei, J(x), sunt listate mai jos.
function y=F(x)
%descrierea unui sistem pătratic de ecuaţii neliniare, sub forma:
% f1(x1,x2,...xn)=0
% f2(x1,x2,...xn)=0
% ...
% fn(x1,x2,...xn)=0
%
%x şi y sunt vectori coloană de aceeaşi dimensiune:
% x=[x1 x2 ... xn] transpus, y=[f1(.) f2(.) ... fn(.)] transpus

%în exemplul de mai jos n=3


y(1)=x(1)^2+4*x(2)^2+x(3)^2-2;
y(2)=6*x(1)+3*x(2)^2+x(3)^3-7;
y(3)=x(1)-5*x(2)-3*x(3)^2+2;
y=y';%transpunerea este necesară pentru returnarea unui vector coloană
function J=dF(x)
%calculul MATRICEI JACOBIAN a unui sistem pătratic de ecuaţii neliniare,
%dat sub forma:
% f1(x1,x2,...xn)=0
% f2(x1,x2,...xn)=0
% ...
% fn(x1,x2,...xn)=0
%
%x este vector coloană de dimensiune n, deci matricea jacobian este nxn
% x=[x1 x2 ... xn] transpus
3. Rezolvarea numerică a ecuaţiilor neliniare şi a sistemelor de ecuaţii neliniare 93

%în exemplul de mai jos n=3


J=[2*x(1) 8*x(2) 2*x(3);6 6*x(2) 3*x(3)^2;1 -5 -6*x(3)];
În consecinţă, pentru rezolvarea sistemului (3.9) mai este nevoie de alegerea unui punct
T
de start – fie acesta x0 = [1 0 0.2] – şi de impunerea unei precizii, de exemplu 10-5.
Apelul funcţiei newtraph este, deci:
[xstar,iter]=newtraph('F','dF',[1;0;0.2],1e-5)
şi furnizează rezultatul:
xstar =
1
0
1

iter =
8
Schimbarea cu foarte puţin a soluţiei iniţiale, x0, conduce atât la diminuarea vitezei de
convergenţă, cât şi la determinarea unei alte soluţii. Astfel, apelul:
[xstar,iter]=newtraph('F','dF',[2;0;0.2],1e-5)
produce răspunsul:
xstar =
1.0592
0.2977
0.7236

iter =
112

3.3 Probleme rezolvate. Probleme propuse

Mai jos sunt date două exemple din ingineria electrică, ilustrative pentru necesitatea
practică a rezolvării ecuaţiilor neliniare şi a sistemelor de ecuaţii neliniare.

Exempl ul 3.4: [FRAN 01] Se dă circuitul din figura 3.5 a, unde toţi tranzistorii au
caracteristici cunoscute, T1 şi T2 fiind presupuşi identici, V+=9V, V–=–9V,
iar restul elementelor de circuit sunt calculate astfel încât tensiunea de
ieşire, US, să fie nulă. Să se calculeze punctul static de funcţionare (p.s.f.) al
circuitului (curenţii de colector IC1 , IC2 şi IC3 ).
În figura 3.5 b a fost reluată schema circuitului cu notarea tuturor curenţilor şi a
tensiunilor care intervin în calculul p.s.f.
Din motive de simplificare a analizei, se poate considera în primă fază că baza lui T1 are
potenţial nul, astfel încât rezultă tensiuni bază-emitor egale pentru T1 şi T2, U BE1 = U BE2 .
Curentul de colector depinde exponenţial de tensiunea bază-emitor, conform relaţiei:
 U BE 
 
mV
(3.10) IC = ICS ⋅ e T  ,
94 Metode numerice utilizate în analiza sistemelor – aplicaţii

unde VT=26 mV (tensiunea termică), iar ICS (curentul de saturaţie) şi m ∈ (1;2) caracterizează
fiecare tranzistor. Cum tranzistorii T1 şi T2 sunt presupuşi identici ( ICS1 = ICS2 , m1=m2), din
U BE1 = U BE2 rezultă mai departe că şi curenţii lor de colector sunt egali, IC1 = IC2 .

R1 R2 V+ R1 R2 V+

T3 I C1 I C2 T3
I B1 I B2 Is 0
T1 T2 T1 T2
A I I C3
Ui Us Ui IE E2 Us
U BE1 1 U BE 2 B
I3 I B1 I5
R4 R4
R3 R5 R3 R5
V− V−

a b
Fig. 3.5 Schema circuitului de la exemplul 3.4

Dar aproximaţia curenţilor de colector de mai sus este grosieră, deoarece tensiunea pe
baza lui T1 este nenulă (este mai negativă decît ieşirea). Deci curenţii de colector nu sunt
egali, IC1 ≠ IC2 , iar diferenţa dintre ei poate fi mare, din cauza dependenţei exponenţiale de
tensiunile bază-emitor.
Pentru calculul mai precis al p.s.f. se folosesc abrevierile „thK1” pentru teorema I a lui
Kirchhoff şi „thK2” pentru teorema a II-a a lui Kirchhoff. Se scriu ecuaţiile (figura 3.5 b):
(3.11) I E1 + I E2 = I3 (thK1 în nodul A)

(3.12) R3 I3 = −V − − U BE2 (thK2 pe conturul cu linie punctată)

(3.13) I B1 + I5 = IC3 (thK1 în nodul B)

(3.14) R5 I5 = R4 I B1 + U BE1 − U BE2 − V − (thK2 pe conturul cu linie întreruptă)

Din condiţia ca tensiunea la ieşire să fie nulă rezultă:


(3.15) R4 I B1 = U BE2 − U BE1

Relaţia (3.15) se înlocuieşte în (3.14) şi se obţine că R5 I5 = −V − , relaţie în care se


înlocuieşte valoarea lui I5 dedusă din (3.13), rezultând:
−V −
IC3 = + I B1
R5
În ultima relaţie se foloseşte relaţia cunoscută IC = β ⋅ I B şi se obţine:

−V − IC1
(3.16) IC3 = +
R5 β1
β are valori de ordinul sutelor şi se cunoaşte pentru un tranzistor dat; se poate, deci, scrie
3. Rezolvarea numerică a ecuaţiilor neliniare şi a sistemelor de ecuaţii neliniare 95

I E ≅ IC . Cu această observaţie se înlocuieşte valoarea lui I3 din (3.11) în (3.12):

−V − − U BE2
(3.17) IC1 + IC2 =
R3
14
4244 3
C

Membrul drept al relaţiei (3.17) conţine valori cunoscute pentru un circuit dat, deci
rezultă că suma curenţilor de colector ai celor doi tranzistori identici este egală cu o
constantă, C.
În continuare, se scrie relaţia (3.10) pentru cei doi tranzistori, se împart relaţiile şi se ţine
cont că ICS1 = ICS2 şi că m1=m2=m. Se obţine:
 U BE 2 −U BE1 
IC2  
mVT
= e 
IC1
În ultima relaţie se înlocuieşte relaţia (3.15) şi se ţine cont că IC1 = β1 ⋅ I B1 :

 
 R 
 4 ⋅I 
C
1β1mVT 1 
 4 243 
(3.18) IC2 = IC1 ⋅ e K  = I ⋅ e K ⋅ IC1
C1

Relaţiile (3.16), (3.17) şi (3.18) formează un sistem de 3 ecuaţii cu 3 necunoscute, IC1 ,


IC2 şi IC3 , a cărui soluţie constituie p.s.f. căutat:

 −V − IC1
 IC3 = +
 R5 β1
(3.19)  IC1 + IC2 = C
 K ⋅ IC1
 IC2 = IC1 ⋅ e

Sistemul (3.19) face parte din clasa sistemelor (pătratice) de ecuaţii neliniare, deci poate
fi rezolvat doar numeric; se poate aplica în acest scop metoda Newton-Raphson descrisă
în §3.2. O altă rezolvare se bazează pe observaţia că ultimele două ecuaţii ale sistemului
(3.19) alcătuiesc un sistem de sine stătător; una din aceste ecuaţii fiind liniară, permite
reducerea rezolvării acestui sistem la rezolvarea unei singure ecuaţii, şi anume:
K ⋅ IC1
(3.20) C − IC1 = IC1 ⋅ e ,

care este o ecuaţie transcendentă în necunoscuta IC1 .

( )
Ecuaţia (3.20), pusă sub forma f IC1 = 0 , se poate rezolva prin metoda tangentei
(metoda Newton) prezentată în §3.1. Se observă că funcţia f nu este unică; în funcţie de
diferitele forme pe care le poate lua f, procesul iterativ converge mai repede sau mai lent. Se
exemplifică mai jos rezolvarea numerică a problemei pentru f IC1 = IC1 ⋅ 1 + e C1  − C ,
K ⋅I
( )
 
folosind funcţia Matlab met_tang, scrisă în §3.1.
96 Metode numerice utilizate în analiza sistemelor – aplicaţii

Se scriu mai întâi funcţiile Matlab pentru implementarea funcţiilor f şi f’.


function y=IC(x)
global Vmin R3 R4 UBE beta m VT;

C=(-Vmin-UBE)/R3;
K=R4/(beta*m*VT);
y=x*(1+exp(K*x))-C;
function y=ICder(x)
global R4 beta m VT;

K=R4/(beta*m*VT);
y=exp(K*x)*(1+K*x)+1;
Se observă declararea ca variabile globale a parametrilor de circuit care intră în calculul
constantelor C şi K. Va trebui ca aceeaşi declaraţie să fie reluată în fereastra de comandă,
urmată de iniţializarea efectivă a respectivilor parametri şi apoi de apelul funcţiei met_tang.
De exemplu, pentru datele: V–=−9V, R3=5kΩ, R4=10kΩ, |UBE|=0.6V, β1=β2=β=100,
m=1.5, VT=26 mV(=0.026 V), şirul de comenzi este dat mai jos.
global Vmin R3 R4 UBE beta m VT;
Vmin=-9;R3=5;R4=10;UBE=0.6;beta=100;m=1.5;VT=0.026;
[ic1,iter]=met_tang(’IC’,’ICder’,0,1e-3)
Precizia de 10-3 este suficientă, ţinând cont că rezultatul va avea unitatea de măsură mA.
Se obţine:
ic1 =
0.4238

iter =
6
adică IC1 ≅ 0.42 mA . Rezultă şi celelalte valori ale curenţilor: IC2 ≅ 1.26 mA ,
IC3 ≅ 0.9 mA , de unde se vede că ipoteza IC1 ≠ IC2 se justifică. Se observă convergenţa
foarte rapidă a metodei în acest caz (6 iteraţii).

Exempl ul 3.5: Curentul printr-un circuit are următoarea formă de variaţie în timp:
i (t ) = 1 − w1e−α1t + w2e−α 2t ,
unde w1>0, w2>0, α1>0, α2>0. Să se determine momentul de timp la care curentul ia o
anumită valoare, I0. Aplicaţie numerică: w1=5, w2=2, α1=0.6, α2=0.2, I0=0.1 A.
Se doreşte, deci, aflarea acelui t pentru care este îndeplinită relaţia i(t)= I0, adică:

(3.21) 1 − w1e −α1t + w2e−α 2t = I 0

Relaţia (3.21) reprezintă o ecuaţie transcendentă în necunoscuta t. Se propune rezolvarea


ei prin metoda tangentei; ca atare, se scriu funcţiile Matlab care implementează funcţia care
se anulează, f (t ) = I 0 + w1e−α1t − w2e−α 2t − 1 , respectiv derivata ei.
function y=crt(t)
global w1 w2 alfa1 alfa2 I0;

y=I0+w1*exp(-alfa1*t)-w2*exp(-alfa2*t)-1;
3. Rezolvarea numerică a ecuaţiilor neliniare şi a sistemelor de ecuaţii neliniare 97

function y=crt_der(t)
global w1 w2 alfa1 alfa2 I0;

y=-w1*alfa1*exp(-alfa1*t)+w2*alfa2*exp(-alfa2*t);
Secvenţa de comenzi necesară rezolvării ecuaţiei (3.21) este următoarea:
global w1 w2 alfa1 alfa2 I0;
w1=5;w2=2;alfa1=0.6;alfa2=0.2;I0=0.1;
[t,iter]=met_tang(’crt’,’crt_der’,0,1e-5)
şi generează rezultatul:
t =
1.1659

iter =
5
În concluzie, după aproximativ 1.16 unităţi de timp, curentul va avea valoarea de 0.1 A.

P r o b l e m e pr o p u s e
1. Să se rezolve numeric următoarele ecuaţii transcendente:
x  π
1) th( x) = −2 x 2 + + 5 , 3) arctg( x) = cos  x − 
10  8
2) x ⋅ sin( x) + cos( x) = 0 , 4) sin( x) = ln x , x ≠ 0
utilizând:
a) metoda bisecţiunilor succesive, separând în prealabil soluţiile;
b) metoda Newton, pornind din puncte iniţiale convenabil alese.

2. Să se afle soluţia de modul maxim a ecuaţiei x5 + x 4 + 5 x 2 + 1 .

3. Să se rezolve numeric, folosind metoda Newton-Raphson, sistemul de ecuaţii:


 xy − 10 = 0
 2
 y + 8 x − 2 x − 20 = 0
Indicaţie: Pentru o bună alegere a punctului de start al procesului iterativ se recomandă
10
mai întâi trasarea pe acelaşi sistem de axe a graficelor funcţiilor y ≡ y1 ( x) = , x ≠ 0 şi
x
y ≡ y2 ( x) = −8 x 2 + 2 x + 20 .

4. a) Să se rezolve numeric sistemul de ecuaţii (3.19) din exemplul 3.4 prin metoda
Newton-Raphson.
b) Să se rezolve numeric ecuaţia (3.20) din exemplul 3.4 prin metoda punctului fix.
Indicaţie: Ecuaţia trebuie pusă sub o astfel de formă, încât metoda punctului fix să fie
convergentă.

3 ⋅ e−0.5 s
5. Se dă funcţia de variabila complexă s H ( s ) = . Se face schimbarea de
( 5s + 1) ⋅ ( s + 1)
variabilă s = j ⋅ ω , cu ω∈ ( −∞; +∞ ) şi j = −1 , şi se obţine numărul complex H ( j ⋅ ω) . Să
se determine intervalul variabilei ω pentru care modulul argumentului lui H ( j ⋅ ω) se
98 Metode numerice utilizate în analiza sistemelor – aplicaţii

 2π 3π 
situează în intervalul  ;  .
3 4
Indicaţie: Se calculează modulul argumentului lui H ( j ⋅ ω) ca fiind o funcţie de ω;
condiţia ca această funcţie să ia valori într-un interval dat conduce la un sistem de două
inecuaţii transcendente.
6. Să se calculeze p.s.f. pentru circuitul din figura 3.6. Se ştie că dependenţa curentului
prin diodă de tensiunea aplicată acesteia este modelată de relaţia:

R  uD 
E uD  mVT 
iD = iD (uD ) = I S ⋅  e − 1 ,
iD  
D  

Fig. 3.6 Circuit de polarizare a unde parametrii modelului analitic, IS (curentul de


unei diode semiconductoare saturaţie) şi m, se cunosc.
Aplicaţie numerică: E=6V, R=2.7 kΩ, IS=2 nA, m=1.7.
Indicaţie: Problema se reduce la rezolvarea numerică a unei ecuaţii transcendente în
necunoscuta iD. Se recomandă folosirea pe rând a tuturor celor trei metode prezentate în §3.1
(metoda înjumătăţirii intervalului, metoda Newton şi metoda aproximărilor succesive), pentru
o evaluare comparativă.

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