Sunteți pe pagina 1din 4

Rezolvarea ecuatiilor algebrice

Metodele de rezolvare a ecuatiilor algebrice sunt numeroase. Am ales însa doua dintre
acestea, fiind în acelasi timp din categorii diferite. Prima dintre ele este o metoda directa
(Bisectiei), în timp ce a doua este o metoda indirecta (Tangentei). Metodele indirecte determina
radacina ecuatiei prin convergenta unui sir de valori, a carui limita va fi chiar radacina ecuatiei.
Metodele directe fac transformari în interiorul intervalului de lucru ce contine mereu radacina,
prin care se micsorează lungimea unui subinterval de căutare, la fiecare pas.
Ecuatiile care apar deseori în rezolvarea problemelor de electronica sunt de tip
𝑉𝐴
logaritmic sau exponential. Astfel jonctiunea pn este descrisa de ecuatia 𝐼𝐴 = 𝐼0 (𝑒 𝑚𝑉𝑇 − 1), iar
𝑈𝐼𝑁
circuitele de logaritmare sunt descrise de ecuatia 𝑈𝑜 = −𝑈𝑇 ln( 𝑅𝐼 ), în timp ce circuitele
𝑆
𝑈𝐼𝑁
exponentiale sunt descrise de ecuatia 𝑈𝑜 = 𝑅𝐼𝑆 exp(− ), etc.
𝑈𝑇
Datele problemei:
 f(x): [a, b] → R, f(x) = 0, are minim o radacina simpla reala în intervalul dat.
 Se cere determinarea radacinii cu o precizie impusa, de exemplu 5 zecimale exacte
(eps=1e-5).
 Metodele se aplica mai ales în situatia în care nu putem folosi metode analitice.
 Etapa preliminara pe care acum când am formulat problema am considerat-o
realizată este aceea de separare a radacinilor. Pentru polinoame se poate folosi cu
succes metoda sirului lui Sturm. Pentru ecuatii transcendente de obicei se foloseste
reciproca teoremei lui Rolle sau pur si simplu reprezentarea grafica a functiei f(x).
 Existenta radacinii în intervalul dat se poate verifica cu usurinta prin conditia
f(a)*f(b)<=0.

1. Metoda Bisectiei
- cea mai cunoscuta. Are si un mare avantaj, pe care îl vom preciza ulterior.
Se împarte intervalul în doua jumatati si se pastreaza intervalul care contine radacina.
Procesul continua până cand marimea intervalului devine suficient de mica (discutie).

Concret:

Folosim doar desenul ptr a prezenta metoda:


f(a) <0, f(b)>0, deci f(a)*f(b)<=0.
c1 = (a+b) /2, f(c1)<=0, deci noul interval este [c1, b]
c2=(c1+b) /2; f(c2)>0, aleg intervalul [c1, c2]
s.a.m.d.
Algoritmic pasii sunt urmatorii:

Pas 1: c = (a+b) / 2; k++; // initial k=0


Pas 2: if (f(a)*f(c) <=0) Da: b=c; // intervalul corect este [a, c]
Nu: a=c;
Pas 3: if (|b-a| <= eps) Da: tipareste radacina (oricare din valorile a sau b).
Stop!
Nu: continua Pas 1;

Obs:
 Avantaj: gaseste întotdeauna radacina, daca aceasta exita.
 Numarul de pasi din care va fi gasita radacina se poate determina apriori (val. lui
k).
Initial marimea intervalului este |b-a|
Dupa 1-a împartire, marimea intervalului este |b-a| / 2

Dupa k împartiri, marimea intervalului este |b-a| / 2k
Conditia este |b-a| / 2k <= eps, de aici prin logaritmare se determina k.
Aceasta valoare va trebui însa rotunjita superior la primul întreg:
k=log2[(b-a)/eps]
 Întrebare: De cine depinde numarul de pasi care se vor realiza?

2. Metoda Tangentei
 Conditie suplimentara f(x) este derivabila pe intervalul dat.

Scriem ecuatia tangentei în punctul A, ce corespunde abscisei x0, valoare de start.


