Sunteți pe pagina 1din 17

Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

Rezolvarea numerică a
ecuaţiilor(algebrice,transcendente)
Proiect la disciplina Matematici asistate de calculator

An universitar 2003-2004
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

Cuprins

pag
1.Consideraţii teoretice…………………………………….……………..3
1.1.Prezentarea tematicii…………………………..…………….…….3
1.2.Prezentarea metodelor implementate …………………………3
1.2.1. Metoda falsei poziţii………………………………………...3
1.2.2.Metoda Bailey……………………………………………….5
1.2.3.Metoda Newton simplificată…………………………………7
1.2.4.Metoda bisecţiei………………………………………………7
2.Exemplificări…………………………………….……………………….9
2.1. Metoda falsei poziţii……………………………………….……….9
2.2.Metoda Bailey……………………………………………………..11
2.3.Metoda Newton simplificată………………………………………12
2.4.Metoda bisecţiei……………………………………………………13
3.Prezentarea implementărilor…………………………………………..15
3.1. Metoda falsei poziţii……………………………………….……....15
3.2.Metoda Bailey……………………………………………………...15
3.3.Metoda Newton simplificată……………………………………….16
3.4.Metoda bisecţiei…………………………………………………….17

1.Consideraţii teoretice

2
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

1.1.Prezentarea tematicii

Se consideră o ecuaţie de forma generală :


f(x)=0, (1)
f:I⊂ R→R , f poate fi polinom sau o ecuaţie transcendentă .
A rezolva ecuaţia (1) înseamnă găsirea zerourilor funcţiei f,adică a valorilor
x=c care verifică relaţia (1).Metodele numerice de rezolvare se împart în trei
categorii:
 metode de separare sau localizare a soluţiilor ecuatţiei , adică de izolare a unor
domenii de definiţie I ,care să conţină câte unul din zerourile funcţiei;
 metode de determinare cu o precizie fixată , a unei soluţii care a fost izolată în
prealabil ,pornind de la o valoare aproximativă a acesteia;
 metode de determinare a tuturor soluţiilor aplicabile ,de regulă în cazul în care
f este un polinom;
Se spune că c este o valoare exactă a unei soluţii a funcţiei f dacă f(c)=0,iar
c‫ ׳‬este o valoare aproximativă a acestei soluţii care se poate defini astfel:
- x=c' cu proprietatea | c'-c|<ε x,cu ε x >0 şi f(c)=0;
- x=c' cu proprietatea |f(c')|<ε f ,cu ε f >0 şi f(c)=0.
ε x reprezintă eroarea admisă pentru soluţie;
ε f reprezintă eroarea admisă pentru funcţie;

1.2.Prezentarea metodelor implementate

1.2.1. METODA FALSEI POZITII


Aceasta metoda mai este cunoscuta si sub denumirea de metoda
coardei,metoda secantei sau metoda impartirii intervalului in parti proportionale.
Metoda se bazeaza pe faptul ca,pornind de la intervalul [a,b],la fiecare pas se
restrange domeniul de cautare a solutiei,prin impartirea intervalului de la pasul
anterior in raportul valorilor functiei la capetele intervalului.Interpretarea
geometrica a metodei este descrisa in figura de mai jos,unde coarda are ecuatia:
x −a f ( x) − f (a)
= ,
b −a f (b) − f (a )
de unde rezulta abscisa punctului de intersectie cu axa Ox:
a ⋅ f (b) − b ⋅ f (a )
x1 = .
f (b) − f ( a )

Algoritmul metodei falsei pozitii este urmatorul:

3
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

I) Se initializeaza limitele intervalului curent de cautare,”r” si “s”:


r 0 = a, s 0 = b
si se calculeaza f(r0) si f(s0)

y f(b)

a x1

0 f(a) y=f(x) b

II) La un pas oarecare k, k=1, 2, 3,…,al procesului iterativ de calcul,se


calculeaza noua valoare a solutiei:
r k −1 ⋅ f ( s k −1 ) − s k −1 ⋅ f ( r k −1 )
xk =
f ( s k −1 ) − f ( r k −1 )

