![]()
Matematica
Rezolvarea aproximativa a ecuatiilor algebrice si transcendenteRezolvarea aproximativa a ecuatiilor algebrice si transcendente 1.1 Metoda bipartitiei Fie ecuatia f (x) = 0 (1.1) unde f : [ a , b ] → R este continua iar f (a) f (b) < 0. Impartim segmentul [ a , b ] in doua parti. Distingem urmatoarele cazuri: 1. 2. Acest interval il notam [ a1 , b1 ] si apoi continuam procedeul. Se obtine, fie radacina exacta, fie un sir de intervale inchise cuprinse unele in altele astfel incat Prin urmare avem Capetele din stanga ale acestor intervale a1, a2, ., an, . formeaza un sir crescator si marginit superior de b, iar capetele din dreapta b1, b2, ., bn, . formeaza un sir descrescator si marginita inferior de a. Din teorema "clestelui" urmeaza
aratam ca
numarul sau si tinand cont de (1.3) rezulta Observatie 1.1.1 Metoda presupune ca radacinile lui (1.1) au fost separate pe [a, b]. Observatie 1.1.2 Daca Observatie 1.1.3 Metoda este comoda pentru obtinerea unei estimari initiale a radacinii separate, pentru utilizarea ei in alte metode si este usor programabila pe calculator. Observatie 1.1.4 Procedeul converge lent. Observatie 1.1.5 In cazul in care radacinile nu au fost separate
luam dupa caz o valoare foarte mica pentru a1 (de
exemplu -10 n cu n Observatie 1.1.6 In
momentul opririi procedeului mai putem imbunatati precizia
calculelor facand media aritmetica a ultimelor doua valori an si bn ( n
Exemplu 1.1.1 Sa determinam radacina functiei cuprinsa in intervalul [0, 1]. Solutie: Avem: f (0) = - 1, f (1) = 1 f (0,5) ≈ 0,125 - 2 ∙ 0,25 + 3 ∙ 0,5 - 1 = 0,1250. Deci intervalul ales [ a1 , b1 ] este [0, (0,5)]. Continuam procedeul. f (0,25) ≈ 0,0156 - 2 ∙ 0,0625 + 3 ∙ 0,25 - 1 = - 0,3594. Deci intervalul ales [ a2 , b2 ] va fi [(0,25), (0,5)]. f (0,375) ≈ 0,0527 - 2 ∙ 0,1406 + 3 ∙ 0,375 - 1 = - 0,1035. Intervalul ales [ a3 , b3 ] va fi [(0,375), (0,5)]. f (0,4375) ≈ 0,0837 - 2 ∙ 0,1914 + 3 ∙ 0,4375 - 1 = 0,0134. Intervalul ales [ a4 , b4 ] va fi [(0,375), (0,4375)]. f (0,4063) ≈ 0,0671 - 2 ∙ 0,1651 + 3 ∙ 0,4063 - 1 = - 0,0442. Deci segmentul ales [ a5 , b5 ] va fi [(0,4063), (0,4375)]. f (0,4219) ≈ 0,0751 - 2 ∙ 0,1780 + 3 ∙ 0,4219 - 1 = - 0,0152. Intervalul ales [ a6 , b6 ] va fi [(0,4219), (0,4375)]. f (0,4297) ≈ 0,0793 - 2 ∙ 0,1846 + 3 ∙ 0,4297 - 1 = - 0,0008. Intervalul ales [ a7 , b7 ] va fi [(0,4297), (0,4375)]. f (0,4336) ≈ 0,0815 - 2 ∙ 0,1880 + 3 ∙ 0,4336 - 1 = 0,0063. Intervalul ales [ a8 , b8 ] va fi [(0,4297), (0,4336)]. f (0,4317) ≈ 0,0805 - 2 ∙ 0,1864 + 3 ∙ 0,4317 - 1 = 0,0028. Intervalul ales [ a9 , b9 ] va fi [(0,4297), (0,4317)]. f (0,4307) ≈ 0,0799 - 2 ∙ 0,1855 + 3 ∙ 0,4307 - 1 = 0,0010. Luam in final Programul pentru metoda bipartitiei Programul prezentat mai jos determina solutia unei ecuatii de forma (1.1) in urmatoarele ipoteze: solutia este separata intr-un interval [a, b]; functia este continua pe intervalul [a, b]. Datele de intrare sunt: capetele intervalului in care se cauta solutia (a, b) si precizia dorita (epsilon). Functia este definita in cadrul programului. #include<iostream.h> #include<math.h> #include<conio.h> double f ( double x) void main (void) else if (f(a) * f(c) < 0) b=c; else a=c; while ( ( t = = 0) && (fabs (b-a) > eps) ); if ( t = = 0) cout<<"Solutia aproximativa este x ="<< (a+b)/2<<endl;} getch ( );} 1.2 Metoda Newton (tangentei) Fie f ( x ) = 0, unde f : [a, b] → R , Vom aplica aceasta metoda impunand urmatoarele conditii: 1. 2. f ' si f '' pastreaza acelasi semn in [a, b]. Fie x n o valoare aproximativa a lui Dezvoltand dupa formula lui Taylor cu doi termeni avem 0 = f ( Urmeaza Deci, introducand expresia lui h n in expresia lui 1.2.1 Argument teoretic Metoda tangentei se aplica la capatul segmentului [a, b] (a sau b) dupa cum valoarea functiei in acel capat (punct) si valoarea derivatei a II-a in acelasi punct au acelasi semn (se vor vedea graficul de mai jos).
Sa demonstram acest fapt pentru cazul (B), adica pentru f (a) < 0, f (b) > 0, f' (a) >0 si f'' (a) > 0. Sa demonstram
prin inductie ca Aplicand formula lui Taylor avem unde Deoarece f" (x) > 0 urmeaza ca sau Tinand cont de semnele lui f (xn) si f'(xn) rezulta ca x n+1 < x n ( n = 0, 1, 2, .) adica aproximatiile succesive x0 , x1, ., xn, . formeaza un sir descrescator, marginit inferior de a, deci convergent. Notam Trecand la limita in egalitatea iteratiilor avem: 1.2.2 Interpretarea geometrica Notam cu Dupa repetarea procedeului obtinem succesiv punctele
Punctul imediat urmator An+1 il obtinem astfel: scriem ecuatia unei drepte ce trece prin An si de coeficient unghiular f'(xn), adica
intersectam aceasta dreapta cu axa Ox si obtinem pentru x = xn+1
1.2.3 Evaluarea erorii metodei Newton Teorema 1.2.1 Fie f
: [a, b] → R , atunci avem Demonstratie. Din teorema lui Lagrange avem:
deci
Teorema 1.2.2 Daca f satisface conditiile Teoremei 1.2.1, atunci eroarea celei de a n-a aproximatii va fi
Demonstratie. Folosind formula lui Taylor cu trei termeni avem unde Deoarece Corolar 1.2.1 Din Teoremele 1.2.1 si 1.2.2 urmeaza Teorema 1.2.3 Fie f
: [a, b] → R , unde m1, M2 au semnificatiile din Teoremele (1.2.1) si (1.2.2). Demonstratie. Aplicam formula lui Taylor cu trei termeni si avem unde Deci
Observatie 1.2.1 Formula lui Newton asigura o convergenta rapida daca aproximatia initiala este aleasa astfel incat sa avem
Observatie 1.2.2 Daca in plus avem atunci
Exemplu 1.2.1 Calculati radacina ecuatiei x3 - 2x2 + 3x - 1 = 0 situata in intervalul (0, (0,5)) cu ajutorul metodei lui Newton, folosind trei iteratii. Evaluati eroarea produsa. Solutie. Avem f (0) = -1, f (0,5) = 0,125, f ' (x) = 3x2 - 4x + 3, f" (x) = 6x - 4. Deci f ' (x) > 0 si f" (x) < 0, Calculam Eroarea o vom calcula astfel
Deci, pentru eroarea produsa, Programul pentru metoda tangentei Programul prezentat mai jos determnina solutia unei ecuatii de forma (1.1) in urmatoarele ipoteze: solutia este separata intr-un interval [a, b]; functia este continua pe intervalul [a, b]. Datele de intrare sunt: capetele intervalului in care se cauta solutia (a, b) si precizia dorita (epsilon). Functia si derivata ei sunt definite prin proceduri de tip functie. In cadrul programului nu se verifica semnul derivatelor. Pentru determinarea iteratiei urmatoare se parcurg urmatoarele etape: se verifica valoarea derivatei functiei in punctul a; daca aceasta valoare este nenula se determina punctul de intersectie dintre tangenta la graficul functiei in punctul de coordonate (a, f (a)) si axa Ox; daca punctul determinat se afla in interiorul intervalului (a, b), atunci acest punct reprezinta iteratia urmatoare; daca valoarea derivatei functiei in punctul a este zero, se incearca determinarea iteratiei urmatoare pornind din punctul b; daca nu se poate construi iteratia urmatoare (valorile derivatei functiei in capetele a si b sunt nule sau punctele de intersectie nu sunt in interiorul intervalului (a, b)) algoritmul se opreste: nu se poate aplica metoda tangentei pe intervalul [a, b]; daca s-a determinat iteratia urmatoare se pastreaza intervalul care contine solutia si se repeta procedeul. Determinarea iteratiilor se opreste atunci cand modulul diferentei a doua iteratii consecutive este mai mic decat eroarea admisa epsilon. De asemenea, programul se opreste cand se determina o iteratie care este chiar solutia ecuatiei. # include <iostream .h> # include <math .h> # include <conio .h> double f (double x) double df (double x) void main (void) else } } if ( t = = 1) if (df (b) = = 0) t = 2; else else }}}} while ( ( t = = 0)&& (pas > eps) ); if ( t = = 3) cout <<"Solutia este x ="<< c << endl; if ( t = = 0) cout <<"Solutia aproximativa este x ="<< c << endl; if ( t = = 2) cout <<"Nu se poate aplica metoda tangentei!"<<endl;} getch ( );} 1. 3 Metoda secantei (coardei) 1.3.1 Prezentarea metodei Metoda coardei se aplica in capatul in care nu se aplica metoda Newton (unde f si f"au acelasi semn). Sunt posibile doua situatii: 1) f(a) < 0 si 2) f(а) > 0 Scriem ecuatia unei drepte ce trece prin punctul mobil (opus celui in care se aplica Newton), de exemplu in cazul (B). I. Daca f(a) < 0 avem: si, pentru x = x1, urmeaza: sau in general
II. Daca f(а) > 0 avem: si, pentru x = x1, urmeaza: In general avem:
In primul caz sirul iteratiilor este crescator si marginit de b, adica Avem: Trecand la limita avem Cum y = f (x) admite o singura radacina in [a, b], urmeaza
1.3.2 Evaluarea erorii in metoda coardei (secantei). Fie f : [a, b] → R ,
Sa consideram cazul extremitatii mobile b (varf fix a). Avem Deoarece
Aplicand Teorema lui Lagrange avem
Deci
Deci egalitatea de mai sus devine
adica Deoarece adica Observatie 1.3.1 Daca avem Exemplu 1.3.1 Determinati radacina ecuatiei algebrice cu o eroare mai mica de 0,001. Solutie Avem iar Prin urmare ecuatia are o singura radacina reala si aceasta se afla in intervalul (- ∞,(0,66666)]. Cum f (0) = -1 retinem intervalul [0, (0,66666)]. Alegem capatul fix a= 0 si x0 = 0,66666. Urmeaza
Deci radacina aproximativa cu precizia de 10-3 este 0,43025. Programul pentru metoda secantei (coardei) Programul prezentat mai jos determina solutia unei ecuatii de forma (1.1) in urmatoarele ipoteze: solutia este separata intr-un interval [a, b]: functia este continua pe intervalul [a, b]. Datele de intrare sunt: capetele intervalului in care se cauta solutia (a, b) si precizia dorita (epsilon). Functia este definita prin procedura de tip functie. In cadrul programului nu se verifica semnul derivatelor. Algoritmul care sta la baza programului este urmatorul: se determina punctul c de intersectie a dreptei determinata de punctele (a, f(a)) si (b, f(b)) cu axa Ox folosind formula se pastreaza intervalul care contine solutia, ([a, c] sau [b, c]), care reprezinta noul interval [a, b] pentru iteratia urmatoare si se determina modulul diferentei dintre iteratia curenta (c) si iteratia anterioara (a sau b). Determinarea iteratiilor se opreste atunci cand modulul diferentei a doua iteratii consecutive este mai mic decat eroarea admisa epsilon. De asemenea programul se opreste cand se determina o iteratie care este chiar solutia ecuatiei. # include <iostream .h> # include <conio .h> # include <math .h> double f (double x) void main (void) else } if ( t = = 0) cout<<"Solutia aproximativa este x ="<<c; else cout<<"Solutia este x ="<<c; } getch ( ); } 1.4. Metoda combinata Se aplica la un capat metoda tangentei iar la celalalt metoda coardei. In metoda coardei se utilizeaza in unul din capete, incepand cu iteratia x1, valoarea iteratiei obtinute in cadrul aceluiasi pas prin metoda tangentei. Sa luam cazul . . . . . .
sau Daca In final mai facem o data media aritmetica a rezultatelor obtinute, adica
Exemplu 1.4.1 Calculati cu o precizie de 0,001 radacina ecuatiei folosind metoda combinata. Solutie Avem iar Prin urmare ecuatia are o singura radacina reala si aceasta se afla in intervalul (- ∞,(0,66666)]. Cum f (0) = -1 retinem intervalul [0, (0,66666)]. Alegem Urmeaza Deci solutia aproximativa calculata cu o precizie mai buna de 0,001 este Programul pentru metoda combinata Programul prezentat mai jos determina solutia unei ecuatii de forma (1.1) in urmatoarele ipoteze: solutia este separata intr-un interval [a, b]; functia este continua pe intervalul [a, b]. Datele de intrare sunt: capetele intervalului in care se cauta solutia (a, b) si precizia dorita (epsilon). Functia si derivata ei sunt definite prin proceduri de tip functie. In cadrul programului nu se verifica semnul derivatelor. Algoritmul care sta la baza programului urmareste determinarea unui interval [c,d] unde c se determina prin metoda tangentei, iar d se obtine prin metoda secantei. Daca s-au putut determina cele doua puncte ( t = 0 ) atunci intervalul [min(c,d), max(c,d)] devine noul interval [a, b] pentru iteratia urmatoare. Determinarea
iteratiilor se opreste atunci cand lungimea intervalului care
contine solutia este mai mica decat eroarea admisa epsilon.
Solutia aproximativa este De asemenea programul se opreste cand se determina o valoare pentru c sau d care este chiar solutia ecuatiei. # include <iostream .h> # include <math .h> # include <conio .h> double f (double x) double df (double x) void main (void) if ( t = = 1) if (df (b) = =0) t = 2; else if (t = =0) else if (c<d) else } while((t = =0)&& ((b-a)>eps)); if ( t = = 3) cout<<"Solutia este x ="<<c<<endl; if ( t = = 0) cout<<"Solutia aproximativa este x ="<<(a+b)/2<<endl; if ( t = = 2) cout<<"Nu se poate aplica metoda combinate!"<<endl; } getch ( ); } 1.5. Metoda aproximatiilor succesive Consideram ecuatia f (x) = 0 (1.4) unde f : I → R, iar I este un interval al axei reale. Sa inlocuim ecuatia (1.4) printr-o ecuatie echivalenta de forma
Definitie 1.5.1 Radacinile ecuatiei (1.5) se numesc puncte fixe ale lui φ. Construim sirul de iteratii
unde x0 este o valoare aproximativa initiala a radacinii care se cauta. Teorema 1.5.1 Daca φ : [a, b] → R (a, b ( α ) oricare ar fi ( β ) exista q
atunci avem: a)
daca b)
Demonstratie. a) Pentru doua iteratii consecutive
Inegalitatea (1.7) are loc pentru n = 1, 2, . si aplicand-o succesiv pentru aceste valori avem:
Seria este absolut convergenta deoarece seria valorilor absolute ale termenilor sai este majorata de o serie geometrica de ratie q < 1, asa cum rezulta din relatia (1.8). Fie Sn+1 suma partiala de ordin n+1 a seriei de mai sus. Rezulta ca Sn+1 = xn Deoarece seria este convergenta, rezulta ca si sirul sumelor partiale este convergent, adica
Din conditia ( β ) rezulta continuitatea functiei φ pe [a, b]. Deci sunt justificate urmatoarele egalitati:
adica Deoarece b) Aratam, prin reducere la absurd, ca ecuatia (1.5) are solutie unica. Fie x1, x2 doua solutii distincte ale ecuatiei (1.5). Din relatia ( β ) avem: Ultima inegalitate este imposibila deoarece Observatie 1.5.1 Putem inlocui conditia (β), pentru functia φ derivabila, prin inegalitatea
(acest fapt rezulta din teorema de medie a lui Lagrange). Observatie 1.5.2 Teorema 1.5.1 este
adevarata si pentru Observatie 1.5.3 Teorema 1.5.1 ne
arata ca sirul Teorema 1.5.2 Fie (γ) φ este derivabila
in fiecare punct (δ) ecuatia x = φ (x) are o
radacina (η) (σ) atunci avem: a)
toate elementele sirului b)
sirul c)
Demonstratie. a)
Vom demonstra, prin inductie, ca elementele
sirului
adica Presupunem ca
adica Observatie 1.5.4 Daca Daca Teorema 1.5.3 Evaluarea erorii sirului aproximatiilor succesive. Daca ne situam in ipotezele Teoremei 1.5.1, atunci avem
Demonstratie. Fie p Є N si avem Trecand la limita pentru p → ∞, avem: Teorema 1.5.4 Fie δ Є R, δ > 0 si f : [x0 -δ, x0 + δ]
→ R o functie derivabila pe acest interval.
Daca f satisface conditia ca
atunci ecuatia f (x) = 0 are o singura radacina in intervalul [x0 -δ, x0 + δ]. Demonstratie. Este suficient sa demonstram acest fapt pentru f (x0) > 0, demonstratia pentru f (x0) < 0 fiind similara. Deoarece m ≠ 0 rezulta ca f are acelasi semn pe [x0 -δ, x0 + δ], deci f este monotona pe acest interval. Prin urmare f
isi atinge marginea inferioara exacta intr-un punct Din teorema lui Lagrange avem:
Tinand cont de faptul ca
Deoarece
avem
Distingem doua cazuri: 1)
daca In incheiere dam un
procedeu de trecere de la ecuatia 1.4 la ecuatia 1.5 cu respectarea
conditiei Sa presupunem ca f
este strict crescatoare pe (α , β) adica Consideram functia unde λ Є R este un parametru
real ce urmeaza a fi determinat astfel ca Fie m1 si M1 doua constante astfel incat Avem sau tinand cont de relatia de mai sus rezulta Deci putem alege
Exemplu 1.5.1 Sa se determine radacina pozitiva a ecuatiei cu precizia
|