Sunteți pe pagina 1din 6

M E T O D E N U M E R I C E

1
2. Rezolvar ea numer i c a ecuai i l or al gebr i ce i t r anscendent e
Exist a numeroase sit uatii n care avem de rezolvat ecuatii polinomiale sau
nepolinomiale (t ranscendent e) cu o singura variabila de forma 0 = ) x ( f ale caror solutii nu se
pot det ermina prin met odele algebrice cunoscut e. Pent ru rezolvarea acest or ecuatii est e
necesar mai nt i sa se ident ifice print r-o anumita met oda int ervalele n care se afla exact o
radacina a ecuatiei.
Pentru ca ecuatia sa aiba o solutie n acest interval [ ] b , a este necesar ca f unctia ) x ( f
sa fie cont inua, strict monot ona, adica ) x ( f sa aiba acelasi semn pe int ervalul [ ] b , a si functia
sa prezint e schimbarea de semn: 0 < ) b ( f ) a ( f . Aceste conditii pentru det erminarea solutiilor
sunt echi valent e cu urmat oarele ipot eze:
[ ] R b , a : f est e o functie cont inua si derivabi la (functie Rolle);

< >
> <
<
0 0
0 0
0
) b ( f , ) a ( f
) b ( f , ) a ( f
) b ( f ) a ( f ;
) x ( f are numai o singura solutie pe [ ] b , a .
Met odele cele mai ut ilizate n calculul numeric aproximativ al solutiilor unei ecuatii care
sat isf ace ipot ezele de mai sus sunt :
1. Met oda nj umatatirii int ervalului (bisectiei);
2. Met oda coardei (secant ei);
3. Met oda tangentelor de ordinul I (Newt on Raphson);
4. Met oda t angent elor de ordinul I I (Newt on)
5. Met oda parabolelor (Blumenf eld)
6. Met oda iterativa: x= g( x)
Pent ru ext ragerea radacinii de ordinul k dint r-un numar N se poat e f olosi una din met odele
lui Newt on (t angent elor de ordinul I sau I I ).
n continuare sunt prezent at e aceste met ode si modul de aplicare al lor pent ru un
exempl u concret .
2.1. Met oda nj umi r i i i nt er val ul ui ( bi seci ei )
Est e cea mai simpla met oda de det erminare a radacinii unei ecuatii 0 = ) x ( f care se
afla n i ntervalul [ ] b , a . Pent ru aplicarea acest ei met ode se verifica daca:
[ ] R b , a : f est e o functie cont inua si derivabila;
0 < ) b ( f ) a ( f
Met oda nj umatatirii int ervalului sau a bisectiei se bazeaza pe urmat orul algorit m:
1. se calculeaza valoarea functiei f(x) la capet ele intervalului si nt r-un punct sit uat la mij locul
int ervalului:
2
b a
c x
+
= =
M E T O D E N U M E R I C E
2
2. Se verif ica semnele functiei n cele t rei punct e ale int ervalului (a, c, b) si subint ervalul n
care functia prezinta schimbarea de semn; acest subint erval este noul int erval n care af la
radacina. Sunt posibile urmat oarele vari ant e prezent at e n t abelul urmat or :
Tabelul 1
F(a) f(b) f(c) Radacina
- + + ( ) c , a
- + - ( ) b , c
+ - + ( ) b , c
+ - - ( ) c , a
Pent ru noul int erval se procedeaza analog calculnd valorile functiei la capele lui si la
mij loc, din semnele f unctiei n cele t rei punct e rezult nd subintervalul pentru care are loc
schimbarea de semn;
Procesul est e it erat iv si se ncheie at unci cnd se obtine o eroare mai mica dect
precizia impusa radacinii : < b a
Exempl u
Sa se afle radacina ecuatiei algebrice:
0 1 4 3
2
= + x x x ln ,
cu o eroare mai mica de 0,02 stii nd ca se afl a n intervalul [ ] 2 1,
Pent ru det erminarea solutiei ecuatiei se apli ca algori t mul prezent at mai sus: rezulta
valorile din t abelul 2:
Tabelul 2
Nr a c b f ( a) f ( c) f ( b)
1. 1 1,5 2 -2 0,155465 3,693
2. 1 1,25 1,5 -2 -1,089 0,155465
3. 1,25 1,375 1,5 -1,089 - 0,50967 0,155465
4. 1,375 1,4375 1,5 -0,50967 - 0,1878 0,155465
5. 1,4375 1,46875 1,5 -0,1878 - 0,0189 0,155465
6. 1,46875 1,484375 1,5 -0,0189 0,0676 0,155465
7. 1,46875 1,4765625 1,484375 - 0,0189 0,024177
2
Se observa din rezult at ele obtinut e ca aceasta met oda est e slab convergenta. Solutia
aproximat iva a ecuatiei est e = 1,4765625 calculat a cu o eroare: = 1,4765625- 1,
46875= 0,0078125
x=a
x
y
y=f(x)
O
Fig. 1
2
1
b a
c
+
=
x=b
2
1 1
2
b a
c
+
=
M E T O D E N U M E R I C E
3
I mplement are in C+ + :
/ *
Rezolvarea numerica a ecuatiilor algebrice si transcedentale
1. Met oda bisectiil or (met oda inj umat atirii)
* /
# include< iostream.h>
# include< coni o. h>
# include< mat h.h>
# include< st dlib.h>
float a,b,c,eps;
int i, n;
float funct ie(float x)
{
ret urn ( log(x) + 3* x* x - 4* x - 1);
}
void bisect ie(float a, float b)
{
if( ( funct ie(a) < 0 ) && ( funct ie(b) > 0) )
{
n= ceil(log(( b-a)/ eps)/ l og( 2))+ 1;
/ / cout < < "Tabelul cu aproximarile succesive"< < endl;
/ / cout < < "| a | c | b | f(a) | f(c) | f(b) | "< < endl;
for(i= 1; i< = n; i+ + )
{
c= ( a+ b)/ 2;
if( funct ie( c) < 0) a= c;
else b= c;
/ / cout < < "-------------------------------------------------------"< < endl;
/ / cout < < "| "< < a< < "| " < < c< < "| " < < b< < "| "< < funct ie( a)< < "| "< < funct ie( c)< < "| " < < funct ie(b)< < "| "< < e
ndl;
/ / get ch() ;
}
cout < < "solut ia : "< < c< < endl;
}
else
cout < < "Nu se incadreaza in ipot eza f( a)< 0 si f(b)> 0";
ret urn;
}
void main(void)
{
clrscr() ;
cout< < " a = "; cin> > a;
cout < < " b = "; cin> > b;
cout< < "Dati preci zia de calcul eps = "; cin> > eps;
bisect ie(a,b) ;
getch( );
}
M E T O D E N U M E R I C E
4
2.2. Met oda coar dei sau secant ei
Fie o functie cont inua si derivabila f(x) avnd pe int ervalul [ a, b] o singura radacina
( ) b , a . Deoarece 0 < ) b ( f ) a ( f , se poat e aproxima radacina cu abscisa punct ului de
int ersectie a coardei (secantei) care t rece prin punct ele A(a, f (a)) si B(b, f(b)) cu axa Ox (fig.
1.2.1). Ecuatia acest ei coarde est e:
( )
a b
) a ( f ) b ( f
a x ) a ( f y
a b
a x
) a ( f ) b ( f
) a ( f y

Pent ru pri mul int erval [ a,b] se poat e scrie aceasta abscisa ast fel :
) a ( f ) b ( f
a b
) a ( f a x

=
1
Daca 0
1
< ) x ( f ) a ( f at unci noul subinterval [ a,x
1
] va cuprinde solutia ecuatiei.
Procedeul de aproximare se repeta n acelasi mod pent ru noul subint erval. Presupunnd ca
pent ru subint ervalul [ x
n-1
, x
n
] est e ndeplini ta conditia:
0
1
<

) x ( f ) x ( f
n n
,
at unci pent ru det erminarea solutiei aproximative x
n+ 1
est e valabil a rel ai a de recuren a
met odei coardei sau secant ei :
) x ( f ) x ( f
x x
) x ( f x x
n n
n n
n n n
1
1
1

=
Din punct de vedere geomet ric det erminarea solutiei aproximat i ve se realizeaza cu
aj ut orul int ersectiil or succesive ale secant el or la graficul functiei f(x) cu axa Ox , duse prin
punctel e:
A
n+ 1
[ x
n+ 1
, f(x
n+ 1
) ] , A
n
[ (x
n
, f (x
n
)] pent ru cazul 0
1
<
+
) x ( f ) x ( f
n n
, respect iv
A
n-1
[ x
n- 1
, f(x
n- 1
)] , A
n
[ x
n
, f( x
n
)] , pent ru cazul 0
1
<

) x ( f ) x ( f
n n
.
Exempl u
Sa se af le radacina ecuatiei algebrice: 0 1 4 3
2
= + x x x ln , cu o eroare 02 0, stii nd
ca se afl a n int ervalul [ ] 2 1, .
Pent ru ecuatia de mai sus se aplica relatia de recurenta (1.2.3) care conduce succesiv
la valorile din t abelul 3:
x=a
x
x
2
y
y=f(x
)
O
Fig.1.2.1
x
1
x=b

A
B
M E T O D E N U M E R I C E
5
Tabelul 3
Pas x
n- 1
x
n
x
n+ 1
f ( x
n-1
) f ( x
n
) f ( x
n+ 1
)
1.
1.000000 2. 000000 1.351300 -2.000000 3.693147 -0. 626100
2.
1.351300 2. 000000 1.445332 -0.626100 3.693147 -0. 146033
3.
1.445332 2. 000000 1.466431 -0.146033 3.693147 -0. 031635
4.
1.466431 2. 000000 1.470962 -0.031635 3.693147 -0. 006742
5.
1.470962 2. 000000 1.471926 -0.006742 3.693147 -0. 001432
6.
1.471926 2. 000000 1.472131 -0.001432 3.693147 -0. 000304
7
1.472131 2. 000000 1.472174 -0.000304 3.693147 -0. 000064
8
1.472174 2. 000000 1.472184 -0.000064 3.693147 -0. 000014
Se observa ca si aceasta met oda est e slab convergent a.
Deci solutia aproximat iva a ecuatiei calculata prin met oda coardei sau secant ei est e:
= 1, 47176 cu o eroare = 0,02824 .
I mplement are in C+ + :
Sa se det ermine solut ia ecuat iei 0 5 x 7 x
5
= + + continuta in intervalul [ -1, 0] .
Se observa cu usuri nt a ca met oda se poat e apl ica funct iei f : [ -1, 0] -> R, f (x)= x
5
+ 7x+ 5. Derivat a
f unctiei f este f

(x)= 5x
4
+ 7, deci val oarea minima, respect iv maxima a modulul ui derivat ei pe
int ervalul [ -1,0] est e 7 (not am cu m1) si 12 (not am cu m2).
/ *
Rezolvarea numerica a ecuatiilor algebrice si transcedentale
2. Metoda coardei (metoda secantei)
variant a cu est imarea erorii
* /
# include< iostream.h>
# include< coni o. h>
# include< mat h.h>
# include< st dlib.h>
float a,b,cn,cn_1,eps,m1, m2;
int i;
float funct ie(float x)
{
ret urn ( log(x) + 3* x* x - 4* x + 1 );
}
void coarda(float a, float b, float eps)
{
m1= 4; m2= 9. 5;
i= 1;
cn_1= a;
cn= ( a* funct ie(b) - b* funct ie( a))/ (funct ie( b)-funct ie(a)) ;
while( fabs(cn- cn_1) * m2/ m1 > eps)
{
cn_1= cn;
M E T O D E N U M E R I C E
6
if( f unct ie( cn) < 0) a= cn;
else b= cn;
i+ + ;
cout < < cn< < " an = "< < a< < " bn = "< < b< < " it erat ia = "< < i< < endl;
cn= ( a* funct ie(b) - b* funct ie( a))/ (funct ie( b)-funct ie(a)) ;
}
ret urn;
}
void main(void)
{
clrscr() ;
cout< < " a = "; cin> > a;
cout < < " b = "; cin> > b;
cout< < "Dati preci zia de calcul eps = "; cin> > eps;
coarda(a,b,eps);
getch( );
}

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