Sunteți pe pagina 1din 6

4.

METODA BIPARTIŢIEI

4.1 SCOP
Înţelegerea principiului metodei bipartiţiei pentru rezolvarea ecuaţiilor şi a
modului de aplicare al acesteia utilizând programul MathCAD.

4.2 NOŢIUNI TEORETICE


Din punct de vedere numeric, a determina o rădăcină aproximativă, x , a unei
ecuaţii este echivalent cu a localiza un interval [a, b] în vecinătatea rădăcinii, care o
include şi a cărui normă (dimensiune) este mai mică sau egală cu toleranţa de calcul
impusă, T.
Valoarea aproximativă a rădăcinii se poate scrie după formula:

b+a T
x= ± . (4.1)
2 2

4.2.1 Metoda bipartiţiei


Aplicarea acestei metode necesită o localizare orientativă a soluţiei, deci
identificarea unui interval pe care există o singură rădăcină.
Fie funcţia f (x ) asociată ecuaţiei f ( x ) = 0 şi o rădăcină α ∈ [a, b] , unde
[ a, b] este un interval pe care funcţia este continuă şi are cel mult o rădăcină.
Metoda bipartiţiei se bazează pe faptul că produsul valorilor funcţiei la
capetele intervalului ce conţine rădăcina este negativ. Plecând de la intervalul iniţial
se procedează la înjumătăţiri succesive ale acestuia, reţinând, la fiecare pas, jumătatea
în care este localizată rădăcina. Procesul iterativ se întrerupe când norma intervalului
devine mai mică decât toleranţa.
Fie un interval [a, b] ca în figura 4.1:

a+b
a 2 b

a + 3b
4

Fig. 4.1. Intervalul iniţial de localizare al rădăcinii.

⎛a+b⎞ ⎡a + b ⎤
Deoarece f (a ) ⋅ f ⎜ ⎟ > 0 , se trage concluzia că x ∈ ⎢ , b ⎥ . Se
⎝ 2 ⎠ ⎣ 2 ⎦
procedează la înjumătăţirea intervalului, căutându-se partea care conţine rădăcina.
⎛a+b⎞ ⎛ a + 3b ⎞ ⎡ a + b a + 3b ⎤
Cum f ⎜ ⎟⋅ f⎜ ⎟ < 0 , rezultă intervalul x ∈ ⎢ , . În acelaşi mod,
⎝ 2 ⎠ ⎝ 4 ⎠ ⎣ 2 4 ⎥⎦
⎡ 3a + 5b a + 3b ⎤
după încă o iteraţie, se obţine x ∈ ⎢ , .
⎣ 8 4 ⎥⎦
Se observă că între lungimile intervalelor rezultate după fiecare iteraţie există
relaţia:

b − a = 2 b1 − a1 = 2 2 b2 − a 2 = ...... = 2 n bn − a n . (4.2)

Aceasta permite să se calculeze numărul de paşi necesari pentru aproximarea unei


rădăcini cu o anumită precizie, dacă se cunoaşte dimensiunea intervalului iniţial.
Conform criteriului de precizie, procesul iterativ se va opri când limitele
intervalului după n iteraţii vor satisface inegalitatea:

bn − a n ≤ T . (4.3)

Situaţia limită (de atingere a preciziei impuse) este dată de relaţia:

b−a
2n = (4.4)
T

din care se calculează numărul minim de paşi necesari, n, pentru atingerea preciziei T.
Deşi această metodă este precisă, ea este lent convergentă, necesitând un
număr mare de paşi pentru obţinerea unei soluţii precise.

4.3 PROBLEME REZOLVATE


Se vor parcurge în continuare etapele de determinare a unei soluţii numerice
prin metoda bipartiţiei pentru o ecuaţie dată. Fie cazul unei funcţii

f ( x) = x 2 + 2 x − 15 (4.5)

asociată ecuaţiei

x 2 + 2 x − 15 = 0 . (4.6)

1. Localizarea orientativă a rădăcinilor


În acest scop se trasează în MathCAD graficul funcţiei f (x ) şi se localizează
intersecţiile sale cu axa absciselor, fiecare intersecţie constituind o rădăcină reală a
ecuaţiei.
Pentru fixarea ideilor, se va determina soluţia de pe axa pozitivă, alegând ca
interval iniţial de mărginire [0, 10] .
2
f ( x) := x + 2⋅ x − 15

