Sunteți pe pagina 1din 10

Rezolvarea ecuaţiilor neliniare

Metode generale de rezolvare a ecuaţiilor algebrice şi transcendente

Ecuaţiile neliniare sunt considerate toate ecuaţiile algebrice şi transcendente, în afara


ecuaţiilor algebrice de gradul întâi. Pentru rezolvarea ecuaţiilor neliniare se apelează în
general la metode numerice, deoarece metodele exacte nu se pot aplica decât în câteva
cazuri particulare. O categorie de ecuaţii neliniare care pot fi rezolvate prin metode exacte
sunt ecuaţiile algebrice până la ordinul patru.
Pentru rezolvarea ecuaţiilor neliniare se utilizează două categori de metode, o
categorie o reprezintă metodele generale de rezolvare a ecuaţiilor neliniare, iar a doua
categorie este reprezentată de metodele specifice pentru rezolvarea ecuaţiilor algebrice.

Convergenţa şirurilor de iterare

Pentru determinarea soluţiilor ecuaţiilor neliniare se utilizează metode iterative, care


permit determinarea rădăcinilor ecuaţiilor neliniare ca limită a unor şiruri convergente.
Fie funcţia vectorială f : D  R n şi sistemul de ecuaţii neliniare f ( x)  0 care are o
soluţie unică  care se află în D  R n . Pentru determinarea soluţiei sistemului de ecuaţii
neliniare f ( x)  0 se construieşte ecuaţia x  F (x) care este echivalentă cu ecuaţia f ( x)  0
în domeniul D  R n ( f ( )  0    F ( ) ). Soluţia sistemului de ecuaţii rezultă ca limită a
şirului de iterare:

lim x ( k )  
k 

unde, termeni şirului de iterare se calculează cu relaţia de recurenţă:

X ( k )  F ( X ( k 1) )

Existenţa şi unicitatea soluţiei pentru ecuaţia x  F (x) precum şi convergenţa şirului de


iterare x ( k )  F ( x ( k 1) ) sunt condiţionate de următoare teoremă.

Teoremă (teorema de punct fix) Fie ( E,  ) un spaţiu metric complet , iar T : E  E o


aplicaţie pentru care există un   1 astfel încât:

 (Tx, Ty )   ( x, y) x, y  E ;

atunci:

1) aplicaţia T este continuă ;

5
2) Şirul x (0) ,... x ( n) calculat cu relaţia de recurenţă x ( k )  T ( x ( k 1) ) este convergent
pentru orice x ( 0)  E . Limita şirului calculată cu relaţia de recurenţă este un punct fix
  T ( ) iar,

k
 ( x ( k ) , )   ( x ( 0 ) , x) ;
1 

3) aplicaţia T are un punct fix unic.

Demonstraţie:

1) Dacă se presupune lim x ( k )    lim  ( x ( k ) , x)  0 , dar  (Tx ( k ) , T )   ( x ( k ) , x) ,


k  k 

rezultă că:

lim  (Tx ( k ) , T )  0
k 

deci, aplicaţia T este continuă.

2) Prin utilizarea relaţiei  (u, v)   (u, w)   (w, v) se obţine:

 ( x ( k ) , x ( k m) )   ( x ( k ) , x ( k 1) )   ( x ( k 1) , x ( k 2) )   ( x ( k 2) , x ( k 3) )  ... ( x ( k m1) , x ( k m) )

 ( x ( k ) , x ( k 1) )   (Tx ( k 1) , Tx ( k ) )   ( x ( k 1) , x ( k ) )  ...k  ( x (0) , x (1) )


.................................................................................................................
 ( x ( k m1) , x ( k m) )   (Tx ( k m2) , Tx ( k m1) )   ( x ( k m2) , x ( k m1) )  ...k m1  ( x (0) , x (1) )

k  m k
 ( x ( k ) , x ( k  m) )  k (1    2  ...m1 )  ( x (0) , x (1) )   ( x ( 0) , x (1) )   ( x ( 0) , x (1) )
