Sunteți pe pagina 1din 5

Model de Lucrare de laborator 1.

Tema: Rezolvarea aproximativă a ecuaţiilor numerice prin metoda bisectiei


Lucrarea de laborator constă în 3 etape:
1. Rezolvarea matematică a problemei formulate.
a. Se separă soluţiile ecuaţiei date, adică se stabilesc astfel de segmente (intervale)
de lungime cît mai mică, ca fiecare din ele să conţină o singură soluţie ( metoda
grafică, tabelară şi a. ).
b. Se determină soluţiile cu exactitatea dată ε>0. aceasta se poate realiza prin mai
multe metode (mai jos expuse). Esenţa tuturor metodelor constă în construirea
după o lege sau alta a unui şir de numere (aproximaţii) xn , care converge la
soluţia căutată. Se poate deduce anumite formule, care ne permit să calculăm
soluţia cu exactitatea cerută ε>0.
Exemplu 1. Să se determine soluţia ecuaţiei algebrice prin metoda
bisecţiei f (x ) = x 3 + x − 1 , cu ε = 10 −3 .
Rezolvare. Folosim schema lui Horner pentru a determina cel mai mic interval posibil
intervalul în care se află cel puţin o soluţie. Pe prima linie a tabelului vom scrie coeficienţii
ecuaţiei date, pe prima coloană vom da valori arbitrare pentru necunoscuta x , adică alegem
nişte valori oarecare, după care coborâm primul coeficient care este 1, înmulţim cu valoarea
x = 0 şi o adunăm la celălalt coeficient, adică 0 ⋅ 1 + 0 , după care se obţine valoarea 0, care se
înscrie în următorul spaţiu. Procedăm la fel cu valoarea nouă obţinută, se înmulţeşte x = 0 cu
valoarea 0 şi se adună la coeficientul al treilea, adică 0 ⋅ 0 + 1 şi obţinem 1, apoi noua valoare 1
se înmulţeşte cu acelaşi 0, produsul obţinut se adună la coeficientul -1 şi avem 1 ⋅ 0 + (− 1) = −1 .
Ultima valoare obţinută este valoarea ecuaţiei în punctul x = 0 . Astfel s-a completat a doua linie.
Procedură continuă până când pe ultima coloană se obţine două valori consecutive de semne
opuse.
Tabelul 1.