150

100
a := 0
f ( x) 50
b := 10
0

50
0 2 4 6 8 10
x
2. Verificarea îndeplinirii condiţiilor necesare aplicării metodei
Pe intervalul [ a, b] , funcţia f (x ) trebuie să îndeplinească condiţiile:
a. să fie continuă;
b. să aibă o singură soluţie pe acest interval;
c. să satisfacă inegalitatea f ( a ) ⋅ f (b) ≤ 0 .
3. Calculul numărului de paşi necesari pentru a obţine o precizie impusă
Dacă pentru exemplul considerat se impune pentru dimensiunea intervalului
final ε = 0.05, numărul de paşi de calcul necesari, n, este dat de expresia:

⎛∆⎞
ln⎜ ⎟
ε
n= ⎝ ⎠.
ln(2)

Completând secvenţa de mai sus se obţine valoarea lui n:

∆ := b − a ⎛∆⎞
ε := 0.05 ln⎜
∆ = 10
n :=
⎝ε⎠
ln( 2)

n = 7.644
În concluzie, pentru a se obţine o precizie cel puţin egală cu ε = 0.05, sunt
necesare 8 cicluri de calcul.
4. Elaborarea secvenţei de program pentru divizarea intervalului
Se propune varianta următoare:
a b
c
2
a if( f( a ) . f( c ) 0 , c , a )

b if( f( a ) . f( c ) 0 , c , b )

dif a b

5. Calculul rădăcinii cu precizia impusă


Acest lucru se face prin repetarea secvenţei de mai sus de [n] +1 ori unde prin
[..] s-a notat partea întreagă. Un exemplu de calcul cu trei iteraţii este dat in
continuare:

−6
TOL := 10

a+b
c := c=5 Coordonata punctului de divizare a intervalului
2
a := if( f ( a) ⋅ f ( c) ≥ 0 , c , a) a=0 Noua valoare a capãtului din stânga

b := if( f ( a) ⋅ f ( c) ≤ 0 , c , b ) b=5 Noua valoare a capãtului din dreapta

ε = 0.05 Noua lungime a intervalului


ε := a − b
i := i + 1 i=1 Numãrul de pasi efectuati
a+b
c :=
2
c = 2.5
a := if( f ( a) ⋅ f ( c) ≥ 0 , c , a)
a = 2.5
b := if( f ( a) ⋅ f ( c) ≤ 0 , c , b )
b=5
ε := a − b ε = 2.5
i := i + 1 i=2

a+b
c :=
2
a := if( f ( a) ⋅ f ( c) ≥ 0 , c , a) c = 3.75
a = 2.5
b := if( f ( a) ⋅ f ( c) ≤ 0 , c , b )
b = 3.75
ε := a − b ε = 1.25
i := i + 1 i=3

După aceste cicluri de calcul se poate afirma că soluţia este

ε
x = 3.125 ± 0.625 adică x = c ± .
2

Pentru a se obţine soluţia cu precizia cerută mai trebuiesc efectuate încă 5 iteraţii.

Automatizarea procesului computaţional


Se prezintă în continuare codul funcţiei bipart, care are ca argumente limitele
iniţiale ale intervalului ce mărgineşte soluţia, m respectiv n şi precizia de calcul
impusă, ε . Funcţia returnează o matrice cu patru coloane, cu semnificaţiile
următoare:
• prima coloană conţine valorile succesive pentru limita inferioară a intervalului
ce conţine soluţia, ai ;
• a doua coloană le cuprinde pe cele pentru limita superioară a intervalului în
care se găseşte soluţia, bi ;
• coloana a treia conţine valorile rezultate după fiecare iteraţie pentru soluţia
căutată (mijlocul intervalului găsit la iteraţia respectivă), xi ;
• ultima coloană este formată cu valorile erorii la fiecare iteraţie, eri .
Astfel, raportându-ne la formula (4.13), coloana a treia cuprinde valorile
ε
pentru c , iar ultima coloană valorile pentru .
2
2
f ( x) := x + 2x − 15
bipart ( m, n , ε) := a ←m
0
b ←n
0
a −b
0 0
er ←
0 2
a +b
0 0
x ←
0 2
i←0
ε
while er >
i 2
⎛ ai + b i ⎞
( i)
if f a ⋅ f ⎜
⎝ 2 ⎠
>0

