Sunteți pe pagina 1din 18

Lucrarea 2

REZOLVAREA NUMERIC A ECUAIILOR


ALGEBRICE
1. SCOPUL LUCRRII
Prezentarea unor metode de rezolvare a ecuaiilor algebrice, i implementarea
acestora n limbaje de nivel nalt (n particular, ANSI C).
2. PREZENTARE TEORETIC
Calculul rdcinilor unei ecuaii se face n dou etape:
1) Separarea rdcinilor.
2) Calculul lor cu o eroare impus.
2.1. SEPARAREA RDCINILOR
Considerm funcia f a b :[ , ] R, [ ] x a ,b i ecuaia algebric
0 = f(x) (2.1)
Separarea rdcinilor unei ecuaii f x ( ) = 0 const n determinarea unor intervale n
domeniul de definiie al funciei, n care s existe o singur rdcin real. Pentru
separarea rdcinilor reale exist mai multe metode dintre care amintim: metoda irului
lui Rolle, metoda irului lui turm i metoda lui Budan- Fourier.
n continuare se prezint metoda irului lui turm.
2.1.1. METODA IRULUI LUI TURM
Considerm funcia definit pe f a b :[ , ] R, care ndeplinete condiiile de
continuitate i derivabilitate pentru [ ] x a ,b .
Definiia 2.1
irul de funcii f
0
,f
1
, f
2
......f
m
continue pe [ , ] a b care satisfac condiiile:
a) f
0
(x) =f(x);
b) f
m
(x) 0 pentru [ ] x a ,b ;
c) dac f
i
(x) =0, 1im-1 i [ ] x a ,b , atunci f
i-1
(x)*f
i+1
(x)<0;
d) dac f
0
(x)=0 pentru [ ] x a ,b , atunci f
0
(x)*f
1
(x)>0
se numete irul lui turm asociat funciei f(x).
ndrumar de laborator pentru metode numerice 26
Numrul rdcinilor ecuaiei f(x) n intervalul [ , ] a b este dat de urmtoarea
teorem:
Teorema 2.1
Fie irul lui turm f
0
,f
1
, f
2
......f
m
, ataat funciei f(x) cu condiiile f(a) 0 i f(b) 0,
atunci numrul de rdcini ale ecuaiei f(x)=0 n intervalul [ , ] a b este dat de diferena
numrului de variaii de semn ale irurilor (relaia 2.2):
f
0
(a),f
1
(a), f
2
(a)......f
m
(a)
f
0
(b),f
1
(b), f
2
(b)......f
m
(b) (2.2)
n cazul funciei polinom P(x) care este definit pe R, Teorema 2.1 devine:
Teorema 2.2
Fie P
0
, P
1
, P
2
,......P
m
un ir de polinoame construit astfel P
0
=P, P
1
=P, iar P
i+1
este
restul mpririi lui P
i-1
la P
i
luat cu semn schimbat, pentru 2im. Atunci numrul de
rdcini ale ecuaiei P(x)=0 este egal cu diferena dintre numrul de schimbri de semn
ale irurilor:
P
0
(-), P
1
(-), P
2
(-),......P
m
(-)
P
0
(), P
1
(), P
2
(),......P
m
()
2.1.1.1. Algoritmul 2.1. irul lui turm
void Sturm
(
intreg grad, // gradul polinomului
real P1[], // vectorul coeficienilor polinomului
real P2[], // vectorul coeficienilor derivatei
// polinomului;
real Rez[], // vectorul coeficienilor restului
real C1, // pentru calculul coeficienilor
// restului
real C2 // coeficienii pentru calculul
// coeficienilor restului
)
{ // corpul funciei
pentru i=grad-1 pana la 0 calculeaz P2[i]=(i+1)P1[i+1];
daca grad=0 Rez(0)=P1(0)-P1(1);
// Restul are gradul grad-2
altfel
{
C1 = P1[grad]/P2[grad-1];
C2 = (P1[grad-1]-C1*P2[grad-2])/P2[grad-1];
pentru i= (grad-2 pana la 1) calculeaz
Rez(i)=P1(i)-C1*P2[i-1]-C2*P2[i];
Rez(0)=P1[0]=P1-C2*P2[0];
}
tiprete coeficienii restului cu semn schimbat;
}
Not: Programul irului lui turm este implementat pe calculator i poate fi utilizat
direct.
Lucrarea 2 27
2.2. ESTIMAREA ERORII
Pentru metodele numerice ce urmeaz s fie prezentate n continuare, soluia
ecuaiei f(x)=0 se determin ca limit a unui ir de valori, {x
n
}. Apar astfel dou
probleme, i anume:
cum se determin limita acestui ir;
"ct de repede" are loc convergena sa.
Fixm un numr eps n funcie de numrul de zecimale exacte cu care dorim s
calculm rdcinile ecuaiei, i determinm termenii consecutivi ai irului {x
n
} pn se
ndeplinete condiia 2.3:
|x
n
- alfa| < eps (2.3)
unde alfa este limita irului {x
n
} i deci rdcina ecuaiei.
2.2.1. ESTIMAREA APRIORI A ERORII
n acest caz dorim s obinem o inegalitate de forma:
|x
n
- alfa| < eps(n) (2.4)
Dac inecuaia eps(n) < eps, avnd necunoscuta n, poate fi rezolvat fr
calculul termenilor irului {x
n
}, atunci vom ti apriori care termen al irului
aproximeaz soluia ecuaiei, cu precizia eps.
2.2.2. ESTIMAREA APOSTERIORI A ERORII
Acum urmrim s obinem o inegalitate de forma:
|xn - alfa| < const * |xn - xn-1| < eps (2.5)
Deci vom testa realizarea condiiei 2.6:
const * |xn - xn-1| < eps (2.6)
unde accentul se pune pe diferena ultimilor doi termeni ai irului.
2.3. CALCULUL RDCINILOR REALE ALE ECUAIEI
ALGEBRICE
Pentru calculul rdcinilor reale ale unei ecuaii algebrice se utilizeaz mai multe
metode numerice.
Metodele de rezolvare a ecuaiilor le putem mpri n dou categorii:
1. Metode directe care, teoretic, presupun un numr finit de operaii, i
2. Metode indirecte, care implic , din punct de vedere teoretic, un numr infinit
de operaii (soluia este determinat ca limit a unui ir).
ndrumar de laborator pentru metode numerice 28
Vom studia:
pentru metodele directe: metoda biseciei (bipartiiei);
pentru metodele indirecte:
metoda aproximaiilor succesive,
metoda lui Newton Raphson (metoda tangentei)
metoda lui Bairstow.
2.4. METODE DIRECTE PENTRU REZOLVAREA ECUAIILOR
2.4.1. METODA BISECIEI (BIPARTIIEI)
Fie funcia continu f : [ , ] a b R i ecuaia f x ( ) = 0 care are soluie unic pe
intervalul [ , ] a b . Pentru condiiile date funcia satisface inecuaia ( ) ( ) f a f b 0 . Se
pune problema determinrii soluiei a a ecuaiei f x ( ) = 0 pe intervalul [ , ] a b , cu o
anumit eroare e .
Metoda are la baz principiul Divide et Impera. Problema dat se reduce la sub-
probleme de aceeai natur, dar elementare (deci mai uor de rezolvat), dup care toate
soluiile intermediare ale sub-problemelor se combin n soluia final Rezolvarea
const n njumtirea intervalului i stabilirea acelei jumti de interval n care se
gsete soluia ecuaiei. Acest lucru se face testnd semnul n capetele unuia din
subintervale, cu decizia ca, n cazul n care semnele n capete sunt diferite, s alegem
acea jumtate pentru pasul urmtor.
Avantajul metodelor directe, deci i a acestei metode este acela c soluia unei
ecuaii, dac exist, poate fi determinat exact, fr aproximaii de precizie. Aceast
valoare exact poate fi dat fie de limita stnga a intervalului iniial, fie de limita
dreapt a intervalului iniial, fie de unul din mijloacele succesiv determinate.
2.4.2. ESTIMAREA APRIORI I APOSTERIORI A ERORILOR
Plecnd de la intervalul [a, b] dup n divizri se ajunge la intervalul [a
n
, b
n
] n care
cutm soluia ecuaiei. Se poate arta c (relaia 2.7):
b
n
-a
n
= (b-a)/2
n
(2.7)
pe baza faptului c la fiecare divizare, lungimea intervalului pe care se continu
calculele este jumtate din cea anterioar. n concluzie, dup n divizri lungimea unui
interval care conine soluia este de 2
n
ori mai mic dect cea iniial.
Estimarea apriori a erorii se face innd cont c alfa i x
n
aparin [a
n
, b
n
]. Avem,
deci:
|x
n
- alfa| < |a
n
- b
n
| = b
n
-a
n
= (b-a)/2
n
(2.8)
De aici rezult c:
(b-a)/2
n
< eps, adic n = [ln ((b-a)/eps) / ln2] + 1 (2.9)
Lucrarea 2 29
n cazul estimrii aposteriori a erorii avem:
|a
n
- x
n
| = |b
n
- x
n
| = |b
n
-a
n
| / 2
n
(2.10)
de unde rezult:
|b
n
- a
n
| = 2* |a
n
- x
n
| i |b
n
- a
n
| = 2*|b
n
- x
n
| (2.11)
Deoarece n final a
n
= x
n
(sau b
n
= x
n
) avem:
|a
n
- b
n
| = 2*|x
n-1
- x
n
| (2.12)
Dar, deoarece alfa i x
n
aparin [a
n
, b
n
] putem scrie:
|x
n
- alfa| < |a
n
- b
n
| = 2*|x
n
- x
n-1
| (2.13)
Aadar, pentru a obine soluia aproximativ a ecuaiei cu eroarea eps, va trebui s
calculm termenii irului pn cnd condiia devine:
2*|x
n
- x
n-1
| < eps (2.14)
2.2.1.1. Algoritmul 2.1. Bisecia pentru polinoame
// Funcia ntoarce:
// True (1) in caz de succes (s-a gsit rdcina);
// False (0) in caz de eec.
intreg BisPol
(
intreg n, // gradul polinomului
real A[], // coeficienii polinomului
real ls, // limita stnga a intervalului
real ld, // limita dreapta a intervalului
real er, // eroarea de aproximare.
real *pRad // adresa rdcinii (pointer)
)
{
// variabile locale
real xm; // jumtatea intervalului.
// instruciunile ce modeleaz algoritmul metodei
daca (valPol(n,A,ls) * valPol(n,A,ld) > 0) return False;
daca (valPol(n,A,ls) == 0) {*pRad = ls; return True;}
daca (valPol(n,A,ld) == 0) {*pRad = ld; return True;}
xm=(ls+ld)/2; // condiia de intrare in ciclul while
cat timp((fabs(ld-ls) > er) I valPol(n,A,xm) != 0)
{
xm=(ls+ld)/2;
daca (valPol(n,A,xm) * valPol(n,A,ls) <0) ld = xm;
altfel ls = xm; // se stabilesc noile limite de interval
}
*pRad = xm; // stabilesc valoarea rdcinii drept mijlocul
// ultimului interval ce satisface condiiile
// buclei while() anterioare.
return True; // succes: am gsit rdcina .
}
ndrumar de laborator pentru metode numerice 30
Obs.: Funcia valPol(), ce calculeaz valoarea unui polinom ntr-un punct
(folosind schema lui Horner, sau echivalent, teorema mpririi cu rest) este prezentat
n Anexa A.
2.2.1.2. Algoritmul 2.2. Bisecia pentru ecuaii transcendente
// functia intoarce:
// True (1) in caz de succes (s-a gsit rdcina);
// False (0) in caz de eec.
intreg Bis_Functie
(
Adr_functie, // adresa funciei din ecuaia f(x)=0
real ls, // limita stnga a intervalului de calcul
real ld, // limita dreapta a intervalului de calcul
real er, // eroarea de calcul (precizia impusa)
real *pRad // adresa variabilei rdcina
)
{
// declaraiile variabilelor locale:
real xm; // mijlocul intervalului .
// instructiunile functiei
daca(*Adr_functie)(ls) * (*Adr_functie)(ld)>0) return False;
daca (*Adr_functie)(ls) == 0) {*pRad = ls; return True;}
daca (*Adr_functie)(ld) == 0) {*pRad = ld; return True;}
xm=(ls+ld)/2; // conditia de intrare in ciclul while
cat timp((fabs(ld-ls) > er) SI (Adr_functie (xm) != 0) )
{
xm=(ls+ld)/2;
daca ((*Adr_functie)(xm) * (*Adr_functie)(ls)<0) ld = xm;
altfel ls = xm; // se stabilesc noile limite de interval
}
*pRad = xm; // stabilesc valoarea radacinii drept
// mijlocul ultimului interval ce satisface
// conditiile buclei while() anterioare.
return True; // succes: am gasit radacina .
}
Obs.: Notaiile Adr_functie i (*Adr_functie) sunt simbolice. Ele reprezint,
respectiv, adresa unei funcii (deci un pointer la o funcie) i apelul indirect al unei
funcii, prin intermediul pointerului ctre acea funcie. Vedei Anexa B - Noiuni de C
necesare desfurrii lucrrilor de laborator pentru lmuriri.
Lucrarea 2 31
2.5. METODE INDIRECTE PENTRU REZOLVAREA
ECUAIILOR
2.5.1. METODA APROXIMAIILOR SUCCESIVE (metoda contraciei)
Fie funcia f : [ , ] a b continu i derivabil pe ( , ) a b i ecuaia f x ( ) = 0 , care pe
intervalul (c,d) ( , ) a b are o rdcin unic a , f ( ) a = 0. Presupunem c ecuaia
f x ( ) = 0
se poate scrie sub forma:
x x = j( ) (2.15)
Pentru x
o
o aproximaie iniial, avem urmtoarele succesiuni de aproximaii:
( ) ( ) ( ) ( ) x x , x x , x x , ... , x x
1 0 2 1 3 2 n n-1
= = = = j j j j (2.16)
Ca urmare formula ( ) x x
n n-1
= j reprezint o formul de iteraie.
Calculul soluiei prin metoda aproximaiilor succesive se face funcie de o eroare
impus care d criteriul de oprire al programului. Algoritmul se ncheie atunci cnd:
| | x x
n n
- <
-1
e (2.17)
ceea ce arat c diferena dintre dou valori consecutive calculate este mai mic
dect e , sau cnd:
h < | ) ( |
n
x f (2.18)
i atunci soluia ecuaiei este aproximat de x
n
, pentru h suficient de mic.
2.2.2.1. Algoritmul 2.3. Aproximaii succesive
// funcia ntoarce: True (1) succes, s-a gsit rdcina;
// False (0) in caz de eec.
intreg Aprox_Succesive
(
Adr_functie, // adresa functiei fi(x)(pointer la functie)
real ls, // limita stnga a intervalului de calcul
real ld, // limita dreapta a intervalului de calcul
real x0, // punctul de start - aproximaia iniiala
// necesara algoritmului
real er, // eroarea de calcul
real h, // pasul de derivare intre doua abscise
real *pRad // adresa variabilei radacina (pointer)
)
{
// declaraiile variabilelor locale:
real pc; // punctul curent de derivare.
real xn, xn_1; // aproximatiile curent i respectiv
// anterioara ale valorii radacinii.
real der; // variabila in care se retine valoarea
// derivatei funciei fi(x).
ndrumar de laborator pentru metode numerice 32
// instruciunile funciei
pc = ls; // pornesc de la valoarea ls pentru
// verificarea derivatei functiei fi(x) pe
// intervalul dat.
// verifica daca functia fi(x) are derivata subunitara pe
// intreg intervalul considerat.
repeta
{
der = ((*Adr_functie)(pc+h) - (*Adr_functie)(pc)) / h;
daca (fabs(der) >=1) return False;
pc=pc+h; // trec la urmatoarea abscisa, cu un pas cat
// mai mic.
} cat timp(pc<=ld);
xn = x0;
repeta
{ // modific pe 'x0' pana cnd este ndeplinita
// condiia de oprire.
xn_1 = xn;
xn = (*Adr_functie)(xn_1);
} cat timp(fabs(xn-xn_1) >= er);
*pRad = xn; // valoarea radacinii este valoarea lui xn
// cu care se ncheie ciclul imediat anterior
return True; // marchez succesul n gsirea rdcinii
}
Obs.: Notaiile Adr_functie i (*Adr_functie) sunt simbolice. Ele reprezint,
respectiv, adresa unei funcii (deci un pointer la o funcie) i apelul indirect al unei
funcii, prin intermediul pointerului ctre acea funcie. Vedei Anexa B - Noiuni de C
necesare desfurrii lucrrilor de laborator pentru lmuriri.
2.2.3. METODA NEWTON-RAPHSON (metoda tangentei)
Aplicnd metoda aproximailor succesive cu vitez de convergen mrit pentru
care considerm x = x
n
.
Rezult:
( )
( ) ( )
n
n
n n x
x
x
x x
+
= +
-
-
1
1
1
n
j
j
'
(2.19)
Aceast expresie reprezint o formul de iteraie pentru determinarea soluiei
ecuaiei x = ( ) j x i se numete formula Newton - Raphson. Formula de iteraie poate
fi reprezentat sub forma:
( ) ( )
( ) ( )
( ) x
x x x
x g x g x
n n+1
1
unde ,
'
'
j
j j
-
-
= =
(2.20)
Condiia de convergen a irului spre soluia ecuaiei este dat de relaia
(teorema contraciei):
Lucrarea 2 33
( ) g
'
x <1 (2.21)
Formula Newton-Raphson (2.19) poate fi scris i pentru ecuaia implicit
f x ( ) = 0 astfel:
( )
( )
n-1
'
n-1
n n
x f
x f
x x - =
-1
(2.22)
Pentru anumite situaii, relaia (2.22) genereaz o nedeterminare de tip Divide by
zero, marcat ca atare de ctre compilator. Este de exemplu cazul pentru care
utilizatorul nu a studiat n prealabil condiiile de existen ale unei anumite ecuaii,
pentru intervalul pe care l-a ales, i ntr-unul din punctele de pe abscis, derivata
funciei se anuleaz.
Pentru aceste situaii se poate adapta relaia (2.22) n modul urmtor. Se va pstra
numrtorul neschimbat, iar pentru numitor, acesta este stabilit la expresia f(x
0
).
Astfel, relaia (2.22) devine:
( )
( )
0
1
x f
x f
x x
'
n-1
n n
- =
-
(2.22')
Geometric, acest lucru semnific pstrarea unei pante constante, la fiecare pas.
Panta la care ne referim este cea calculat n punctul de start (x
0
).
Aceast adaptare a metodei tangentei poart denumirea de metoda coardei.
Denumirea de coard provine din aceea c, ntr-o reprezentare grafic a situaiei, vom
observa c la fiecare pas mai puin primul, se construiesc drepte paralele cu prima
tangent (doar prima dreapt este tangent la graficul funciei). Aceste drepte sunt apoi
intersectate cu axa absciselor i astfel determin valorile ulterioare de pe abscis (x
k
)
din irul de aproximaii ale soluiei.
Comparativ cu metoda tangentei, metoda coardei este mai lent, dar mai general.
n rest, toate celelalte particulariti ale metodei tangentei se pstreaz.
2.2.3.1. Algoritmul 2.4. Newton-Raphson pentru ecuaii transcendente
// functia intoarce: True (1) succes, s-a gasit radacina;
// False (0) in caz de esec.
intreg NewtonRaphson
(
Adr_functie, // referinta la functia f(x), din f(x)=0
real x0, // valoarea initiala necesara algoritmului
real er, // eroare de aproximare radacinii
real h, // valoarea pasului de derivare
int nMax // numarul maxim de iteratii impus pentru
// aflarea solutiei cu eroarea er .
real *pRad // adresa variabilei rdcin
)
{ // declaratiile variabilelor locale:
real xn, xn_1; // valoarea aproximat curent si anterior
// a radacinii
real der; // valoarea derivatei
ndrumar de laborator pentru metode numerice 34
// instructiunile metodei
xn=x0;
repet
{
xn_1=xn;
der=((*Adr_functie)(xn_1+h)-(*Adr_functie)(xn_1))/h;
dac (der == 0) return False;
xn = xn_1 - (*Adr_functie)(xn_1)/der;
nMax = nMax-1; // sau: nMax--;
} cat timp((fabs(xn-xn_1)>=er) SI (nMax>0));
dac (nMax= =0) return False;
*pRad=xn;
return True; // succes.
}
Obs.: Notaiile Adr_functie i (*Adr_functie) sunt simbolice. Ele reprezint,
respectiv, adresa unei funcii (deci un pointer la o funcie) i apelul indirect al unei
funcii, prin intermediul pointerului ctre acea funcie. Pentru lmuriri consultai Anexa
B - Noiuni de C necesare desfurrii lucrrilor de laborator.
2.2.4. METODA NEWTON-RAPHSON PENTRU POLINOAME
Aceast metod mai poart numele i de metoda Birge-Vieta.
Fie ecuaia polinomial P x ( ) = 0 :
P x a x a x a x a
m
m
m
m
( ) ... = + + + +
-
-
1
1
1 0
Aplicm formula de calcul (2.8) considernd o funcie polinomial, astfel c avem:
( )
( )
1
1
1
-
-
-
- =
n
'
n
n n
x P
x P
x x
(2.23)
i pentru ecuaiile polinomiale rmn valabile comentariile legate de metoda
coardei.
2.2.4.1 Algoritmul 2.5. Newton-Raphson pentru polinoame
// funcia ntoarce: True (1) success, s-a gsit rdcina
// False (0) in caz de eec
intreg Newton_Raphson_P
(
intreg n, // gradul polinomului
intreg nMax, // numrul maxim impus de iteraii
real A[], // vectorul coeficienilor polinomului
real x0, // valoarea de start
real er, // eroarea de calcul
real *pRad // rdcina ecuaiei
)
{ // declaraiile variabilelor locale
real xn, xn_1; // valoarea curent respectiv anterioara a
// rdcinii
Lucrarea 2 35
xn = x0;
repet
{
xn_1=xn;
dac (Derpol(n,A,xn_1)==0) return False;
xn=xn_1-Valpol(n,A,xn_1)/Derpol(n,A,xn_1);
nMax=nMax-1; // sau: nmax--;
} ct timp((fabs(xn-xn_1)>=er) I (nMax>0) );
dac (nMax == 0)
return False; // numarul de pasi este insuficient
*pRrad = xn;
return True;
}
Obs.:
Funcia valPol(), ce calculeaz valoarea unui polinom ntr-un punct (folosind
schema lui Horner, sau echivalent, teorema mpririi cu rest) mpreun cu funcia
derpol() - pentru calculul valorii derivatei unui polinom ntr-un punct, sunt
prezentate n Anexa A.
2.2.5. METODA LUI BAIRSTOW
Aceast metod determin toate rdcinile att reale ct i complexe ale unei
ecuaii polinomiale cu coeficieni reali. Fie ecuaia:
P x x a x a x a x a
n
n
n
n
n
n
( ) ... = + + + + + =
-
-
-
-
1
1
2
2
1 0
0 (2.24)
care admite soluiile x x x x
n 1 2 3
, , ,..., care pot fi reale i complexe. Se descompune
polinomul (2.24) n produs de dou polinoame unul de gradul doi i altul de grad n-2.
Dou soluii ale polinomului iniial sunt cele dou rdcini ale polinomului de
gradul doi care pot fi calculate uor i ele pot fi reale sau complexe.
Vom descompune polinomul iniial astfel:
( ) ( )
a x a x a x a x a x a
b x b x b x b x b x s x p Sx R
n
n
n
n
n
n
n
n
n
n
n
n
n
n
n n
+ + + + + + =
+ + + + + + + + +
-
-
-
-
-
-
-
-
-
-
-
1
1
2
2
3
3
1 0
2
1
3
2
4
3 2
2
...
...
Se rezolv ecuaia de grad 2, i procesul se reia, pentru polinomul de grad n-2, care
la rndul su va fi scris ca un produs de dou polinoame, unul de grad 2 i altul de grad
(n-2)-2.
Algoritmul 2.6 respect notaiile de mai sus.
ndrumar de laborator pentru metode numerice 36
2.2.5.1. Algoritmul 2.6. Metoda lui Bairstow
// funcia ntoarce:
// True (1) in caz de succes (s-a gsit rdcina);
// False (0) in caz de eec.
ntreg Bairstow
(
ntreg grad, // gradul polinomului, ntreg
real a[ ], // vectorul coeficienilor polinomului
real eps, // eroarea de calcul
real s0, // valoarea de start pentru sn
real p0, // valoarea de start pentru pn
intreg niter, // numrul de iteraii
real *solr, // vectorul prilor reale ale soluiilor
real *soli // vectorul prilor imaginare ale
// soluiilor
)
{ // declaratiile variabilelor locale
real b[ ]; // vectorul b conform descompunerii;
real bs[ ], bp[ ]; // vectorii derivatelor polinomului
// in raport cu s, respectiv p;
real S, R; // coeficienii restului;
real Ds, Dp; // variatiile lui sn respectiv pn
real Ss, Sp; // derivatele lui S n raport cu s
// respectiv p.
real Rs, Rp; // derivatele lui R n raport cu s
// respectiv p.
real sn, pn; // coeficienii polinomului de gradul 2
real irad; // indicele rdcinii curente ntreg;
int i, k; // indici ntregi;
pentru i=0,grad a[i]=a[i]/a[grad];// normarea lui a
irad = 1;
ct timp (grad>2)
{
sn = s0; pn = p0;
repet
{ // repeta-pana cand
// calculul polinomului B
b[grad]=1; b[grad-1]=a[grad-1]-sn;
pentru k =[grad+2, 2]
b[k] = a[k]-sn*b[k+1]-pn*b[k+2];
// calculul coeficienilor restului
S=a[1]-b[2]*sn-b[3]*pn; R=a[0]-b[2]*pn;
// calculul derivatei polinomului b n raport cu s
bs[grad] =0; bs[grad-1] =-1;
pentru k=grad-2 pn la 2 execut
bs[k] =-b[k+1]-sn*bs[k+1]-pn*bs[k+2];
// derivarea coeficientilor restului n raport cu s
Ss=-b[2]-sn*bs[2]-pn*bs[3];
Rs=-bs[2]*pn;
// calculul derivatei polinomului b n raport cu p
bp[grad] =0; bp[grad-1] =0;
pentru k=grad-2 pn la 2 execut
bp[k] =-sn*bp[k+1]-b[k+2]-pn*bp[k+2];
Lucrarea 2 37
// derivarea coeficientilor restului n raport cu p
Sp=-bp[2]*sn-b[3]-pn*bp[3];
Rp=-bp[2]*pn-b[2];
// Se aplic metoda Newton-Raphson pentru rezolvarea
// sistemelor de ecuaii neliniare
dac Ss*Rp-Sp*Rs=0 return False;
// Ss*Rp-Sp*Rs este det. sistemului
Ds=(-S*Rp+R*Sp)/(Ss*Rp-Sp*Rs);
Dp=(-Ss*R+Rs*S)/(Ss*Rp-Sp*Rs);
sn=sn+Ds; pn=pn+Dp; // noile aproximaii
// ale lui sn i pn
i=i+1; // incrementez contorul de iteraii
}ct timp((( D
s
>=eps)SI( D
p
>=eps))SAU(i<=niter));
dac (i>niter) atunci return False;
EcGr2(1,sn,pn,solr[irad],soli[irad],solr[irad+1],soli[irad+1]);
// rezolv ec. de gradul 2
grad=grad-2;
pentru k=grad pn la 0 a[k]=b[k+2];// formez noua ecuaie
irad=irad+2; // incrementez indicele rdcinii
} // cat timp(grad>2) .
dac (grad = = 1) {
// rezolv ecuaia de gradul 1
solr[irad]=EcGr1(a[1],a[0]);
soli[irad]=0;
return True;
}
dac (grad = = 2) {
// rezolv ec. de grd. 2
EcGr2(a[2],a[1],a[0],solr[irad],soli[irad],solr[irad+1],soli[irad+1]);
return True;
}
} // sfritul funciei.
3. DESFURAREA LUCRRII
3.1. NTREBRI
1. De cine depinde viteza de convergen n cazul metodelor: biseciei,
aproximrilor succesive, tangentei? i ce se poate face pentru a mri viteza
de convergen n aceste cazuri?
2. Care sunt avantajele metodei biseciei fa de tangent i invers?
3. Care sunt asemnrile i deosebirile ntre metoda aproximrilor succesive
i a tangentei?
4. Se poate estima apriori numrul de pai necesari rezolvrii ecuaiei:
5e
2x-1
-2x-4 = 0
ndrumar de laborator pentru metode numerice 38
folosind metoda biseciei, cnd soluia se caut n intervalul [0,2] i
eroarea este: 0.00001? Determinai.
5. Este corect urmtoarea funcie fi(x) Pentru ce metod este util?
Fig. 2.1 - O caracteristic fi(x) pentru care se pune problema de valabilitate.
3.2. PROBLEME LABORATOR
1. S se implementeze algoritmii 2.1-2.6 conform limbajului C standard (ANSI
C). Pornind de la pseudocodul rutinei de calcul, se vor concepe programe
complete.
2. Se determin numrul de rdcini reale ale polinomului de la numitorul funciei
de transfer. Se aplic programul turm care implementeaz metoda de formare
a irului lui turm pentru numitorul funciei de transfer. Programul turm este
n directorul de lucru. Se scrie irul lui turm. Primii doi termeni ai irului sunt
polinomul dat i derivata lui. Se completeaz tabelul 1.
Tabelul 1
P(s) P
1
(s) P
2
(s) P
3
(s) n
-
,n
+
P(-)
P(+)
Diferena dintre numrul de schimbri de semn a irului lui turm la - i la +
reprezint numrul de rdcini reale ale polinomului.
3. Se ncadreaz soluiile n intervale. Se scrie irul
P(s)=
P

(s)=
P

(s)=
Lucrarea 2 39
Se rezolv fiecare ecuaie cu o metod aleas (de exemplu bisecia) i se
completeaz tabelul 2. L
i
i L
s
se aleg astfel ca soluiile polinomului s fie
cuprinse ntre ele (de exemplu -1000 i 1000).
Tabelul 2
P

(s) L
i
s
0
L
I
P

(s) | s
1
| s
2
|
P(s) | s
1
| s
2
|
s
3
s
1
,s
2
,s
3
sunt polii funciei de transfer.
4. Se d urmtorul filtru:
Fig. 2.2. - Filtru pasiv, pentru problema 4.
Cunoscnd C
1
=100mF, C
2
=121mF, R=12.5 K si Z
1
=1/jC
1
,
Z
2
=1/jC
2
, Z
3
=Z
4
=R, s se determine modulul funciei de transfer i valoarea
frecvenei pentru care acesta este de valoare 10. Folosii la alegere una din
metodele de rezolvare numeric a ecuaiilor polinomiale.
5. S se calculeze creterea de temperatur T pentru care curentul invers al unei
jonciuni de siliciu se dubleaz (T=300K)
Indicaie:
I
r
(T)=const*T
3/2
exp(-Eg/2KT)
i
Eg/KT=1.11/0.026
Folosii metoda aproximrilor succesive, dac acest lucru este posibil.
ndrumar de laborator pentru metode numerice 40
6. Se consider un amplificator integrat, avnd n bucl deschis o amplificare de
forma:
H s
s s s
( )
.
. . .
=
+ + +
3386260295
05284 005120153 0 00096807437
3 2
S se determine polii amplificatorului.
7. Amplificarea buclei unui amplificator integrat prevzut cu reacie pur rezistiv
este:
T(s)=T
0
/(1+10s+30s
2
+20s
3
),
unde s este msurat n microsecunde
-1
. Valoarea mrimii T
0
este 12. S se
determine poziia polilor ctigului n bucl nchis pentru aceast valoare a lui
T
0
utilizndu-se metoda biseciei, metoda aproximaiilor succesive, metoda
Bairstow i metoda Newton-Raphson.
3.3. TEME DE CAS
1. Se consider o jonciune pn a crei temperatur este meninut la valoarea
T=300K. La ce tensiune direct, V
a
, aplicat acestei jonciuni, curentul este de
10 ori mai mare dect curentul rezidual?
Indicaie:
I
a
= I
o
[exp
(qVa/mKT)
-1]
i m=1...2. Folosii metoda tangentei.
2. Fie un tranzistor cu efect de cmp a crui lege este :
i
D
=I
DSS
(1-U
GS
/U
T
)
2
cu I
DSS
=9mA i U
T
=-3V, R
S
=0.25 K
a) S se determine curentul i
D.
b) ntre ce limite poate varia rezistenta R
d
astfel nct tranzistorul s
funcioneze n regiunea de saturaie? Folosii metoda biseciei.
3. Rezolvai ecuaia de la problema 2 prin metodele biseciei si tangentei i
analizai rezultatele obinute :
a) dup primii 3 pai - prin calcul numeric, fr program;
b) dup finalizarea programelor.
4. Se consider funcia de transfer a unui filtru analogic de tip Cebev dat sub
forma: H s
s s s s
( )
.
. . . .
=
+ + + +
0 04381
0 6192 061401692 020379268 0 0491588
4 3 2
Lucrarea 2 41
S se determine polii filtrului.
5. Se d ecuaia:
e x
x
- = 1 0 /
care are o soluie n intervalul [0.1, 1]. S se calculeze soluia ecuaiei aplicnd
metoda biseciei pentru ecuaii transcendente, metoda Newton-Raphson i
metoda aproximaiilor succesive. Eroarea de calcul se consider
e = 00000000001 . (ce se poate scrie i 1e-10, conform notaiei tiinifice)
pentru toate metodele. S se compare rezultatele.
6. S se determine valoarea tensiunii i a curentului prin diod, n situaia
urmtorului circuit (cel de polarizare a diodei). Ca metod de rezolvare a
ecuaiei, avnd necunoscuta u (tensiunea pe diod), se va folosi metoda direct
a Biseciei.
R
E u
Valorile de calcul pot fi:
R=10Kohm, E = 10V
I
0
= 1pA sau 1nA
V
T
= 25 mV.
7. Aplicnd metodele indirecte de rezolvare a ecuaiilor studiate n laborator -
Aproximaii succesive i metoda tangentei (Newton-Raphson) - calculai timpul
dup care tensiunea pe condensatorul din circuitul ce urmeaz, atinge valoarea
0.5*E (regimul tranzitoriu al condensatorului).
R
E C u
c
(t)
ndrumar de laborator pentru metode numerice 42
Valorile de calcul utile sunt:
E = 0, t<0 n voli.
1, t>0
s RC 1 = = t
BIBLIOGRAFIE
1. I. Rusu - Metode numerice n electronic. Aplicaii n limbaj C, Editura
Tehnic, Bucureti, 1997.
2. I. Rusu, Vlad. Al. Grosu, Grigore iplea - ndrumar de laborator pentru metode
numerice, cu aplicaii n limbaj C, Litografia UPB, ediiile 1998 i 2000.
3. W. Dorn, S. McCracken - Metode numerice cu programare in FortranIV, Ed.
Tehnic, Bucureti, 1976.
4. B. Demidovitch, I.A.Maron - Computational Mathematics, Ed. Mir, 1989
5. Catalog IPRS Bneasa - Tranzistoare cu siliciu, Bucureti, 1989.

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