Sunteți pe pagina 1din 7

Laborator 9 2020

Metode numerice de rezolvare a sistemelor de ecuaţii neliniare

Metoda coardei (sau metoda secantei)

Fie f : I  R, I=[a,b] o funcţie continuă cu proprietatea că f(a)*f(b) < 0. În intervalul I există o


singură rădăcină a ecuaţiei f(x)=0. Se caută soluţia ca şi în cazul metodei bisecţiei prin micşorarea
la fiecare pas a intervalului în care funcţia îşi schimbă semnul. Se aleg ca valori de pornire capetele
intervalului, x0=a, x1=b şi următorul element din şir se alege ca intersecţie a coardei determinate de
punctele A(x0,f(x0)) şi B(x1,f(x1)) cu axa OX.

Metoda coardei presupune:


 se determină punctul x2 în care coarda AB intersectează axa OX, unde A(x0,f(x0)) şi
B(x1,f(x1)).
 Soluţia pentru valoarea lui x când y=0 este dată de relaţia:

 Folosim pe x ca x2 şi astfel repetând procesul pentru x3 obţinem:

Pentru limitele b = xi, a = xi-1

sau putem scrie formula folosind limitele intervalului (a,b)

Punctele xi-1 şi xi se aleg astfel încât f(xi-1)f(xi)<0, adică rădăcina să se afle întotdeauna
în intervalul (xi-1, xi).

Se construieşte astfel un şir de intervale In+1 = [xn+1, xn], cu lungimea lui In+1 strict mai mică
decât lungimea lui In. Fiecare din aceste intervale conţine o soluţie a ecuaţiei f(x) = 0. Presupunem
că se dă o eroare eps>0. Considerăm că x este din In+1 = [xn+1, xn] şi este o aproximaţie
satisfăcătoare a soluţiei ecuaţiei f(x) = 0 dacă | xn - xn+1| < eps.

Exemplu 1: Să se determine rădăcina reală a ecuaţiei x3-x-2=0, situată în intervalul (1,2) folosind
metoda coardei şi 3 iteraţii.
Iteraţia 1:
Luăm x0=a, x1=b şi calculăm f(x0)=1-1-2 = -2 < 0, f(x1)=8-2-2 = 4 > 0.
Produsul f(x0)f(x1)<0 în intervalul (1,2) se scrie ecuaţia dreptei care trece prin punctele A(x0,f(x0)) şi
B(x1,f(x1)), adică A(1,-2) şi B(2,4).

Intersectând cu axa OX obţinem

1
Laborator 9 2020

Calculăm
Calculăm > 0 şi .
Astfel calculate produsele, rezultă că rădăcina se află în (x2,x1) .

Iteraţia 2:
Se scrie acum ecuaţia dreptei care trece prin punctele A(x2,f(x2)) şi B(x1,f(x1)), adică
A(1.3333,-0.9630) şi B(2,4).
( )
Intersectând cu axa OX obţinem = 1.4627

Calculăm f(x3) = (1.4627)3-1.4627-2 = -0.3333 < 0


Calculăm f(x2)*f(x3) = -0.9630*-0.3333 > 0 şi f(x3)*f(x1) = -0.3333*4 < 0, rezultă că rădăcina se
află în (x3,x1) = .

Iteraţia 3:
Se scrie ecuaţia dreptei care trece prin punctele A(x3,f(x3)) şi B(x1,f(x1)), adică A(1.4627, -0.3333) şi
B(2,4).

Dacă a=x3, b=x1 și aplicăm formula , atunci intersectând coarda AB cu axa


OX obţinem .

Pentru a afla intervalul la iteraţia a 3-a calculăm f(x4)= (1.5040)3-1.5040-2 = -0.1018 <0 şi
observăm că: rădăcina după 3 iterații se află în intervalul (x4,x1)=