x a0 = 1 a1 = 0 a2 = 1 a 3 = −1
0 1 0 1 -1
1 1 1 2 1
}schimbare de semn.
2 1 2 5 9
3 1 3 10 29
Deci x ∈ [0,1] , unde f (0 ) = −1 şi f (1) = 1 cu
condiţia că f (0) ⋅ f (1) < 0 ⇒ [0,1] , ceea ce înseamnă că există o soluţie pe acest interval şi nu
mai una singură.
Considerăm a = 0 şi b = 1 , atunci calculăm primul termen al şirului iterativ x1 după
formula generală (1.2), obţinem:
a + b 0 +1
x1 =
= = 0,5 ;
2 2
verificăm condiţia de oprire pentru primul pas x1 − a = 0,5 − 0 = 0,5 > ε .
Calculăm valoarea funcţiei în punctul x1 , pentru a putea a putea verifica ce interval va fi
divizat în continuare:
f (x1 ) = f (0,5) = 0,5 3 + 0,5 − 1 = 0,125 + 0,5 − 1 = −0,375 .
Se verifică f (x1 ) ⋅ f (b ) = f (0,5) ⋅ f (1) < 0 şi f (a ) ⋅ f (x1 ) = f (0) ⋅ f (0,5) > 0 , se observă că intervalul
ce va fi considerat în continuare va fi intervalul [ x1 , b] = [0,5;1] , deoarece capetele acestui interval
verifică condiţia f (x1 ) ⋅ f (b ) < 0 . Cu acestea calculăm pe x 2
b + x1 0,5 + 1
x2 = = = 0,75 .
2 2
La fel verificăm condiţia de oprire pentru al doilea pas x2 − x1 = 0,75 − 0,5 = 0,25 > ε , se
observă că nu avem verificată această condiţie, de aceea continuăm să determinăm şi alţi termeni
ai şirului. Pentru a determina x3 calculăm
f ( x 2 ) = f (0,75) = 0,75 3 + 0,75 − 1 = 0,1719 şi verificăm f (x1 ) ⋅ f (x2 ) = f (0,5) ⋅ f (0,75) < 0 sau
f (b) ⋅ f (x1 ) = f (1) ⋅ f (0,5) > 0 .
Astfel intervalul care se va împărţi în jumătate se va lua intervalul
x3 ∈ [ x1 , x 2 ] = [0,5;0,75] şi pe acest interval îl aflăm
x1 + x 2 0,5 + 0,75
x3 = = = 0,625 .
2 2
Condiţia de oprire este x3 − x2 = 0,625 − 0,75 = 0,125 > ε şi
f (x3 ) = f (0,625) = 0,6253 + 0,625 − 1 = −0,1309 .
Această procedură se repetă până când nu se verifică condiţia de oprire: valoarea absolută
a diferenţei dintre valoarea nou calculată şi valoarea precedent calculată să fie mai mică de cît
epsilon (dat iniţial).
În continuare se verifică produsele f (x1 ) ⋅ f (x3 ) şi f ( x3 ) ⋅ f ( x 2 ) , de unde
f (0,625) ⋅ f (0,75) < 0 , de unde x 4 ∈ [x 2 , x3 ], x 4 ∈ [0,625;0,75] , aflăm
x3 + x 2 0,75 + 0,625
x4 = = = 0,6875 .
2 2
Verificăm condiţia de oprire x 4 − x3 = 0,6875 − 0,6258 = 0,0625 > ε şi calculăm
f (x 4 ) = f (0,6875) = 0,68753 + 0,6875 − 1 = 0,0125 cu
f ( x3 ) ⋅ f ( x 4 ) = f (0,625) ⋅ f (0,6875) < 0
Determinăm x5 ∈ [x3 , x 4 ], x5 ∈ [0,6875;0,625] , adică
x3 + x 4 0,625 + 0,6875
x5 = = = 0,6563
2 2
şi condiţia x5 − x 4 = 0,6563 − 0,6875 = 0,0312 > ε ;
f (x5 ) = f (0,6563) = 0,65633 + 0,6563 − 1 = −0,061 ;
f ( x5 ) ⋅ f ( x 4 ) = f (0,6563) ⋅ f (0,6875) < 0 ;
Aflăm x6 ∈ [x5 , x 4 ], x 4 ∈ [0,6563;0,6875] , adică
x5 + x 4 0,6563 + 0,6875
x6 = = = 0,6719 ; x6 − x5 = 0,6719 − 0,6563 = 0,0156 > ε ;
2 2
f ( x 6 ) = f (0,6719) = 0,6719 3 + 0,6719 − 1 = −0,0248 ;
f ( x 6 ) ⋅ f ( x 4 ) = f (0,6719) ⋅ f (0,6875) < 0 ;
Aflăm x7 ∈ [x 6 , x 4 ], x6 ∈ [0,6719;0,6875]
x6 + x 4 0,6719 + 0,6875
x7 = = = 0,6797 ; x7 − x 6 = 0,6797 − 0,6719 = 0,0078 > ε ;
2 2
f ( x 7 ) = f (0,6797 ) = 0,6797 3 + 0,6797 − 1 = −0,0063 ;
f ( x 7 ) ⋅ f (x 4 ) = f (0,6797 ) ⋅ f (0,6875) < 0 ;
Aflam x8 ∈ [x 4 , x7 ], x8 ∈ [0,6797;0,6875] , adică
x 4 + x7 0,6797 + 0,6875
x8 = = = 0,6836 ; x8 − x7 = 0,6836 − 0,6797 = 0,0039 > ε ;
2 2
f (x8 ) = f (0,6836) = 0,6836 3 + 0,6836 − 1 = 0,0069 ; f ( x 7 ) ⋅ f (x8 ) = f (0,6797 ) ⋅ f (0,6836) < 0 ;
Aflam x9 ∈ [x7 , x8 ], x9 ∈ [0,6797;0,6875] , adica
x 7 + x8 06797 + 0,6836
x9 = = = 0,6817 ; x9 − x8 = 0,6817 − 0,6836 = −0,0019 > ε ;
2 2
f ( x9 ) = f (0,6817 ) = 0,6817 3 + 0,6817 − 1 = −0,0015 ;
f (x9 ) ⋅ f (x8 ) = f (0,6817 ) ⋅ f (0,6836) < 0 ;
Calculam x10 ∈ [x8 , x9 ], x10 ∈ [0,6817;0,6836]
x9 + x8 0,6817 + 0,6836
x10 = = = 0,6827 ;
2 2
x10 − x9 = 0,6827 − 0,6817 = 0,001 = ε s-a verificat condiţia de oprire şi am ajuns la valoare egală
cu ε dat.
Răspuns: Soluţia aproximativă este ξ = x10 = 0,6827 .
Exemplu 2. Să se determine soluţia ecuaţiei x − 2 + e −2 x = 0 prin metoda bisecţiei, dacă
ξ ∈ [− 1;0] şi ε = 10 −3 .
Rezolvare. Acest exemplu se rezolvă la fel ca şi exemplu 1, doar că avem o ecuaţie
transcendentă. Considerăm a = −1, b = 0 , unde f (− 1) = 4,3891, f (0 ) = −1 , verificăm condiţia
f (a ) ⋅ f (b ) < 0 , cu această condiţie calculăm:
a + b −1+ 0
x1 = = = −0,5 ;
2 2
b − a > ε şi f ( x1 ) = f (− 0,5) = 0,2183 ;
f (a ) ⋅ f (x1 ) = 4,3891 ⋅ 0,2183 > 0 ;
f (b ) ⋅ f ( x1 ) = −1 ⋅ 0,2183 < 0 .
Pentru a calcula x 2 luăm intervalul [x1 , b] şi divizăm intervalul.
În continuare toate calculele se vor organiza în tabelul 2
Tabelul 2
N an bn xn f (xn ) bn − a n
1 1,0000 0,0000 -0,5000 0,2183 1,0000
2 -0,5000 0,0000 -0,2500 -0,6013 0,5000
3 -0,5000 -0,2500 -0,3750 -0,2580 0,2500
4 -0,5000 -0,3750 -0,4375 -0,0386 0,1250
5 -0,5000 -0,4375 -0,4688 -0,0848 0,0625
6 -0,4688 -0,4375 -0,4531 0,0219 0,0313
7 -0,4531 -0,4375 -0,4453 0,0087 0,0156
8 -0,4531 -0,4373 -0,4492 0,0065 0,0078
9 -0,4492 -0,4373 -0,4473 -0,0011 0,0039
10 -0,4492 -0,4373 -0,4482 0,0027 0,0020
11 -0,4492 -0,4373 -0,4478 0,0008 0,0010
După datele din tabel am obţinut că cea mai bună aproximaţie este la iteraţia a 11–a cu
rădăcina aproximativă x = −0,44775 .
Răspuns: Soluţia aproximativă este ξ = x11 = −0,44775 .
2. Utilizarea procesorului Excel la determinarea soluţiei ecuaţieii.
Pentru solutionarea ecuaţiei prin metoda grafică şi metoda bisecţiei să se aplice
procesorul tabelar Excel. Se va reprezenta grafic ecuaţia şi se va detremina soluţia ecuaţiei
prin metoda bisecţiei.
Să se determine una din rădăcinile reale ale ecuaţiilor, folosind metoda bisecţiei unde
ε = 10 −3 pentru ecuaţiile transcendente: 3 x + x − 2 = 0
Rezolvare:
x -4 -3 -2 -1 0 1 2 3 4
y1 0,012346 0,037037 0,111111 0,037037 0,037037 3 9 27 81
y2 6 5 4 3 2 1 0 -1 -2

