Sunteți pe pagina 1din 7

Lucrare practic nr.

1
La informatic

Tema: Metoda biseciei

Efectuat de: Sarivan Ana-Maria clasa a XII-a ,,A


Verificat de: Dudu Silvia

2013

Planul:
1. Scopul lucrrii practice

2. Teoria metodei bisecie

3. Programele efectuate prin metoda biseciei


4. Concluzia

Scopul lucrrii:
1) S se separe toate rdcinile reale ale ecuaiei f(x)=0
unde y=f(x) este o funcie real de variabil real.
2) S se determine o rdcin real a ecuaiei date cu
ajutorul metodei njumtirei intervalului cu o eroare
mai mic dect =10-2.
3) S se determine rezultatele lund n consideraie
numrul de iteraii.
4) Ecuaiile propuse: x3+34x+23 i x3-2ln(5x+1)-21

Metoda biseciei
Una din cele mai simple metode de determinare a unei
soluii a ecuaiei f(x)=0 este metoda biseciei. Metoda
presupune determinarea punctului de mijloc c a segmentului
[a,b] apoi calculul valorii f(c). Dac f(c)=0, atunci c este
soluia exact a ecuaiei. n caz contrar soluia este cutat n
continuare pe acel dintre segmentele [a,c] i [c,b] pentru care
semnul funciei n extrimiti este diferit.
Estimarea erorii: Deoarece x este un punct al segmentului
[a,b] rezult c diferena dintre soluia exact i cea calculat
nu este mai mare dect lungimea segmentului [a,b]. Prin
urmare, localizarea soluiei pe un segment cu lungimea
asigur o eroare ce nu depete lungimea a segmentului.
-ai< =bi-a

Algoritmul
Algoritmul de calcul pentru un numr prestabilit n de
aproximri succesive:
Pas 0 Iniializarea: i0;
Pas 1 Determinarea mijlocului segmentului c(a+b)/2;
Pas 2 Reducerea segmentului ce conine soluia: dac f(c)=0 atunci
soluia calculate este x=c. SFRIT.n caz contrar dac f(a) f(c)>0,
atunci ac; bb,
astfel aa; bc
Pas 3 ii+1; Dac i=n atunci soluia calculat este x=(a+b)/2.
SFRIT.n caz contrar se revine la pasul 1.

Algoritmul de calcul pentru o precizie data:


Pas 1 Determinarea mijlocului segmentului c(a+b)/2;
Pas 2 Dac f(c)=0, atunci soluia calculat este x=c.SFRIT. n caz
contrar dac f(a) f(c)>0, atunci ac; bb, astfel aa; bc
Pas 3 Dac b-a< , atunci soluia calculat este
x=(a+b)/2.SFRIT. n caz contrar,se revine la punctul 1.
Programele:
1) f(x)= x3+34x+23, segmentul [0,3]
program s1;
var a,b,c:real;
i,n:integer;
function f(x:real):real;
begin
f:=x*x*x+34*x+23;end;
begin a:=0; b:=3; n:=26;
for i:=1 to n do
begin c:=(b+a)/2;
writeln('i=',i:3,' x=',c:10:6,' f(x)=',f(c):12:6);
if f(c)=0 then break
else if f(c)*f(a)>0 then a:=c else b:=c;end;
end.
----------------Foaia Neagra-------------------i=

1 x=

1.500000 f(x)=

77.375000

i=

2 x=

2.250000 f(x)=

110.890625

i=

3 x=

2.625000 f(x)=

130.337891

i=

4 x=

2.812500 f(x)=

140.872314

i=

5 x=

2.906250 f(x)=

146.359528

i=

6 x=

2.953125 f(x)=

149.160297

i=

7 x=

2.976563 f(x)=

150.575243

i=

8 x=

2.988281 f(x)=

151.286391

i=

9 x=

2.994141 f(x)=

151.642887

i= 10 x=

2.997070 f(x)=

151.821366

2) f(x)= x3-2ln(5x+1)-21, segmentul [3,5]


program s2;
var a,b,c:real;
i,n:integer;
function f(x:real):real;
begin
f:=x*x*x-2*ln(5*x+1)-21;end;
begin a:=3; b:=5; n:=32;
for i:=1 to n do
begin c:=(b+a)/2;
writeln('i=',i:3,' x=',c:10:6,' f(x)=',f(c):12:6);
if f(c)=0 then break
else if f(c)*f(a)>0 then a:=c else b:=c;end;
end.
----------------Foaia Neagra-------------------i=

1 x=

4.000000 f(x)=

36.910955

i=

2 x=

4.500000 f(x)=

63.810999

i=

3 x=

4.750000 f(x)=

79.754224

i=

4 x=

4.875000 f(x)=

88.389893

i=

5 x=

4.937500 f(x)=

92.878841

i=

6 x=

4.968750 f(x)=

95.166730

i=

7 x=

4.984375 f(x)=

96.321609

i=

8 x=

4.992188 f(x)=

96.901792

i=

9 x=

4.996094 f(x)=

97.192570

i= 10 x=

4.998047 f(x)=

97.338131

3) f(x)= x3+34x+23, segmentul [1,3]


program s3;
var a,b,c,eps :real;
function f(x:real):real;
begin f:=x*x*x+34*x+23 ;end;
begin a:=1; b:=3; eps:=0.01;
repeat c:=(b+a)/2;
writeln ('x=', c:10:6,' f(x)=', f(c):12:6);
if f(c)=0 then break
else if f(c)*f(a)>0 then a:=c else b:=c;
until abs(b-a)<eps;
end.

----------------Foaia Neagra-------------------x=

2.000000 f(x)=

99.000000

x=

2.500000 f(x)=

123.625000

x=

2.750000 f(x)=

137.296875

x=

2.875000 f(x)=

144.513672

x=

2.937500 f(x)=

148.222412

x=

2.968750 f(x)=

150.102509

x=

2.984375 f(x)=

151.049068

x=

2.992188 f(x)=

151.523986

4) f(x)= x3-2ln(5x+1)-21, segmentul [0,3]


program s4;
var a,b,c,eps :real;
function f(x:real):real;
begin f:=x*x*x-2*ln(5*x+1)-21;end;
begin a:=1; b:=3; eps:=0.01;
repeat c:=(b+a)/2;
writeln ('x=', c:10:6,' f(x)=', f(c):12:6) ;
if f(c)=0 then break
else if f(c)*f(a)>0 then a:=c else b:=c;
until abs(b-a)<eps;
end.
----------------Foaia Neagra-------------------x=

2.000000 f(x)=

-17.795791

x=

2.500000 f(x)=

-10.580379

x=

2.750000 f(x)=

-5.585611

x=

2.875000 f(x)=

-2.701814

x=

2.937500 f(x)=

-1.158316

x=

2.968750 f(x)=

-0.360542

x=

2.984375 f(x)=

0.044931

x=

2.976563 f(x)=

-0.158357

Concluzia:

Efectuind aceasta lucrare practica am realizat c metoda biseciei este un


a din cele mai simple metode pentru determinarea unei soluii a ecuaiei
f(x)=0.Am observat c deosebirea dintre soluia exact i cea calculat n
u este mai mare dect lungimea segmentului [ai,bi] .ns metoda biseciei,
chiar daca e destul de simpla, nu este eficient n cazurile cnd rezultatul
trebuie obinut cu o exactitate inalta printr-un numr redus de iteraii.