III) La acelasi pas k se calculeaza f(xk ),rezultand noile limite ale intervalului
de cautare ,rk si sk :
k k-1
- daca f(x )⋅ f(r ) < 0 ,atunci :
rk= rk-1 si sk= xk ;
k k-1
- daca f(x )⋅ f(r ) < 0 ,atunci :
rk= xk si sk= sk-1 ;
k k-1
- daca f(x )⋅ f(r ) = 0 ,atunci calculul este terminat;

IV) Calculul se termina cand sunt indeplinite conditiile :


| rk -sk | ≤ ε x
si/sau
| f(rk)| ≤ ε f

1.2.2. METODA BAILEY(NEWTON DE ORDINUL II)

4
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

Se consideră ecuaţia de forma f(x)=0,pentru care s-a separat o în prealabil o


radacină în intervalul [a,b].Cunoscând faptul că f(x),f′ (x),f″ (x) sunt continue pe
intervalul [a,b] trebuie să se determine soluţia în cauză,erorile admise fiind ε x (se
referă la soluţie ),respectiv ε f (se referă la funcţie).
Pentru a determina o relaţie de recurenţă între xk-1 şi xk (xk-1 respectiv xk
reprezintă o valoare aproximativă a soluţiei determinată în pasul k-1 respectiv k) se
consideră că s-a ajuns la pasul k al procesului iterativ ,ultima valoare aproximativă
a soluţiei fiind xk-1 şi se determină o corecţie hk-1 care adăugată la xk-1 să conducă la
soluţia excată c (f(c)=0):
c= xk-1 +hk-1
Dezvoltând în serie Taylor rezultă expresia:

k −1
f (c ) =0 = f ( x k −1 +h k −1 ) = f ( x k −1 ) +h ⋅ f '( xk −1) +
1!
( h k −1 ) 2 − ( h k −1 ) 3
+ ⋅ f "( x k 1 )+ ⋅ f '''( xk −1 ) +... (1)
2! 3!
Dacă în relaţia (1) se reţin doar termenii care conţin pe f(x) şi f′ (x),restul
termenilor cu derivate de ordin superior neglijându-se se exprimă hk-1 dată de
relaţia (2):
f ( x k − 1)
h k −1 = − (2)
f ' ( x k − 1)
Dacă în relaţia (1) se reţine şi termenul care conţine şi derivata de ordinul 2
şi scoţând factor comun pe hk-1 rezultă :

h k −1
f ( x k −1 ) + h k −1 ⋅ [ f ' ( x k −1 ) + ⋅ f " ( x k −1 )] ≈ 0 (3)
2
Înlocuind în relaţia (3) pe hk-1 din paranteza dreaptă cu aproximarea dată de
relaţia (2) se obţine :

5
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

f ( x k − 1)
h k −1 = − ( 4)
k − 1 f ( x k − 1) ⋅ f " ( x k − 1)
f '(x )−
2 ⋅ f ' ( x k − 1)
Valoarea lui hk-1 din relaţia (4) nu va mai conduce la soluţia exactă c ci la noua
valoare aproximativă xk a soluţiei mai bună decât xk-1.Relaţia (4) se numeşte
corecţia pentru metoda Bailey:
xk= xk-1 +hk-1 (5)
Interpretarea gepmetrică a acestei metode este ilustrată în figura de mai jos:
y

a c b
0 x
x2 x1
x0

Algoritmul metodei este următorul:

I) Se iniţializează soluţia cu valoarea x0;


II) La un pas oarecare k,k=1,2,3,…,al procesului iterativ de calcul ,se determină
f(xk-1), f′ (xk-1) şi f″ (xk-1) ,noua valoare a soluţiei aproximative rezultănd din
relaţiile (4) şi (5).
III) Calculul se consideră terminat când sunt îndeplinite relaţiile (6) şi (7) (sau
una dintre ele ):
| hk-1|=| xk -xk-1| ≤ ε x (6)
| f(x )| ≤ ε f
k
(7)

La metoda Bailey convergenţa este condiţionată remarcându-se iurmătoarele


aspecte:

6
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

- convergenţa este sigură dacă f ′ (x) este de semn constant în intervalul