90
80
70
60
50
y1
40
y2
30
20
10
0
-6 -4 -2 -10 0 2 4 6

a b f(a) f(b) f(a)*f(b)<0


x1 0 4 -1 83 -83

a b c f(a) f(b) f(c) f(a)*f(c)<0 f(c)*f(b)<0 f(c)<e epsilon= 0,001


0 4 2 -1 83 9 -9 747 ЛОЖЬ
0 2 1 -1 9 9 -9 81 ЛОЖЬ
0 1 0,5 -1 2 9 -9 18 ЛОЖЬ
0 0,5 0,25 -1 0,232051 -0,43393 0,433926 -0,10069 ЛОЖЬ
0,5 0,25 0,375 0,232051 -0,43393 -0,1152 -0,02673 0,049987 ЛОЖЬ
0,5 0,375 0,4375 0,232051 -0,1152 0,054614 0,012673 -0,00629 ЛОЖЬ
0,375 0,4375 0,40625 -0,1152 0,054614 -0,03121 0,003596 -0,0017 ЛОЖЬ
0,4375 0,40625 0,421875 0,054614 -0,03121 0,011466 0,000626 -0,00036 ЛОЖЬ
0,40625 0,421875 0,414063 -0,03121 0,011466 -0,00993 0,00031 -0,00011 ЛОЖЬ
0,421875 0,414063 0,417969 0,011466 -0,00993 0,000754 8,64E-06 -7,5E-06 ЛОЖЬ
0,414063 0,417969 0,416016 -0,00993 0,000754 -0,00459 4,56E-05 -3,5E-06 ЛОЖЬ
0,417969 0,416016 0,416993 0,000754 -0,00459 -0,00192 -1,4E-06 8,81E-06 ЛОЖЬ
0,417969 0,416993 0,417481 0,000754 -0,00192 -0,00058 -4,4E-07 1,12E-06 ИСТИНА

