Sunteți pe pagina 1din 13

Rezolvarea numeric a

ecuaiilor algebrice i
transcendente
Ionel Tamara
CON295

O ecuaie de forma f(x)=0 se numete algebric dac funcia f(x) este


un polinom sau poate fi adus la forma polinomial.
O ecuaie este transcendent dac nu este algebric.
Fie f:[xmin, xmax] R
Orice valoare [xmin, xmax] pentru care f()=0 se numete rdcin a
ecuaiei, sau zero al funciei f(x).
n general, prin rdcin aproximativ a ecuaiei f(x)=0 se nelege o
valoare apropiat de cu proprietatea
- ( R, 0) sau numrul cu proprietatea f().
Aceste dou moduri de definire a rdcinii aproximative nu snt
echivalente.

Gsirea rdcinilor reale ale


f(x)=0 implic dou etape:

Separarea (izolarea)
rdcinilor,
adic stabilirea unei partiii
xmin=x1,x2,,xm,,xn=xmax
astfel nct orice subinterval
[xm, xm+1] s conin cel mult
o soluie (rdcin) a ecuaiei
f(x)=0.

Calcului rdcinilor cu
precizia dorit,
presupunnd c s-a efectuat
separarea lor.

Metode numerice de rezolvare a


ecuaiilor algebrice i transcendente:

Metoda biseciei
(njumtirii)
Metoda coardei
(secantei)
Metoda Newton
(tangentei)

Metoda biseciei (njumtirii)


Metoda este utilizat pentru
gsirea rdcinii aproximative
a ecuaiei f(x)=0 izolate ntr-un
interval a, b n cazul n care
f(a)*f(b)<0
cu aproximarea prestabilit.
- rdcina ecuaiei pe[a, b].
Dac f(a)=0, atunci =a
Dac f(b)=0, atunci =b
Dac f(a)*f(b)>0, atunci [a, b]
Dac f(a)*f(b)<0, atunci [a, b]

Dac f(a)*f(b)<0, atunci mprim [a, b] n 2 pri egale prin punctul


x0=(a+b)/2
Dac f(x0)=0, atunci =x0 este rdcina cutat, altfel alegem [a1, b1] la
capetele cruia funcia are semne opuse.
Noul inteval se njumtete din nou fcndu-se aceleai teste asupra
semnului funciei de mai sus.
Ca urmare a njumtirii acestui interval prin punctul xi =(ai +bi ) /2 se obine fie
rdcina exact =xi, fie un nou inteval [ai+1, bi+1].
ba
bn an
Estimarea aprirori a erorii o realizm din relaia:
n
2

n ln((b a) / ) / ln 2 1

f(bi)

f(ai)

Interpretarea
geometrica
ai

xi

bi

Prezentarea programului Pascal.


program Metoda_bisectiei;
uses crt;
var
a,b,e:real; n:integer;
function f(x:real):real;
begin
f:=x*sin(x/2); end;
function bisect_apost(a,b,e:real;var n:integer ):real;
var x:real;
begin x:=(a+b)/2; n:=0; while (abs(b-a)>=e) and (abs(f(x))>=e) do begin n:=n+1;
if f(a)*f(x)<0 then b:=x else a:=x; x:=(a+b)/2; end;
bisect_apost:=x; end;
function bisect_apriori(a,b,e:real;var n:integer):real;
label 1;
var x:real; i:integer;
begin
n:=trunc(ln((b-a)/e)/ln(2))+1; for i:=1 to n do
begin
x:=(a+b)/2; if f(x)=0 then goto 1;
if f(a)<0 then if f(x)<0 then a:=x else b:=x
else if f(x)<0 then b:=x else a:=x; end;
1:
bisect_apriori:=x; end;
begin clrscr;
write('Introduceti a : '); readln(a); write('Introduceti b : '); readln(b); write('Introduceti e : '); readln(e);
if f(a)*f(b)=0 then if f(a)=0 then writeln(a:0:6) else writeln(b:0:6) else if f(a)*f(b)<0 then
begin writeln('bisect_apost=',bisect_apost(a,b,e):0:6,'numarul de iteratii=',n);
writeln('bisect_apriori=',bisect_apriori(a,b,e):0:6,'numarul de iteratii=',n);
end; end.

Metoda coardelor (secantei)


Metoda este utilizat pentru gsirea
rdcinii aproximative
a ecuaiei f(x)=0 izolate ntr-un interval
a, b n cazul n care
f(a)*f(b)<0
cu aproximarea prestabilit.
- rdcina ecuaiei pe [a, b].

Intervalele succesive
a1, b1, a2, b2 ai, bi
se obin prin mprirea
intervalului anterior n
raportul f(ai -1)
f(bi -1)
Metoda secantei este
echivalent cu nlocuirea f(x),
prin coarda care trece prin
punctele (ai, f(ai)) i (bi, f(bi))

x ai
y f (ai )

bi ai
f (bi ) f (ai )

Din ecuaia coardei


