Sunteți pe pagina 1din 4

Model de Lucrare de laborator 2.

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


Lucrarea de laborator constă în 2 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. Fie ecuaţia x 3 − x 2 + 2 x − 3 = 0 . Se pune problema de calculat una din


rădăcinile reale ale acestei ecuaţii, folosind metoda coardei, unde ε = 10 −3 .
Rezolvare. Mai întâi aflăm intervalul în care se află soluţia căutată folosind metoda lui
Horner (descrisă în detalii în exemplul 2):
Tabelul 3.
1 -1 2 -3
0 1 -1 2 -3
1 1 0 2 -1
2 1 1 4 5 }are loc schimbare de semn.
3 1 2 8 21
Avem schimbare de semn în intervalul [1,2], rezultă că soluţia căutată se află în acest
interval.
În continuare, vom determina termenii şirului de iteraţii începând cu x 2 , ce va tinde către
soluţia căutată, folosind formula (1.4)
x n −1 f ( x n ) − x n f ( x n −1 )
x n +1 = ,n∈ N
f (x n ) − f ( x n −1 )
Cunoscând deja intervalul, calculăm valoarea funcţiei în extremităţile intervalului:
f ( x0 ) = f (1) = −1, f ( x1 ) = f (2 ) = 5 .
Următorul pas este de a calcula soluţia x 2 :
x 0 f (x1 ) − x1 f (x 0 ) 1 ⋅ 5 − 2 ⋅ ( −1) 7
x2 = = = = 1,1667
f (x1 ) − f (x 0 ) 5 +1 6
şi f ( x 2 ) = f (1,167 ) = −0,4397 .
Vom determina următorul termen al şirului:
x f ( x 2 ) − x 2 f ( x1 ) 2 ⋅ (−0,4397) − 1,1667 ⋅ 5
x3 = 1 = =
f ( x 2 ) − f ( x1 ) − 0,4397 − 1,1667
6,7129
= = 1,2341;
5,43
şi verificăm condiţia de oprire
x3 − x2 = 1,2341 − 1,1667 = 0,067 > ε . Deoarece nu se verifică condiţia x3 − x 2 < ε continuăm cu
calculele f (x3 ) = f (1,2341) = −0,1753 .
x 2 f ( x 3 ) − x3 f (x 2 ) 1,667 ⋅ (−0,1753) − 1,2341 ⋅ (−0,4397)
x4 = = =
f (x 3 ) − f ( x 2 ) − 0,1753 + 0,4397
Aflăm
0,3381
= = 1,2787;
0,2644
La fel se verifică x4 − x3 = 1,2787 − 1,2341 = 0,0446 > ε ;
f (x 4 ) = f (1,2787 ) = 0,0131 ;
Pentru următorii termeni ai şirului se repetă aceeaşi procedură.
x3 f (x 4 ) − x 4 f ( x 3 ) 1,2341 ⋅ 0,0131 − 1,2787 ⋅ (−0,1753)
x5 = = =
f ( x 4 ) − f (x 3 ) 0,0131 + 0,1753
x5 − x4 = 1,276 − 1,2787 = 0,0027 > ε ;
0,2404
= = 1,276;
0,1884
f (x5 ) = f (1,276) = 0,0014 ;
x f (x 5 ) − x5 f (x 4 ) 1,787 ⋅ 0,0014 − 1,276 ⋅ 0,0131
x6 = 4 = =
f (x 5 ) − f (x 4 ) 0,0014 − 0,0131
0,0149
= = 1,2735;
0,0117
x6 − x5 = 1,2735 − 1,2787 = 0,005 > ε ; f (x6 ) = f (1,2735) = −0,0094 ;
x5 f ( x6 ) − x6 f ( x5 ) 1,276 ⋅ (−0,0094) + 1,2735 ⋅ 0,0014
x7 = = =
f ( x 6 ) − f ( x5 ) − 0,0094 − 0,0014
0,0138
= = 1,2778;
0,0108
x 7 − x 6 = 1.2778 − 1.2735 = 0.0043 > ε ;
f ( x7 ) = f (1,2778) = 0,0092 ;
x6 f ( x7 ) − x7 f ( x6 ) 1,2735 ⋅ 0,0092 − 1,2778 ⋅ (−0,0094) 0,0237
x8 = = = = = 1,2742;
f (x 7 ) − f ( x6 ) 0,0092 + 0,0094 0,0186
x8 − x7 = 1,2742 − 1,2778 = 0,0036 > ε ;
x7 f ( x8 ) − x8 f (x 7 ) 1,2778 ⋅ (−0,0064) − 1,2742 ⋅ 0,0092
x9 = = =
f (x 7 ) − f ( x 7 ) − 0,0064 − 0,0092
f ( x8 ) = f (1,2742) = −0,0064 ; x9 − x8
0,0199
= = 1,2756;
0,0156
= 1,2756 − 1,2742 = 0,001 = ε ;
După iteraţia a 9-a s-a verificat condiţia de oprire, prin urmare, am ajuns la o soluţie
aproximativă x9 = 1,2756 ce tinde către soluţia exactă.
Răspuns: soluţia aproximativă este x = 1,2756 .
Exemplu 2. Să se determine soluţia ecuaţiei x − 2 + e −2 x = 0 prin metoda coardei, dacă
ξ ∈ [− 1;0] şi ε = 10 −3 .
Rezolvare. Considerăm iniţial x0 = −1, x1 = 0 unde f (− 1) = 4,3891, f (0 ) = −1 verificăm
condiţia f (a ) ⋅ f (b ) < 0 , cu această condiţie aflăm termenii şirului de iteraţii, începând cu x 2
x 0 f ( x1 ) − x1 f (x 0 ) − 1 ⋅ (− 1) − 0 ⋅ 4,3891
x2 = = = −0,1856; x 2 − x1 > ε şi
f ( x1 ) − f (x 0 ) − 1 − 4,3891
f ( x 2 ) = f (− 0,1856) = −7,362 .
Aflăm
x1 f (x 2 ) − x 2 f (x1 ) 0 ⋅ (− 7,362) − (− 1) ⋅ (− 0,1856)
x3 = = = −0,3025
f (x 2 ) − f (x1 ) − 7,362 − (− 1)
cu condiţia x3 − x 2 > ε şi f (x 2 ) = f (− 0,3025) = 0,1170 .
Procedura este asemănătoare cu cea de la exemplul 4 şi datele obţinute se organizează în
tabelul de mai jos.
Tabelul 4.
N x n −1 xn x n +1 f ( x n +1 ) x n − x n −1
1 -1,0000 0,0000 -0,1856 -0,7362 0,1856
2 -1,0000 -0,1856 -0,3025 -0,4711 0,1170
3 -1,0000 -0,3025 -0,3702 -0,2736 0,0676
4 -1,0000 -0,3702 -0,4071 -0,1497 0,0370
5 -1,0000 -0,4071 -0,4267 -0,0792 0,0196
6 -1,0000 -0,4267 -0,4368 -0,0412 0,0102
7 -1,0000 -0,4368 -0,4421 -0,0212 0,0052
8 -1,0000 -0,4447 -0,4447 -0,0109 0,0027
9 -1,0000 -0,4461 -0,4461 -0,0056 0,0014
10 -1,0000 -0,4468 -0,4468 -0,0028 0,0007
11 -1,0000 -0,4472 -0,4472 -0,0014 0,0004
12 -1,0000 -0,4474 -0,4474 -0,0007 0,0002
După datele din tabel am obţinut că ultima aproximaţie se obţine la iteraţia a 12-a unde
rădăcina aproximativă este x = −0,44735 .
Răspuns: rădăcina aproximativă este x = −0,44735 .

2. 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 coardei;
const eps=1.0e-3;
var x0,x1,x:real;

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

procedure coarda(x0,x1:real; var x:real);


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

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

Rezultat:
Radacina aproximativa este x = 1,2756 .

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