Sunteți pe pagina 1din 4

Metoda biseciei(metoda injumatatirii)

Principiul metodei
Aceast metod poate fi considerat o variant mai evoluat a metodei generale,
att deoarece viteza cu care se determin soluia aproximativ este mai mare, ct
i pentru c permite cunoaterea, de la bun nceput a numrului de iteraii care
trebuie parcurse pentru rezolvarea ecuaiei, cu o precizie impus.
Fie ecuatia f(x)=0,
unde functia fx! este continua pe intervalul "a,b#. Presupunem ca in urma unui
proces de separare izolare! a radacinilor, ecuatia de mai sus are cel mult o
radacina in intervalul "a,b#. $aca notam cu aceasta radacina , sunt posibile
urmatoarele cazuri %
a! daca fa! & ' , atunci & a
b! daca fb! & ' , atunci & b
c! daca fa!fb! ( ' , atunci (a, b)
d! daca fa!fb! ) ' , atunci nu exista [a, b] .
Presupunand ca se realizeaza cazul c! tratarea celorlalte cazuri fiind banala!,
pentru a gasi radacina (a, b) , impartim intervalul "a,b# in doua parti egale prin
punctul x' & a*b !+,. $aca fx'! & ', atunci & x' este radacina cautata.-n caz
contrar alegem semiintervalul " a., b. # la capetele caruia funtia are semne opuse,
deoarece acesta contine radacina . Prin urmare, se realizeaza unul dintre
cazurile a. & a' , b. & x' , daca fa!fb! ( '
a. & x' , b. & b' , daca fa!fb! ) '.
/oul interval "a. ,b.# se in0umatateste din nou, facandu1se aceleasi teste asupra
semnului functiei ca si mai sus. 2ontinuandu1se acest procedeu, dupa un numar
de i pasi iteratii! se obtine intervalul "ai ,bi# ca urmare a in0umatatirii intervalului
"ai1. ,bi1.# prin punctul xi1. & ai1. * bi1. !+,, astefel incat
ai & ai1. , bi & xi1. , daca fai1.!fxi1.! ( '
ai & xi1. , bi & bi1. , daca fai1.!fxi1.! ) '.
3ste evident ca extremitatile noului subinterval satisfac relatia
fai!fbi! ( ' ,
iar lungimea sa este

-exemplu
S zicem c avem funcia f(x)=3x+3 i vrem s gsim acel x pentru care
ecuaia f(x)=0este adevrat, adic vrem s-i gsim rdcina
! prim metod ar fi s alegem un interval unde credem c s-ar afla acest x, s lum
pe r"nd toate valorile din interval i s vedem pentru care valoare f(x)=0 este
adevrat #cest algoritm necesit O(n) timp de execuie $l putem face i mai rapid
%um& 'rin metoda biseciei
Metoda biseciei const (n reducerea intervalului de cutare prin (njumtirea
repetat i selectarea subintervalului (n care se gsete rdcina )in acest motiv
algoritmul este logaritmic O(logn) #lgoritmul este similar cu cutarea binar
%a metoda s funcioneze trebuie ca funcia, creia vrem s-i gsim rdcina, s fie
continu
%onform teoremei %auc*+-,olzano (teorema valorii intermediare) dac f (o funcie
oarecare) este continu pe intervalul [a,b] i f(a) i f(b) au semne opuse,
adic f(a)f(b)<0, atunci exist o valoare c din intervalul (a,b) pentru
care f(c)=0
-ste evident, deoarece dac la extremiti funcia are semne opuse atunci undeva
graficul intersecteaz axa Ox .raficul funciei f(x)=3x+3 este urmtorul/
!bservai c intersecteaz axa Ox (n punctul -1
'entru aceast funcie voi alege intervalul [a,b] - a,b numere reale 0ntervalul va fi
(mprit (n dou subintervale/ [a,c] i [c,b], unde c=(a+b)2 %utarea rdcinii se
va face (n subintervalul (n care funcia f(x)=3x+3 (i sc*imb semnul, astfel/
)ac f(a)f(c)<0, atunci cutarea continu (n intervalul [a,c]1
#ltfel cutarea continu (n intervalul [c,b]
'rocesul se termin atunci c"nd se ajunge la intervalul [a,b] pentru
care ba<sigma, unde sigma este eroarea acceptat pentru o precizie de 2
zecimale i are valoarea 0.00001 3u uitai c calculele cu float i double nu sunt
foarte precise, de aceea trebuie s lum (n considerare o marj de eroare
#include <iostream>
using namespace std;
// Functia f
double f(double x)
{
return 3*x + 3;

double sigma ! "#""""$;


// %etoda bisectiei
double get&oot(double a' double b)
{
double c;
if(b(a < sigma) return (a+b) / )#"; // *(a gasit radacina' o returne+
else
{
c ! (a+b) / )#";
if(f(a) * f(c) < ") return get&oot(a' c);
else return get&oot(c' b);

int main()
{
// *e ,a afisa ("#------ care este foarte aproape de ($
cout << get&oot(($"' $");
s.stem(/012*3/);
return ";

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