1  1 

Cum 0    1 iar lim ( k )  0 , rezultă că    0 ,  N ( ) astfel încât  k , m  N ( ) ,


k 

lim  ( x , x
(k ) ( m)
)   , ceea ce arată că şirul x (k ) k  0,1,...n este un şir Cauchy, deci este un şir
k 

convergent.

3) Dacă se presupune prin absurd   T ( ) ,   T (  ) şi    atunci:

 ( ,  )   (T , T )   ( ,  )

Din relaţia obţinută se observă că   1 , ceea ce contrazice ipoteza 0    1 , rezultă


   , limita  fiind unică.
Metoda iteraţiilor simple

6
Se consideră ecuaţia x  F (x) unde F : R  R . Fie  o soluţie a acestei ecuaţii, dacă
pentru x     există F ' ( x)  1 atunci concluziile teoremei de punct fix sunt valabile
(norma  ( x, y )  x  y ).
Fie şirul x (0) , x (1) , x ( 2) ,... x ( k ) ... x ( n) care a rezultat în urma aplicări relaţiei de recurenţă
x (k )  F ( x ( k 1) ) . Din teorema de medie se obţine:

x ( k 1)    F ( x k )  F ( )  F ' ( k )( x ( k )   )  k  ( x ( k ) , )

Rezultă, F ( x k )  F ( )  F ' ( k ) ( x ( k )   )   ( x ( k )   )   max F ' ( k ) , ceea ce


 k ( x
(k )
, )

dovedeşte că funcţia F este o contracţie.

În fig 2.1 a,b se poate observa interpretarea geometrică a convergenţei şirului de


iterare x (0) , x (1) , x ( 2) ,... x ( k ) ... x ( n) obţinut cu relaţia de recurenţă x ( k )  F ( x ( k 1) ) . Soluţia ecuaţiei
x  F (x) se află la intersecţia dintre bisectorea y  x şi curba y  F (x) .

a) b)
Fig.2.1

Pentru rezolvarea ecuaţiei neliniare f ( x)  0 prin metoda iteraţiilor simple se


construieşte contracţia x  F (x) astfel încât F ' ( x)  1 , cu cât valoarea derivatei funcţiei F
este mai mică decât 1, cu atât convergenţa şirului soluţiilor intermediare
x (0) , x (1) , x ( 2) ,... x ( k ) ... x ( n) obţinut cu relaţia de recurenţă x ( k )  F ( x ( k 1) ) este mai bună.
O formulă de iterare de ordin superior se poate construi utilizând metoda funcţiei
inverse care este prezentată în continuare.

Teoremă Fie f : [a, b]  R continuă pe domeniul de variaţie al funcţiei şi derivabilă de


2p-1 ori, cu f ( 2 p1) mărginită pe [a, b] . Dacă ecuaţia f ( x)  0 are soluţie unică   [a, b] şi
f ' ( )  0 , atunci relaţia:

7
p 1 c j ( x)
F ( x)  x   (1) j ( f ( x)) j
j 1 j!
unde,
1 c1' ( x) c2' ( x) c 'j ( x)
c1 ( x)  ' ; c2  ' ; c3  ' ;...c j 1  ' j  1... p  1
f ( x) f ( x) f ( x) f ( x)

reprezintă o formulă de iterare de ordinul p.

Exemplu
Să se determine formula de iterare de ordinul trei pentru determinarea soluţiilor pentru
ecuaţia f ( x)  x n  c .

Pentru funcţia f ( x)  x n  c se construieşte o contracţie:

2
f ( x) f ( x)
F ( x)  x  c1 ( x)  c 2 ( x)
1! 2!

1 1
c ( x)   ;
f ' ( x) nxn  1
1

n(n  1) x n  2

c' ( x) 2(n  1) n 1
c ( x)  1  n2 x  ;
nxn  1 n 2 x 2n  1
2
f ' ( x)
2