𝑦−𝑦𝐴
= 𝑓 ′ (𝑥0 ),
𝑥−𝑥0
pentru a determina pe x1 îl facem pe y=0. Obtinem
𝑓(𝑥 )
𝑥1 = 𝑥0 − 𝑓′ (𝑥0 )
0
𝑓(𝑥0 )
Putem nota 𝑔(𝑥0 ) = 𝑥0 − 𝑓′ (𝑥 si obtinem la pasul i: 𝑥𝑖 = 𝑔(𝑥𝑖−1 )
0)
În felul acesta se obtine un sir de valori care în unele situatii este convergent. Conditia
de convergenta este |𝒈′ (𝒙)| < 1, oricare ar fi x din [a, b]. Pentru a evita uneori testarea acestei
conditii care poate fi mai complicat de evaluat, se trece peste aceasta conditie, dar pentru a nu
ramane în ciclu infinit (nu neapărat: aici se poate întâmpla ca eroare de calcul să evolueze
dincolo de precizia impusă; numărul de iterații este legat direct proporțional de evoluția
preciziei de calcul; s-ar putea ca valoarea aleasă să corespundă unei precizii neadecvate
contextului de calcul) se alege o valoare Nmax (de ex 30) care reprezinta numarul maxim de pasi
din care se urmareste determinarea radacinii. Dc aceasta valoare este depasita se încheie
programul cu mesaj de eroare. Algoritm:
Pasul 1: Aleg o valoare de start x0 din interval
𝑓(𝑥 )
Pasul 2: Calculez valoarea curenta 𝑥𝑖 = 𝑥𝑖−1 − 𝑓′ (𝑥𝑖−1 )
𝑖−1
Pasul 3: k++
Pasul 4: testez daca (|xi-xi-1|<= eps) Da: Tipareste radacina xi. Stop!!!
Nu: testez daca (k<=Nmax) Da: continua Pasul 2
Nu: eroare!!!
Obs:
 În x0, derivata nu trebuie sa se anuleze, f’(x0) e necesar sa fie ales cat mai departe
de zero
 Aceasta metoda este considerata în majoritatea cazurilor ca fiind cea mai rapida,
dar are dezavantajul ca nu converge întotdeauna (adica radacina poate exista în
interval, dar metoda nu o poate gasi)
 Întrebare: De cine depinde numarul de pasi care se vor realiza?

Seminar:
Deoarece în cazul dispozitivelor electronice deseori ecuatia caracteristica ce descrie
functionarea acestora în diferite regimuri de functionare este o ecuatie exponentiala, vom
rezolva în continuare, prin ambele metode, urmatoarea ecuatie:
𝑒 2𝑥 + 1.6𝑥 = 0, unde 𝑥 ∈ [−1, 0]
a) Metoda bisectiei
Verificam daca exista o radacina simpla în acest interval:
f(-1) = -1.464
f (0) = 1 , deci f(-1)*f (0) <= 0, exista radacina în interval.

c1 = ( -1 + 0 ) / 2 = - 0.5
f(-0.5) = - 0.432
f(0)*f(-0.5) <= 0, alegem intervalul [-0.5, 0]
c2 = ( -0.5 + 0 ) / 2 = - 0.25
f(-0.25) = 0.206
f(-0.5)*f(-0.25) <= 0, alegem intervalul [-0.5, -0.25]

c3 = ( -0.5 – 0.25 ) / 2 = - 0.375


Vom continua algoritmul urmând pasii ca si mai sus.

b) Metoda tangentei
Alegem un punct de start din interval, de exemplu, mijlocul acestuia, x0 = -0.5
𝑓(𝑥) = 𝑒 2𝑥 + 1.6𝑥
𝑓 ′ (𝑥) = 2 ∗ 𝑒 2𝑥 + 1.6

𝑓(𝑥 ) 𝑒 2𝑥𝑖−1 +1.6𝑥


𝑥𝑖 = 𝑥𝑖−1 − 𝑓′ (𝑥𝑖−1 ) = 𝑥𝑖−1 − 2∗𝑒 2𝑥𝑖−1 +1.6
𝑖−1

𝑥1 = −0.314
𝑥2 = −0.325
Calculand valoarea funcției în x2 (Obs: cu cât ne apropiem corect de rădăcină, adica
valorile care sunt generate sunt ale unui sir convergent, cu atât valoarea funcției în abscisa
aproximată la un anumit pas trebuie să se apropie de 0) 𝑓(−0.325) = 0.002, obs ca ne
apropiem de radacina chiar foarte repede.
Algoritmul se continua pana când |𝑥𝑖 − 𝑥𝑖−1 | ≤ 1𝑒 − 5 ……

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