Sunteți pe pagina 1din 3

MINISTERUL EDUCAȚIEI CULTURII ȘI CERCETĂRII AL REPUBLICII MOLDOVA

IP CENTRUL DE EXCELENȚĂ ÎN ECONOMIE ȘI FINANȚE


CATEDRA „CONTABILITATE ȘI ANALIZĂ ECONOMICĂ”

Lucrare de laborator nr.1


la Disciplina Informatica
Tema: Metoda Bisecției

Elaborat: Nina MELNIC


Grupa: FB 1710G
Verificat: Valeria CIOBANU

Chișinău, 2019
Analiza problemei
Metoda bisecției (sau a înjumătățirii intervalului) este o metodă simplă de determinare a
unei soluţii a ecuaţiei f(x) = 0. Aceasta determină punctul de mijloc «c» al segmentului [a, b], apoi
calculul valorii f(c) după un algoritm specific. Dacă f(c) = 0, atunci c este soluţia exactă a ecuaţiei.
În caz contrar, soluţia este căutată pe unul dintre segmentele [a, c] şi [c, b].

Elaborarea modelului matematic al problemei


Definim funcția f: R→R, f(x) = sin(3x)+3cos(x)-1; f’(x)=3cos(3x)-3sin(x)
Aflăm zerourile funcției derivate: f’(x)=0
3cos(3x)-3sin(x) = 0
3𝜋 Graficul funcției f(x) = sin(3x)+3cos(x)-1
+ 𝑘𝜋, 𝑘 ∈ 𝑍
𝑥={ 4
𝜋 𝑘𝜋 3
+ ,𝑘 ∈ 𝑍
8 2
2

x f(x) 1

-2 -1,96903 0
-2 -1 0 1 2
-1 0,479787
-1
0 2
-2
1 0,762027
2 -2,52786 -3

Elaborarea algoritmului
Fie dată funcția f(x) = sin(3x)+3cos(x)-1 . Să se determine o rădăcină a ecuaţiei f(x) = 0 pe
segmentul [-2; 2] pentru 10 divizări consecutive.

Scrierea programului
Atunci cînd numărul de aproximări succesive este fixat, iar extremităţile segmentului
cunoscute, atribuirile se realizează nemijlocit în program (exemplu Program P1). Însă atunci cînd
dorim să introducem numărul de divizări consecutive de la tastatură se va elabora Program P2.
Program P1; Program P2;
var a,b,c: real; var a,b,c: real;
i,n:integer; i,n:integer;
function f(x:real):real; function f(x:real):real;
begin begin
f:=sin(3*x)+3*cos(x)-1; f:=sin(3*x)+3*cos(x)-1;
end; end;
begin begin
a:=-2; a:=-2;
b:=2; b:=2;
n:=10; writeln ('introducem numarul n=');
for i:=1 to n do readln(n);
begin c:=(b+a)/2; for i:=1 to n do
writeln ('i=',i:3,' x=',c:10:8,' begin c:=(b+a)/2;
f(x)=',f(c):12:8); writeln('c=',c);
if f(c)=0 then break if f(c)=0 then break
else if f(c)*f(a)>0 then a:=c else if f(c)*f(a)>0 then a:=c
else b:=c; else b:=c;
end; end;
end. end.
Testarea programului
Rezultatul programului P1: Rezultatul programului P2:
i= 1 x=0.00000000 f(x)= 2.00000000 introducem numarul n=10
i= 2 x=-1.00000000 f(x)= 0.47978691 c=0
i= 3 x=-1.50000000 f(x)= 0.18974172 c=-1
i= 4 x=-1.75000000 f(x)= -0.67580367 c=-1.5
i= 5 x=-1.62500000 f(x)= -0.17572347 c=-1.75
i= 6 x=-1.56250000 f(x)= 0.02457898 c=-1.625
i= 7 x=-1.59375000 f(x)= -0.07122496 c=-1.5625
i= 8 x=-1.57812500 f(x)= -0.02222751 c=-1.59375
i= 9 x=-1.57031250 f(x)= 0.00145043 c=-1.578125
c=-1.5703125
i= 10 x=-1.57421875 f(x)= -0.01031996
c=-1.57421875

Concluzie
Metoda bisecției este aplicabilă atunci când rezolvăm ecuația f(x)=0 pentru variabila reală
x, unde f este o funcție continuă definită pe intervalul [a; b], iar f(a) și f(b) au semne opuse
(f(a)*f(b)<0). Atunci în acel interval se găsește cel puțin o rădăcină a ecuației f(x)=0.
La fiecare pas, metoda împarte intervalul în două, calculând jumătatea intervalului
c:=(b+a)/2 și valoarea funcției f(c) în acest punct. Procesul continuă până cînd intervalul este
suficient de mic.

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