Exerciţiu I:
1. Să se determine rădăcina reală a ecuaţiei x2-x-1=0, situată în intervalul (-1,1) folosind
metoda coardei şi 3 iteraţii.
2. Să se determine rădăcina reală a ecuaţiei 25*x2-10x-1=0, situată în intervalul (0,1) folosind
metoda coardei şi 2 iteraţii. (temă pentru acasă - scris)
3. Să se implementeze funcţia pentru metoda coardei unde avem ca date de intrare funcţia f o
funcţie continuă, intervalul cu limitele a=x0, b=x1 pentru care avem relaţia f(a)*f(b)<0 şi
epsilon (eroarea). Funcţia va returna valorile lui x mijlocul intervalului In = [xn, xn+1] cu
|f(xn+1)| < epsilonf, |xn+1-xn|<epsilonx (reprezentând condiţia de ieşire din procedeul de
înjumătăţire). Graficul se va construi din şirul de iteraţii (puncte) x1,x2,..., xn,...

function [x]=Secanta(a,b,f,epsilon,n_iteratii)
n=1; A=a;B=b;

while( ... )
%Calculam radacina
x(n) = ...
if(f(x(n))==0)
...
elseif (f(a)*f(x(n))<0)
b = ...
elseif (f(x(n))*f(b)<0)
a = ...

2
Laborator 9 2020

else
error('ne-am oprit, fct necontinua!!!\n');
end
fprintf('>> interval (%.4f,%.4f)\n',a,b);
n=n+1;
end

%*******************************%
a=A;b=B;
axis([a-1, b+1, f(a)-10,f(b)+10]);
x_init=a-1:0.1:b+1; % desenam graficul functiei date
hold on
plot(a,f(a),'or');plot(b,f(b),'or'); %desenare interval
plot(x_init,f(x_init),'-b'); %desenare fct initiala
%reprezentarea graficului cu punctele lui x
plot(x,f(x),'pk');% marcator pentagrama, culoare negru, linie
punctata
hold off
%*******************************%
end

4. Să se rezolve cu o eroare mai mică decât 10-2, rădăcina din intervalul ( ) ecuaţia
f1(x) = 2 * sin x – x, f1(x) = 0, folosind funcţia construită la exerciţiul anterior.

3
Laborator 9 2020

Metoda tangentei (metoda lui Newton-Raphson)


Metoda tangentei este utilizată pentru determinarea unei rădăcini a ecuaţiei f(x) = 0.
Presupunem că f este derivabilă şi că derivata nu se anulează. Rădăcina ecuaţiei este determinată ca
limita unui şir. Se pleacă de la un punct x0 dat. Presupunând că s-a construit termenul xn-1, termenul
xn se determină ca fiind abscisa intersecţiei dintre tangenta la graficul funcţiei în xn-1 şi axa OX.
Ecuaţia tangentei în xn-1 este: y – f(xn) = f(xn)(x – xn).

Deci intersecţia cu axa OX se află rezolvând sistemul pentru y=0 şi obţinând şirul:


unde x0 [a, b] este ales astfel încât f(x0)f(x0) > 0. Prima valoare se calculează alegând x0 {a, b},
care are proprietatea f(x0)f(x0) > 0. Următoarea valoare se alege ca intersecţie dintre tangenta la
graficul lui f, dusă în punctul (x0,f(x0)) şi axa OX.

Algoritmul: (calculează o aproximaţie a soluţiei x pentru f(x)=0 în intervalul [a,b])


Date de intrare:
f – funcţia, a,b – capetele intervalului
eps – eroarea (determină condiţia de oprire a iteraţiilor)
nr_iteratii – numărul maxim de iteraţii
Date de ieşire: xn+1 care verifică | xn+1 - xn | = | | < eps.
(xn+1 este considerat o aproximaţie satisfăcătoare a unicei soluţii a ecuaţiei f(x)=0)

Exemplu 2: Calculaţi, aplicând metoda lui Newton-Raphson, soluţia reală a ecuaţiei x3-2x-5=0 pe
intervalul [0,3], folosind 3 iteraţii.

Scriem expresiile funcțiilor: f ( x ) , f ' ( x ) , f ''( x )


f(x)= x3-2x-5, f(x)=3x2-2, f(x)=6x

Calculăm funcțiile în punctele 0 și 3:


f(0) = -5, f(0) = -2, f(0) = 0, f(0)*f(0) = 0,
f(3)=27-6-5 = 16, f(3)=27-2 = 25, f(3) = 18

Deoarece f(3) * f(3) = 16*18 > 0 vom alege ca valoare de pornire x0=3.

Iterația 1:
Calculăm x1=x0-(f(x0)/f(x0))=3-(16/25)=3-0.6400 =2.3600
Verificăm dacă f(x1)* f''(x1)>0
f(x1) = 3.4243, f''(x1) = 14.1600, adevărat și putem calcula un nou punct, x2