[a,b],în aceste condiţii relaţia (6) garantând satisfacerea condiţiei
|xk-c|<ε x;
- semnul constant al lui f ″ (x) în intervalul [a,b] asigură o viteză sporită
de convergenţă;
- convergenţa depinde şi de soluţia iniţială,recomandându-se , pentru
reducerea numărului de iteraţii satisfacerea condiţiei f(x0)⋅ f ″ (x0)>0;
Metoda Bailey se caracterizează prin creşterea timpului de calcul pe iteraţie
şi reducerea numărului de iteraţii şi conduce la reducerea timpului total de calcul.

1.2.3. METODA NEWTON SIMPLIFICATĂ

Teoremă : Fie f:[a,b] → R o aplicaţie de două ori derivabilă, cu f′ (x) ≠0 , (∀) x


∈[a,b], şi f(a)*f(b)<0.
Atunci unica soluţie a ecuatiei este limita şirului (xn ), n>0 :
xn =xn-1 – f(xn-1) / f′ (x0 ), (relaţia 1)
Unde x0 ∈[a,b] este arbitrar fixat a. î. f(x0)*f″ (x0)>0.

Scurtă explicaţie :

După cum am văzut, variabila x este iniţializată cu o valoare arbitrară din


domeniul [a,b], de care aparţine rădăcina ecuaţiei, şi aplicăm în paşi succesivi
relaţia (1) pînă cînd observăm că valoarea lui x începe să conveargă spre un anumit
număr. Ne oprim atunci cînd distanţa dintre 2 paşi succesivi devine < decît un
anumit ε .

1.2.4. METODA BISECŢIEI(ÎNJUMĂTĂŢIRII INTERVALULUI)

Metoda este destinată rezolvării ecuaţiei f(x)=0 , x ∈[a,b] ,pentru care sa


separat în prealabil o soluţie în intervalul [a,b] , adică: f(a)⋅ f(b)<0 .
Se consideră că f este continuă pe intervalul [a,b] , iar soluţia în cauză va fi
determinată cu erorile admise ε x (pentru solutie) si ε f (pentru functie).
Metoda se bazează pe faptul că,pornind de la intervalul [a,b],la fiecare pas se
restrînge domeniul în care se caută soluţia prin injumătăţirea intervalului de la
pasul anterior ,pană la atingerea preciziei dorite.Metoda bisecţiei este o metoda
simplă,însă slab convergentă.
Algoritmul metodei bisecţiei este următorul:

7
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

I) Se iniţializează limitele intervalului de căutare, "r" si "s", cu valorile limitelor


intervalului în care s-a separat soluţia: r0=a, s0=b (indicele superior
corespunde iteraţiei curente).

II) La pasul de calcul k,k=1,2,3, ... , se detemină noua valoare a soluţiei:

r k −1 + s k −1
xk =
2

III) La acelaşi pas k se calculează f(xk) şi f(rk-1)rezultând noile limite ale


intervalului de căutare ,rk si sk :
k k-1
- dacă f(x )⋅ f(r ) < 0 ,atunci :
rk= rk-1 si sk= xk ;
k k-1
- dacă f(x )⋅ f(r ) < 0 ,atunci :
rk= xk si sk= sk-1 ;
k k-1
- dacă f(x )⋅ f(r ) = 0 ,atunci calculul este terminat;

IV) Calculul se termina cand sunt indeplinite conditiile :


| rk -sk | ≤ ε x
si/sau
| f(rk)| ≤ ε f
Interpretarea geometrică a metodei bisecţiei este ilustrată în figura de mai jos:

y=f(x)

r2
r0 r1
0 a x f(x2)
f(r0) f(x1) x2 b x
s2 s0
s1

8
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

2.Exemplificări
2.1. METODA FALSEI POZITII

Se considera ecuatia:
f(x)=0, unde f(x)=2⋅ tgx-10x+3, ε x=0.001, ε f=0.01 în intervalul [-1,1];
Sa se rezolve aceasta ecuatie utilizand metoda falsei pozitii.

Solutie: Se aplica metoda falsei pozitii parcurgand etapele mai sus descrise:
r 0 = −1, s 0 =1