a +b
i i
a ←
i+ 1 2
b ←b
i+ 1 i

⎛ ai + b i ⎞
( i)
if f a ⋅ f ⎜
⎝ 2 ⎠
0

a +b
i i
a ←
i+ 1 2
b ←a
i+ 1 i+ 1

⎛ ai + b i ⎞
( i)
if f a ⋅ f ⎜
⎝ 2 ⎠
<0

a +b
i i
b ←
i+ 1 2
a ←a
i+ 1 i
a +b
i+ 1 i+ 1
x ←
i+ 1 2
a −b
i+ 1 i+ 1
er ←
i+ 1 2
i←i+ 1
( a b x er )
⎡⎢⎛⎜ 0 ⎞ ⎛⎜ 10 ⎞ ⎛⎜ 5 ⎞ ⎛⎜ 5 ⎞ ⎤⎥
⎢⎜ 0 ⎟ ⎜ 5 ⎟ ⎜ 2.5 ⎟ ⎜ 2.5 ⎟ ⎥
⎢⎜ 2.5 ⎟ ⎜ 5 ⎟ ⎜ 3.75 ⎟ ⎜ 1.25 ⎟ ⎥
⎢⎜ 2.5 ⎟ ⎜ 3.75 ⎟ ⎜ 3.125 ⎟ ⎜ 0.625 ⎟ ⎥
⎢⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎥
bipart ( 0 , 10, 0.05) = ⎢⎜ 2.5 ⎟ ⎜ 3.125 ⎟ ⎜ 2.813 ⎟ ⎜ 0.313 ⎟ ⎥
⎢⎜ 2.813 ⎟ ⎜ 3.125 ⎟ ⎜ 2.969 ⎟ ⎜ 0.156 ⎟ ⎥
⎢⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎥
⎢⎜ 2.969 ⎟ ⎜ 3.125 ⎟ ⎜ 3.047 ⎟ ⎜ 0.078 ⎟ ⎥
⎢⎜ 2.969 ⎟ ⎜ 3.047 ⎟ ⎜ 3.008 ⎟ ⎜ 0.039 ⎟ ⎥
⎢⎣⎜⎝ 2.969 ⎠ ⎜⎝ 3.008 ⎠ ⎜⎝ 2.988 ⎠ ⎜⎝ 0.02 ⎠ ⎥⎦

De exemplu, semnificaţia ultimei linii din această matrice este că soluţia se


găseşte în intervalul [ 2.969, 3.008] şi are valoarea x = 2.998 ± 0.02 .
Se remarcă de asemenea întreruperea ciclului de calcul în cazul în care prin
înjumătăţire se „cade” peste soluţia exactă a ecuaţiei. Eroarea va fi în acest caz,
evident, nulă.
⎡⎛ 2 ⎞ ⎛ 6 ⎞ ⎛ 4 ⎞ ⎛ 2 ⎞ ⎤
bipart ( 2 , 6 , 0.05) = ⎢⎜ 2 ⎜ 4 ⎜ 3 ⎜ 1 ⎥
⎢⎜ ⎜ ⎜ ⎜ ⎥
⎣⎝ 3 ⎠ ⎝ 3 ⎠ ⎝ 3 ⎠ ⎝ 0 ⎠ ⎦

4.4 TEMĂ DE LUCRU


1. Se va continua calcularea soluţiei ecuaţiei din exemplul dat, cu precizia
ε = 10 −6 .
2. Se vor rezolva ecuaţiile găsind rădăcina cea mai mare:

x 3 + 5x − 6 = 0 ,
ln( x 3 + 5 x − 5 ) = 0 ,
1.23457 x 5 − 1.752137 x 3 − 2.2145793 = 0

cu aceeaşi precizie şi se vor comenta rezultatele.


1
3. Se dă funcţia f ( x) = care satisface inegalitatea f ( 2) ⋅ f (5) < 0 şi totuşi,
x−3
pe intervalul [2, 5] nu există nici o rădăcină a ecuaţiei f ( x) = 0 . Este acest
fapt în contradicţie cu metoda bipartiţiei?

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