se poate obine coordonata punctului
de intersecie xi al coardei cu axa
a f (b ) b f ( a )
absciselor
x
i

f (bi ) f (ai )

Dup un anumit numr de pai se


obine, fie o rdcin exact =xi,
astfel nct f(xi)=0, fie o secven de
intervale [a0, b0], [a1, b1] [ai, bi]

Generaliznd, conchidem:
Nemicat este acel capt al
intervalului pentru care semnul
funciei f () coincide cu semnul
derivatei de ordinul doi f'' ();
Aproximri consecutive xn se afl n
acea parte de rdcin unde funcia
f () are semnul opus semnului
derivatei de ordinul doi f'' ().

Pentru oprire a procesului iterativ


putem folosi sau condiia f(xn) < ,
sau condiia xn xn - 1 <., unde
- eroare absolut iniial dat

f(bi)

xi
f(ai)

ai

bi

Prezentarea programului Pascal.


program Metoda_coardelor;
var a,b,e : real; n : integer;
function f(x:real) : real;
begin f:=sqr(cos(x))-x/4 end;
function coarda(a,b,e:real):real;
var c0,c1,d:real;
begin c0:=(a*f(b)-b*f(a))/(f(b)-f(a));
n:=0;
repeat n:=n+1;
if f(a)<0 then if f(c0)<0 then a:=c0 else b:=c0
else if f(c0)<0 then b:=c0 else a:=c0;
c1:=c0;
c0:= (a*f(b)-b*f(a))/(f(b)-f(a));
d:=abs(c0-c1)
until (d<e) or (abs(f(c1))<e);
coarda:= c0;
end;
begin
writeln('introduceti intervalul[a,b]:');
write('introduceti a:');read(a);
write('introduceti b:');read(b);
write('introduceti e:');read(e);
if f(a)*f(b)<0 then writeln('x =',coarda(a,b,e):0:6,'n=',n);
else if f(a)*f(b)=0 then begin if f(a)=0 then write('solutia este ,a:0:4)
else write('solutia este ,b:0:4) ; end;
else writeln(metoda nu poate fi aplicata pe acest interval);
end.

Metoda Newton
Se consider f:(-r, +r)R, i f()=0 ( este soluie a ecuaiei f(x)=0).
Presupunem c f este de dou ori derivabil pe intervalul (-r, +r) i exista
m,M>0 astfel nct:

f ' ( x) m, x ( r , r ),
f " ( x) M , x ( r , r ).
Fiind dat x0(-r, +r), construim elementul x1 ca fiind intersecia tangentei la
graficul funciei f(x) n punctul de coordonate (x0, f(x0)) cu axa Ox .
Pentru a determina acest punct, vom scrie ecuaia dreptei tangent la grafic n
punctul de coordonate ( x0, f(x0)), i anume:

y-f(x0)=f'(x0)(x-x0).

Daca y=0 , f(x0)=-f'(x0)(x1-x0) de unde rezult:

x1= -(f(x0)/f'(x0))+x0

n general, repetnd construcia prin


intersectarea dreptei tangent la grafic ntrun punct de coordonate (xn,f(xn)) cu axa
Ox, se obine:
xn+1 = xn -(f(xn)/f'(xn))
Utiliznd metoda Newton este important s
inem cont de urmtoarea regul: n
calitate de prima aproximare 0 se alege
acel capt al intervalului [, b] cu soluia
separat (dac acesta se cunoate), sau alt
careva punct din apropiere la , pentru care
f(x) are acelai semn ca i derivata de
ordinul doi f'' ().
Pentru oprire a procesului iterativ putem
folosi condiia f(xn) < sau condiia xn
xn - 1 <.
Procesul iterativ converge la soluie dac
f(0) * f'' (0) > 0.

Interpretarea
geometrica

Prezentarea programului Pascal.


program Metoda_Newton;
var a,b,e,x0:real; n:integer;
function f(x:real):real;
begin f:= sqr(cos(x))-x/4; end;
function fp(x:real):real;
begin fp:=sin(2*x)-1/4;
end;
function fpp(x:real):real;
begin fpp:=-2*cos(2*x);
end;
function Newton (x0,e:real):real;
var x,d:real;
begin n:=0;
repeat n:=n+1;
x:=x0-f(x0)/fp(x0);
d:=abs(x-x0);
x0:=x;
until (d<e) or (abs(f(x))<e);
newton:=x;
end;
begin
writeln('A=');readln(a);
writeln('B=');readln(b);
writeln('e=');readln(e);
if f(a)*f(b)=0 then if f(a)=0 then writeln('x=',a:0:6) else writeln('x=',b:0:6) else if f(a)*f(b)<0 then
if (f(a)*fpp(a)<0) and (f(b)*fpp(b)<0) then writeln(metoda nu poate fi aplicat pe acest interval)
else begin if f(a)*fpp(a)>0 then x0:=a else x0:=b;
writeln ('x=',newton (x0,e):0:6,'num de iteratii=',n); end;
end.

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