I) Se fac initializarile:
si se calculeaza valorile functiei f in r0 si s0:
f (r 0 ) = f ( −1) =9.885 , f ( s 0 ) = f (1) =−3.885 .
Pentru k=1,2,3,…,se repeta etapele II),…IV),pana cand conditiile etapei
IV) sunt indeplinite:
Iteratia k=1:
II) Se determina x1 cu formula cunoscuta:
r 0 ⋅ f ( s 0 ) − s 0 ⋅ f ( r 0 ) − (−3.885 ) − 9.885
x1 = = = 0.4357
f ( s 0 ) − f (r 0 ) − 3.885 − 9.885

III) Se determina valoarea functiei f in x1:

f ( x1 ) = f (0.4357 ) =−0.426 .
Intrucat f ( x1 ) ⋅ f ( r 0 ) <0, rezulta :
r1 =r 0 =1, s1 =x1 =0.4357
si valorile corespunza toare ale functiei f :
1
f ( r ) = f ( −1) =9.885 , 1
f ( s ) = f (0.4357 ) =−0.426 .

IV) Se verifica conditiile de terminare a algoritmului:


r1 −s1 =1.4357 >εx , f ( x1 ) =0.426 >εf .

Se observa ca relatiile | rk -sk | ≤ ε x si | f(rk)| ≤ ε f


nu sunt satisfacute,prin urmare se trece la iteratia urmatoare:

9
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

Iteratia k=2:
II) Se determina x2:

