Documente Academic
Documente Profesional
Documente Cultură
METODA SECANTEI
5.1 SCOP
Înţelegerea principiului metodei secantei pentru rezolvarea ecuaţiilor şi a
modului de aplicare al acesteia.
f(x)
D C B
O A x
P
N
Fig. 5.1. Reprezentarea geometrică a algoritmului
f ( x k )( x k − x k −1 )
x k +1 = x k − . (5.1)
f ( x k ) − f ( x k −1 )
N
P M
O C A B x
Observaţie
În figura 5.2, punctele ce formează aproximarea iniţială sunt poziţionate de
aceeaşi parte faţă de soluţia exactă. Din asemănarea triunghiurilor MCA şi NCB, se
deduce o relaţie similară cu (5.1).
Referitor la criteriul de precizie ce dictează întreruperea calculului, acesta
poate fi de forma:
x k +1 − x k ≤ ε , (5.2)
sau
x k +1 − xk
≤ε , (5.3)
xk
Soluţie
Funcţia asociată ecuaţiei (*) are forma
f ( x) = ln( x) − sin( x ) ,
domeniul de definiţie fiind restrâns, datorită prezenţei funcţiei logaritm natural, la axa
pozitivă, mai puţin originea: x ∈ (0, + ∞ ) .
Analizând reprezentarea grafică a funcţiei cu ajutorul platformei MathCAD se
poate trage concluzia că ecuaţia are o singură rădăcină reală, deoarece există o singură
intersecţie a graficului funcţiei cu axa absciselor.
Intervalul de afişare poate fi specificat iniţial la un domeniu mai întins,
urmând a fi restrâns, ulterior, la zona în care este localizată rădăcina. Precizia
localizării poate fi crescută prin utilizarea funcţiei MathCAD TRACE, care dă
coordonatele unui punct de pe o reprezentare grafică, specificat prin selectare cu
mouse-ul.
f ( x) := ln( x) + sin ( x)
0
f ( x) f ( x)
0 50 100 0 1 2 3
x x
Etapa următoare constă în adoptarea aproximărilor iniţiale ale soluţiei prin
două valori distincte.
Pentru problema enunţată, întreruperea calculului se face după un număr de
cicluri specificat, independent de precizia atinsă. Avantajul constă în cunoaşterea
volumului de calcul care va fi efectuat.
Aproximările iniţiale vor servi ca argumente relaţiei de recurenţă (5.1). Şirul
valorilor aproximărilor va fi obţinut sub forma unui vector, în care ultimul element
constituie estimarea după numărul de paşi solicitat.
declararea aproximarii initiale
x := 0.7
0
x := 0.6
1
declararea relatiei de recurenta
f ( a) ⋅ ( a − b )
rel_rec( a , b ) := a −
f ( a) − f ( b )
iteratia 1
x := rel_rec x , x
2 ( 1 0)
iteratia 2
x := rel_rec x , x
3 ( 2 1)
iteratia 3
x := rel_rec x , x
4 ( 3 2)
T
x = ( 0.7 0.6 0.5769743742 0.5787390408 0.5787136739)
Secvenţa de calcul anterioară poate fi realizată cu ajutorul unei funcţii
(coarda_1) cu date de intrare valorile pentru aproximarea iniţială, a şi b şi numărul n
de iteraţii care trebuie efectuate. Relaţia de recurenţă constituie instrucţiunea unui
ciclu For, care se execută pentru valori ale variabilei de incrementare k cuprinse între
1 şi valoarea lui n. În afişarea rezultatului s-a reţinut numai valoarea finală furnizată
de algoritm. Codul funcţiei este prezentat în continuare.
coarda_1 ( a , b , n ) := x ←a
0
x ←b
1
for k ∈ 1 .. n
x ←x −
( k) ( k k−1)
f x ⋅ x −x
k+ 1 k f(x ) − f (x )
k k− 1
x
k+ 1
Soluţie
După cum s-a afirmat anterior, criteriul care determină întreruperea calcului
este de obicei un criteriu de precizie şi nu unul legat de numărul de iteraţii care
urmează să fie efectuate. Dacă la metoda bipartiţiei exista o corelaţie între precizia
obţinută şi numărul de iteraţii efectuate, pentru metoda secantei o asemenea estimare
este mai dificilă.
Funcţia coarda_2 rezolvă cerinţa enunţată. Relaţia de recurenţă este
implementată ca instrucţiune a unui ciclu While, care se execută atâta timp cât
criteriul de precizie nu este îndeplinit. Semnificaţia variabilelor este aceeaşi, cu
menţiunea că în lista argumentelor nu mai intervine numărul de paşi, ci precizia de
calcul impusă, ε .
coarda_2 ( a , b , ε) := k←1
x ←a
0
x ←b
1
while x − x ≥ε
k k− 1
x ←x −
( k) ( k k−1)
f x ⋅ x −x
k+ 1 k f (x ) − f(x )
k k− 1
k←k+ 1
x
k
(
coarda_2 1 , 5 , 10
− 15 ) = 0.5787136435
Rezultatul poate fi comparat cu cel furnizat de funcţia root din MathCAD
pentru rezolvarea ecuaţiilor transcendente. Precizia procesului de convergenţă pentru
aceasta este gestionat prin intermediul variabilei TOL. Se observă buna concordanţă a
rezultatelor.
− 15
TOL := 10
x := 1
root ( f ( x) , x) =
Soluţie
Semnificaţia variabilelor este aceeaşi ca şi în cazul funcţiei coarda_2. Se
remarcă introducerea unei condiţii care aduce pe poziţia k din şirul aproximaţiilor
successive valoarea de pe poziţia k-1, dacă f ( x k −1 ) ⋅ f ( x k +1 ) < 0 .
f ( x) := ln( x) + sin ( x)
coarda_1 ( a , b , n ) := x ←a
0
x ←b
1
for k ∈ 1 .. n
x ←x −
( k) ( k k−1)
f x ⋅ x −x
k+ 1 k f (x ) − f(x )
k k− 1
x ←x if f ( x ) ⋅ f ( x ) < 0
k k− 1 k+ 1 k− 1
x
k+ 1
ln( x) = e x .
2. Pentru ecuaţia
x2 + 5 = 0
funcţia coarda_2 furnizează estimările de mai jos. Cum interpretaţi aceste rezultate?
(
coarda_2 1 , 3 , 10
−4 ) = −2.9185982471
(
coarda_2 1 , 2 , 10
−4 ) = 1.7926813867