Iterația 2:
Calculăm x2=x1-(f(x1)/f(x1)),
f(x1)= 3.4243, f(x1)= 14.7088
x2=x1-(f(x1)/f(x1))= 2.3600-(3.4243/14.7088)= 2.1272
Verificăm dacă f(x2)* f''(x2)>0
f(x2) = 0.3711, f''(x2) =12.7632, adevărat și putem calcula un nou punct, x3

4
Laborator 9 2020

Iterația 3:
Calculăm x3=x2-(f(x2)/f’(x2)),
f(x2)= 0.3711, f(x2)= 11.5749
x3=x2-(f(x2)/f(x2))= 2.1272-(0.3711/11.5749)= 2.0951

După 3 iterații soluția reală a ecuației f(x)=0 este


x3=2.0951

Exerciţiu II:

1. Să se determine rădăcina reală a ecuaţiei x3+x-0.1=0, situată în intervalul (0,3) folosind


metoda tangentei şi 2 iteraţii.

2. Să se implementeze metoda tangentei.

Funcţia tangenta.m

function x=tangenta(fct,a,b,epsilon,nr_iteratii)
fct=str2sym(fct); % pentru fct. diff() trebuie sa lucram cu
% functii si variabile simbolice
df1=diff(fct,1); % se calculeaza prima derivata a fct
df2=diff(fct,2); % se calculeaza a doua derivata a fct

fcta=subs(fct,a); % se calculeaza fct in punctul a


df1a=subs(df1,a); % se calculeaza prima derivata in punctul a
df2a=subs(df2,a);
……………………………… % asemanator pentru pct b

n=1;
if(fcta*df2a>0)
x(n)=a;
elseif (fctb*df2b>0)
x(n)=b;
else
5
Laborator 9 2020

error('proprietatea nu e indeplinita!\n ');


end
norma=epsilon+1;
while ((norma >= epsilon) && (n <= nr_iteratii))
…………………………………………
end
n=n-1;
disp(x);

hold on; % desenare funcție


y=linspace(a-5,b+5);
plot(y,subs(fct,y),'-b');
plot(double(x),double(subs(fct,x)),'*r');
plot(x(n),subs(fct,x(n)),'ok','MarkerSize',8);
msg=sprintf('Solutia este: %.4f',x(n))
fprintf('Nr de iteratii: %d\n', n-1);
hold off
return

3. Să se găsească rădăcina reală folosind metoda tangentei, soluţia se găseşte în intervalul


[1,2], pentru ecuaţia x6-x-1=0.

6
Laborator 9 2020

Metoda combinată secantă-tangentă


Spunem că avem metoda combinată secantă-tangentă dacă se construieşte şirul de intervale:

(1) sau
(2)

astfel încât x sau x , iar

Observaţie: Dacă f(a)f(a)<0 se ia , caz în care se obţine şirul (1), iar dacă
f(b)f(b)<0 se ia caz în care se obţine şirul (2).

Algoritmul: (calculează o aproximaţie a soluţiei x pentru f(x)=0 în intervalul [a,b])

Date de intrare:
f – funcţia, a,b – capetele intervalului
eps – eroarea (determină condiţia de oprire a iteraţiilor)
nr_ieratii – numărul maxim de iteraţii

Date de ieşire: xn+1 care verifică | - | < eps.


(xn+1 este considerat o aproximaţie satisfăcătoare a unicei soluţii a ecuaţiei f(x)=0)

Indicaţie algoritm: x0[a,b] este ales astfel încât f(x0)f(x0) > 0


Dacă f(a)f(a)<0 alegem , caz în care se obţine şirul (1), iar dacă f(b)f(b)<0
alegem caz în care se obţine şirul (2).

Exerciţiu III:

1. Să se implementeze metoda combinată secantă-tangentă.

2. Să se găsească rădăcina reală folosind metoda secantă-tangentă, soluţia se găseşte în


intervalul [0,3], pentru ecuaţia x3-2x-5=0, eps=0.0001.

3. Să se găsească rădăcina reală folosind metoda secantă-tangentă, soluţia se găseşte în


intervalul [-3,3], pentru ecuaţia x3-x2-x-1=0, eps=0.0001.