3. Alcătuirea unui program de calcul pentru metoda indicată şi pentru exemplul dat.
Să se implementeze un program în limbajul de programare dorit (Pascal, MatLab, C,
C++, Java, etc.). Să se afişeze şi rezultate obţinute în urma implementării programului.
Program bisectie;

const eps=1.0e-3;
var a,b,x:real;

function f(x:real):real;
begin
f:=x*x*x+x-1;
end;

procedure bisect(a,b:real; var x:real);


var n:integer;
begin
if abs(f(a))<eps then x:=a
else
if abs(f(b))<eps then x:=b
else
begin
writeln('eroarea eps=', eps:6:4);
writeln;
writeln('n a(n) b(n) x(n) f(xn) bn-an');
repeat
x:=(a+b)/2.0;
inc(n);
writeln(n:2, a:10:4, b:10:4, x:10:4, f(x):10:4,
abs(b-a):10:4);
if f(a)*f(x) <0 then b:=x
else
a:=x;
until (abs(b-a)<eps) and (abs(f(x))<eps);
end;
end;

begin
writeln('----------------- metoda bisectiei---------------');
writeln('capetele intervalului');
write('a=');
read(a);
write('b=');
read(b);
writeln('f(a)=', f(a):8:4,'f(b)=',f(b):8:4);
if f(a)*f(b)>0.0 then
writeln(' radacina nu e in intervalulu [',a:6:2,',',b:2,']')
else
begin
bisect(a,b,x);
writeln;
writeln('radacina aproximativa este x=',x:10:5);
end;
readln

end.

Afisarea rezultatelor după rularea programului:


radacina aproximativa este x=0,6827

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