r1 ⋅ f ( s1 ) − s1` ⋅ f ( r1 ) −( −0.426 ) −0.4357 ⋅ 9.885


x2 = = =0.3764 .
1
f ( s ) − f (r )1 −0.426 −9.885

III) Se determina f( x 2 ) :
f ( x 2 ) = f (0.3764 ) =0.265 .
Deoarece f ( x 2 ) ⋅ f ( r1 ) >0, rezulta :
r 2 = x 2 =0.3764 , s 2 = s1 =0.4357 .
f ( r 2 ) = f (0.3764 ) =0.265 , f ( s 2 ) = f (0.4357 ) =−0.426 .
IV) Se verifica conditiile de terminare a calculelor :
r 2 − s 2 =0.0587 >εx , f ( x 2 ) =0.265 >ε .
f
Relatiile | rk -sk | ≤ ε x si | f(rk)| ≤ ε f nefiind satisfacute se trece la iteratia
urmatoare.
Se poate observa ca erorile au scazut semnificativ,scaderea lor fiind mai
rapida decat in cazul metodei bisectiei,insa inca nu s-a ajuns la indeplinirea
conditiilor de terminare a calculelor.Iteratiile sunt prezentate in tabelul de mai jos:

Iteratia xk rk sk | rk -sk | |f(xk)|


0 - -1 1 - -
1 0.4357 -1 0.4357 1.4357 0.426
2 0.364 0.3764 0.4357 0.05 0.0265
3 0.3799 0.3764 0.3799 0.0035 1.9⋅ 10-4
4 0.3798 0.3764 0.3798 0.0035 7.9⋅ 10-8
5 0.3798 0.3764 0.3798 0.0035 3.29⋅ 10-11
6 0.3798 0.3764 0.3798 0.0035 1.3⋅ 10-14
7 0.3798 0.3798 0.3798 1.72⋅ 10-15 1.33⋅ 10-14

2.2. METODA BAILEY(NEWTON DE ORDINUL II)

Se consideră ecuaţia:
f(x)=0, unde f(x)=2⋅ tgx-10x+3, cu x0=3, ε x=0.001, ε f=0.01

I) Se iniţializează soluţia cu valoarea x0=3;

10
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

Iteraţia k=1:
II)
f (x0 ) = f (3) = - 27
.2
851
,
f '(x 0 ) =f ' (3) = - 7
.9
594,
f "( x 0 ) = f " (3) = - 0.5
818
,
f (x 0 ) f (3)
h0 = − =
− =
- 3
.9
190
,
f ( x 0 ) ⋅f " ( x 0 ) f (3) ⋅f " (3)
f '(x 0 ) − f ' (3) −
2 ⋅f ' (3)
2 ⋅f ' ( x 0 )
x1 = x 0 + h 0 = - 0.9
190
III)
| h0|= 3.919>ε x
| f(x1)|=f(-0.9190)= 9.5689 >ε f

Iteraţia k=2:
II)
f ( x1) = f (−0.9190) = 9.5689,
f ' ( x1) = f ' ( −0.9190) = - 4.5650,
f " ( x1) = f " (−0.9190) = -14.2457 ,

f ( x1 ) f (−
0.91
90 )
h1 =− =− =0
.49
07
f ( x1 ) ⋅f " ( x1 ) f (−
0.9190 ) ⋅f " ( −
0.91
90 )
f ' ( x1 ) − f ' (−
0. 9
190 ) −
2 ⋅f ' ( −
0.9190 )
2 ⋅f ' ( x1 )
x2 =x1 + h1 = - 0.4
283

III)
| h1|=0.4907 >ε x
| f(x2)|=f(-0.9190)= 6.3699 >ε f

Iteraţia k=3:
II)
f (x2 ) = f ( - 0.4
283 ) =6
.3
699
,
f '(x2 ) = f '( - 0.4
283 ) =- 7
.5
831
f "( x 2 ) = f "( - 0.42
83 ) =- 2
.2
069
,
f (x2 ) f ( - 0
.4283 )
h2 =− =− =
0.7
485
,
f ( x 2 ) ⋅f " ( x 2 ) f ( - 0.4
283 ) ⋅f " ( - 0
.4
283 )
f '(x2 ) − f ' (−
0 .4
283 ) −
2 ⋅f ' ( - 0
.4
283 )
2 ⋅f ' ( x 2 )
x3 =x2 + h2 = 0.32
02

III)
| h2 |=0.7485 >ε x
| f(x3)|=f(0.3202)= 0.4612 >ε f

11
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

Deoarece s-a ales o valoare iniţială destul de depărtată de valoarea


exactă,convergenţa este mai lentă.Se observă că nu s-a ajuns la precizia
dorită,astfel calculele sunt prezentate în tabelul de mai jos:

Iteraţia x f(x) f′ (x) f″ (x) |h|


0 3 -27.2851 -7.9594 -0.5818 3.919
1 -0.919 9.5691 -4.5644 -14.2484 0.4907
2 -0.4283 6.37 -7.5831 -2.2071 0.7485
3 0.3202 0.4612 -7.7801 1.4724 0.0596
4 0.3798 3.6⋅ 10 -4
-7.6813 1.8512 3⋅ 10-5
2.3. METODA NEWTON SIMPLIFICATĂ

Se consideră ecuaţia f(x)=0.

Iată un exemplu : f(x)=2⋅ tan(x) +10⋅ x+3, pt. care s-a separat o soluţie în
intervalul [-1,1].După cum am precizat deja, această funcţie, nefiind polinomială,
trebuie calculată derivata ei, MatLab neputînd efectua acest lucru :
f′ (x)=2/cos2 (x) –10.
0) x0 =0 – iniţializare cu o valoare arbitrară din intervalul [-1,1]
ε 0 =0.001 – precizia calculelor
1) x1= x0 –f(x0)/f ′ ( x0)= 0-3/(-8)=0.375
ε 1 = x1 – x0 =0.375>ε 0
2) x2= x1 –f(x1)/f ′ ( x0)= 0.3797
ε 2 = x2 – x1 = 0.0047>ε 0
3) x3= x2 –f(x2)/f ′ ( x0)= 0.3798
ε 3 = x3 – x2 = 0.0001<ε 0

Ne oprim aici deoarece s-a atins precizia dorită.

2.3. METODA BISECŢIEI

Se considera ecuatia: f(x)=0, unde f(x)=2⋅ tgx-10⋅ x+3 , pentru care s-a
separat o soluţie in intervalul [-1,-1].Să se determine soluţia ecuaţiei utilizând
metoda bisecţiei,erorile admise fiind ε x=10‾³ şi ε f =10‾²
Soluţie: Se parcurg etapele metodei bisecţiei.Astfel:
I) Se fac iniţializarile:r0 =-1, s0=1, | r0-s0|=2.

Iteraţia k=1 :

r 0 + s0 12
x1 = = 0;
2
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

II)

III) f(x1 )=f(0)=3,


f(r0 )=f(-1)=9.885,
f(x1)⋅ f(r0) >0 ⇒ r1= x1=0 , s1=s0=1.
IV) Se verifică dacă sunt indeplinite condiţiile de terminare:
| r -s |=1 >ε x şi | f(x1)|=3>ε f
1 1

Iteraţia k=2 :
II)
r1 + s1
x1 = = 0.5;
2

III) f(x2 )=f(0.5)=-0.9074,


f(r1 )=f(0)=3,
f(x2)⋅ f(r1) >0 ⇒ r2= r1=0 , s2=x2=.05.
IV) Se verifică dacă sunt indeplinite condiţiile de terminare:
| r –s | =0.5>ε x şi | f(x2)|=0.9074>ε f
2 2

Iteraţia k=3 :
II)
r 2 + s2
x3 = = 0.25;
2
III)
f(x3 )=f(0.25)=1.011,
f(r2 )=f(0)=3,
f(x3)⋅ f(r2) >0 ⇒ r3= x3=0.25 , s3=s2=0.5.
IV) Se verifică dacă sunt indeplinite condiţiile de terminare:
| r3 –s3 | =0.25>ε x şi | f(x3)|=1.011>ε f

Datorită convergenţei slabe a acestei metode , erorile nu au scăzut sub


limitele dorite.Pentru ilustrarea metodei pe acest exemplu sunt prezentate calculele
în tabelul de mai jos:

Iteraţia x f(x) r s |r-s|


0 - - -1 1 2
1 0 3 0 1 1

13
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

2 0.5 -0.907 0 0.5 0.5


3 0.25 1.0107 0.25 0.5 0.25
4 0.3750 0.0373 0.3750 0.5 0.125
5 0.4375 -0.4395 0.375 0.4375 0.0625
6 0.4062 -0.2021 0.375 0.4062 0.0312
7 0.3906 -0.0827 0.375 0.3906 0.0156
8 0.3828 -0.0228 0.375 0.3828 0.0078
9 0.3789 0.0072 0.3789 0.3828 0.0039
10 0.3809 -0.0078 0.3789 0.3809 0.0020
11 0.3799 -2.7⋅ 10-4 - - 9.7⋅ 10-4

3.Prezentarea implementărilor
3.1. METODA FALSEI POZITII

Metoda falsei poziţii este implementată în fişierul funcţie “coarda.m “.Această


funcţie are cinci parametri de intrare :
- func – funcţie pentru rezolvarea ecuaţiei f(x)=0;
- a,b – marginile intervalului [a,b];
- epx - eroarea pentru soluţie;
- epf - eroarea pentru funcţie,
şi 2 parametrii de ieşire:
- sol - soluţia ;
- iter- numărul de iteraţii;
Prototipul functiei este:
function [sol,iter]=coarda(func,a,b,epx,epf)
La începutul funcţiei se fac iniţializările necesare :
tic;
r=a;
s=b;
x=(r*feval(func,s)-s*feval(func,r))/(feval(func,s)-
-feval(func,r));
iter=0;
Cât timp nu s-a ajuns la soluţia cu aproximarea dorită se găseşte o nouă
valoare a acesteia folosind ciclul while:
while (abs(r-s)>epx)|(abs(feval(func,x))>epf)

14
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

iter=iter+1;
x=(r*feval(func,s)-s*feval(func,r))/(feval(func,s)-
feval(func,r));
if (feval(func,x)*feval(func,r)<0)
s=x;
else r=x;
end;
end;
Funcţia returnează soluţia sol ,numărul iteraţiilor iter şi timpul de execuţie t.

2.2. METODA BAILEY(NEWTON DE ORDINUL II)

Această metodă este implementată în fişierul funcţie “bailey.m “.Această


funcţie are cinci parametri de intrare :
- f – funcţie pentru rezolvarea ecuaţiei f(x)=0;
- f′ – prima derivată a funcţiei f;
- f″ - derivata de ordinul 2 a funcţiei f;
- x0-aproximarea iniţială a soluţiei;
- epx - eroarea pentru soluţie;
- epf - eroarea pentru funcţie,
şi 2 parametrii de ieşire:
- sol - soluţia ;
- iter- numărul de iteraţii;
Prototipul funcţiei este:
function [sol,iter]=bailey(f,f1,f2,x0,epsx,epsf)
Funcţia “bailey” se bazează exclusiv pe algoritmul de aplicare al metodei
“bailey” – algoritm ce a fost prezentat în subcapitolul 1.2.2. şi constă în :
- iniţializarea variabilelor:
tic;
iter=0;
x=x0;
h=feval(f,x)/(feval(f1,x)-
-(feval(f,x)*feval(f2,x)/(2*feval(f1,x))));
- repetarea iteraţiilor pentru determinarea soluţiei ,până se atinge
aproximaţia dorită.Această repetare se realizează cu ciclul while:
while (abs(h)>epsx)|(abs(feval(f,x))>epsf)
x1=x-h;
iter=iter+1;
x=x1;
h=feval(f,x)/(feval(f1,x)-
-(feval(f,x)*feval(f2,x)/(2*feval(f1,x))));
end;
Funcţia returnează soluţia sol ,numărul iteraţiilor iter şi timpul de execuţie t.

15
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

3.3. METODA NEWTON SIMPLIFICATĂ

Am implementat această metodă sub 2 forme, în 2 fişiere “.m” :


“newtons.m”, “newtons1.m”. Diferenţa este că funcţia “newtons1” poate
calcula doar rădăcinile polinoamelor, folosind funcţiile specifice acestora din
MatLab : “polyval()”, “polyder()”, spre deosebire de funcţia “newtons”, care
este mai generală, pt. a îngloba şi ecuaţiile transcendente.
Astfel, dacă funcţiei “newton1” îi dăm un singur parametru-funcţie, sub
formă de polinom (ex: p=[1 0 2]), urmînd ca aceasta să calculeze singură ,prin
polyder() derivata funcţiei polinomiale ,acest lucru nu mai este valabil şi pentru
funcţia “newtons” unde trebuie noi să introducem ca parametru suplimentar
derivata funcţiei respective ,deoarece MatLab este conceput ca un limbaj practic
pentru lucru matriceal , nu neapărat ca un limbaj matematic avansat.
Metoda în sine este extrem de simplă şi de scurtă, funcţiei fiindu-i atribuiţi
5 parametri de intrare, ea returnînd 3 de ieşire.

[x,i,t]=newtons(f,g,a,b,x0,ex,ey)

x-soluţia finală (xn )


i-nrul iteraţiilor
t-timpul de lucru

f - funcţia
g - derivata
a, b – capetele intervalului
x0 – valoarea iniţială
ex, ey – erorile admise pt. x, respectiv y=f(x)

x1 – variabilă internă – memorează valoarea precedentă a lui x (xn-1 )

3.4. METODA BISECŢIEI

Metoda este implementată în funcţia MatLab “bisectie.m” şi are prototipul:


function [sol,iter]=bisectie(func,a,b,epx,epf);
Metoda bisectiei următorii cinci parametri de intrare :
- func – funcţie pentru rezolvarea ecuaţiei f(x)=0;
- a,b – marginile intervalului [a,b];

16
Rezolvarea numerică a ecuaţiilor(algebrice,transcendente)

- epx - eroarea pentru soluţie;


- epf - eroarea pentru funcţie,
şi 2 parametrii de ieşire:
- sol - soluţia ;
- iter- numărul de iteraţii;
La începutul acestei funcţii se fac iniţializările:
tic;
iter=0;
r=a;
s=b;
x=(r+s)/2;
Pentru a se ajunge la o soluţie cu o aproximaţie impusă , se repetă ciclul while
cât timp eroarea nu convine:
while (abs(r-s)>epx)|(abs(feval(func,x))>epf)
x=(r+s)/2;
if (feval(func,x)*feval(func,r)<0)
s=x;
else r=x;
end;

iter=iter+1;
end;

Funcţia returnează soluţia sol ,numărul iteraţiilor iter şi timpul de execuţie t.

Obseraţii:
Pe lângă funcţiile care au fost descrise mai sus mai avem funcţiile MatLab
f.m, f1.m , f2.m care au fost create pentru exemplu prezentat la fiecare metodă :
- f.m –ecuaţia din exemplu:
function y=f(x);
y=2*tan(x)-10*x+3;
- f1.m – derivata funcţiei f:
function y=f1(x)
y=2*1/cos(x)^2-10;
- f2.m –derivata de ordinul 2 a funcţiei f:
function y=f2(x)
y=2*sin(2*x)/cos(x)^4;

17

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