( x ( k 1) ) n  c (n  1)((x ( k 1) ) n  c) 2


x k  F ( x ( k 1) ); x k  x ( k 1  
n( x ( k 1) ) m1 2!n 3 ( x ( k 1) ) 2 n 1

Pentru a exemplifica modul de construire a unei contracţii şi realizare a unui program


de calcul in Matlab pentru rezolvarea ecuaţiilor neliniare, în continuare vor fi prezentate două
exemple de calcul.

Exemplu 1
Să se determine soluţia ecuaţiei log x  4 x  5  0 utilizând metoda iteraţiilor simple.
Pentru determinarea rădăcinilor ecuaţiei se construieşte contracţia x  0.25(log x  5) , şi se
aplică funcţiile Matlab.

function contractie1=contractie1(x)
contractie1=0.25*(log(x)+5);
contractie('contractie1',1,0.0001,30)

8
Soluţia obţinută este:

x  1.3193

Exemplu 2
Să se determine soluţia ecuaţiei x  cos x  0 aplicând metoda iteraţiilor simple. Se
construieşte contracţia x  cos x şi se aplică următoarele funcţii.

function contractie2=contractie2(x)
contractie2=cos(x);
contractie('contractie2',1,0.0001,30)

Soluţia obţinută este:


x  0.7392

În continuare este prezentată o funcţie Matlab care permite rezolvarea ecuaţiilor


neliniare f ( x)  0 care sunt aduse sub forma unei contracţii x  F (x) .

%Rezolvarea ecuatiilor nelineare f(x)=0 cu o


%singura necunoscuta algebrice si transcendente
%construind o contractie x=F(x),radacina ecuatiei
%f(x)=0 se obtine ca limita a sirului de iterare
%xkk=F(xk)
function contractie(fun,xi,tol,maxiterati)
xk=xi;iter=1; Initilizarea contor iter si solutiei initiale xi
disp('Iteratia/Solutiile/ Dif_sol/Dif_func');
while(iter<=maxiterati) Ciclu cu test la inceput (iter<=maxiterati)
xkk=feval(fun,xk); Aplicarea relatiei de recurenta xkk=F(xk)
dif=max(abs(xkk-xk)); Determinarea diferentei dintre doua solutii
if dif<tol succesive
return; Daca diferenta dintre doua solutii succesive
else devine mai mica decat tol ciclul este intrerupt
xk=xkk;
end
val=[iter xkk' dif ];iter=iter+1; Afisarea rezultatelor
disp(val)
end

Metoda înjumătaţiri intervalului

Fie ecuaţia nelineară f ( x)  0 , unde funcţia f : [a, b]  R este continuă pe intervalul


[a, b] , şi îşi schimbă semnul pe acest interval f (a) f (b)  0 . Pentru a determina soluţia
ecuaţiei pe intervalul [a, b] , se formează următorul şir de iterare.

9
Fig.2.2

Dacă f (a) f (b)  0 rezultă că există în intervalul [a, b] o soluţie, se consideră că o


aproximaţie a acestei soluţii este mijlocul intervalului [a, b] (Fig.2.2):

1 (1)
a (1)  a; b(1)  b ; x (1)  (a  b(1) )
2

Pentru a determina în care din intervalele [a, x (1) ] şi [ x (1) , b] se caută o nouă
aproximaţie a soluţiei, se determină pe care dintre cele două intervale funcţia f îşi schimbă
semnul:

1 (1)
-dacă f (a (1) ) f ( x (1) )  0 , atunci noua soluţie aproximativă este: x ( 2 )  (a  x (1) )
2
a ( 2)  a (1) , b ( 2)  x (1) ;

1 (1)
-dacă f (b (1) ) f ( x (1) )  0 , atunci noua soluţie aproximativă este: x ( 2)  (b  x (1) )
2
b ( 2)  b (1) , a ( 2)  x (1) .

Intervalul de căutare pentru o nouă iteraţie devine [a ( 2) , b ( 2) ]

La pasul k de iterare soluţia aproximativă se determină astfel:

1 ( k 1)
-dacă f (a ( k 1) ) f ( x ( k 1) )  0 , atunci soluţia aproximativă este: x ( k )  (a  x ( k 1) ) ,
2
a ( k )  a ( k 1) , b ( k )  x ( k 1) ;

10
1 ( k 1)
-dacă f (b ( k 1) ) f ( x ( k 1) )  0 , atunci soluţia aproximativă este: x ( k )  (b  x ( k 1) ) ,
2
a ( k )  x ( k 1) , b ( k )  b ( k 1) .

Intervalul de căutare pentru o nouă iteraţie k+1 devine [a ( k ) , b ( k ) ]

Soluţia ecuaţie f ( x)  0 rezultă ca limită a două şiruri   lim a k  lim bk , soluţia


k  k 

1
ecuaţiei după k iteraţii fiind  (a k  bk ) .
2
Drept condiţie de oprire a ciclului iterativ se utilizează condiţia globală care presupune
limitarea numărului maxim de iteraţii, precum şi indeplinirea a uneia sau ambelor condiţii de
mai jos:

1
f ( (a k  bk ))   1 ; a k  bk   2
2

Metoda înjumătăţiri intervalului este slab convergentă iar volumul de calcule necesar
pentru determinarea soluţiei este foarte mare, fiind necesar un număr foarte mare de evaluări
ale funcţie f pentru a determina schimbarea de semn a funcţiei pe intervalul de căutare a
soluţiei.
Pentru a exemplifica modul de utilizare a metodei ijumatatiri intervalului în continuare
sunt prezentate două exemple scrise cu programul Matlab.

Exemplu 1

Să se determine soluţia ecuaţiei x 8  2  0 utilizând metoda injumătăţiri intervalului.


Pentru determinarea rădăcinilor ecuaţiei se aplică funcţiile Matlab.

function injumatatire1=injumatatire1(x)
injumatatire1=x.^8-2;
Injumatatire('injumatatire1',0,7,0.000000001,90)

Soluţia este:

x  1.0905

Exemplu 2

Să se determine soluţia ecuaţiei x10  4  0 utilizând metoda înjumătăţiri intervalului.


Funcţiile Matlab utilizate pentru determinarea rădăcinilor sunt:

11
function injumatatire2=injumatatire2(x)
injumatatire2=x.^10-4;
Injumatatire('injumatatire2',0,7,0.000000001,90)

Soluţia este:

x  1.1487

Funcţia Matlab pentru determinarea rădăcinilor unei ecuaţii neliniare cu metoda


înjumătaţiri intervalului este prezentata mai jos.

%Rezolvarea ecuatiilor nelineare f(x)=0 cu o


%singura necunoscuta algebrice si transcendente
%utilizand injumatatirea intervalul de cauatare [a,b]
%functia f(x) este evaluata la captele intervalului
%daca f(a)f(b)<0 atunci in intervalul [a,b] exista o
%cel putin o solutie, se evalueaza functia f la
%mijlocul intervalului de abscisa xm, daca f(a)f(xm)<0
%solutia este in intervalul [a,xm], daca f(b)f(xm)<0
%solutia se afla in intervalul [xm,b].
function injumatatire(f,a,b,tol,maxiterati); Stabilirea capetelor intervalului de cautare
a(1)=a;b(1)=b;iter=1; Si initializarea contorului iter=1
fa(1)=feval(f,a(1));fb(1)=feval(f,b(1)); Evaluarea functie la capetele intervalului
disp(' iter a b x y '); Afisarea rezultatelor
for i=1:maxiterati Ciclu cu contor
xm(i)=(a(i)+b(i))/2; Evaluarea functiei la mijlocul intervalului
fm(i)=feval(f,xm(i)); Verificarea intervalului de cautare solutie
if fm(i)*fa(i)<0 Stabilirea noului interval de cautare
a(i+1)=a(i);
b(i+1)=xm(i);
fa(i+1)=fa(i);
fb(i+1)=fm(i);
else
a(i+1)=xm(i);b(i+1)=b(i);
fa(i+1)=fm(i);fb(i+1)=fb(i);
end;
if (fm(i)==0.0)|abs(xm(i)-b(i))<tol; Verificarea conditilor de stop
break;
end
iter=iter+1; Incrementarea contorului
results=[ iter a(i) b(i) xm(i) fm(i)]; Afisarea rezultatelor
disp(results);
end Inchiderea ciclului cu contor

Metoda secantei

12
Se consideră ecuaţia nelineară f ( x)  0 , unde funcţia f : [a, b]  R este continuă pe
intervalul [a, b] şi îşi schimbă semnul pe acest interval f (a) f (b)  0 . Dacă funcţia f este
aproximată pe intervalul [a, b] cu un segment de dreapta care trece prin punctele (a, f (a)) şi
(b, f (b)) , atunci intersecţia dintre acest segment şi axa Ox se poate considera ca o primă
aproximaţie pentru soluţia ecuaţiei neliniare f ( x)  0 (Fig.2.3).

ba
x (1)  b  f (b)
f (b)  f (a)

Soluţia aproximativă pentru rădăcina ecuaţiei neliniare poate fi obţinută la pasul k prin
utilizarea relaţiei de recurenţă:

x ( k )  x ( k 1) ( k )
x ( k 1)  x ( k )  y
y ( k )  y ( k 1)

Fig.2.3

În continuare sunt prezentate două exemple de utilizarea a metodei secantei cu


programele Matlab aferente.

Exemplu 1

Să se determine soluţia ecuaţiei x 6  0.7  0 utilizând metoda secantei. Derterminarea


soluţiilor se face prin aplicarea funcţiile Matlab.

function secant1=secant1(x)
secant1=x^6-0.7;
secant('secant1',0,1,0.00000001,20)

Soluţia este:

13
x  0.9423

Exemplu 2

Să se determine soluţia ecuaţiei sin x  3 cos x  0 cu metoda secantei. Pentru


determinarea soluţiilor se aplică funcţiile Matlab:

function secant2=secant2(x)
secant2=sin(x)-3*cos(x);
secant('secant2',0,2,0.00000001,20)

Soluţia este:

x  1.2490

Funcţia Matlab utilizata pentru determinarea rădăcinilor unei ecuaţii neliniare cu


metoda secantei este prezentata in continuare.

%Rezolvarea ecuatiilor nelineare f(x)=0 cu o


%singura necunoscuta algebrice si transcendente
%utilizand aproximarea pe intervalul de cauatare [a,b]
%al radacini functiei f(x)=0 cu dreapta care trece prin
%punctele (x1, f(x1));(x2, f(x2)),si intersecteaza axa
%Ox in punctul de abscisa xr0, care constituie o prima
%aproximare pentru solutia ecuatiei
function secant(f,a,b,tol,maxiterati)
x(1)=a; Stabilirea capetelor intervalului de cautare
x(2)=b; Evaluarea functiei la capetele intervalului si
y(1)=feval(f,x(1)); initializarea contorului iter=0
y(2)=feval(f,x(2));
iter=0;
disp('Iter/Solutia/ Val_func');
for i=2:maxiterati Ciclu cu contor
x(i+1)=x(i)-y(i)*(x(i)-x(i-1))/(y(i)-y(i-1)); Aplicarea relatiei de recurenta
y(i+1)=feval(f,x(i+1)); Evaluarea functiei pentru noua solutie
if(abs(x(i+1)-x(i))<tol) Testarea conditiilor de stop
break
end
if y(i)==0.0
break;
end;
iter=iter+1;
results=[ iter x(i) y(i)];
disp(results) Afisarea rezultatelor
end Inchiderea ciclului

14

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