Sunteți pe pagina 1din 276

Ioan RUSU

METODE NUMERICE

ALGORITMI N LIMBAJ C


















2006
Cuprins VII
CUPRINS

1. ERORI ............................................................................................................................ 1
1.1. Erori absolute i relative ............................................................................................... 1
1.2. Clasificarea erorilor ..................................................................................................... 2
1.2.1. Erori iniiale ............................................................................................................... 2
1.2.2. Erori de trunchiere ...................................................................................................... 3
1.2.3. Erori de metoda ........................................................................................................... 4
1.2.4. Erori de calcul ............................................................................................................. 4
1.3. Propagarea erorilor ......................................................................................................... 7
1.4. Grafuri de procedur ...................................................................................................... 9
1.5. Reguli pentru mrirea preciziei calculelor ................................................................... 11
1.6. Aplicaii ....................................................................................................................... 11

2. REZOLVAREA NUMERIC A ECUAIILOR ALGEBRICE .............................. 15
2.1. Separarea rdcinilor ................................................................................................... 15
2.1.1. Metoda irului lui Rolle ............................................................................................ 15
2.1.2. Metoda irului lui turm ........................................................................................... 16
2.1.3. Metoda lui Budan-Fourier ......................................................................................... 18
2.2. Calculul rdcinilor ecuaiilor algebrice ...................................................................... 19
2.2.1 Metoda biseciei ......................................................................................................... 19
2.2.1.1. Algoritmul 2.2. Bisecia pentru polinoame ........................................................... 20
2.2.1.2. Implementarea algoritmului 2.2 ............................................................................. 21
2.2.1.3. Algoritmul 2.3. Bisecia pentru ecuaii transcendente ............................................ 22
2.2.1.4. Implementarea algoritmului 2.3 ............................................................................. 23
2.2.2. Metoda aproximaiilor succesive .............................................................................. 23
2.2.2.1. Algoritmul 2.4. Aproximaii succesive .................................................................. 26
2.2.2.2. Implementarea algoritmului 2.4 ............................................................................. 27
2.2.3. Metoda aproximaiilor succesive cu vitez mare de convergen ............................ 28
2.2.4. Metoda Newton-Raphson......................................................................................... 29
2.2.4.1. Algoritmul 2.5 ........................................................................................................ 31
2.2.4.2. Implementarea algoritmului 2.5 ............................................................................. 32
2.2.5. Metoda NewtonRaphson pentru polinoame .......................................................... 33
2.2.5.1. Algoritmului 2.6.Newton-Raphson pentru polinoame .......................................... 33
2.2.5.2. Implementarea algoritmului 2.6 ............................................................................. 34
2.2.6. Metoda Newton-Raphson pentru rdcini foarte apropiate ....................................... 35
2.2.7. Metoda lui Bairstow .................................................................................................. 36
2.2.7.1. Algoritmul 2.7 ........................................................................................................ 39
2.2.7.2. Implementarea algoritmului ................................................................................... 41
2.3. Aplicaie ....................................................................................................................... 44

3.REZOLVAREA NUMERIC A SISTEMELOR DE ECUAII ............................... 47
3.1.Rezolvarea numeric a sistemelor liniare ...................................................................... 47
3.1.1.Metode directe ........................................................................................................... 48
3.1.1.1. Sisteme inferior triunghiulare ................................................................................ 48
3.1.1.1.1. Algoritmul 3.1 ..................................................................................................... 48
3.1.1.1.2. Implementarea algoritmului 3.1 .......................................................................... 49
3.1.1.2. Sisteme superior triunghiulare ............................................................................... 50
3.1.1.2.1. Algoritmul 3.2 ..................................................................................................... 50
3.1.1.2.2. Implementarea algoritmului 3.2 .......................................................................... 50
3.1.1.3. Metoda lui Gauss de eliminare ............................................................................... 51
3.1.1.3.1. Algoritmul 3.3 ..................................................................................................... 52
3.1.1.2.2. Implementarea algoritmului ............................................................................... 53
3.1.1.4. Metoda lui Crout .................................................................................................... 53
3.1.1.4.1. Algoritmul 3.4 .................................................................................................... 53
VIII Metode numerice n electronic
3.1.1.4.2. Implementarea algoritmului 3.4 .......................................................................... 57
3.1.1.5. Metoda lui Cholesky .............................................................................................. 58
3.1.1.5.1. Algoritmul 3.5 .................................................................................................... 58
3.1.1.5.2. Implementarea algoritmului 3.5 .......................................................................... 58
3.1.1.6. Metoda Gauss-Jordan sau matriceal formal ........................................................ 59
3.1.1.6.1. Algoritmul 3.6 ..................................................................................................... 60
3.1.1.6.2. Implementarea algoritmului 3.6 .......................................................................... 61
3.1.1.7. Metoda factorizrii QR .......................................................................................... 75
3.1.1.7.1. Algoritmul 3.7 ..................................................................................................... 64
3.1.1.7.2. Implementarea algoritmului 3.7 .......................................................................... 65
3.1.1.8. Metoda de rezolvare a sistemelor tridiagonale ....................................................... 67
3.1.1.8.1. Algoritmul 3.8 ..................................................................................................... 69
3.1.1.8.2. Implementarea algoritmului 3.8 ......................................................................... 70
3.1.2. Metode indirecte ....................................................................................................... 71
3.1.2.1. Metoda lui Jacobi ................................................................................................... 71
3.1.2.1.1. Algoritmul 3.9 ..................................................................................................... 72
3.1.2.1.2. Implementarea algoritmului 3.9 .......................................................................... 73
3.1.2.2. Metoda Gauss-Seidel ............................................................................................ 75
3.1.2.2.1. Algoritmul 3.10 .................................................................................................. 75
3.1.2.2.2. Implementarea algoritmului 3.10 ........................................................................ 76
3.2. Rezolvarea numeric a sistemelor neliniare ................................................................. 78
3.2.1. Metoda lui Newton de rezolvare a sistemelor neliniare ........................................... 78
3.2.1.1. Algoritmul 3.11 ...................................................................................................... 80
3.3. Aplicaii ....................................................................................................................... 82

4. DERIVAREA NUMERIC ........................................................................................ 84
4.1. Derivata numeric prin dou puncte ............................................................................ 84
4.2. Derivata numeric prin trei puncte ............................................................................... 85
4.3. Derivata numeric prin cinci puncte ............................................................................ 89
4.4. Calculul derivatei funciilor tabelate ........................................................................... 91
4.5. Aplicaii ...................................................................................................................... 91

5. INTEGRAREA NUMERIC ...................................................................................... 93
5.1. Integrarea funciilor proprii de o singur variabil. Metode cu divizare constant ...... 93
5.1.1. Metoda dreptunghiului .............................................................................................. 93
5.1.1.1. Algoritmul 5.1 ........................................................................................................ 94
5.1.1.1.1. Implementarea algoritmului 5.1 .......................................................................... 95
5.1.2. Metoda trapezului de integrare numeric ................................................................. 95
5.1.2.1. Algoritmul 5.2 ...................................................................................................... 100
5.1.2.2. Implementarea algoritmului ................................................................................. 100
5.1.3. Metoda lui Richardson ............................................................................................ 100
5.1.3.1. Algoritmul 5.3 .......................................................... .101
5.1.3.2. Implementarea algoritmului 5.3 ........................................................................... 102
5.1.4. Metoda lui Simpson ................................................................................................ 102
5.1.4.1. Algoritmul 5.4 ...................................................................................................... 103
5.1.4.2. Implementarea algoritmului 5.4 ........................................................................... 104
5.2. Metode cu diviziune variabil .................................................................................... 104
5.2.1. Metoda cuadraturii gaussiene cu dou puncte ......................................................... 104
5.2.2. Metoda cuadraturii gaussiene pentru mai multe puncte .......................................... 107
5.2.2.1. Eroarea de trunchiere ........................................................................................... 108
5.2.2.2. Algoritmul 5.5 ...................................................................................................... 108
5.2.2.3. Implementarea algoritmului 5.5 ........................................................................... 109
5.3. Compararea metodelor de integrare numeric ........................................................... 116
5.4. Calculul numeric al integralelor improprii ................................................................. 116
5.5. Calculul numeric al integralelor duble ....................................................................... 118
Cuprins IX
5.5.1. Formula de cubatur a trapezului ............................................................................ 118
5.5.1.1. Algoritmul 5.6 ...................................................................................................... 119
5.5.1.2. Implementarea algoritmului 5.6 ........................................................................... 120
5.5.2. Formula lui Simpson de cubatur............................................................................ 120
5.5.2.1. Algoritmul 5.7 ...................................................................................................... 121
5.6. Aplicaii ..................................................................................................................... 122

6. INTERPOLAREA ...................................................................................................... 123
6.1. Interpolarea polinomial ............................................................................................ 123
6.2. Polinomul de interpolare de spea nti al lui Newton .............................................. 129
6.3. Polinomul de interpolare de spea a doua al lui Newton ........................................... 131
6.4. Polinomul lui Newton de interpolare cu diferene divizate ........................................ 133
6.5. Metoda lui Aitken de interpolare ............................................................................... 135
6.6. Interpolarea cu funcii spline ...................................................................................... 137
6.7. Interpolarea funciilor periodice ................................................................................. 142
6.8. Interpolarea funciilor de mai multe variabile ............................................................ 144
6.9. Aplicaie ..................................................................................................................... 145

7. OPTIMIZRI ............................................................................................................. 148
7.1. Metoda celor mai mici ptrate ................................................................................... 148
7.1.1. Regresia liniar ....................................................................................................... 149
7.1.1.1. Algoritmul 7.1 ...................................................................................................... 150
7.1.1.2. Implementarea algoritmului 7.1 ........................................................................... 151
7.1.2. Regresia polinomial .............................................................................................. 151
7.1.2.1. Algoritmul 7.2 ...................................................................................................... 152
7.1.2.2. Implementarea algoritmului 7.2 ........................................................................... 153
7.1.3. Regresia hiperbolic ................................................................................................ 153
7.1.3.1. Algoritmul 7.3 ...................................................................................................... 154
7.1.3.2. Implementarea algoritmului 7.3 ........................................................................... 155
7.1.4. Regresia exponenial ............................................................................................. 156
7.1.4.1. Algoritmul 7.4 ...................................................................................................... 156
7.1.4.2. Implementarea algoritmului 7.4 ........................................................................... 157
7.1.5. Regresia geometric ................................................................................................ 158
7.1.5.1. Algoritmul 7.5 ...................................................................................................... 158
7.1.5.2. Implementarea algoritmului 7.5 ........................................................................... 159
7.1.6. Regresia trigonometric .......................................................................................... 160
7.1.6.1. Algoritmul 7.6 ...................................................................................................... 160
7.1.6.2. Implementarea algoritmului 7.6 .......................................................................... 161
7.1.7. Regresia multipl .................................................................................................... 162
7.1.7.1. Algoritmul 7.7 ...................................................................................................... 163
7.1.7.2. Implementarea algoritmului 7.7 ........................................................................... 164
7.2. Optimizarea neliniar fr restricii ........................................................................... 165
7.2.1. Metode aleatoare de cutare .................................................................................... 166
7.2.1.1. Algoritmul 7.8 ...................................................................................................... 166
7.2.1.2. Implementarea algoritmului ................................................................................. 167
7.2.2. Metoda cutrii unidimensionale ............................................................................ 168
7.2.2.1. Algoritmul 7.9 ...................................................................................................... 168
7.3. Aplicaii ..................................................................................................................... 170



8. REZOLVAREA ECUAIILOR DIFERENIALE ................................................. 171
8.1. Rezolvarea ecuaiilor difereniale ordinare de ordinul nti ....................................... 171
8.1.1. Metoda seriilor lui Taylor ....................................................................................... 172
8.1.2. Metodele Runge-Kutta ............................................................................................ 173
X Metode numerice n electronic
8.1.3. Metodele Runge- Kutta de ordinul doi .................................................................... 175
8.1.3.1. Metoda lui Euler mbuntit .............................................................................. 175
8.1.3.2. Metoda lui Euler modificat ................................................................................ 178
8.1.4. Metoda Runge-Kutta de ordinul patru .................................................................... 181
8.1.5. Metoda predictor-corector ....................................................................................... 184
8.1.6. Metoda lui Milne..................................................................................................... 188
8.2. Integrarea numeric a sistemelor de ecuaii difereniale de ordinul nti i a
ecuaiilor difereniale de ordinul doi ................................................................................ 190
8.3. Rezolvarea numeric a ecuaiilor difereniale cu derivate pariale ............................ 193
8.3.1. Metoda diferenelor finite ....................................................................................... 194
8.3.1.1. Ecuaia lui Laplace ............................................................................................... 215
8.3.1.2. Ecuaii difereniale cu derivate pariale de tip parabolic ..................................... 298
8.3.1.3. Ecuaii cu derivate pariale de tip hiperbolic ....................................................... 200
8.4. Aplicaie ..................................................................................................................... 203

9. REZOLVAREA NUMERIC A ECUAIILOR INTEGRALE ............................ 204
9.1. Integrarea ecuaiei Fredholm neomogen de spea a doua ......................................... 204
9.2. Integrarea ecuaiei Volterra neomogen de spea a doua ........................................... 207
9.3. Aplicaie ..................................................................................................................... 209

10. VECTORI SI VALORI PROPRII ........................................................................... 205
10.1. Tipuri de matrice ...................................................................................................... 206
10.2. Localizarea valorilor proprii .................................................................................... 208
10.3. Metode de determinare a vectorilor i valorilor proprii ........................................... 209
10.3.1. Metoda puterii ....................................................................................................... 209
10.3.2. Metoda lui Krlov .................................................................................................. 211
10.3.3. Metoda lui Householder ........................................................................................ 213
10.3.4. Metoda RT ............................................................................................................ 221
10.3.5. Metoda LR ............................................................................................................ 224
10.4. Aplicaii ................................................................................................................... 229

11. FUNCII SPECIALE ............................................................................................... 236
11.1. Funcia gamma ......................................................................................................... 236
11.2. Funcia factorial ....................................................................................................... 238
11.3. Coeficienii binomiali .............................................................................................. 240
11.4. Funcia beta .............................................................................................................. 242
11.5. Funciile Bessel ........................................................................................................ 244
11.6. Aplicaii ................................................................................................................... 250

12. TRANSFORMATA FOURIER DISCRET .......................................................... 252
12.1. Analiza n frecven a semnalelor n timp discret .................................................... 254
12.1.1. Reprezentarea secvenelor cu transformate Fourier .............................................. 254
12.1.1.1.Algoritmi rapizi pentru FFT ................................................................................ 255
12.1.2. Algoritmul Goertzel .............................................................................................. 264
12.3. Aplicaii ................................................................................................................... 267

13. CUTRI ................................................................................................................. 270
13.1. Metode de inserie .................................................................................................... 270
13.1.1. Sortarea prin inserie directa ................................................................................. 270
13.1.2. Sortarea prin inserie direct a dou mulimi ....................................................... 272
13.1.3. Metoda Shell ......................................................................................................... 273
13.2. Metode de sortare prin interschimbare ..................................................................... 275
13.3. Sortarea rapid ......................................................................................................... 276
13.4. Aplicaie ................................................................................................................... 278

Cuprins XI
ANEXA 1 ......................................................................................................................... 279
BIBLIOGRAFIE ............................................................................................................. 281

1
ERORI*





Rezolvarea problemelor moderne de o mare complexitate din tiinele aplicate, cum ar fi:
astronomia, geodezia, electronica etc., nu se poate realiza fr calculator asistat de un pachet
de metode numerice matematice.
Rezultatele numerice obinute n acest gen de aplicaii, cu ajutorul calculatorului, necesit
o analiz a erorii, datorit faptului c datele iniiale pentru determinarea numeric a rezultatului
sunt obinute de obicei prin observaii sau msurtori afectate de erori i operaiile numerice
efectuate de calculator sunt aproximative atunci cnd numerele nu au o reprezentare intern
exact. Msurtorile experimentale nu pot fi realizate exact, prin repetarea lor obinndu-se
rezultate diferite. Ca urmare, datele obinute prin msurtori conin erori care se reflect n
rezultatul final. Calculatoarele numerice au o reprezentare intern exact a numerelor ntregi
pentru care realizeaz calcule exacte i o reprezentare intern aproximativ a numerelor reale
care influeneaz exactitatea rezultatului.
Determinarea unor mrimi n problemele tehnice se face de obicei cu finalitate practic.
Aici apar erorile inevitabile ale procesului de execuie sau fabricaie; pentru fiecare
component exist tolerane, adic limite ale erorilor ntre care componenta poate fi utilizat.
Studiul acestui capitol se refer la erorile ce apar n operaiile aritmetice realizate de
calculator. Se definesc tipurile de erori ce apar n procesele electronice i se expliciteaz
funciile eroare.


1.1. ERORI ABSOLUTE I ERORI RELATIVE

Deoarece valoarea msurat sau calculat a unei mrimi nu reprezint valoarea adevrat
sau exact a mrimii, o numim valoare aproximativ .
Definiia 1.1. Numim eroare diferena dintre valoarea adevrat (exact) i valoarea
aproximativ. Matematic definiia poate fi exprimat prin formula:
e x x
x
= , (1.1)
unde : e
x
reprezint eroarea, x valoarea adevrat, iar x valoarea aproximativ.




______________________________
*) Bibliografie: [6],[7],[12],[21],[22]

Metode numerice n electronic
2
Din cele trei valori care intervin n definiia erorii cunoatem numai valoarea
aproximativ. Valoarea adevrat nu o cunoatem, deoarece dac am cunoate-o nu s-ar mai
pune problema existenei erorii. Pentru ca ecuaia (1.1) s fie rezolvabil se face o estimare
asupra erorii, adic se precizeaz o margine superioar a acesteia. n acest caz se poate
determina valoarea adevrat cu ajutorul valorii aproximative, pentru o margine a erorii dat.
Deoarece unii autori definesc eroarea ca diferena:
e x x
x
= , (1.2)
pentru a reuni cele dou definiii ale erorii ntr-una singur s-a trecut la definirea erorii
absolute, astfel:
| | | | e x x
x
= . (1.3)
Dac se cunoate un minorant m i un majorant M al mrimii x atunci orice element
e
x
*
al mulimii {| |, e M m
x
} se numete eroare absolut la limit.
Definiia 1.2. Numim eroare relativ raportul dintre eroarea absolut i valoarea
aproximativ absolut c
x x
|e /x = | (1.4)
n cazul erorii relative se poate defini eroarea relativ la limit. Din aplicarea proprietilor
modulului rezult:
x x |x x| |e | e
x x
*
| | | | s = s (1.5)
|x| e |x| |x| e
x x
s s +
- -

Definiia 1.3 Numim eroare relativ la limit raportul:
c
c
x
x
x
e
x
*
*
*
| |
=

(1.6)
Pentru numerele apropiate de 1, eroarea absolut i eroarea aproximativ sunt aproape
egale, deoarece eroarea absolut se mparte la un numr aproximativ egal cu 1. Pentru numere
diferite mult de 1, cele dou erori absolut i relativ difer foarte mult. Din acest motiv, atunci
cnd nu se poate deduce tipul erorii este necesar s se specifice dac aceasta este relativ sau
absolut. Erorile absolute pentru mrimi care au uniti de msur sunt exprimate n unitile
de msur ale mrimilor, iar erorile relative nu au uniti de msur i sunt exprimate n
procente.


1.2. CLASIFICAREA ERORILOR

Fcnd analiza erorilor pentru un rezultat numeric, se constat c eroarea final poate
depinde de o serie de erori cum ar fi: erorile iniiale, erorile de trunchiere, erorile de metod i
erorile de calcul (rotunjire).


1.2.1. ERORI INIIALE

Aceste erori sunt determinate de erorile care intervin n datele iniiale de calcul cauzate
deseori de msurare, greeli de citire a datelor, greeli de introducere a datelor n calculator sau
de necesitatea reprezentrii unei valori cu un numr finit de cifre. Erorile de msurare se
datoreaz n primul rnd preciziei instrumentului i sunt influenate de aceasta astfel: cu ct
precizia instrumentului este mai mare, cu att eroarea de msur este mai mic. Greelile de
citire, de introducere a datelor fac parte din erorile de observare, care au un caracter aleator i
Erori

3
sunt caracterizate de funcia de repartiie normal sau gaussian din expresia (1.7), a crei
reprezentare este dat n fig.1.1.
( ) c
t o
c o =


1
2
05
2
exp( . .( / ) ) , (1.7)
Calculul probabilitii ca eroarea de observaie a unui procedeu de msur s fie cuprins
ntre dou valori date x
1
i x
2
se realizeaz ca o sumare pe intervalul dat a funciei de
repartiie, prezentat n expresia (1.8):
P ( ) x e x
1 2
x
x
s < =
}
c c ( )d
1
2
(1.8)
Multe numere nu pot fi reprezentate exact printr-un numr finit de cifre. Dintre aceste
numere amintim: t =3.141592654,
2 =1.414213562, e =2.73Aceste
numere cu o infinitate de cifre sunt des
utilizate n calcule, dar cu diferite
aproximaii care dau erori inerente.
Numerele transcendente i iraionale sunt
reprezentate printr-o infinitate de cifre n
orice sistem de numeraie. Unele numere,
reprezentate cu un numr finit de cifre ntr-
un sistem de numeraie, sunt reprezentate
cu un numr infinit de cifre n alt sistem de
numeraie. Ca exemplu poate fi dat
numrul 0.1 n sistemul de numeraie
zecimal, care n sistemul de numeraie binar este dat de numrul cu o infinitate de cifre
0.0001100110011...


1.2.2. ERORI DE TRUNCHIERE

Aceste erori sunt introduse de procedura numeric aplicat .Ca exemplu putem da
procedura numeric de calcul a valorii funciei trigonometrice cos x .Cea mai utilizat
procedur numeric de calcul este dezvoltarea n serie Taylor , n jurul punctului 0 a funciei
cos x
cos x =1-
x x x
2 4 6
2 4 6 ! ! !
... + + , (1.9)
unde argumentul x este dat n radiani. Un calcul exact al funciei cos( x ) este imposibil,
programul de calcul oprindu-se la un anumit termen al seriei, obinndu-se n acest mod o
valoare a funciei cu o anumit eroare.
Pentru cazul general al unei funcii f x ( ) dezvoltat n serie Taylor, n jurul punctului
x
0
, oprirea la termenul de rang n d o eroare ce poate fi calculat cu ajutorul formulei restului
lui Lagrange:
R x
x x
n
f x x
n
n
n
( )
( )
( )!
( ) ( , )
( )
=

+
e
+ 0 1
0
1
(1.10)
Fig1.1.Funcia de repartiie gaussian
c-eroarea de observaie;o-dispersia
Metode numerice n electronic
4
Procedurile utilizate n calculele numerice sunt finite, iar erorile datorate acestor proceduri
care ntrerup un calcul infinit teoretic, poart numele de erori de trunchiere. Aceste erori n
multe cazuri nu se pot calcula exact, dar se pot estima sau li se pot stabili limitele.


1.2.3. ERORI DE METOD

Pentru rezolvarea unei probleme se pot aplica mai multe metode care au erori
specifice lor. Prin alegerea celei mai adecvate metode n rezolvarea problemei, eroarea poate fi
micorat. Acest lucru se poate realiza dac cel implicat n rezolvarea problemei cunoate
metodele numerice. Deoarece metodele numerice sunt aproximaii ale metodelor analogice de
calcul este necesar s se cunoasc precizia aproximaiilor. n toate capitolele care urmeaz sunt
tratate metodele numerice mpreun cu erorile lor de calcul, iar unde este necesar se face i o
comparaie ntre metode.


1.2.4. ERORI DE CALCUL PRIN ROTUNJIRE

Pentru o nelegere mai bun a acestui tip de erori, vom studia mai nti calculul n virgul
mobil, calcul realizat de calculator. Un numr q este reprezentat in virgul mobil dac el este
scris sub forma: q f b
x
= (1.11)
unde f este fracia, care mai poart numele de mantis i are valoare subunitar, x
exponentul, care este ntotdeauna ntreg i b baza de numeraie .
Calculatoarele utilizeaz scrierea normalizat a numerelor n virgul mobil, deoarece sub
aceast form se obine o precizie maxim de calcul. Un numr scris n virgul mobil este
normalizat dac prima cifr, dup virgul n mantis este diferit de zero (excepie fcnd
numrul zero). n bazele 10, 2 i 16, avem urmtoarele reprezentri normalizate n virgul
mobil ale unui numr oarecare q :
q f f
q f f
q f f
x
x
x
= s <
= s <
= s <
10 01 1
2 1 2 1
16 1 16 1
, . | | ;
, / | | ;
, / | |
(1.12)

Adunarea i scderea numerelor n virgul mobil se realizeaz de ctre calculator dup
urmtorul algoritm prezentat n organigrama din fig.1.2. Se consider c numerele sunt date n
baza 10 sub forma f f
x x
1 2
10 10
1 2
, iar suma sau diferena f
x
3
10
3
. .


Erori

5

Fig.1 2. Organigrama operaiei de adunare i scdere n virgul mobil,
pentru numere n baza zece.
Metode numerice n electronic
6
Calculatoarele moderne au cifre de gard ce reprezint locurile pe care se deplaseaz spre
dreapta ultima cifr a numrului cu exponent mai mic. Dup aceste operaii de adunare sau
scdere, cifra de pe aceste locuri poate fi readus napoi n timpul normalizrii. n cazul
efecturii sumei poate apare situaia ca un exponent s fie mai mic dect cel admis de
calculator; de exemplu calculatorul poate admite exponeni pn la ordinul -99 i dorim s
normalizm numrul prin deplasare spre stnga cu un loc, ceea ce ar nsemna un exponent de -
100, neadmis de calculator. n acest caz avem o depire inferioar (under flow), iar numrul
este considerat zero.
Mai poate aprea situaia obinerii dup nsumare a unui exponent maxim de dou cifre, pe
care-l poate admite calculatorul, de exemplu 99, i vrem s normalizm rezultatul prin
deplasare cu un loc spre dreapta, deci mrirea exponentului cu o unitate, operaie nepermis de
calculator. n acest caz apare o depire superioar (over flow) i programul se ntrerupe.
Se consider un numr n baza 10 reprezentat n virgul mobil, cu o mantis compus din
t cifre ca fiind rezultatul unor operaii aritmetice. Numrul poate fi scris:
q=f g
q
x
q
x-t
+ 10 10 , (1.13)
unde f
q
si g
q
satisfac inegalitile :
1 10 1 / s < f
q
(1.14)
0 1 s < g
q
(1.15)
mantisa f
q
fiind compus din t cifre.
Prin rotunjire nelegem influena pe care o are valoarea lui g
q
asupra lui q .
Calculatoarele care nu au cifre de gard, neglijeaz valoarea lui g
q
, aa nct rezultatul
este q = f
q
x
10 . n acest caz f
q
nu se modific i calculatorul a realizat o trunchiere, numit
tiere, pentru a nu se confunda cu erorile de trunchiere. n acest caz eroarea absolut este dat
de expresia | | | e
q
x-t
=| g
q
10 iar o limit maxim a erorii relative se poate calcula astfel :
c
q
q q
x-t
q
x
x-t
- t t
e
q
g
f
= =

= =


10
10 10
10 10 10
1
1
10
10
x
(1.16) Se
observ c limita maxim a erorii relative de rotunjire depinde numai de numrul de cifre al
mantisei numrului. Acest tip de rotunjire introduce o eroare mare, dar timpul de calcul al
calculatorului scade.
Un alt tip de rotunjire n cazul existenei cifrelor de gard este rotunjirea simetric sau
obinuit. n acest caz valoarea aproximativ prin rotunjire a numrului q este dat de
expresia :
| |
| |
| |
q
f |g | /
f |g | /
q
x
q
q
x x t
q
=
<
+ >


10 1 2
10 10 1 2
pentru
pentru
(1.17)
Dac | | / g
q
< 1 2 , eroarea absolut este | | ( / ) e
q
x t
s

1 2 10 (1.18)
i pentru | | / g
q
> 1 2 , eroarea absolut este | | ( / ) e
q
x t
s

1 2 10 (1.19)
Deci n ambele cazuri | | ( / ) e
q
x t
s

1 2 10 (1.20)
Limita maxim a erorii relative o putem calcula astfel :
c
q
q
x-t
x
-t
-t
e
q
= s

=

=

05 0
10 10
05 10
10
5 10
1 1
. .
(1.21)
Erori

7
i n acest caz limita maxim a erorii relative de rotunjire simetric depinde numai de
numrul de cifre al mantisei mrimilor care intr n calcul, pe care l-am considerat acelai
pentru toate mrimile i l-am notat cu t. Se observ c eroarea simetric (1.21) este cu un ordin
de mrime mai mic dect eroarea de tiere (1.16). Pentru o precizie mai mare a calculelor se
utilizeaz rotunjirea simetric.
Aceleai limite maxime ale erorii relative le obinem i pentru cazul reprezentrii
sistematizate a numrului q n baza b :
q a b a b a b ... a b
n n- n-
m
n-m+
= + + + + +
1 2
1
3
2 1
... (1.22)
Considerm m cifre semnificative ale numrului:
( ) q a b a b ... a b ... b a a b ...
n n-
m
n-m+ n-m
m+ m+
-
= + + + + + + +
1 2
1 1
1 2
1
(1.23)
Notm cu c =
( )
a a b ...
m+ m+
-
1 2
1
+ + (1.24)
Dac c <(1/ 2)q atunci c = 0 i valoarea aproximativ prin rotunjire a lui q este
q = a b a b a b ... a b
n
2
n- n-
m
n-m
1
1
3
2 1
+ + + +
+
(1.25) Dac c >(1/ 2)q atunci c q = i
valoarea aproximativ a lui q este
q = ( ) a b a b ... a b
n n-m
m
n-m+
1 2
1
1 + + + + (1.26) n
ambele cazuri eroarea absolut e b
q
n-m+1
< ( / ) 1 2 (1.27)
O limit maxim a erorii relative se calculeaz astfel:
c
q
= s

=

e
q
b
b
b
q
n-m+
n
m
( / )
( / )
1 2
1
1 2
1
1
, (1.28)
unde m este numrul de cifre semnificative ale numrului .Pentru baza b =10 se obine
acelai rezultat ca la scrierea n virgul mobil (1.21).


1.3. PROPAGAREA ERORILOR

n acest paragraf este studiat propagarea erorilor prin operaiile aritmetice realizate de
calculatorul numeric: adunri, scderi, nmuliri, mpriri i extrageri de rdcin ptrat. Se
consider dou numere x si y cu valorile aproximative, eroarea absolut i eroarea relativ
x ,e , y ,e ,
x x y y
c c , respectiv . n scopul simplificrii notaiilor vom folosi n continuare
pentru eroarea absolut i eroarea relativ a unei mrimi x, notaia e
x
respectiv c
x
. Vom
deduce formulele prin care se vede efectul erorilor absolute asupra operanzilor.
Adunarea: x y x e y+e x y+e +e
x y y x
+ = + + = +
e
x y +
= x y + -
( )
x y + = e +e
y x
e
x y +
= e +e
y x
(1.29)
Scderea: x y = x e y-e x y+e -e
x y x y
+ =
e
x y
= x y -
( )
x y = e -e
x y
e
x y
= e -e
x y
(1.30)
nmulirea:
( ) ( )
x y= x e y+e x y e y e x e e
x y x y x
+ = + + +
y

Considernd e e
x y
~ 0 rezult:
e xy-x y e y e x e e y e x
xy x y xy x y
= = + ~ + (1.31)
Metode numerice n electronic
8
mprirea:
( )
x
y
x e
y+e
x e
y 1 e /y
x+e
y
1
e
y
e
y
...
x
y
x
y
x
y
2
2
=
+
=
+
+
= +
|
\

|
.
| ~

x e
y
1
e
y
x
y
e
y
xe
y
e e
y
x
y
x
y
2
x y
2
+

|
\

|
.
| = + .
n calcul s-a utilizat dezvoltarea n serie geometric a factorului 1 1 / +
|
\

|
.
|
e
y
y
,
e
y
y
< 1 i s-
au reinut primii doi termeni. Considernd e e
x y
~ 0 rezult:
e e /y x.e /y
x/y x y
2
= (1.32)
Rdcina ptrat:
( ) ( ) x x e x e x x e x
x x x
= + = + = + + 1 1 1 2 / ( / )( / ) ...
n calcul s-a utilizat dezvoltarea n serie binomial a factorului 1+ e x
x
/
e
x
= x - x = ( / )( / ) 1 2 e x x
x
(1.33)

Propagarea erorilor relative prin operaiile realizate de calculator se deduce din formulele
de propagare a erorilor absolute .
Adunarea:
c c c
x+y
x+y
x
y
x y
e
x y
x
x y
e
x
y
x y
e
y
x
x y
y
x y
=
+
=
+
+
+
=
+
+
+

c
x+y
=
x
x y
y
x y
x y
+
+
+
c c (1.34)
Scderea:
c c c
x-y
x y
x
y
x y
e
x y
x
x y
e
x
y
x y
e
y
x
x y
y
x y
=


c c c
x-y x y
x
x y
y
x y
=

(1.35)
nmulirea:
c c c
xy
xy y
x
y
x
x y
e
xy
x e
xy
y e
xy
e
y
e
x
= =

+

= + = +
c c c
xy x y
= + (1.36)

mprirea:

( )
c c c c
x y x y x y x y x y
x y y e x y e x y e x e y
/ /
/ ( / ) ( / ). ( / ). / ( / ) / / = = = = 1
2

c c c
x y x y /
= (1.37)
Rdcina ptrat:

c
x
x x x
x e x x e x = = = ( / ). ( / ) / ( / ).( / ) ( / ). 1 2 1 2 1 2 e
c c
x
x
= ( / ) 1 2 (1.38)
Erori

9

Formulele de calcul al propagrii erorilor relative prin operaiile realizate de calculator
sunt simetrice i din aceste motive se pot realiza grafuri pentru calculul lor. Aceste grafuri se
numesc grafuri de procedur .


1.4. GRAFURI DE PROCEDUR

Aceste grafuri sunt binare , adic ntr-un nod intr cel mult dou mrimi i iese o singur
mrime. Pentru fiecare operaie aritmetic marca grafului se calculeaz diferit. Marca grafului
pentru operaia de adunare este raportul ntre valoarea din nodul care se nsumeaz i suma
valorilor din nodurile care se nsumeaz,
procedeul fiind prezentat prin graful din
fig.1.3. Se dau valorile erorilor relative
c
x
i c
y
ale mrimilor care se nsumeaz
i eroarea de rotunjire c
r
.
Eroarea la ieirea grafului este
c
x+y
=
x
x y
y
x y
x y r
+
+
+
+ c c c
(1.39)
Se observ egalitatea expresiei erorii
(1.39) cu cea obinut la propagarea erorii
prin adunare prezentat n paragraful 1.3.
Eroarea n nodul grafului se
calculeaz dup modul expus anterior i
nodul poate deveni la rndul su un
termen sau un factor al urmtoarei
operaii.
n calculul erorii se ine seama de
valoarea obinut n fiecare nod prin
operaia corespunztoare expresiei a crei valoare a erorii relative o calculm, pentru a
determina marca ramurii grafului. Pentru operaiile de nmulire, mprire i ridicare la putere
marca grafului este constant indiferent de valoarea obinut n nodul grafului. Marca grafului
pentru desczut la operaia de scdere se
calculeaz ca raportul ntre valoarea
desczutului i diferena valorilor
desczutului i scztorului, iar pentru
scztor se calculeaz ca raportul dintre
valoarea scztorului i diferena valorilor
desczutului i scztorului, luat cu
semnul minus. Eroarea la ieirea grafului
este dat n formula (1.40), iar graful este
prezentat n fig. 1.4.

Fig.1.3. Graful operaiei de adunare
Fig.1.4. Graful operaiei de scdere
Fig.1.5.Graful operaiei de nmulire
-
x

x
x
x
x
x
Metode numerice n electronic
10
c
x- y
=
x
x y
y
x y
x y r

+ c c c
(1.40)Marca grafului pentru operaia de
nmulire este totdeauna constant egal cu
unitatea att pentru nmulitor ct i pentru
denmulit. Graful pentru aceast operaie
este prezentat n figura 1.5. Eroarea la
ieirea grafului este dat de expresia
urmtoare: c c c c
xy x y r
= + +
(1.41)
Marca grafului pentru operaia de
mprire este totdeauna constant,
avnd valoarea 1 pentru demprit i -1
pentru mpritor. n figura 1.6 este
prezentat graful pentru operaia
aritmetic de mprire. Eroarea la
ieirea grafului este
c c c c
x y x y r /
= + (1.42)
Operaia de extragere a rdcinii ptrate
are marca grafului constant egala cu 1 2 / i
este prezentat n figura 1.7. Eroarea mrimii la ieirea grafului este
c c c
x
x r
= + ( / ) 1 2 (1.43)

Se observ c expresia erorilor relative obinute la ieirea grafurilor sunt chiar formulele
de calcul ale erorilor relative propagate prin operaiile aritmetice obinute n paragraful 1.3, iar
mrcile grafului sunt identice cu expresiile cu care se nmulesc erorile relative ale
componentelor care intervin n operaia de calcul. Pentru uurina calculului mrcilor grafului
se ine seama de modul de calcul prezentat anterior pentru fiecare operaie aritmetic.
Cunoscnd erorile relative ale mrimilor care intr ntr-o expresie n care avem operaiile de
baz ale aritmeticii, putem s determin eroarea final a expresiei cu ajutorul grafurilor de
procedur.


1.5. REGULI PENTRU MRIREA PRECIZIEI
CALCULELOR

Pentru mrirea preciziei calculelor n aplicaiile practice, este bine s inem seama de
urmtoarele reguli de calcul:
1. n operaiile de adunare i scdere s se nceap cu cele mai mici numere.
2. S se evite scderea a dou numere aproximativ egale, prin rescrierea expresiei de
calcul.
3. Expresiile de forma ( ) a b c i ( ) / a b c pot fi rescrise sub forma ac ab respectiv
( / ) ( / ) a c b c . Dac numerele a i b sunt aproximativ egale, este bine s se fac nti
scderea dup aceea nmulirea sau mprirea.
4. Dac nici una din regulile precedente nu pot fi aplicate, pentru minimizarea erorii se va
cuta realizarea unui numr ct mai mic de operaii.

Fig.1.6. Graful operaiei de mprire
Fig.1.7. Graful operaiei de extragere de
rdcin ptrat
1
x
Erori

11


1.6. APLICAII

1. S se determine o limit superioar a erorii relative pentru expresia :
E( x ) = ( ) / ( ) ax bx c dx f
2
+ + +
n punctul x
0
tiind c a b c d f x , , , , ,
0
sunt pozitive i au respectiv erorile relative ca , cb
, cc , cd , cf , c
x
0
.

Se cunosc erorile relative ale tuturor elementelor funciei date. Pentru calculul limitei
superioare a erorii relative, se realizeaz graful de procedur al expresiei date, care este
prezentat n figura 1.8. innd cont de grafurile operaiilor aritmetice, se ncepe realizarea
grafului expresiei c
E
cu graful pentru numrtor i dup aceea cu graful pentru numitor
realiznd n final un graf pentru operaia de mprire.
Mrcile grafurilor operaiilor care intervin n expresie se calculeaz conform expresiilor
(1.39 ), (1.40), (1.41), (1.42) i (1.43). Pentru fiecare operaie de calcul se d eroarea de
rotunjire notat cu c
r
i
, i=1,2,,8.
Erorile din fiecare punct al grafului se nmulesc cu marca grafului corespunztor iar la
ieire, n punctul n care are loc o operaie aritmetic, se nsumeaz, indiferent de operaia
aritmetic care are loc n nod.

( ) ( )
e
ax
ax bx c
bx
ax bx
E x x r a r b x r r
= + + + +
+ +
+ + +
+
+

(
(
c c c c c c c c c
0 0 1 2 0 3 4
0
2
0
2
0
0
0
2
0



( )

+
+ +
+
+ +
+ + + +
+

(
+
ax bx
ax bx c
c
ax bx c
dx
dx f
c r d x
0
2
0
0
2
0 0
2
0
6
0
0
5 0
1 c c c c c ( )


( )
+
+
+ + c c c
f r r
f
dx f
0
7 8
1 ( )
Dac considerm c erorile lui a b c d f x , , , , ,
0
sunt obinute ca erori de rotunjire, atunci
toate erorile din expresie pot fi majorate cu 5

10
t
, unde t este numrul de cifre al variabilelor
a b c d f x , , , , ,
0
admis de calculator. Ca urmare, expresia limitei erorii relative devine:
c
E
t 0
2
0
0
2
0
0
0
5ax 3bx
ax bx c
5
2dx
dx f
s
+
+ +
+ +
+
|
\

|
.
|
|

5 10
Metode numerice n electronic
12


Fig.1.8. Graful pentru calculul erorii relative a expresiei E(x)


Considernd c x
0
e[0,1], atunci expresia erorii relative se poate simplifica fcnd o nou
majorare i anume nlocuim pe x
0
n expresiile de la numrtor cu 1, iar n cele de la numitor
cu zero. Marginea erorii relative pentru expresia dat n condiiile impuse devine:
c
E
t
a b
c
d
f
s
+
+ +
|
\

|
.
|

5 10
5 3 2
5

Se observ c limita erorii relative a expresiei E x ( ) depinde de coeficienii a b c d f , , , , i
de t, mantisa admis de calculator. S-a considerat c erorile datelor de intrare sunt
erori de rotunjire. Cnd coeficenii nu sunt pozitivi trebuie s se utilizeze valorile absolute
ale lor.

2. Se consider expresiile u a a a = + + +
3 2
3 3 1 i v a = + ( ) 1
3
unde a este un numr
pozitiv rotunjit n mod simetric i presupunem c 1 i 3 nu au erori. S se arate c pentru a
Erori

13
foarte mare marginile erorii relative a lui u i v devin aproximativ egale iar pentru a foarte
mic marginea erorii relative a lui u devine aproximativ de cinci ori mai mic dect marginea
erorii relative a lui v . Numrul maxim de cifre al mantisei admise de calculator este t. S se
calculeze marginile erorii relative ale expresiilor date i pentru cazul cnd a este exact.

Construcia grafurilor de procedur pentru cele dou expresii, precum i calculul limitelor
superioare rmne ca un exerciiu pentru cititor.
R:
a
a
u
t
v
t
u
t
v
t
s s
s s
c c
c c
4010 4010
0 510 2510
. ; .
. ; .



Fig.1.9. Etaj de amplificare cu un tranzistor


3. S se determine o limita a erorii amplificrii etajului din figura 1.9, funcie de
toleranele componentelor pasive electronice. Se consider c rezistoarele au tolerana de 5%
iar condensatoarele de 10%. Amplificarea de tensiune a montajului este dat de expresia:
A
R R
R h
u
s c
e b
=
+
||
11
,unde h
I mA
b
E
11
30
=
[ ]

R
s
=rezisten de sarcin.
Pentru circuitul electronic dat, se poate considera R
s
= i R
e
= 0 , iar expresia
simplificat a amplificrii n tensiune devine: A R h
u c b
= /
11
.
Graful de procedur pentru expresia obinut este prezentat n figura 1.10 i este identic
cu cel pentru operaia de mprire. Mrcile grafului pentru cele dou mrimi care intr n
formula de calcul sunt 1 pentru demprit i -1 pentru mpritor. Eroarea calculat pentru
amplificare nu include i eroare datorat neglijrii rezistenelor de sarcin i emitor. Se
calculeaz o limit a erorii amplificrii circuitului electronic datorat toleranelor
componentelor pasive.
Considernd eroarea de rotunjire foarte mic fa de eroarea introdus de tolerana
componentelor electronice, rezult urmtoarea expresie de calcul:
Metode numerice n electronic
14
c c c c c
A R h R h
t
c c
r r = + s + + =
+ + ~

11 11
0 05 0 05 0 510 01 , , , . ,

Amplificarea n tensiune a circuitului
electronic poate avea o limit maxim a
erorii de 10%.
Analog, se pot calcula erorile maxime
pe care le au diferii parametrii ai circuitelor
electronice, funcie de erorile elementelor de
care depind.



4. Fie a b , i x trei numere pozitive i exacte. S se traseze grafurile de procedur i s
se calculeze marginile erorilor relative de rotunjire pentru expresiile u ax bx
2
= + i
v x a bx = + ( ) . S se compare cele dou margini ale erorilor, obinute. S se calculeze
marginile erorilor relative i pentru cazul cnd cele trei numere au erori de rotunjire.

R: ( ) ( ) c
u
t
bx a bx a s + +

510 3 2 . / , ( ) ( ) c
v
t
bx a bx a s + +

510 3 2 . /
c
u
t
3bx 2a)/(bx a s + +
+
10
1
( ) , c
v
t
( bx a)/(bx a) s + +
+
10 3 2
1


5. Se consider un circuit R,L,C alimentat de la o surs U. tiind c frecvena sursei are
variaia c
f
, iar R,L,C au variaiile c c c
R L c
, , , s se traseze graful impedanei
circuitului i s se determine o margine a erorii relative a ei.

6. Presupunem c x i y sunt dou numere pozitive rotunjite simetric. S se traseze
grafurile de procedur ale expresiilor u x x x x y = + + + ( ) i v xy = 4 i s se arate c
marginea erorii relative a lui u este mai mare dect marginea erorii relative a lui v .












Fig.1.10. Graful de procedur a amplificrii n
tensiune

2
REZOLVAREA NUMERIC A ECUAIILOR
ALGEBRICE*


Pn la ecuaiile de gradul patru, algebra dispune de metode i formule pentru
calculul soluiilor acestora. Pentru ecuaiile de grad mai mare ca patru, cu rdcini
iraionale, determinarea acestora se poate face numai prin aproximaii.
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 e i ecuaia algebric f(x) = 0 . (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.


2.1.1. METODA IRULUI LUI ROLLE
Aceast metod se bazeaz pe o consecin a teoremei lui Rolle care afirm c: ntre
dou rdcini consecutive ale derivatei f x ' ( ) = 0 exist cel mult o rdcin real a
ecuaiei f x ( ) = 0 . Exist cu siguran o soluie ntre rdcinile consecutive ale
derivatei f x ' ( ) = 0 , dac produsul valorilor funciei pentru cele dou rdcini
consecutive ale derivatei este negativ .
Considerm x x x x
n 1 2 3
< < < < ... , rdcinile ecuaiei f x ' ( ) = 0 . Se construiete irul
lui Rolle:
f a f x f x f x f b
n
( ), ( ), ( ),..., ( ), ( )
1 2
(2.2)
Numrul de variaii de semn din irul lui Rolle reprezint numrul de rdcini reale ale
ecuaiei f x ( ) = 0 , iar rdcinile consecutive ale derivatei pentru care avem variaia de
semn a irului reprezint intervalele n care exist o rdcin real a ecuaiei (2.1).
Dac f x ( ) este definit pe ntreaga ax real, R , irul lui Rolle conine

_____________________________
*) Bibliografie: [3],[6],[7],[11],[21].
i termenii cu valorile funciei la + i - :
Metode numerice n electronic

16
( ) ( ) ( ) ( ) ( ) f - ,f x ,f x , ... , f x , f +
1 2 n
. (2.3)
0..Pentru aplicarea acestei metode trebuie s determinm soluiile ecuaiei ( ) f x ' = 0 .
Pentru ecuaii de grad mai mic metoda este avantajoas, dar pentru ecuaii de grad
mare rezolvarea ecuaiei derivatei poate deveni tot att de dificil ca i rezolvarea
ecuaiei date f x ( ) = 0 .


2.1.2. METODA IRULUI LUI TURM

Considerm funcia definit n (2.1) care ndeplinete condiiile de continuitate i
derivabilitate pentru x | | e a , b .
Definiia 2.1 irul de funcii f f f f
m 0 1 2
, , ,..., continue pe[ , ] a b care satisfac condiiile:
1) f x f x
0
( ) ( ); =
2) f x
m
( ) = 0 pentru x e[ , ] a b ;
3) dac f x
i
( ) = 0 , 1s s i m-1 i x | | e a , b , atunci
f x f x
i i +
<
1 1
0 ( ) ( ) ;
4) dac f x
0
0 ( ) = pentru x ( ) e a , b , atunci ( ) f (x) f x
0
'
1
> 0
se numete ir turm asociat funciei f x ( ) .
Numrul rdcinilor ecuaiei f x ( ) n intervalul [ , ] a b este dat de urmtoarea teorem
Teorema 2.1. Fie irul turm f ,f ,f ,...,f
0 1 2 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:

( ) ( ) ( ) f a , f a , ... , f a
0 1 m
(2.4)

( ) ( ) ( ) f b , f b ,... , f b
0 1 m
(2.5) n cazul funciei polinom
P x ( ) care este definit pe R, teorema (2.1) devine:
Teorema 2.2 Fie P P P P
m 0 1 2
, , ,..., un ir de polinoame construit astfel
P
0
= P, P
1
= P
1
, iar P
i+1
este restul mpririi lui P
i1
la P
i
luat cu semn schimbat,
pentru 2 s s i m. Atunci numrul de rdcini ale ecuaiei P x ( ) = 0 este egal cu
diferena dintre numrul de schimbri de semn ale irurilor:
( ) ( ) ( ) ( ) P ,P ,P , P
0 1 2 m
, (2.6)
( ) ( ) ( ) ( ) P ,P ,P , ,P
0 1 2 m
(2.7)
Demonstraie. Trebuie s artm c irul format este un ir turm. Condiiile irului lui
turm sunt ndeplinite. Prima condiie este ndeplinit din construcia irului. A doua
condiie este ndeplinit deoarece considerm c polinomul nu are rdcini multiple,
deci P x ( ) i P x
'
( ) nu au rdcini multiple. Construim termenii irului folosind
algoritmul lui Euclid. Se schimb doar semnul restului.
P x P x Q x P x i m
i i i i +
= =
1 1
1 2 1 ( ) ( ). ( ) ( ) ; , ,..., (2.8)
Aplicnd algoritmul, obinem: ( ) P x P x P x
m 0 1
( ), ( ) ( ) = =constant = 0, deoarece P x
0
( ) i
P x
1
( ) sunt prime ntre ele. Pentru P x
i
( ) = 0 din relaia (2.8) se vede c este ndeplinit
Rezolvarea numeric a ecuaiilor algebrice

17
i condiia 3 din definiia irului lui turm. Dac P x ( ) =0 pentru x eR, deoarece P x ( )
i P x
'
( ) nu au rdcini comune, rezult c :
( ) ( ) ( ) P x P x P x 0 P x P x P x
'
1
= = = = >
0 1 0 1
2
0
' '
( ) ( ) ( ) ,
expresie care arat ndeplinirea condiiei 4 din definiia irului lui turm. Pe baza
teoremei 2.1, teorema este demonstrat.
n cazul cnd P x ( ) are rdcini multiple, polinomul ( ) P x
m
va fi cel mai mare divizor
al polinoamelor: P x ( ) i P x
'
( ) . irul obinut se mparte la ( ) P x
m
i se obine irul
turm cruia i putem aplica teorema 2.2 .
Dup relaia de recuren (2.8) s-a realizat un algoritm pentru obinerea unui ir
turm ataat unui polinom de gradul n. Algoritmul determin resturile cu semn
schimbat din algoritmul lui Euclid aplicat polinomului i derivatei lui. Dac polinomul
i derivata lui sunt prime, ultimul rest este o constant iar n caz contrar este cel mai
mare divizor al lor.


2.1.2.1. Algoritmul 2.1

{Variabile
grad:gradul polinomului, ntreg);
P1:vectorul coeficienilor polinomului;
P2:vectorul coeficienilor derivatei polinomului;
Rez:vectorul coeficienilor restului;
C1,C2:coeficienii pentru calculul coeficienilor restului, reali;
{
pentru i=grad-1 pn la 0 calculeaz P2[i]=(i+1)P1[i+1];

{ dac grad=0 atunci Rez(0)=P1(0)-P1(1)
/* Restul are gradul grad-2 */
altfel
{
calculeaz C1:=P1[grad]/P2[grad-1];
calculeaz C2:=(P1[grad-1]-C1*P2[grad-2])/P2[grad-1];
pentru i=grad-2 pn la 1 calculeaz
Rez[i]=P1[i]-C1*P2[i-1]-C2*P2[i];
calculeaz Rez[0]=P1[0]=P1-C2*P2[0];
}
}
Tiprete coeficienii restului cu semnul schimbat;
}
}


2.1.2.2. Implementarea algoritmului 2.1

Metode numerice n electronic

18
/ *Funcia care implementeaz calculul coeficienilor primei derivate
a polinomului.
*/
void DerPoli( int grad,
double *coef,
double *rez)
{ int i;
For (i=grad-1;i>=0;i--) rez[i]=(i+1)*coef[i+1];
}
/* Funcia care implementeaz termenii irului lui turm pentru
polinom
Funcia ntoarce
0 dac nu se poate realiza irul
1 dac se realizeaz irul
*/
int Divi( int grad,
double *p1,
double *p2,
double *rez)
{
double const1,const2;
int i;
if (grad= = 1) {
rez[0]=p1[0]-p1[1];
return 1;
}
else
{
const1=p1[grad]/p2[grad-1];
const2=(p1[grad-1]-const1*p2[grad-2])/p2[grad-1];
for (i=grad-2;i>=1;i--)rez[i]=p1[i]-const1*p2[i-1]-const2*p2[i];
rez[0]=p1[0]=p1-const2*p2[0];
return 0;
}


2.1.3. METODA BUDAN-FOURIER

Aceast metod se bazeaz pe teorema lui Budan - Fourier i determin numrul
rdcinilor reale ale ecuaiei polinomiale cu coeficieni reali .
Teorema 2.3 Fie polinomul P x ( ) = a x a x ... a cu a
0
n
1
n-1
n 0
+ + + = 0 i irul
derivatelor lui:
( ) ( ) ( )
( )
( ) P x , P x , P x ,... , P x =a n!
' '' n
0
(2.9)
Numrul rdcinilor ecuaiei P x ( ) = 0 n intervalul ( , ), , a b a b eR este dat de
Rezolvarea numeric a ecuaiilor algebrice

19
( ) ( ) ( ) N a , b N a N b =
sau difer de acesta cu un numr par
N a b N a N b m ( , ) ( ) ( ) = 2 ,
unde ( ) N a este numrul inferior de schimbri de semn al irului derivatelor pentru
x a = i ( ) N b este numrul superior de schimbri de semn al irului derivatelor pentru
x b = .
Numrul inferior de schimbri de semn al irului este numrul de schimbri de semn
al subirului termenilor diferii de zero, iar numrul superior de schimbri de semn al
irului este numrul de schimbri al irului unde termenii nuli

( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
P P P 0 P 0 ; P 0
b
g
b
g 1
b
g k 1
b
g 1
b
g k
= = = = = =
+ + + +
,
se nlocuiesc cu elementele
( )
P
g+j
j = 0 , 1, ... , k-1 crora li se atribuie semnul
sign
( )
( )
( )
( )
( )
P 1 signP
b
g+j k-j
b
g k
=
+

Aceast metod are dezavantajul c nu determin precis numrul de rdcini reale
ale ecuaiei polinomiale .
Dintre toate metodele de separare a rdcinilor reale ale unei ecuaii algebrice cea
mai utilizat este metoda irului lui turm, iar pentru ecuaii de grad mai mic ca patru
se poate utiliza cu mult succes i metoda irului lui Rolle .


2.2.CALCULUL RDCINILOR REALE ALE
ECUAIEI ALGEBRICE

Pentru calculul rdcinilor reale ale unei ecuaii algebrice se utilizeaz mai multe
metode numerice dintre care amintim: metoda biseciei (bipartiiei), metoda
aproximaiilor succesive, metoda lui Newton - Raphson, metoda lui Lobacevski i
metoda lui Bairstow.


2.2.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 s 0 . Se
pune problema determinrii soluiei o a ecuaiei f x ( ) = 0 pe intervalul [ , ] a b (fig. 2.1),
cu o anumit eroare c .
Metoda const n a verifica dac a sau b sunt soluii ale ecuaiei f x ( ) = 0 . Dac a i
b nu sunt soluii, se trece la njumtirea intervalului [ , ] a b i se determin valoarea
x a b
m
= + ( ) / 2 . Se verific dac x
m
este soluie a ecuaiei. Aceast verificare poate fi
fcut prin compararea | ( )| f x
m
< c sau compararea | | b a
n n
< c , unde c este eroarea
de calcul a soluiei ecuaiei. Dac x
m
este soluie a ecuaiei, problema s-a rezolvat; n
Metode numerice n electronic

20
caz contrar se evalueaz f a f x
m
( ), ( ) i se verific dac produsul f a f x
n
( ) ( ) . < 0
Dac inegalitatea este satisfcut b x
m 1
= i a a =
1
i soluia se caut n intervalul
[ , ] a b
1 1
. Dac inegalitatea nu este satisfcut, a x
m 1
= i b b =
1
i soluia se afl n
intervalul [ , ] a b
1 1
. Procedeul continu i se obin dou iruri convergente: unul
monoton cresctor mrginit superior de b i altul monoton descresctor mrginit
inferior de a :
a a a a
n
< < < < <
1 2
... ....
b b b b
n
> > > > >
1 2
... ... (2.10)
irul lungimilor intervalelor care se obin prin njumtire este:
b a (b a)/2 , b a (b a)/2 , ... , b a (b a)/2
1 1 2 2
2
n n
n
= = = ,
un ir descresctor cu limita zero .
lim
n

=
b a
2
n n
n
0 (2.11)

lim
n
n
b

= o (2.12)

lim a
n
n

= o (2.13)
Algoritmul de calcul se oprete atunci cnd
este ndeplinit condiia | | b a
n n
< c unde c
este eroarea impus pentru calculul soluiei
ecuaiei date. Soluia ecuaiei este aproximat
cu valoarea mijlocului intervalului [ , ] a b
n n
.
Lungimea intervalului tinde la zero cnd n
tinde la infinit, limita capetelor intervalelor
fiind un punct a crui abscis este soluia
ecuaiei.


2.2.1.1. Algoritmul 2.2. Bisecia pentru polinoame

{Variabile
n: gradul polinomului, intreg;
A: coeficienii polinomului, vector;
ls,ld: limitele intervalului, real;
er: eroarea de calcul, real;
rad:rdcina, real;
x
m
: jumtatea intervalului [ l l
s d
, ], real;
// se utilizeaz funcia Valpol din ANEXA 1//
{
dac Valpol(n,A,ls)*Valpol(n,A,ld)>0 atunci
{scrie ecuaia nu are rdcin;



Fig.2.1. Graficul funciei y f x = ( ) pe
intervalul [a,b]
x
m

o
Rezolvarea numeric a ecuaiilor algebrice

21
stop;
}

dac Valpol(n,A,ls)=0 atunci
{ rad=ls
stop;
}
daca Valpol(n,A,ld)=0 atunci
{ rad=ld;
stop;
}
xm=(ls+ld)/2;
ct timp (abs(ld-ls)>er) i Valpol(n,a,xm)<>0 execut
{ xm=(ls+ld)/2;
dac Valpol(n,a,xm)*Valpol(n,a,ls)<0 atunci ld=xm
altfel ls=xm;
}
rad=xm;
}


2.2.1.2. Implementarea algoritmului 2.2

/* Funcia ntoarce:
0 n caz de eec
1 n cazul unui rezultat corect */

int BiseciePolinom( int grad,
double Coef[],
double ls,
double ld,
double eroare,
double *rdcina)
{
double xm;

if( ValPol(grad,Coef,ls)*ValPol(grad,Coef,ld)>0 ) return 0;
if( ValPol(grad,Coef,ls)==0){
*rdcina=ls;
return 1;
}
if( ValPol(grad,Coef,ld)==0){
*rdcina=ld;
return 1;
}
xm=0.5*(ls+ld);
Metode numerice n electronic

22
while ( (fabs(ld-ls)>eroare) && (ValPol(grad,Coef,xm)!=0) )
{
xm=0.5*(ld+ls);
if( ValPol(grad,Coef,ls)*ValPol(grad,Coef,xm)<0 )ld=xm;
else ls=xm;
}
*rdcina=xm;
return 1;
}


2.2.1.3.Algoritmul 2.3. Bisecia pentru ecuaii transcendente

{ Variabile
(F ecuaia, funcie real de variabil real)
ls,ld: limitele intervalului, real;
er:eroarea de calcul, real;
xm: mijlocul intervalului, real;
rad:rdcina, real;
{
dac F(ls)*F(ld)>0 atunci { soluia nu exista ,
stop }
altfel
dac F(ls)=0 atunci {soluia este rad=ls;
stop
}
dac F(ld)=0 atunci {soluia este rad=ld;
stop
}
xm=(ls+ld)/2;
ct timp (abs(ld-ls)>er) i (F(xm)<>0) executa
{ xm=(ls+ld)/2;
dac F(xm)*F(ls)<0 atunci ld=xm;
altfel ls=xm;
}
soluia este rad=xm;
}

2.2.1.4. Implementarea algoritmului 2.3

/* Funcia ntoarce:
0 n caz de eec
1 n cazul unui rezultat corect
*/
int BisecieFuncie(double (*f)(double),
double ls,
Rezolvarea numeric a ecuaiilor algebrice

23
double ld,
double err,
double *soluie)
{
double xm;
if ( f(ls)*f(ld)>0) return 0;
if ( f(ls)==0)
{ *soluie=ls;
return 1;
}
if ( f(ld)==0)
{
*soluie=ld;
return 1;
}
xm=0.5*(ls+ld);
while( ( fabs(ld-ls)>err) && ( f(xm)!=0) )
{
xm=0.5*(ls+ld);
if ( f(ls)*f(xm)<0 ) ld=xm;
else ls=xm;
}
*soluie=xm;
return 1 ;
}



2.2.2. METODA APROXIMAIILOR SUCCESIVE

Fie funcia f : [ , ] a b R continu i derivabil pe ( , ) a b i ecuaia f x ( ) = 0 , care pe
intervalul (c,d) c ( , ) a b are o rdcin unic o , f ( ) o = 0 . Presupunem c ecuaia
f x ( ) = 0 , se scrie sub forma: x x = ( ) (2.14)
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
= = = = (2.15)
Ca urmare formula ( ) x x
n n-1
= reprezint o formul de iteraie. Aceast formul de
iteraie este simpl deoarece valoarea calculat depinde numai de valoarea precedent
i este foarte avantajoas n programarea pe calculator, deoarece nu consum mult
memorie i timpul de calcul este redus .
Dac valoarea calculat depinde de toate valorile precedente
( ) x x , x , x , ... , x
n 0 1 2 n-1
= (2.16)
atunci consumul de memorie i timpul de calcul sunt mai mari dect n cazul
precedent. Dac funcia din formula de iteraie nu depinde de rangul de iteraie,
atunci iteraia este de tip staionar, cazul celor dou iteraii prezentate .
Metode numerice n electronic

24
Formula de iteraie poate depinde i de rangul de iteraie
( ) x x , x , x , ... , x
n n 0 1 2 n-1
= (2.17)
i n acest caz rezult cel mai general mod de iteraie.
Vom studia formula de iteraie x x
n n
=

( )
1
. Problema care se pune este convergena
irului (2.15), ir care la limit d soluia ecuaiei x = ( ) x , deci a ecuaiei f x ( ) = 0 .
Convergena irului este dat de teorema contraciei .
Definiia 2.2 Aplicaia T: E E se numete contracie dac exist un eR cu
proprietatea 0 1 < < astfel ca :

( ) ( ) T , T E
x y
s e x , y x , y ,
( ) E , reprezentnd un spaiu metric complet, iar ( , ) x y distana definit n spaiul E.
Teorema 2.4 (Teorema contraciei )
Fie contracia T : E E i ( ) E , un spaiu metric complet. Atunci :
1) Aplicaia T este continu
2) Oricare ar fi x
0
eE irul x , x , x , ... , x ,
0 1 2 n
... definit prin relaia de recuren
x x
k k +
=
1
T (k =0,1,2, ... ,n, ... ) este convergent. Limita irului este x i este fix
pentru T, adic T x x = i viteza de convergen este:
( ) ( )


1-

m
x , x x , x
m 0 1
s
3) Punctul x este unic

Fie formula de iteraie ( ) x x
n n-1
= . Considerm c soluia ecuaiei x x = ( ) este a ,
deci ( ) a= a . Scznd cele dou relaii se obine:
( ) ( ) x a= x - a
n n-1
(2.18)
nmulim partea dreapta cu ( )
n 1 x
a

/ ( )
n x
a


1
i rezult

( ) ( )
( )
n
n-
n-
n- x
a
x a
x a
x a =



1
1
1
(2.19)
Aplicnd teorema lui Lagrange

( ) ( )
( )


x a
x a
x b
n-
n-
'
n-
1
1
1

= < < unde


avem
( ) x a x a
n
'
n-1
= ( )
Dac lum valoarea maxim a lui ( )
'
x n ( , ) a b pe care o considerm egal cu
atunci

x a x a
x a x x a x a
x a x a
n n-1
n-1 n-2-a n
2
n-2
n
n
0
s
< <

<

(2.20)
Rezolvarea numeric a ecuaiilor algebrice

25
Dac ( )
'
x < < 1 pe ntreg intervalul, atunci indiferent de alegerea punctului de
start x
0
, irul 2.15 este convergent, deoarece
lim lim lim
n n n
< = = x a x a x a
n
n
0 n
0 ,
valoare care reprezint soluia ecuaiei 2.14.
Dac ( )
'
x >1 atunci x a
n
crete odat cu creterea lui n, rezultnd divergena
irului x
n
. Aceste cazuri de convergen a metodei aproximaiilor succesive pentru


( )
'
x < 1 i de divergen a metodei pentru ( )
'
x > 1 pot fi justificate i prin
reprezentri grafice date n figurile: 2.2, 2.3, 2.4, 2.5.
Calculul soluiei prin metoda aproximaiilor succesive se face funcie de o eroare
impus care d criteriul de oprire al programului . Algoritmul se termin cnd
| | x x
n n
<
1
c (2.21)
ceea ce arat c diferena dintre dou valori consecutive calculate este mai mic ca c

y

x
y x =
y x = ( )
x
3
x
1
x
0
a
Fig.2.2. Convergena pentru cazul
0<
'
( ) x <1
y
x
y x = ( )
x
0
x
2 a x
3
x
1
Fig.2.3. Convergena pentru cazul
-1<
'
( ) x <0
y x =
Metode numerice n electronic

26



sau cnd | ( )| f x
n
< c (2.22)
i atunci soluia ecuaiei este aproximat de x
n
, pentru c suficient de mic.


2.2.2.1. Algoritmul 2.4. Aproximaii succesive

{Variabile
(F funcie real de variabil real, ecuaia se aduce la x=F(x))
x0: punctul de start, real;
pc: punctul de derivare, real;
xn: valoarea curenta a rdcinii, real;
xn_1: valoarea precedent a rdcinii, real;
h: pasul de derivare, real;
der:derivata funciei, real;
ls,ld: limitele intervalului, real;
rad:rdcina ecuaiei, real;
{
h=0.0001;
pc=ls;
repeta
der=(F(pc+h)-F(xc))/h;
pc=pc+h;
pn cnd (pc>ld) sau der>=1;
dac der>=1 atunci
{scrie nu se poate rezolva;
stop }
xn=x0;
repet
y
x
y=x
y x =( )
x
2
x
1
x
o
a
Fig.2.4. Divergena pentru cazul

'
( ) x >1

Fig 2.5. Divergena pentru cazul

'
( ) x < 1
a x
0
x
1
x
y
y x =
y x = ( )
Rezolvarea numeric a ecuaiilor algebrice

27
xn_1=xn;
xn=F(xn_1);
pan cnd abs(xn-xn_1)<er;
rad=xn;
soluia este rad;
}


2.2.2.2. Implementarea algoritmului 2.4

/* Funcia ntoarce:
0 cnd se gsete rdcina cu aproximaia dorit
1 cnd nu se ndeplinete condiia de convergen
2 cnd nu se atinge precizia n numrul de pai impus
*/
int AproxSuc( double (*fi)(double), /* ecuaia */
double ls, /* limita stng */
double ld, /* limita dreapt */
double x0, /* valoarea de start */
double err, /* precizia de aflare a soluiei */
int NMax, /* nr. maxim de iteraii */
double *sol /* soluia */
)

{
double xn,xn_1,pct,pas=0.001;
int iter,sem=1;
pct=ls;
do
{
if( Derf(fi,pct)>=1) sem=0;
else pct+=pas;
}
while( (sem==1) && (pct<=ld) );
if(sem==0) return 1;
else
xn=x0;
iter=1;
do
{
xn_1=xn;
xn=fi(xn_1);
iter++;
}
while ( ( fabs(xn-xn_1)>err ) && (iter<=NMax) );
*sol=xn;
Metodenumericenelectronic

28
if (iter<NMax) return 0;
else return 2;
}


2.2.3.METODA APROXIMAIILOR SUCCESIVE CU VITEZ
MARE DE CONVERGEN

Din figura 2.1 se observ c o nou valoare x
n+1
se obine din valoarea calculat x
n

(iniial fiind x
0
) la care se adaug o valoare A
x
corespunztor fig. 2.5
x x
n+1 n x
= + A (2.23)
unde ( ) A
x n
f x x =
n
(2.24)
Pentru mrirea vitezei de convergen a metodei se pune problema adugrii la x
n
a
termenului k A
x
cu k >1, astfel ca valoarea x
n+1
s fie foarte aproape de soluie i dac
este posibil s fie chiar a . Deci :
x x k
n+1 n x
= + A (2.25)
Valoarea lui k se determin cu ajutorul unghiului o prezentat n fig 2.5 i a
segmentului A
x
, k A
x
, (1-k) A
x
. Deoarece y x = (bisectoarea nti) formeaz cu axele
de coordonate unghiuri de 45
0
, ABC este un triunghi dreptunghic isoscel, deci
AB=BC=(1-k) A
x
. Din triunghiul dreptunghic TBC rezult:

tan = BC/ TB= ) x / ( ) = (
x
o (1-k k 1-k)/k A A
(2.26) sau
k = 1/ (1- tan( )) o . (2.27)
Tan o poate fi exprimat cu ajutorul
funciei ( ) x :
( ) ( )
( ) tan =
unde
o

a x
a-x
x a
n
n
n

=
s s
'
(2.28)
formul obinut aplicnd teorema lui
Lagrange .
Din expresiile (2.27) i (2.28) se obine
expresia lui k sub forma

( )
k =
1
1-
'

(2.29)
unde ( )
'
poate fi aproximat funcie
de valorile cunoscute astfel :
( )
( )

'
; ~

s s
x x
x x
x x
n n
n n-1
n-1 n
(2.30)


y x =
y x = ( )


Fig.2.6. Graficul iteraiei la pasul n
y
x
a
x
n1
x
n
x
n+1

o
T

B
A
k x A
Ax
Rezolvarea numeric a ecuaiilor algebrice

29
Dac inem seama de formulele (2.30) , (2.29) i (2.25) putem exprima formula de
calcul a lui x
n+1
astfel :
x x k f x x
n n n n +
= +
1
( ( ) ) (2.31)

Influenele lui k pentru cele patru cazuri ale valorilor derivatei sunt:

1. 0 <
'
( ) x <1. Din (2.28) rezult ( ) k e 1 , , adic o valoare a lui k mai mare ca 1
mrete viteza de convergen a metodei prin mrirea pasului;
2. -1 < ( )
'
x <0. Rezult ( / ) 1 2 < k < 1, adic n acest caz pasul trebuie micorat
pentru a obine o mrire a vitezei de convergen a metodei;
3. ( )
'
x > 1. Rezult ( ) k e - , 0 , dei metoda n acest caz este divergent pentru un
k < 0 se poate obine o mbuntire a metodei;
4. ( )
'
x < 1. Rezult ( ) k e 0, 1/ 2 , adic o micorare a pasului dar fr a ne
pronuna asupra convergenei irului n acest caz.


2.2.4. METODA NEWTON-RAPHSON

Aplicnd metoda aproximailor succesive cu vitez de convergen mrit pentru
care considerm = x
n
rezult din (2.31):

( )
( ) ( )
n
n
n n x
x
x
x x
+
= +


1
1
1
n


'
(2.32)
Aceast expresie reprezint o formul de iteraie pentru determinarea soluiei ecuaiei
x = ( ) x i se numete formula Newton - Raphson .
Formula (2.32) mai poate fi exprimat astfel :

( ) ( )
( )
( )
x
x x x
x
n n
n
n+1
n


=

'
'
1
(2.33)
Formula de iteraie (2.33) poate fi reprezentat sub forma :
( ) ( )
( ) ( )
( )
x g x g x
x x x
x
n+1 n
= =

unde


'
'
1
(2.34)
Condiia de convergen a irului, spre soluia ecuaiei, este dat de relaia ( ) g
'
x < 1.
Calculm derivata funciei g x ( )
( )
( ) ( )
| |
( )
| |
g x
x x x
x
'
=

''
'

1
2
(2.35)
Pentru convergena metodei Newton - Raphson este necesar ca ( ) g x < 1, condiie
satisfcut dac:
1. Soluia de start x
0
este aleas ct mai aproape de soluia ecuaiei, pentru ca
( ) x x s fie ct mai mic ;
Metodenumericenelectronic

30
2. ( )
' '
x este ct mai mic ;
3. ( )
'
x nu este aproape de 1.
Formula Newton - Raphson (2.32) poate fi scris i pentru ecuaia implicit f x ( ) = 0
astfel :




( )
( )
x x
f x
f x
n+1 n
n
'
n
= (2.36)
unde f x ( ) = ( ) x x = 0 . n acest caz formula (2.35) se scrie sub forma :

( )
( ) ( )
( )
| |
g x
f x f x
f x
'
''
'
2
= (2.37)
iar condiiile de convergen se transcriu:
1. Soluia de start s fie ct mai aproape de soluia ecuaiei, f x ( ) s fie ct mai mic;
2. f x
''
( ) s fie ct mai mic;
3. ( ) f x
'
s fie ct mai deprtat de zero.
Formula (2.36) mai poart numele i de metoda tangentei. Interpretrile
geometrice ale metodei Newton-Raphson date prin formulele (2.32) si (2.36) sunt
prezentate n figurile 2.6, respectiv 2.7.
irul soluiilor ecuaiei ncepe cu soluia de start x
0
. n punctul de abscis x
0
al
curbei y x = ( ) se traseaz tangenta la curb i se determin punctul de intersecie al
tangentei cu prima bisectoare. Abscisa x
1
a punctului de intersecie este urmtoarea
valoare a soluiei ecuaiei la primul pas de iteraie. Procedeul de determinare a soluiei
ecuaiei la pasul de iteraie curent se face prin determinarea abscisei puncului de
intersecie al tangentei la curb n punctul de abscis determinat anterior i prima

Fig.2.8. Determinarea grafic a soluiei
prin metoda tangentei.
Fig.2.7. Determinarea grafic a soluiei prin
metoda Newton-Raphson
a x
0
x
1
x
2

y
x
y
x
0
a
x
1

x
y= f (x)
y=x
y x = ( )
Rezolvarea numeric a ecuaiilor algebrice

31
bisectoare. irul de abscise determinat, dac ndeplinete condiia de convergen,
tinde la soluia ecuaiei x x = ( ) . Pentru metoda tangentei se traseaz tangenta la
curba y f x = ( ) n punctul de abscis calculat anterior care se intersecteaz cu axa Ox .
Abscisa punctului de intersecie reprezint soluia ecuaiei la etapa curent de iteraie.


2.2.4.1.Algoritmul 2.5. Newton-Raphson pentru ecuaii
transcendente

{Variabile
(F ecuaia, funcie real de variabil real)
x0:valoarea punctului de start, real;
nmax:numrul maxim de iteraii, ntreg;
i:contor, ntreg;
xn:valoarea curent a rdcinii, real;
xn_1:valoarea precedent a rdcinii, real;
h,er:pasul de derivare, eroarea,reale;
der:valoarea derivatei in xn_1, real;
rad:rdcina ecuaiei, real;
{
i=0;
xn=x0;
h=0.0001;
repet
xn-1=xn;
der=(F(xn-1+h)-F(xn-1))/h;
dac der=0 atunci
{ scrie ecuaia nu se poate rezolva;
stop;
}
xn=xn_1-F(xn_1)/der;
i=i+1;
pn cnd (abs(xn-xn_1)<er) sau (i>nmax);
dac i>nmax atunci
{
scrie soluia nu poate avea precizia dat;
stop;
}
rad=xn;
scrie soluia este rad;
}
}


2.2.4.2. Implementarea algoritmului 2.5
Metodenumericenelectronic

32

/* Funcia ntoarce:
2 cnd derivata este nul
1 cnd nu pot afla rdcina cu precizia dorit
0 n caz de succes
*/
int NewtonRaphsonF( double (*f)(double),
double x0,
int niter,
double err,
double *soluie)
{
double xn,xn_1,aux;
int cont=1;
xn=x0;
do
{
xn_1=xn;
if( (aux=Derf(f,xn_1))==0) return 2;
xn=xn_1-f(xn_1)/aux;
cont++;
}
while( ( fabs(xn-xn_1)>err) && (cont<=niter));
if (cont>=niter) return 1;
*soluie=xn;
return 0;
}


2.2.5. 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.36)

( )
( )
x x
P x
P x
n+1 n
n
'
n
= (2.38)
Pentru calculul valorii unui polinom ntr-un punct dat x
0
, aplicm urmtorul
procedeu:
P x x x b x b x b x b b
m
m
m
m
( ) ( )( ... ) = + + + + +


0
1
1
2
2 1 0
, iar P x b ( )
0 0
= (2.39)
Pentru determinarea lui b
0
, identificm coeficienii polinoamelor din (2.39) i rezult:

a b
a b x b i m m
m m
i i i
=
= =
+ 0 1
1 2 21 , , ,..., , ,0

Rezolvarea numeric a ecuaiilor algebrice

33
Pentru calculul coeficienilor b
i
utilizm formulele :

b a
b a x b i m m
m m
i i i
=
= + =
+ 0 1
1 2 21 , ,..., , ,0

valoarea lui b
0
este P x ( )
0
.
Pentru calculul P x
'
( )
0
utilizm formula (2.39 ):
P x x x Q x b ( ) ( ) ( )
) 0 0 0
= + unde Q x b x b x b x b
m
m
m
m
( ) ... = + + + +

1
1
2
2 1

Prin derivarea expresiei obinute rezult :
P x x x Q x Q x
' '
( ) ( ) ( ) ( ) = +
0
, iar valoarea derivatei polinomului n x
0
se calculeaz
cu formula: P x Q x
'
( ) ( )
0 0
= ceea ce duce la determinarea valorii lui Q x
o
( ) , polinom ai
crui coeficieni au fost obinui anterior.
Q x x x c x c x c x c c
m
m
m
m
( ) ( )( ... ) = + + + + +


0
2
1
3
3 2 1

Aplicnd acelai procedeu ca anterior rezult:

c b
c b x c j m m
m m
j
=
= =
+ 1 1 0 1
1 2 2 1 , ,..., .,

iar valoarea lui c
1
reprezint valoarea derivatei polinomului n punctul x
0
.
Formula de iteraie (2.38) pentru calculul soluiei polinomului devine:
x x b /c
n+ n 1 0 1
= (2.40)
unde:

b a
b a x b i m
c b
c b x c i m
m m
i i i
m m
i i i
=
= + =
=
= + =
+
+
0 1
0 1
1 2 1 0
1 2 1
,... , ,
,... ,
(2.41)


2.2.5.1.Algoritmul 2.6. Newton-Raphson pentru polinoame

//Se utilizeaz funcia Valpol si Derpol din ANEXA 1//

{Variabile
n:gradul polinomului, ntreg;
A: coeficienii polinomului, vector;
x0:valoarea de start, real;
er: eroarea de calcul, real;
xn:valoarea curent a rdcinii, real;
xn_1:valoarea precedent a rdcinii, real;
nmax:numrul maxim de iteraii, ntreg;
i:contor, ntreg;
rad:rdcina ecuaiei, real;
{
i=0;
xn:=x0;
Metodenumericenelectronic

34
repet
xn_1=xn;
dac Derpol(n,A,xn_1)=0 atunci
{
ecuaia nu se poate rezolva;
stop;
}

xn=xn_1-Valpol(n,A,xn_1)/Derpol(n,A,xn_1);
i=i+1;
pn cnd (abs(xn-xn_1)<er) sau (i>nmax);
dac i>nmax atunci
{
Nu avem precizia cerut;
stop;
}
rad=xn;
scrie soluia este rad;

}


2.2.5.2. Implementarea algoritmului 2.6

/* Funcia ntoarce:
2 cnd derivata este nul
1 cnd nu pot afla rdcina cu precizia dorit
0 n caz de succes
*/
int NewtonRaphsonP( int grad,
double coef[],
double x0,
int niter,
double err,
double *soluie)
{
double xn,xn_1,aux;
int cont=1;
xn=x0;
do
{
xn_1=xn;
if(( aux=ValDerPol(grad,coef,xn_1))==0) return 2;
xn=xn_1-ValPol(grad,coef,xn_1)/aux;
cont++;
}
Rezolvarea numeric a ecuaiilor algebrice

35
while( ( fabs(xn-xn_1)>err) && (cont<=niter));
if (cont>=niter) return 1;
*soluie=xn;
return 0;
}


2.2.6.METODA NEWTON-RAPHSON PENTRU RDCINI
FOARTE APROPIATE

Dac dou rdcini ale ecuaiei sunt foarte apropiate atunci este foarte greu s gsim
intervalul n care ecuaia are o singur rdcin, sau rdcinile apropiate . Cum funcia
n cele dou rdcini apropiate ia aceeai
valoare egal cu zero, conform teoremei lui
Rolle exist cel puin un punct ( ) x a , a e
1 2

astfel ca derivata funciei s se anuleze (fig
2.8).

( ) ( )
( ) ( )
( ) ( )
f x x x
f a a a
f a a a
=
= =
= =

1 1 1
2 2 2
0
0

Rezult c exist un ( ) x a , a e
1 2
pentru care
f x
'
( ) = 0 . Rezult c ( ) ( ) f x x
'
=
'
1 adic
( )
'
x = 1 . Vom calcula soluia ecuaiei
( )
'
x = 1 , aplicnd aceeai metod Newton -
Raphson, scriind ecuaia derivatei egal cu
unitatea, sub forma:
x x (x) = +
'
1 (2.42)
Considerm rdcina acestei ecuaii x c a a = e( , )
1 2
pe care o putem lua cu aproximaie
la mijlocul distanei dintre rdcinile a
1
i a
2
. Lund distana dintre
rdcini egal cu 2d, atunci c d i c d + sunt dou valori foarte apropiate de
rdcinile ecuaiei a
1
, respectiv a
2
, pe care le putem lua ca valori de start . Problema
care se pune este determinarea valorii lui d , deoarece rdcinile ecuaiei a a
1 2
, nu sunt
cunoscute. Pentru aceasta se dezvolt n serie Taylor funcia ( ) x n jurul punctului c,
soluie a ecuaiei (2.41)
( ) ( )
( )
( )
( )
( ) x c
x-c
!
c
x-c
!
c
''
= + + +
1 2
2
... (2.43)
Se iau n considerare primii trei termeni ai dezvoltrii. Lund x c d = + , rezult:
( ) ( ) ( ) / ( !) "( )
'
c d c d c d c + = + +
2
2 ,
sau c d c d d c + = + + ( ) ( / ) "( )
2
2 ,


Fig.2.9. Graficul funciei cu dou
rdcini foarte apropiate.
a
1
a
2

c x
y
y x =
Metodenumericenelectronic

36
expresie care se poate scrie sub forma:

( ) ( )
( )
d=
c- c
c
2

(2.44)
Cu ajutorul formulei obinute (2.44) se poate determina valoarea lui d dac se cunoate
soluia ecuaiei (2.42) i se pot calcula valorile de start c d i c d + pentru cele dou
soluii a
1
respectiv a
2
.



2.2.7. METODA LUI BAIRSTOW

Aceast metod determin toate rdcinile att reale ct si 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.45)
care admite soluiile x x x x
n 1 2 3
, , ,..., (2.46), care pot fi reale si complexe. Rdcinile
complexe sunt conjugate dou cte dou. Principiul metodei const n scrierea
polinomului sub forma unui produs de dou polinoame unul de gradul doi i celalalt
de gradul n-2. Deci va rezulta o ecuaie de gradul doi pe care o vom rezolva uor
aplicnd formulele de calcul ale soluiilor i o ecuaie de gradul n-2 pentru care vom
proceda la fel pentru descompunere. n acest mod, din aproape n aproape, vom obine
toate soluiile ecuaiei polinomiale iniiale. Problema principal a metodei este
determinarea coeficienilor polinomului de gradul doi i a celui de gradul n-2. Ecuaia
(2.45) poate fi scris astfel:
P x x sx p x b x b x b x b Rs S
n
n
n
n
n
n
( ) ( )( ... ) = + + + + + + + + +

2 2
1
3
2
4
3 2
(2.47)
Prin identificarea coeficienilor de acelai grad a ecuaiilor (2.45) si (2.47) se obin
expresiile recursive dintre coeficienii celor dou polinoame pentru determinarea
coeficienilor b i n n R
i
, , ,..., , = 1 2 2 i S funcie de s i p . Determinarea valorilor
lui s i p se face astfel ca R i S s se anuleze. n acest caz soluiile polinomului de
gradul doi sunt soluii i pentru ecuaia dat.

a b s
a b sb p
a b sb pb
a b sb pb
a R sb pb
a S pb
n n
n n n
n n n n



= +
= + +
= + +

= + +
= + +
= +
1 1
2 2 1
3 3 2 1
2 2 3 4
1 2 3
0 2
(2.48)
Din relaiile (2.48) se pot deduce relaiile recursive pentru calculul coeficienilor celor
dou polinoame n care s-a descompus polinomul iniial:
Rezolvarea numeric a ecuaiilor algebrice

37

b a s
b a sb p
b a sb pb
b a sb pb
R a sb pb
S a pb
n n
n n n
n n n n



=
=
=

=
=
=
1 1
2 2 1
3 3 2 1
2 2 3 4
1 2 3
0 2
(2.49)
Pentru uniformizarea formulelor de calcul (2.49) se face substituia formal :

R b a sb pb
S b sb
= =
= +
1 1 2 3
0 1
(2.50)
rezultnd sistemul neliniar:

b a s
b a sb p
b a sb pb
k n n
n n
n n n
k k k k


+ +
=
=
=
=
1 1
2 2 1
1 2
3 4 21 0 , ,..., , ,
(2.51)

unde R(s,p) i S(s,p) au expresiile (2.50).
Determinarea coeficienilor s i p se face astfel ca restul Rx S + s fie zero,
obinnd n acest mod un produs de dou polinoame, unul de gradul doi i cellalt de
gradul n-2 egal cu zero. Pentru c Rx S + = 0 pentru orice x rezult:
R(s,p)=0
S(s,p)=0 (2.52)
Sistemul neliniar (2.52) se rezolv cu metoda lui Newton sau a matricei funcionale
prezentat n capitolul 3. Din sistemul neliniar (2.52) se obine urmtorul sistem liniar
n As
k
i Ap
k
:


c
c
c
c
c
c
c
c








R s p
s
s
R s p
p
p R s p
S s p
s
s
S s p
p
p S s p
k k
k
k k
k k k
k k
k
k k
k k k
( , ) ( , )
( , )
( , ) ( , )
( , )
A A
A A
+ =
+ =
(2.53)

unde As s s
k k k
=
+1
iar Ap p p
k k k
=
+1
, k reprezint gradul iteraiei. (2.54)
Se pornete cu o soluie de start ( s p
0 0
, ) care se nlocuiete n sistemul (2.53) i se
obin iterativ cu ajutorul formulelor (2.54) , soluiile sistemului.
Din expresia lui R s p ( , ) i a lui S(s,p) se deduc derivatele pariale n raport cu s i p .

Metodenumericenelectronic

38

c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c




















R s p
s
b
s
R s p
p
b
p
S s p
s
b
s
b
s
b
S s p
p
b
p
b
p
s
( , )
( , )
( , )
( , )
.
=
=
= + +
= +
1
1
0 1
1
0 1
(2.55)

Se observ c n ambele derivate pariale a lui R(s,p) i S(s,p) n raport cu s i p avem
derivata pariala a lui
k b
, k=1,2,3,,n-1 n raport cu s i p.
Dac notm
k
k
t
b
s
=
c
c
i q
b
p
k
k
=
c
c
k=n-1,n-2,,2,1,0 se pot calcula valorile
expresiilor (2.55) prin derivarea expresiilor (2.51) .

n
n n n
k k k k
t
t t
t t t
s b
s p b
k n n


+ + +
=
=
=
=
1
2 1 1
1 2 1
1
3 4 1 0
.
. .
, ,..., ,
(2.56)


q
q
q s q p q b
k n n
n
n
k k k k

+ + +
=
=
=
=
1
2
1 2 2
0
1
3 4 1 0
. .
, ,..., , .
(2.57)

Coeficienii sistemului (2.53) se calculeaz mai nti n punctul de start astfel:


R s p b s p
S s p b s p b s p s
S s p
s
t s p
R s p
p
q s p
S s p
s
t s p t s p s b s p
S s p
p
( , ) ( , )
( , ) ( , ) ( , )
( , )
( , )
( , )
( , )
( , )
( , ) ( , ) ( , )
( , )
0 0 1 0 0
0 0 0 0 0 1 0 0 0
0 0
1 0 0
0 0
1 0 0
0 0
0 0 0 1 0 0 0 1 0 0
0 0
=
= +
=
=
= + +
=
c
c
c
c
c
c
c
c








q s p s q s p
0 0 0 0 1 0 0
( , ) ( , ) +
(2.58)

Se rezolv sistemul pentru soluia de start, iar din expresiile (2.54) se determin
soluiile sistemului pentru iteraia ntia s
1
i p
1
. Se continu procesul de iteraie pn
cnd | | | s s
k k +
<
1
c i | | p p
k k +
<
1
c unde c este eroarea impus. Pentru aceste valori
ale soluiilor sistemului se consider S s p
k k
( , )
+ +
=
1 1
0 i R s p
k k
( , )
+ +
=
1 1
0. n aceste
Rezolvarea numeric a ecuaiilor algebrice

39
condiii, prin rezolvarea ecuaiei de gradul doi, se obin dou soluii reale sau
complexe ale ecuaiei iniiale (2.45). Continund la fel cu ecuaia de gradul n-2 se
obine n final un polinom de gradul doi dac n este par i un polinom de gradul nti
dac n este impar.


2.2.7.1. Algoritmul 2.7. Metoda lui Bairstow

{Variabile
a:vectorul coeficienilor ecuaiei de rezolvat;
b:vectorul coeficienilor polinomului obinut prin descompunere;
A A s p , :variaiile lui s i p;
s,p:coeficienii polinomului de gradul doi, reali;
R,S:coeficienii restului, reali;

c
c
c
c
R
s
R
p
, :derivatele pariale ale lui R n raport cu s i p, reale;

c
c
c
c
S
s
S
p
, :derivatele pariale ale lui S n raport cu s i p, reale;
s p
0 0
, :soluiile de start pentru calculul lui s i p, reale;
c: eroarea de calcul, real;
n,i,k:ntregi;
{
dac a
n
=1 atunci pentru k=n-1 pn la 0 a
a
a
k
k
n
: = ;
i:=n;
j:=-1;
repet
i:=i-2;
repet
j:=j+1;


i j j i j
i j j i j i j
k j j k j k j k
b a
b a b
b a b b
(s ,p ) s
(s ,p ) s . p
pentru k: i pn la (s ,p ) s . p .
+ +
+
+ +
=
=
= =
1 1
1
1 2
1 0



i
i j i i
k j k j k k
t
t t b
t t t b
s
pentru k i pn la s p
+
+ +
+ + +
=
=
= =
1
1 1
1 2 1
1
1 0
.
: . .


Metodenumericenelectronic

40

i
i
k
j
k
j
k
k
q
q
q q q
b
pentru k i pn la s p
+
+ +
+
=
=
= =
1
1 2
2
0
1
1 0 : . .


R s p b s p
S s p b s p b s p s
S s p
s
t s p
R s p
p
q s p
S s p
s
t s p t s p s b s p
S s p
p
q s p
j j j j
j j j j j j j
j j
j j
j j
j j
j j
j j j j j j j
j j
j j
( , ) ( , )
( , ) ( , ) ( , )
( , )
( , )
( , )
( , )
( , )
( , ) ( , ) ( , )
( , )
( ,
=
= +
=
=
= + +
=
1
0 1
1
1
0 1 1
0
c
c
c
c
c
c
c
c
) ( , ) + s q s p
j j j 1


rezolv sistemul


c
c
c
c
c
c
c
c
R s p
s
s
R s p
p
p R s p
S s p
s
s
S s p
p
p S s p
j j
j
j j
j j j
j j
j
j j
j j j
( , ) ( , )
( , )
( , ) ( , )
( , )
A A
A A
+ =
+ =



s s s
p p p
j j j
j j j
+
+
= +
= +
1
1
A
A
;


pn cnd (| | ) (| | ) s s p p
j j j j + +
< <
1 1
c c

rezolv ecuaia x s x p
j j
2
1 1
0 + + =
+ +

pn cnd (i-2<2)

Rezolv ecuaia de gradul 1 sau 2;
Tiprete soluiile;
}
}


2.2.7.2. Implementarea algoritmului 2.7

/* Funcia care ntoarce semnul unui numr real */
int Sign( double x)
Rezolvarea numeric a ecuaiilor algebrice

41
{
if (x>0) return 1;
if (x<0) return -1;
return 0;
}
/* Funcia Sign */
/* Funcia pentru rezolvarea ecuaiei de gradul doi */
void ECGR2( double a,
double b,
double c, /* coeficienii ecuaiei */
double *xr1,
double *xi1,
double *xr2,
double *xi2 /* partea real i imag. a soluiilor */
)
{
double d; /* determinantul ecuaiei */
d=b*b-4*a*c;
switch ( Sign(d) )
{
case 1: {
*xr1=(-b+sqrt(d))/(2*a);
*xi1=0;
*xr2=(-b-sqrt(d))/(2*a);
*xi2=0;
break;
}
case 0: {
*xr1=-b/(2*a);
*xi1=0;
*xr2=*xr1;
*xi2=0;
break;
}
case -1:{
*xr1=-b/(2*a);
*xi1=sqrt(-d)/(2*a);
*xr2=*xr1;
*xi2=-(*xi1);
break;
}
} /* switch */
}; /* ECGR2 /*
/* Funcie care implementeaz efectiv metoda Bairstow pentru
rezolvarea ecuaiilor polinomiale furniznd att soluiile reale, ct i
complexe, simple sau multiple. Ea ntoarce urmtoarele coduri:
Metodenumericenelectronic

42
1 dac se obin soluiile aproximative ale ecuaiei
2 dac nu exista soluie unic (la determinant vezi alg)
3 dac nu este atins precizia dorit
*/
int Bairstow( int grad, /* grad polinom */
double coef[], /* coeficienii polinomului */
double szero, /* soluia de start pt s -vezi alg */
double pzero, /* soluia de start pentru p -vezi alg */
double eps, /* precizia dorit a soluiilor */
int nmax, /* numrul maxim de iteraii */
double alfar[], /* partea real a vect. soluie */
double alfai[] /* partea imaginara a vect soluie */
)
{
/* Se recomand a se vedea algoritmul */
double R; /* coeficientul lui x al restului funcie de r si s */
double S; /* coeficientul liber al restului funcie de r si s */
double RS; /* derivata n raport cu s a lui R */
double RP; /* derivata n raport cu p a lui R */
double SS; /* derivata n raport cu s a lui S */
double SP; /* derivata n raport cu p a lui S */
double D; /* determinantul de la rez. sist.*/
double DS; /* delta_s necunoscuta 1 din sistem *
double DP; /* delta_p necunoscuta 2 din sistem */
double s0; /* soluia s la pasul anterior */
double p0; /* soluia p la pasul anterior */
double s1; /* soluia s la pasul actual */
double p1; /* soluia p la pasul actual */
int sem1; /* Semafor de ieire din bucla mare vezi algoritm */
int sem2; /* Semafor de ieire din bucla mic vezi algoritm */
int k; /* Un contor */
int j; /* ordinul rdcinii curente; la un pas aflu rad.j */
/* si rad. j+1 */
int m; /* ordinul polinomului la un moment dat */
int i; /* numrul de iteraii curent */
double b[NrMax]; /* coeficienii polinomului de ordin m-2 */
double t[NrMax]; /* vectorul derivatelor coefic. b n raport cu s */
double q[NrMax];/*vectorul derivatelor coefic. B n raport cu p *
/* realizm normarea polinomului */
for(k=grad-1;k>=0;k--)coef[k]/=coef[grad];
coef[grad]=1;
/* end normare */
j=1;
sem1=0;
do
{
Rezolvarea numeric a ecuaiilor algebrice

43
m=grad
switch (Sign(m-2))
{
case -1:{ /* a rmas ec. de gr 1 */
alfar[j]=-coef[m-1];
alfai[j]=0;
sem1=1;
break;
};
case 0:{ /* a rmas ecuaie de gr 2 */
ECGR2(1.0,coef[m-1],coef[m-2],
&alfar[j],&alfai[j],
&alfar[j+1],&alfai[j+1]);
sem1=1;
break;
};
case 1:{ /* ecuaie de grad mai mare ca doi */
s0=rzero;
p0=szero;
i=1;
sem2=0;
do
{
b[m-2]=1;
b[m-3]=coef[m-1]-r0;
t[m-2]=0;
t[m-3]=-1;
q[m-2]=q[m-3]=0;
if(m>3)for(k=m-4;k>=0;k--)
{
b[k]=coef[k+2]-b[k+1]*s0-b[k+2]*p0;
t[k]=-b[k+1]-t[k+1]*s0-t[k+2]*p0;
q[k]=-q[k+1]*s0-q[k+2]*p0-b[k+2];
}
R=coef[1]-s0*b[0]-p0*b[1];
S=coef[0]-p0*b[0];
RS= -b[0]-s0*t[0]-p0*t1];
RP= -q[0]*s0-b[1]-p0*q[1];
SS= -p0*t[0];
SP= -b[0]-p0*q[0];
D=RR*SS-SR*RS;
if(D!=0)
{
DS=(-R*SS+S*RS)/D;
DP=(-S*RR+R*SR)/D;
s1=s0+DS;
Metodenumericenelectronic

44
p1=p0+DP;
if((fabs(DS)<=eps)&&(fabs(DP)<=eps) )
{
ECGR2(1,r1,s1,&alfar[j],&alfai[j],
&alfar[j+1],&alfai[j+1]);
j+=2;
sem2=1;
for(k=0;k<=m-2;k++)coef[k]=b[k];
}
else
{
i++;
if(i>nmax) return 3;
else
{
s0=s1;
p0=p1;
}
}
}
else return 2;
} while (sem2!=1);
break;
}
}; /* Case */
} while (sem1!=1);
return 1;
} /* end Bairstow */


2.3. APLICAII

1. Se consider un amplificator integrat, avnd n bucl deschis o amplificare de
forma:
H s
s s s
( )
.
. . .
=
+ + +
338 6260295
05284 0 05120153 000096807437
3 2

S se determine polii funciei de amplificare.
Pentru rezolvare, mai nti determinm numrul de rdcini reale ale polinomului de la
numitorul fraciei aplicnd irul lui turm. Cu ajutorul funciei ce implementeaz irul
lui turm se obine urmtorul ir:
Rezolvarea numeric a ecuaiilor algebrice

45

f s s s s
f s s s
f s s
f s
1
3 2
2
2
3
4
05284 0 05120153 0 00096807437
3 10568 0 05120153
0 027912 0 002038
0 009969
( ) . . . ;
( ) . .
( ) . .
( ) .
= + + +
= + +
= +
=

Se determin numrul variaiilor de semn ale irului lui turm la - i . Pentru
aceasta se realizeaz tabelul 2.1
Tabelul 2.1
s

f
1

f
2

f
3

f
4
n
- - + - + 3

+ + + + 0
Diferena dintre numrul de variaii la - i d informaii asupra numrului de
rdcini reale ale ecuaiei date. Pentru determinarea intervalelor n care se gsesc
soluiile ecuaiei date, facem irul derivatelor.

f s s s s
f s s s
f s s
f s
( ) . . . ;
( ) . .
( ) .
( )
'
''
'''
= + + +
= + +
= +
=
3 2
2
05284 0 05120153 0 00096807437
3 10568 0 05120153
6 10568
6

Se determin soluiile ecuaiilor din irul derivatelor i se ine seama c ntre dou
rdcini consecutive ale derivatei unei funcii poate exista cel mult o rdcin a
funciei. Soluiile se determin cu eroarea c =

10
5
suficient pentru determinarea
intervalelor n care se gsesc soluiile. Pentru derivata de ordinul doi se consider
intervalul (-5,+5) i se determin soluia s
1
''
= 0.17613 cu ajutorul metodei biseciei.
Pentru derivata nti se determin o soluie n intervalul (-5,0.17613) i cealalt n
intervalul (0.17613,5). Se obin soluiile:
s s
1 2
0 29426 0 05800
' '
. ; . = =
Acum se pot determina intervalele n care se gsesc polii funciei de amplificare:
(-5,0.29426) ; (-0.29426,-0.05800) i (-0.05800,5)
Polii sunt determinai cu metodele:
Bisecie: s s s
1 2 3
0 409 0 0943 0 0251 = = = . ; . ; .
Metodenumericenelectronic

46
Aproximaii succesive: s s s
1 2 3
0 409 0 0943 0 0251 = = = . ; . ; .
Newton-Raphson: s s s
1 2 3
0 409 0 0943 0 0251 = = = . ; . ; .
2. 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 0 61401692 0 20379268 0 0491588
4 3 2

S se determine polii filtrului.
Filtrul admite poli compleci i pentru determinarea lor aplicm metoda lui
Bairstow. Se obin urmtorii poli ca soluii ale polinomului de la numitorul funciei de
transfer:
s i si s i
12 34
0 090700 0 639041 0 218900 0 264732 = = . . . .
3. Se d ecuaia
e x
x
= 1 0 /
care are o soluie n intervalul (0.1, 1). S se calculeze soluia ecuaiei aplicnd metoda
bisectiei pentru ecuaii transcendente, metoda Newton-Raphson i metoda
aproximaiilor succesive. Eroarea de calcul se consider c = 0 0000000001 . pentru toate
metodele. S se compare rezultatele.
3
REZOLVAREA NUMERIC A SISTEMELOR
DE ECUAII
*




Fie funcia f X Y : > , X c R
n
, Y cR
n
i f x ( ) = 0 un sistem de ecuaii. Dup gra-
dul necunoscutelor care intr n aceste ecuaii, sistemele sunt liniare, dac termenii
ecuaiilor sunt de gradul nti i neliniare dac exist ecuaii ce conin termeni de grad
mai mare ca unu.


3.1. REZOLVAREA NUMERIC A SISTEMELOR
LINIARE

Un sistem liniar de n ecuaii cu n necunoscute se prezint astfel:


a x a x ... a x b
a x a x ... a x b
a x a x ... a x b
n n
n n
n n nn n n
11 1 12 2 1 1
21 1 22 2 2 2
1 1 2 2
+ + + =
+ + + =

+ + + =

(3.1)

sau matriceal AX=B (3.2)
unde:
A=
a a a
a a a
a a a
11 12
21 22
1 2
...
...
...
1n
2n
n n nn

|
\

|
.
|
|
|
|
(3.3)
X=
x
x
x
x
1
2
3

n
|
\

|
.
|
|
|
|
|
(3.4) i B=
b
b
b
b
1
2
3

n
|
\

|
.
|
|
|
|
|
(3.5)
Metodele de rezolvare a sistemelor liniare le putem mpri n dou categorii: metode
directe care presupun un numr finit de operaii i metode indirecte care
__________________________________
*) Bibliografie [3], [4], [5], [8], [9], [15], [17]
Metode numerice n electronic 48
implic un numr infinit de operaii. n realitate nici o metod nu poate avea un numr
infinit de operaii.Metoda indirect necesit un numr infinit de operaii pentru
obinerea soluiei exacte i din acest motiv operaiile se trunchiaz rezultnd o eroare
de trunchiere. Metodele directe determin, printr-un numr finit de operaii soluia
exact a sistemului dac aceasta exist.


3.1.1. METODE DIRECTE

Dintre metodele directe prezentm metoda pentru sisteme triunghiulare, metoda
eliminrii a lui Gauss, metoda lui Cholesky, metoda Gauss-Jordan, metoda lui Crout
i metoda QR.


3.1.1.1. Sisteme inferior triunghiulare

Aceste sisteme sunt de forma urmtore:


11 1 1
21 1 22 2 2
31 1 32 2 33 3 3
1 1 2 2 3 3
a x b
a x a x b
a x a x a x b
a x a x a x a x b n n n nn n n
=
+ =
+ + =
+ + + =

..........................................
......
(3.6)

Pentru rezolvarea sistemului se aplic metoda substituiei. Se calculeaz soluiile cu
formulele:

1
1
11
x
b
a
= i
i
i ij j
j
i
ii
x
b a x
a
=

=

1
1
i=1,2,3,n (3.7)

3.1.1.1.1. Algoritmul 3.1. Sisteme inferior triunghiulare

{ Variabile
A: matricea necunoscutelor sistemului;
B: vectorul termenilor liberi;
X: vectorul soluiilor;
{
calculeaz
1
1
11
x
b
a
= ;
pentru i=2 ,, n
calculeaz
i
i ij j
j
i
ii
x
b a x
a
=

=

1
1
;
Rezolvarea numeric a sistemelor de ecuaii 49
pentru i= 1, , n tiprete x
i
}


3.1.1.1.2.Implementarea algoritmului 3.1

/* Funcia implementeaz metoda de rezolvare a sistemelor inferior
triunghiulare. Funcia ntoarce determinantul matricei principale */
double TRIUNGHIINF (int or_mat,
double MAT[][NrMax],
double TL[],
double XX[])
{
int i; /* indice de linie */
int j; /* indice de coloan */
double d=1; /* determinant */
for (i=1;i<=or_mat;i++) d*=MAT[i][i];
if ( d==0 ) return 0;
for (i=1;i<=or_mat;i++)
{
XX[i]=TL[i];
for(j=1;j<=i-1;j++) XX[i]=XX[i]-MAT[i][j]*XX[j];
XX[i]=XX[i]/MAT[i][i];
}
return d;
}


3.1.1.2. Sisteme superior triunghiulare

Sistemele de tipul superior triunghiular sunt de forma:


11 1 12 2 13 3 1 1
22 2 21 2 2 2
33 3 3 3
a x a x a x a x b
a x a x a x b
a x a x b
a x b
n n
n n
n n
nn n n
+ + + + =
+ + + =
+ + =
=

...
...
...
.................................

(3.8)

Calculul soluiilor sistemului se fac printr-o retrosubstituie cu ajutorul umtoarelor
formule:

n
n
nn
x
b
a
= i
i
i ij
j i
n
j
ii
x
b a x
a
=

= +

1
i=n-1,n-2,,1 (3.9)

Metode numerice n electronic 50

3.1.1.2.1. Algoritmul 3.2. Sistem superior triunghiular

{ Variabile
A: matricea necunoscutelor sistemului;
B: vectorul termenilor liberi;
X: vectorul soluiilor;
n,i,j:ntregi;
{
calculeaz
n
n
nn
x
b
a
= ;
pentru i=n-1,, 1 calculeaz
i
i ij j
j i
n
ii
x
b a x
a
=

= +

1
;
pentru i= 1 ,, n tiprete x
i

}


3.1.1.2.2. Implementarea algoritmului 3.2

/* Funcia ntoarce determinantul matricei principale */

double TRIUNGHISUP (int or_mat,
double MAT[][NrMax],
double TL[],
double XX[])

{
int i; /* indice de linie */
int j; /* indice de coloan */
double d=1; /* determinant */

for (i=1;i<=or_mat;i++) d*=MAT[i][i];
if ( d==0 ) return 0;

/*retrosubstituia */

for (i=or_mat;i>=1;i--)
{
XX[i]=TL[i];
for(j=or_mat;j>=i+1;j--) XX[i]=XX[i]- MAT[i][j]*XX[j];
XX[i]=XX[i]/MAT[i][i];

}
return d;
Rezolvarea numeric a sistemelor de ecuaii 51
}


3.1.1.3. Metoda lui Gauss de eliminare

Aceast metod const n realizarea unui sistem triunghiular prin eliminarea
termenilor de sub diagonala principal, sistemul (3.1). Pentru aceasta se analizeaz toi
termenii a
k1
, k=1,...,n , i ecuaia care are valoarea maxim a acestui coeficient este
adus pe primul loc. Dac toi a
k1
=0 pentru k=1,...,n sistemul este incompatibil. Prima
ecuaie a sistemului dup reordonare se nmulete pe rnd cu factorul :

m
a
a
k
k
1
1
11
= , k=2,...,n (3.10)
i se scade din ecuaia de pe poziia k , obinnd pe coloana 1 toi termenii zero n
afar de a
11
. Sistemul devine :


( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
a x a x a x a x b
a x a x a x b
a x a x a x b
a x a x a x b
11
1
1 12
1
2 13
1
3 1
1
1
1
22
2
2 23
2
3
2
2
2
32
2
2 33
2
3 3
2
3
2
2
2
2 3
2
3
2 2
+ + + + =
+ + + =
+ + + =

+ + + =
...
...
...
...
n n
2n n
n n
n n nn n n
(3.11)
Procedeul se continu cu aducerea pe locul lui a
22
a celui mai mare termen din
coloana doi i se nmulete linia a doua cu :
m
a
a
k
k
2
2
22
= k=3,4,...,n (3.12)
i se scade din ecuaia de pe pozitia k. Pentru coloana i dup aducerea celui mai mare
coeficient n locul lui a
ii
se nmulete aceast coloan cu :
m
a
a
ki
ki
=
22
k=i+1,...,n (3.13)
i se scade din linia de pe poziia k .
Pentru i = n-1 se obine sistemul :

( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( )
a x a x a x ... a x b
a x a x ... a x b
a x b
n n
n n
nn
n
n n
n
11
1
1 12
1
2 13
1
3 1
1
1
1
22
2
2 23
2
3 2
2
2
2
+ + + + =
+ + + =

=

(3.14)
Soluiile se obin printr-o retrosubstituie , pornind de la ultima ecuaie

( )
( )
x
b
a
n
n
n
nn
n
=
( )
( )
x b a x
a
i ij j
j i
n
ii
i
=
|
\

|
.
|
= +

2
2
1
1
(3.15)
Metode numerice n electronic 52
Observaie. Metoda lui Gauss de eliminare se poate aplica i fr a aduce pe locul a
ii
,
i=1,2,...,,(n-1) celui mai mare termen , condiia este ca a
ii
= 0 , dar n acest caz
precizia de calcul scade. Metoda este prezentat pentru cazul celei mai bune precizii
de determinare a soluiilor.


3.1.1.3.1. Algoritm3.3. Metoda lui Gauss de eliminare

{Variabile
A:matricea sistemului;
B:vectorul termenilor liberi;
X:vectorul soluiilor ;
n,i :ordinul sistemului, indicele liniei, ntregi;
k : indice suplimentar al liniei, ntreg;
j : indice coloan, ntreg;
m: multiplicator, real;
d: determinantul sistemului, real;
max: elementul maxim de pe coloana, real;
lp: indicele liniei cu element maxim, ntreg;
{
i=1; det=1;
repet
max= abs(A[i,i]);
lp=1;
pemtru k=i+1 n execut
dac max<abs(A[k,i]) atunci
{ max<A[k,i];
lp=k;}
dac max=0 atunci
{ GAUSS=0;
exit; }
dac lp<>i atunci
{ pentru j=i,..,,n execut
sc=A[i,j];A[i,j]=A[lp,j];A[lp,j]=sc;
sc=B[i];B[i]=B[lp];B[lp]=sc;
d= -d;
}
k=i+1;
repet
m=A[k,i]/A[i,i];
pentru j =i ,,n execut A[k,j]=A[k,j]-m*A[i,j];
B[k]=B[k]-m*B[I];
k=k+1;
pna cnd k>n;
i=i+1;
Rezolvarea numeric a sistemelor de ecuaii 53
pn cnd i>=n;
pentru i=1,,n execut d:=d*A[i,i];
dac d=0 atunci
{ GAUSS=0;
exit; }
X[n]=B[n]/A[n,n];
pentru i=n-1,,1 execut
{ X[I]=B[I];
pentru j=n,,i+1 execut X[I]=X[I]-A[I,j]*X[j];
X[i]=X[i]/A[i,i]; }
GAUSS=d;
}


3.1.1.3.2. Implementarea algoritmului 3.3

#define SCHIMB(a,b,temp) (temp)=(a);(a)=(b);(b)=(temp);
/* Funcia implementeaz metoda eliminrii a lui Gauss (pivotare
parial). Funcia ntoarce determinantul matricei principale */
double GAUSS(int or_mat,
double MAT[][NrMax],
double TL[],
double XX[])
{
int i; /* indice de linie */
int j; /* indice de coloan */
int k; /* indice suplimentar de coloan */
double m; /* multiplicator */
double d; /* determinant */
double sc;
double max;
int lp; /* indicele liniei n care se gsete pivotul */
i=1;
d=1;

do
{
max=fabs( MAT[i][i]);lp=i;
for(k=i+1;k<=or_mat;k++)
if( max< fabs(MAT[k][i]) )
{
max=MAT[k][i];
lp=k;
}
if (max==0) return 0;
if(lp!=i)
Metode numerice n electronic 54
{
for(j=i;j<=or_mat;j++)
SCHIMB(MAT[i][j],MAT[lp][j],sc);
SCHIMB(TL[i],TL[lp],sc);
d*=-1;
}
k=i+1;
do

{
m=MAT[k][i]/MAT[i][i];
for (j=i;j<=or_mat;j++)
MAT[k][j]=MAT[k][j]-m*MAT[i][j];
TL[k]=TL[k]-m*TL[i];
k++;
}

while (k<=or_mat);
i++;
}while (i<or_mat) ;
for (i=1;i<=or_mat;i++) d*=MAT[i][i];
if ( d==0 ) return 0;

/*retrosubstituia */

for (i=or_mat;i>=1;i--)
{
XX[i]=TL[i];
for(j=or_mat;j>=i+1;j--) XX[i]=XX[i]-MAT[i][j]*XX[j];
XX[i]=XX[i]/MAT[i][i];
}
return d;
}


3.1.1.4. Metoda lui Crout

Rezolvarea sistemului AX=B (3.16) const n descompunerea matricelor A=LU
i B=LD (3.17), L fiind o matrice inferior triunghiular iar U o matrice superior
triunghiular cu elementele diagonalei principale egale cu unitatea. Dup nlocuirea
relaiilor (3.17) n ecuaia (3.16) prin simplificare se obine ecuaia UX=D (3.18)
care este uor de rezolvat. Din sistemul matriceal format de ecuaiile (3.17) se
calculeaz elementele matricelor U i L.
Rezolvarea numeric a sistemelor de ecuaii 55

l
l l
l l l
l l l l
u u u
u u
u
a a a
a a a
a a a
a a
n n n n
n
n
n
n
n
n
n n
11
21 22
31 32 33
1 2 3 4
12 13 1
23 2
3
11 12 1
21 22 2
31 32 3
1 2
0 0 0 0
0 0 0
0 0
1
1
0 1
0 0 1
0 0 0 1


|
\

|
.
|
|
|
|
|
|

|
\

|
.
|
|
|
|
|
|
=

a
nn
|
\

|
.
|
|
|
|
|
|
(3.16)


l
l l
l l l
l l l l
d
d
d
d
b
b
b
b
n n n n n n
11
21 22
31 32 33
1 2 3 4
1
2
3
1
2
3
0 0 0 0
0 0 0
0 0
1


|
\

|
.
|
|
|
|
|
|

|
\

|
.
|
|
|
|
|
|
=

|
\

|
.
|
|
|
|
|
|
(3.17)

Din ecuaiile (3.19) i (3.20) prin identificarea elementelor corespunztoare rezult
urmtoarele formule de calcul ale matricelor U i L.
l a i n u
a
a
j n d
b
a
a
i i j
j
1 1 1
1
11
1
1
11
11
12 1 2 0 = = = = = = ; , ,..., ; ; , ,..., ; ; ; (3.18)
l a l u i j u
l
a l u l i j
ij ij ik kj
k
j
ij
ii
ij ik kj
k
i
ii
= > =
|
\

|
.
| =
=

; ; ; ; ;
1
1
1
1
1
0 (3.19)
d
l
b l d
i
ii
ik
k
i
k
=
|
\

|
.
|
=

1
1
1
1
(3.20)
Soluiile sistemului se calculeaz printr-o retrosubstituie cu ajutorul urmtoarelor
formule:
x d x
d a x
u
i n n
n n i
i ij j
j i
n
ii
= =

=
= +

; ; , ,..., , ;
1
1 2 2 1 (3.21)


3.1.1.4.1. Algoritm 3.4. Metoda lui Crout

{Variabile
MAT:matricea coeficienilor necunoscutelor sistemului;
TL:vectorul termenilor liberi;
X:vectorul soluiilor sistemului;
U:matricea superior triunghiular cu diagonala principal unitar;
L:matricea inferior triunghiular ;
n:ordinul sistemului, ntreg;
i,j :indice de linie respectiv de coloan, ntreg;
k:indice suplimentar, ntreg;
{
dac a
11
1 = atunci scrie -sistem nerezolvabil
altfel
{ pentru i=1 ,, n
Metode numerice n electronic 56
pentru j=1 ,, n
{calculeaz

l a
u
a
a
d
b
a
a
i i
j
j
1 1
1
1
11
1
1
11
11
0
=
=
= =
;
;
; ;

}
dac i>j atunci
{ calculeaz

l a l u
u
l
a l u
ij ij ik kj
k
j
ij
ii
ij ik kj
k
i
=
=
|
\

|
.
|
=

;
;
1
1
1
1
1

d
l
b l d
i
ii
ik
k
i
k
=
|
\

|
.
|
=

1
1
1
1

}
dac i<j atunci
{ calculeaz
u
l
a l u
ij
ii
ij ik kj
k
i
=
|
\

|
.
|
=

1
1
1
;
}
}
calculeaz
{ x d
n n
= ;
pentru i=n-1 ,, 1
calculeaz x
d a x
u
i
i ij j
j i
n
ii
=

= +

1
;
}
Tiprete soluiile
}

3.1.1.4.2. Implementarea algoritmului 3.4

/* Funcia ntoarce
0 dac nu se poate face descompunerea matricei
1 dac descompunerea matricei are loc */
int Crout( int or_mat,
double MAT[][NrMax],
double X[],
double TL[],
Rezolvarea numeric a sistemelor de ecuaii 57
double L[][NrMax],
double U[][NrMax])
{
int i,j,k;
double s;
static double Y[NrMax];
/* Pentru fiecare coloan - i - */
for(i=1;i<=or_mat;i++)
{
/* Se calculeaz elementele matricei L */
/* Pentru fiecare linie - j - */
for(j=i;j<=or_mat;j++)
{
s=0;
for(k=1;k<=i-1;k++)s+=L[j][k]*U[k][i];
L[j][i]=MAT[j][i]-s;
}
for(k=1;k<=i-1;k++)L[k][i]=0;

/* Se calculeaz elementele matricei R */
/* Pentru fiecare coloan - j - */
for(j=i+1;j<=or_mat;j++)
{
s=0;
for(k=1;k<=i-1;k++)s+=L[i][k]*U[k][j];
if ( L[i][i]==0 )return 0; else U[i][j]=(MAT[i][j]-s)/L[i][i];
}

for(j=1;j<=i-1;j++)U[i][j]=0;
U[i][i]=1;

}
if( TRIUNGHIINF(or_mat,L,TL,Y)==0 )return 2;
If( TRIUNGHISUP(or_mat,U,Y,X)==0 )return 2;
return 1;}


3.1.1.5. Metoda lui Cholesky

Metoda lui Cholesky se refer la matricele simetrice ce au proprietatea c
A A
T
= i n acest caz l u l i n j n i j
ij ji jj
; , , ..., ; , , ..., ; ; = = = 1 2 1 1 2 1


3.1.1.5.1. Algoritmul 3.5. Metoda lui Cholesky
Metode numerice n electronic 58
Algoritmul pentru metoda lui Cholesky este identic cu algoritmul Crout, dar
se ine cont c a a i j n
ij ji
= = ; , 1,...,


3.1.1.5.2.Implementarea algoritmului 3.5.

/* Funcia ntoarce
0 dac nu se poate face descompunerea matricei
1 dac descompunerea matricei are loc
2 dac matricea nu e simetric
3 dac sistemul nu se poate rezolva
*/
int Choleski( int or_mat,
double MAT[][NrMax],
double L[][NrMax],
double X[],
double TL[])
{
int i,j,k;
double s;
static double U[NrMax][NrMax],Y[NrMax];
/* Verificarea simetriei */
for(i=1;i<=or_mat;i++)
for(j=i+1;j<=or_mat;j++)
if( MAT[i][j]!=MAT[j][i] )return 2;
/* Pentru fiecare linie */
for(i=1;i<=or_mat;i++)
{
/* Calculm elementele de pe linie cu j<i */
for(j=1;j<=i-1;j++)
{ s=0;
for(k=1;k<=j-1;k++)s+=L[i][k]*L[j][k];
if( L[j][j]==0 ) return 0; else L[i][j]=(MAT[i][j]-s)/L[j][j];
}
/* Aflm elementul diagonal */
s=0;
for(k=1;k<=i-1;k++)s+=L[i][k]*L[i][k];
if( (MAT[i][i]-s)<0)return 0;else L[i][i]=sqrt(MAT[i][i]-s);

/* Umplu cu zero spatiile din matricea L pentru j>i */
for(k=i+1;k<=or_mat;k++)L[i][k]=0;
}
for(i=1;i<=or_mat;i++)
for(j=1;j<=or_mat; j++)
U[i][j]=L[j][i];
Rezolvarea numeric a sistemelor de ecuaii 59
if( TRIUNGHIINF(or_mat,L,TL,Y)==0 )return 3;
if( TRIUNGHISUP(or_mat,U,Y,X)==0 )return 3;
return 1;
}


3.1.1.6. Metoda Gauss-Jordan sau matriceal formal

Aceast metod se deosebete de metoda eliminrii a lui Gauss prin faptul c
matricea sistemului este adus la o matrice diagonal prin transformri elementare
aplicate ecuaiei matriceale (3.2) .

E E E E E AX E E E E E B
n n n n n n
=
1 2 2 1 1 2 2 1
... ... (3.22)
Transformrile elmentare se fac astfel ca
E E E E A E
n n
=
1 2 1
... (matricea unitate) (3.23)
Ecuaia (3.22) devine
X=C (3.24)

unde
C= E E ...E B
n n1 1
(3.25)

Prin identificarea celor dou matrice se obin soluiile sistemului (3.2) .
Pentru obinerea matricei E (3.23) se fac urmatoarele transformri asupra
coeficienilor matricei A i B :

( )
a a
ij uj
1
=



( ) ( )
( )
( )
( )
a a
a
a
a
ij
k
ij
k i k
k
k k
k
k
k
=


1 1
1
1 1
1
1
1 ,
,


pentru i=k-1 , j> k-1

( ) ( )
a a
k j
k
k j
k

=
1 1
1
, ,


pentru j> k-1

( ) ( )


k
a a
i j ij
k
,
=
1
pentru j < k-1 (3.26)


( )
( ) ( )
( )
( )
( )
( ) ( )
b b
b b
a
a
b k
b b
i i
i
k
i
k i k
k
k k
k
k
k
k
k
k
k
1
1 1
1
1 1
1
1
1
1 1
1
1
=
= =
=

,
,
pentru i
pentru k = 2,3, ... , n

Metode numerice n electronic 60


3.1.1.6.1. Algoritm 3.6. Metoda Gauss-Jordan

{Variabile
A : matricea sistemului;
B : vectorul termenilor liberi;
X: vectorul soluiilor;
n : numrul necunoscutelor (ordinul matricei), ntreg;
lin : indicele liniei, ntreg;
k : indice suplimentar al liniei, ntreg;
j : indice coloan, ntreg;
er1: indic dac e false c algoritmul poate continua ( s-a gsit pivot );
ok: indic dac e true succesul interschimbrii liniilor, boolean;
det : variabila n care se calculeaz determinantul sistemului, real ;
{
lin = 1;
er1 =false;
det = 1;
repet
dac A[lin,lin] = 0 atunci
{ ok = false;
k = lin+1;
repet
dac A[k,lin] = 0 atunci {
INTERSCHIMBA LINIA lin cu LINIA k ;
ok = true;
}
altfe k = k+1;
dac k = n+1 atunci er1 = true ;
pn cnd (er1 = true) sau (ok = true)

}
dac er1 = false atunci {
k = lin+1;
repet
calculeaz m=
| |
| |
A k, lin
A lin, lin
;
pentru j = lin ... n calculeaz A[k,j]= A[k,j]-m A[lin,j]
B[k] = B[k]- m B[lin];
k= k+1;
pn cnd k = n+1;
}
lin = lin+1;
pn cnd (lin = n+1) sau (er1 = true );
Rezolvarea numeric a sistemelor de ecuaii 61
pentru lin = 1...n calculeaz det = det A[lin.lin];
dac det = 0 atunci
{ B[n]=
| |
| |
B n
A n, n
;
pentru lin = n-1
{
pentru j = n... lin+1 calculeaz B[lin]= B[lin]-
A[lin,j]B[j]
B[lin]=
| |
| |
B lin
A lin, lin
}
pentru lin = 1...n {
identific X[lin]= B[lin];
tiprete X[lin];
}
}
altfel tiprete Sistemul este incompatibil sau compatibil nedeterminat
}


3.1.1.6.2. Implementarea algoritmului 3.6

#define SCHIMB(a,b,temp) (temp)=(a);(a)=(b);(b)=(temp);
/* Funcia implementeaz metoda Gauss-Jordan pentru
rezolvarea sistemelor liniare.
Funcia ntoarce determinantul matricei principale */

double GAUSS_JORDAN(int or_mat,
double MAT[][NrMax],
double TL[],
double XX[])
{
int i; /* indice de linie */
int j; /* indice de coloan */
int k; /* indice suplimentar de coloan */
double m; /* multiplicator */
double d; /* determinant */
double sc;
double max;
int lp; /* indicele liniei n care se gsete pivotul */
i=1;
d=1;
do
{
max=fabs( MAT[i][i]);lp=i;
for(k=i+1;k<=or_mat;k++)
Metode numerice n electronic 62
if( max< fabs(MAT[k][i]) )
{
max=MAT[k][i];
lp=k;
}
if (max==0) return 0;
if(lp!=i)
{
for(j=i;j<=or_mat;j++){
SCHIMB(MAT[i][j],MAT[lp][j],sc);}
SCHIMB(TL[i],TL[lp],sc);
d*=-1;
}
k=1;
do
{
if(k!=i)
{
m=MAT[k][i]/MAT[i][i];
for (j=i;j<=or_mat;j++)MAT[k][j]=MAT[k][j]-
m*MAT[i][j];
TL[k]=TL[k]-m*TL[i];
}
k++;
}
while (k<=or_mat);
i++;
}while (i<=or_mat) ;
for (i=1;i<=or_mat;i++) d*=MAT[i][i];
if ( d==0 )return 0;
for(i=1;i<=or_mat;i++)XX[i]=TL[i]/MAT[i][i];
return d;
}


3.1.1.7. Metoda factorizrii QR

Aceast metod face posibil rezolvarea sistemelor AX=B pentru cazul cnd
A e R
mxn
i B eR
m
, m>n caz n care nu au soluie n general. Soluionarea se face cu
ajutorul matodei lui Householder ce are la baz urmtoarea teorem:
Teorema 3.1. Pentru orice matrice A e R
mxn
exist o matrice ortogonal H e R
mxn

astfel nct H.A=R unde R e R
mxn
i este o matrice superior triunghiular.
Matricea H se construiete astfel:
H H
p
p
n
=
=
[
1
(3.27)
Rezolvarea numeric a sistemelor de ecuaii 63
Matricea H
p
poart numele de reflector Householder i se determin cu formula:
H I
v v
v v
p m
p p
T
p
T
p
= 2.
.
.
.
(3.28)
unde v este vectorul Householder de forma: v v v
p pp np
= ( , ,..., ,..., ) 0 0 (3.29)
iar I
m
este matricea unitate de ordinul m. Reflectorii Hauseholder sunt simetrici
H H
p
T
p
= (3.30)
Produsul H.A se realizeaz iterativ i cu fiecare pas matricea A devine parial superior
diagonal pn la ordinul pasului. De exemplu, la pasul p matricea de ordinul p
cuprins n matricea A devine superior diagonal. Reflectorii Householder se
calculeaz cu formula (3.28) care detaliat arat astfel:

1 0 0 0 0
0 1 0 0 0
0 0 0
0 0 0
..... .....
. ..... .....
......................
... ...
.......................
.... ...
h h
h h
pp pn
np nn
|
\

|
.
|
|
|
|
|
|
|
|
iar h
v
v v
qr
ip
i p
n
qp rp
=
=

1
2
2
. (3.31)
Notm vectorul o
i i i ii ni
T
a a a a = ( , ,..., ,... )
1 2
(3.32)
H A H H H H H
p p p p n p p p p p n
. .[ ... ... ] [ ... ... ]
.
= = o o o o o o o o
1 2 1 2
(3.33)
innd cont c printr-o transformare ortogonal,suma ptratelor elementelor unei linii
este invariant putem scrie urmtoarea egalitate:
a a a
ip ip ip
i
p
i
m
2 2 2
1
1
1
= +
=

din care rezult a a s


ip ip
i p
m
p
,
= =
=

2 2
(3.34)
Un element al matricei din expresia (3.33) pote fi scris astfel:
H I
v v
v v
p p m
p p
T
p
p
T
p
o
o
=
|
\

|
.
|
|
2.
. .
.
(3.35)
iar un element al expresiei (3.35) se poate exprima sub forma:
( . ) . H a
v
a v
a i p
i p
p p i ip
ip
i p
m ip ip
ip
i p
m
o = =
<
>

=
=


2
0
2
dac
dac
(3.36)
Se alege v a i p
ip ip
= > dac (3.37)
n acest caz rezul din expresia (3.36) v a s
pp pp p
= unde s
p
se determin din relaia
(3.34) astfel ca v
pp
s aib valoarea maxim n valoare absolut, condiie ndeplinit
dac a
pp
i s
p
au acelai semn. n acest caz
s sign a a
p pp ip
i p
m
=
=

( )
2
(3.38)
Componenta diagonal se calculeaz nlocuind n expresia (3.36) indicele i cu p i
rezult:
Metode numerice n electronic 64
a s
pp p
'
= (3.39)
Elementele de sub diagonal se fac zero iar cele situate n dreapta coloanei p se
calculeaz astfel:
H
v
v v
p j j
ip
i p
m p
T
j p
. .( . ). o o o =
=

2
2
(j>p) (3.40)
sau pentru un element al matricei se poate scrie urmtoarea formul de calcul :
( ( . ) . . .

H
a i p
a
v
v a v i p
p j j
ij
ij
ip
i p
m
ip ij
i p
m
ip
o =
<
>



=
dac
dac
2
2
(j>p) (3.41)
Matricea superior triunghiular este dat de R= A
n1
iar matricea inferior
triunghiular este dat de Q=( H H H I
n n m
. ... . )
1 1
.


3.1.1.7.1. Algoritmul 3.7. Metoda factorizrii QR

{Variabile
A:matricea sistemului;
B:vectorul termenilor liberi;
Xvectorul soluiilor;
Q:matricea ortogonal de ordinul mxm;
R:matricea superior triunghiular de ordinul mxn;
k,i,n,m:indici, ntregi;
{
Construiete matricea Q ca matrice unitate de ordinul m;
pentru k=1 ,, m
{calculeaz
pentru i=k ,, m
{calculeaz s=a
ik
2
;
dac a
kk
< 0 atunci s= -s;
pentru i=1 ,, k-1 v
i
= 0 ;
v a s
k kk
= +
a s
kk
= ;
}
pentru i= k+1,, n
calculeaz v a
i ik
= ;
a
ik
= 0 ;
p=s* v
k
;
}
calculeaz A Q A
k k k +
=
1
* ;
Rezolvarea numeric a sistemelor de ecuaii 65
b Q b
k k k +
=
1
* ;
Q Q q
K
k
( ) ( )
* ; =
o 1

}
rezolv sistenul A x b
m m
* ; =
calculeaz R A
T
= ;
calculeaz Q Q
m T
= ( ) ;
( )

Scrie soluiile;
}


3.1.1.7.2.Implementarea algoritmului 3.7

/*Funcia care impementeaz metoda QR*/
void QR( int m , /* nr de ecuaii */
int n, /* nr de necunoscute m>n */
double A[][NrMax], /*matricea sistemului */
double x[], /*vectorul necunoscutelor */
double b[], /*termenii liberi */
double Q[][NrMax], /*matrice ortog. de ordin mxm */
double R[][NrMax]) /*matrice sup. triun. de ordin mxn */
{
int i,j,k;
double s,sumap;
static double v[NrMax];
double p,t;
for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
{
if(i==j)Q[i][j]=1;
else Q[i][j]=0;
}
for(k=1;k<=n;k++)

s=0;
for(i=k;i<=m;i++)s+=pow(A[i][k],2);
s=sqrt(s);
if(A[k][k]<0) s=-s;
for(i=1;i<=k-1;i++)v[i]=0;
v[k]=A[k][k]+s;
for(i=k+1;i<=m;i++)v[i]=A[i][k];

/* Se transform matricea A */

A[k][k]=-s;
for(i=k+1;i<=m;i++)A[i][k]=0;
Metode numerice n electronic 66
p=s*v[k];
for(j=k+1;j<=n;j++)
{
t=0;
for(i=k;i<=m;i++)t+=v[i]*A[i][j]/p;
for(i=k;i<=m;i++)A[i][j]=A[i][j]-t*v[i];
}
/* Se transform termenul liber */
t=0;
for(i=k;i<=m;i++) t+=v[i]*b[i]/p;
for(i=k;i<=m;i++) b[i]=b[i]-t*v[i];

/* Se transform matricea Q */
for(j=1;j<=m;j++)
{
t=0;
for(i=k;i<=m;i++)t+=v[i]*Q[i][j]/p;
for(i=k;i<=m;i++)Q[i][j]=Q[i][j]-t*v[i];
}
}

/* Se rezolv sistemul triunghiular */
for(i=n;i>=1;i--)
{
s=0;
for(j=i+1;j<=n;j++)s+=A[i][j]*x[j];
x[i]=(b[i]-s)/A[i][i];
}

/* Se calculez matricea R (identic cu A ) */
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)R[i][j]=A[i][j];

/* Se calculez matricea ortogonal Q */

for(i=1;i<=m;i++)
for(j=1;j<=m;j++)

{
s=Q[i][j];
Q[i][j]=Q[j][i];
Q[j][i]=s;
}
}


Rezolvarea numeric a sistemelor de ecuaii 67
3.1.1.8. Metoda de rezolvare a sistemelor tridiagonale

Un tip special de sisteme liniare l reprezint sistemele tridiagonale care au
diagonala principal i diagonalele vecine diferite de zero (3.30 ).


b c
a b c
a b c
a b c
a b
x
x
x
x
d
d
d
d
d
1 1
2 2 2
3 3 3
1 1 1
1
2
3
1
2
3
0 0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0 0
...
...
...
...
...

|
\

|
.
|
|
|
|
|
|
|

|
\

|
.
|
|
|
|
|
|
|
=

|
\

|
.
|
|
n n n
n n
n-1
n
n-1
n
x
|
|
|
|
|
(3.42)

Metoda simpl de rezolvare a acestor probleme const n descompunerea matricii
tridiagonale n dou matrice L, U .
LU=A (3.43)
Ecuaia (3.43) poate fi scris detaliat astfel :

l
p l
p l
p l
p l
u
u
u
u
1
2 2
3 3
1
2
0 0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 0 1
0 0 0 0 0 1
...
...
...
...
...
...
...
...
...
...

|
\

|
.
|
|
|
|
|
|
|

|
\

|
.
|
n-1 n-1
n n
3
n-1
|
|
|
|
|
|
=

|
\

|
.
|
|
|
|
|
|
|
b c
a b c
a b c
a b c
a b
1 1
2 2 2
3 3 3
0 0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0 0
...
...
...
...
...
n-1 n-1 n-1
n n
(3.44)

Fcnd nmulirea matricelor L, U i identificnd cu matricea A se obin relaiile de
recuren pentru calculul elementelor matricelor L i U:

p a i= , ,...,n
u
c
l
i= , , ,...,n
l b
l b a u i= , ,...,n
i i
i
i
i
i i i i-
=
=
=
=
2 3
12 3
2 3
1 1
1
(3.45)
Condiia de existen a relaiilor este l
i
i = 1,2,..., n = 0
Sistemul (3.42) poate fi scris sub forma
LUX=D (3.46)

sau sub forma a dou sisteme

L Y=D
U X=Y

(3.47)
Cunoatem pe L i D, deci se calculez mai nti Y

Metode numerice n electronic 68

l ...
a l ...
a l ...
... a l
... a l
y
y
y
y
y
d
d
d
d
d
n- n-
n n
n-
n
n-
n
1
2 2
3 3
1 1
1
2
3
1
1
2
3
1
0 0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0

|
\

|
.
|
|
|
|
|
|
|

|
\

|
.
|
|
|
|
|
|
|
=

|
\

|
.
|
|
|
|
|
|
|
(3.48)
Prin identificarea n (3.48) se deduc urmtoarele relaii recursive de calcul :

( )
y
d
l

y
d a y
t
, i= , ,...n
i
i i i-
i
1
1
1
1
2 3
=
=

(3.49)
Din sistemul UX=Y scris detaliat :


1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 0 1
0 0 0 0 0 1
0
0
0
0
1
2
u
u
u
u
u
...
...
...
...
...
3
n-1
n


|
\

|
.
|
|
|
|
|
|
|
x
x
x
x
1
2
3

|
\

|
.
|
|
|
|
|
|
|
=
n-1
n
x
y
y
y
y
1
2
3

|
\

|
.
|
|
|
|
|
|
|
n-1
n
y
(3.50)
rezult relaiile recursive de calcul ale rdcinilor. Prin retrosubtituie se obin :

x y
x y s x , i=n- ,...,
n n
i i i i
=
= +

1 1 1
(3.51)

care reprezint rdcinile sistemului tridiagonal (3.42)



3.1.1.8.1. Algoritm 3.8. Sisteme tridiagonale

{Variabile
a: vectorul elementelor subdiagonle din matricea sistemului(vezi
3.42);
b: vectorul elementelor diagonale din matricea sistemului(vezi 3.42);
c :vectorul elementelor supradiagonale din matricea sistemului
(vezi 3.42);
l: vectorul elementelor diagonale din matricea L (vezi 3.44);
p: vectorul elementelor subdiagonale din matricea L (vezi 3.44);
u :vectorul elementelor supradiagonale din matricea U (vezi 3.44);
y vectorul UX;
x vectorul soluiilor;
i :indice, ntreg;
eroare: semafor, boolean;
Rezolvarea numeric a sistemelor de ecuaii 69
n: ordinul matricei, ntreg;
{
pentru i = 2,...,3 calculeaz p
i
= a
i
;
calculeaz l
1
= b
1
;
dac l
1
= 0 atunci scrie "Sistemul nu poate fi rezolvat prin metoda
aceasta " STOP;
altfel calculeaz u
1
=
c
l
1
1
;
i=1 ; eroare = fals ;
repet
i = i+1 ;
calculeaz l
i
= b
i
- a
i
s
i-1
;
dac l
i
= 0 atunci eroare = adevrat
altfel calculeaz u
i
=
c
l
i
i

pn cnd i = n-1 sau eroare = adevrat
dac eroare = adevrat atunci
scrie "Sistemul nu poate fi rezolvat prin metoda
aceasta " STOP
altfel {
calculeaz l
n
= b
n
- a
n
u
n-1

calculeaz y
1
1
1
d
l
=
pentru i = 1,2,3, ... , n calculeaz y
y
i
i i i-1
i
d a
l
=



calculeaz x
n
= y
n


pentru i= n-1 .... 1 calculeaz x
i
= y
i
- s
i
x
i+1
;
tiparete soluiile x
i
i=1,2,...,n
}
}
}


3.1.1.8.2. Implementarea algoritmului 3.8

/* Funcia care verific dac sistemul este sau nu tridiagonal
Funcia ntoarce :
0 dac sistemul nu este tridiagonal;
1 dac sistemul este tridiagonal;
*/
int IsTridi(int or_mat,
double MAT[][NrMax] )
Metode numerice n electronic 70
{
int i,j;

for(i=1;i<=or_mat;i++)
for(j=1;j<=or_mat;j++)
if( (abs(i-j)>1) && (MAT[i][j]!=0))return 0;
return 1;
}
/* Funcia care implementeaz metoda de rezolvare a sistemelor
liniare tridiagonale
Funcia ntoarce :
1 dac se gsesc soluiile
0 n caz de eec
*/

int SolveTridi(int or_mat,
double a[],
double b[],
double c[],
double TL[],
double sol[])

{
int i;
static double p[NrMax],t[NrMax],s[NrMax],teta[NrMax];
for(i=2;i<=or_mat;i++)p[i]=a[i];
t[1]=b[1];if( t[1]==0 )return 0 ;
s[1]=c[1]/t[1];
teta[1]=TL[1]/t[1];
for(i=2;i<=or_mat-1;i++)
{
t[i]=b[i]-a[i]*s[i-1];
if(t[i]==0) return 0;
s[i]=c[i]/t[i];
teta[i]=( TL[i]-a[i]*teta[i-1])/t[i];
}
t[or_mat]=b[or_mat]-a[or_mat]*s[or_mat-1];
if (t[or_mat]==0) return 0;
teta[or_mat]=(TL[or_mat]-a[or_mat]*teta[or_mat-1])/t[or_mat];
sol[or_mat]=teta[or_mat];
for(i=or_mat-1;i>=1;i--)sol[i]=teta[i]-s[i]*sol[i+1];
return 1;
}


3.1.2. METODE INDIRECTE
Rezolvarea numeric a sistemelor de ecuaii 71

Dintre metodele indirecte sau metodele iterative care rezolv un sistem de ecuaii
liniare amintim: metoda lui Jacobi, metoda Gauss-Seidel.


3.1.2.1. Metoda lui Jacobi

Fie sistemul liniar (3.1). Se expliciteaz fiecare necunoscut din sistem de pe
diagonala principal funcie de celelalte necunoscute ale sistemului .

x
b
a
a
a
x
a
a
x ...
a
a
x
x
b
a
a
a
x
a
a
x ...
a
a
x
------------------------------
x
b
a
a
a
x ...
a
a
x +
n
n
n
n
n
n
nn
n
nn
nn-
nn
n-
1
1
11
12
11
2
13
11
3
1
11
2
2
22
21
22
1
23
22
3
2
22
2
1
1
1
0
0
0
=
=
=

(3.52)

Se alege o soluie a sistemului oarecare
( ) ( ) ( )
x ,x ,...,x ,
n 1
0
2
0 0
ce va reprezenta soluia de
start. Relaiile (3.52) vor reprezenta formulele de recuren pentru calculul rdcinilor
sistemului i se pot scrie sub forma :
Dac irurile dup k
x ,x ,x ,...,x ,.... i= , ,...,n
i
( )
i
( )
i
( )
i
(k) 0 1 2
12 (3.54)
sunt convergente pentru k atunci limitele irurilor (3.53) reprezint soluiile
sistemului dat. Pentru obinerea condiiei de convergen a irurilor (3.53) se pleac de
la ecuaia matricial scris pentru sistemul (3.52):

X CX D
( ) ( ) 1 0
= + (3.54)

unde X
x
x
x
; C=
-
a
a
-
a
a
... -
a
a
-
a
a
-
a
a
... -
a
a
- - - -
-
a
a
-
a
a
-
a
a
...
; D=
b
a
b
a
b
a
n
n
n
n
nn
n
nn
n
nn
n
nn
=
|
\

|
.
|
|
|
|
|
\

|
.
|
|
|
|
|
|
|
|
|
\

|
.
|
|
|
|
|
|
|
|
1
2
12
11
13
11
1
11
21
22
23
22
2
22
1 2 3
1
11
2
22
0
0
0

(3.55)
Continund operaia de iterare se obine


X CX D C X CD D
X C X (C C ...... C I)D
( ) ( ) ( )
(k) k ( ) k- k-
2 1 2 0
0 1 2
= + = + +

= + + + + +
(3.56)
Seria matriceal geometric S=I+C C +....+C ...
K- 1 2 1
+ + este convergent atunci cnd
norma sau toate valorile proprii ale matricei C sunt subunitare i are suma S=(I-C)
-1
.
Metode numerice n electronic 72
Aceasta implic
k
k
C

= lim
1
0 ; X=(I-C) D ; X=CX+D
-1
unde X sunt toate soluiile
ecuaiei date (3.54).
Condiia ca toate valorile proprii ale unei matrici s fie subunitare este :
g
a
a
i
ij
ii
j=
j i
= <
=

1
1 pentru i = 1,2,...,n (3.57)
Aceast condiie trebuie ndeplinit de sisteme pentru a putea fi rezolvate prin metoda
lui Jacobi.


3.1.2.1.1. Algoritm 3.9. Metoda Jacobi
{ Variabile
A: matricea sistemului;
B: matricea termenilor liberi;
S: matricea rezultat prin eliminaea elementului diagonal;
p: variabila care ine produsul elementelor de pe diagonal; real;
n,er:ordinul sistemului,er=1,A, er=0, F:ntregi;
i,k: indici, ntregi;
o: ine suma, real (3.57);
X: vectorul soluiilor;
{
p=1;
pentru k = 1...n calculeaz p= p a ;
k,k

dac p= 0 atunci scrie Sistemul nu se poate rezolva cu aceast
metod STOP.
i =1;
er =1
repet
calculeaz o
i
; =
=

a
a
ij
ii j=
j i
n
1

dac o
i
> 1 atunci er = 0 ;
i = i+1;
pn cnd (i = n+1) sau (er = 1);
dac er = 1 atunci {
scrie Sistemul nu se poate rezolva cu aceast metod ;
STOP;
}
altfel { k = 0;
repet
i =1;
repet
Rezolvarea numeric a sistemelor de ecuaii 73
calculeaz
( )
x
b
a
i
k
i
i,i
=
pentru j= 1... n
calculeaz
( ) ( )
x x
i
k
i
k
=
( )
a
a
x ;
i,j
i,i
j
k-1

i =i+1;
pn cnd i = n+1;
k = k+1;
pn cnd
( ) ( )
x x i ...n
i
k
i
k-
s
1
c = 1
scrie soluiile x
i
=
( )
x
i
k
i = 1... n
STOP
}}
}

3.1.2.1.2. Implementarea algoritmului 3.9

/* Funcia care verific dac o matrice este dominant diagonal
Funcia ntoarce
0 n caz de eec
1 n caz de succes */
int DD(int or_mat,
double MAT[][NrMax])
{
int i,j;
double sum;

for(i=1;i<=or_mat;i++)
{
sum=0;
for(j=1;j<=or_mat;j++)sum+=fabs(MAT[i][j]);
if ( 2*fabs(MAT[i][i])<=sum )return 0; }

return 1;
}

/*Funcia care implementeaz metoda iterativ Jacobi
pentru rezolvarea sistemelor liniare.

Funcia ntoarce
0 n caz de reuit;
1 dac matricea nu e dominant diagonal
*/

int JACOBI(int or_mat,
Metode numerice n electronic 74
double MAT[][NrMax],
double TL[],
double x0[],
double err)

{
int i,j,k,sem;
static double x1[NrMax];

if( DD(or_mat,MAT)==0) return 1;

do
{
sem=1;
for(i=1;i<=or_mat;i++)
{
x1[i]=TL[i]/MAT[i][i];
for(j=1;j<=or_mat;j++)if(j!=i) x1[i]-
=(MAT[i][j]*x0[j])/MAT[i][i];
}
for(i=1;i<=or_mat;i++)
{
if( fabs(x1[i]-x0[i])>err)sem=0;
x0[i]=x1[i];
}
}while(sem==0);
return 0;
}


3.1.2.2. Metoda Gauss-Seidel

Aceast metod difer de metoda lui Jacobi prin faptul c la fiecare iteraie se
utilizeaz valorile calculate la pasul anterior pentru variabilele ale cror valori nu sunt
cunoscute la pasul curent i valorile de la pasul curent pentru variabilele calculate.
Astfel formula de calcul (3.53) devine :

( )
x
b
a
a
a
x
a
a
x
i
k
i
ii
ij
ii
j
(k)
j=
i-
ij
ii
j
(k- )
j=i+
n
=
1
1
1
1
(3.58)
i = 1,2,...,n
k =1,2,...,n,...
n rest, metoda se identific cu metoda lui Jacobi.
Pentru acelai grad de precizie, viteza de convergen a metodei lui Gauss-Seidel este
de dou ori mai mare dect viteza de convergen a metodei lui Iacobi .


Rezolvarea numeric a sistemelor de ecuaii 75
3.1.2.2.1. Algoritm 3.10. Metoda Gauss-Seidel

{ Variabile
A: matricea sistemului;
B: matricea termenilor liberi;
S: matricea rezultat prin eliminaea elementului diagonal;
p: variabila care ine produsul elementelor de pe diagonal; real;
n,er:ordinul sistemului,er=1,A, er=0, F:ntregi;
i,k: indici, ntregi;
o: ine suma, real (3.57);
X: vectorul soluiilor;

{
p=1;
pentru k = 1...n calculeaz p= p a ;
k,k

dac p= 0 atunci scrie Sistemul nu se poate rezolva cu aceast
metod
STOP.
i =1;
er =1
repet
calculeaz o
i
; =
=

a
a
ij
ii j=
j i
n
1

dac o
i
> 1 atunci er = 0 ;
i = i+1;
pn cnd (i = n+1) sau (er = 1);
dac er = 1 atunci {
scrie Sistemul nu se poate rezolva cu aceast metod ;
STOP;
}
altfel {
k = 0;
repet

i =1;
repet
calculeaz
( )
x
b
a
i
k
i
i,i
=
pentru j= 1... n
{
dac j < i atunci
calculeaz
( ) ( )
x x
i
k
i
k
=
( )
a
a
x ;
i,j
i,i
j
k

Metode numerice n electronic 76
dac j > i atunci
calculeaz
( ) ( )
x x
i
k
i
k
=
( )
a
a
x ;
i,j
i,i
j
k-1

}
i =i+1;
pn cnd i = n+1;
k = k+1;
pn cnd
( ) ( )
x x i ...n
i
k
i
k-
s
1
c = 1
scrie soluiile x
i
=
( )
x
i
k
i = 1... n
STOP
}
}
}



3.1.2.2.2. Implementarea algoritmului 3.10

/* Funcia care verific daca o matrice este dominant diagonal
Funcia ntoarce
0 n caz de eec
1 n caz de succes */

int DD(int or_mat,
double MAT[][NrMax])
{
int i,j;
double sum;

for(i=1;i<=or_mat;i++)
{
sum=0;
for(j=1;j<=or_mat;j++)sum+=fabs(MAT[i][j]);
if ( 2*fabs(MAT[i][i])<=sum )return 0;
}
return 1;
}

/* Funcia implementeaz metoda iterativ Gauss-Seidel
pentru rezolvarea sistemelor liniare

Funcia ntoarce
0 n caz de reuit;
1 dac matricea nu e dominant diagonal
Rezolvarea numeric a sistemelor de ecuaii 77
*/

int GAUSS_SEIDEL(int or_mat,
double MAT[][NrMax],
double TL[],
double x0[],
double err)
{
int i,j,k,sem;
double x1[NrMax],sum;

for(j=1;j<=or_mat;j++)
if( DD(or_mat,MAT)==0) return 1;
do
{
sem=1;
for(i=1;i<=or_mat;i++)
{
x1[i]=TL[i]/MAT[i][i];
{
if (j<i) x1[i]-=(MAT[i][j]*x1[j])/MAT[i][i];
if (j>i) x1[i]-=(MAT[i][j]*x0[j])/MAT[i][i];
}
}
for(i=1;i<=or_mat;i++)
{
if( fabs(x1[i]-x0[i])>err)sem=0;
x0[i]=x1[i];
}
}
while(sem==0);
return 0;
}



3.2. REZOLVAREA NUMERIC A SISTEMELOR
NELINIARE

n acest paragraf se studiaz rezolvarea numeric a sistemelor de ecuaii neliniare.
Fie f x f X Y X Y
n
( ) : , , = c 0 R (3.59)
un sistem dat sub form vectorial. Vectorul x are n componente. Funcia f are
urmtoarele componente f f f f
n 1 2 3
, , ... , n funcii definite pe domeniul X
n
c R .
Sistemul scris cu ajutorul componentelor vectorilor se prezint astfel:
Metode numerice n electronic 78


( )
( )
( )
f x ,x ,...,x
f x ,x ,...,x
---------------
f x ,x ,...,x
n
n
n n
1 1 2
2 1 2
1 2
0
0
0
=
=
=

(3.60)

Dac cel puin una din funciile f f f f
n 1 2 3
, , ... sunt neliniare n variabilele x ,x ,...,x
n 1 2

sistemul de ecuaii (3.59) sau (3.60) se numete sistem de ecuaii neliniare.


3.2.1. METODA LUI NEWTON DE REZOLVARE A ECUAIILOR
NELINIARE

Presupunem c n vecintatea Vc X exist o soluie unic ( ) x ,x ,...,x
n 1 2
a
sistemului f
i
( ) x ,x ,...,x
n 1 2
= 0 pentru i = 1,2,...,n (3.61)
Dac f
i
( x ,x ,...,x
n 1 2
) i
c
c


i
f
x
j
; i , j = 1,2,...,n sunt continue pe V i iacobianul

F( x ) =
c
c
c
c
c
c
c
c
c
c
c
c
f
x

f
x
...
f
x
----------------
f
x

f
x
...
f
x
n
n n n
n
1
1
1
2
1
1 2

(
(
(
(
(
(3.62)

are determinantul det(F(x)) = 0 pentru ( ) x ,x ,...,x
n 1 2
atunci funcia f X Y : > este o
transformare regulat ntr-o vecintate a soluiei i are o invers care are aceeai
proprietate .
n acest caz putem aplica metoda Newton pentru sisteme ca o funcie de iteraie ce
poate fi scris
( ) | | ( ) x x F x f x
k+ k k k 1
1
=

, k = 1,2,.... (3.63)

Prelucrnd aceast ecuaie se poate aduce la forma :


( )
c
c
f x
x
x x f x
i k
j j=
n
j k+ j k i k
( )
( )
1
1

= , i = 1,2,...,n , k = 0,1,2,.... (3.64)



Aceast ecuaie reprezint dezvoltarea n serie Taylor a funciei f ( x ,x ,...,x
n 1 2
) n
vecintatea punctului ( , , ... ) x x x
k k nk 2
utiliznd termenii pn la derivata parial de
Rezolvarea numeric a sistemelor de ecuaii 79
ordinul doi, exclusiv. Dac notm x x
j k+ j k 1
= A
j,k
j = 1,2,...,n sistemul (3.64) se
poate scrie matriceal asfel :


( )
( )
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c





















...


1
f
x
f
x
f
x
f
x
f
x
f
x
f
x
f
x
f
x
X
X
X
f x
f x
n
n
n n n
n
x=x
K
K
nK
k
1
1
2
1
2
1
2
2
2
1 2
1
2
1
2
...
...

|
\

|
.
|
|
|
|
|
|
|
|
|
\

|
.
|
|
|
|
=

A
A
A

( )

|
\

|
.
|
|
|
|
f x
n
x=x
k
(3.65)
Sistemul 3.65 este un sistem liniar n necunoscutele A A A X X X
K K nK 1 2
, , ... , .
Din aceste soluii se determin soluia sistemului la pasul k+1 ,
x x
j k+ j k 1
= + AX
j,k
, j = 1,2,...,n (3.66)
Procesul iterativ se continu pn cnd
A
jk
< c j = 1,2,...,n unde c > 0 este eroarea impus de operator .
La baza convergenei irului A
jk
j = 1,2,...,n st urmtoarea teorem :
Teorema 1. (Teorema lui Kantorovici)
Dac n sfera nchis

{ }
u x x V, x-x ( , )
0 0
= e s (3.67)
sunt satisfcute condiiile :
a) Matricea funcional F x ( ) =
c
c
f
x
j
|
\

|
.
|
|
pentru x x =
0
are o invers ( ) ( )
I
0 0
1
=

F x ,
cu proprietatea ca I
0 0
s A ;
b) ( ) I
0 0 0 0
f x x x B
k
= s ;
c)
( )
c
c c
2
=1

f x
x x
C
i
j p p
n

s , i,j = 1,2,...,n i x u x ,g e ( )
0
;
d) Constantele A
0
, B
0
, i C
0
satisfac inegalitatea

h
0
= 2nA
0
B
0
C s 1
Atunci pentru punctul de start x
0
, irul iterativ :

( ) ( )
x x F x f x
k+ k k k 1
1
=

( ) k = 0,1,2,...

este convergent ctre soluia o . Viteza de convergen este dat de relaia

x h B
k
k-
p
s
|
\

|
.
|

o
1
2
1
0
2 1
0
.
Demonstraia teoremei nu o prezentm, ea putnd fi gsit n literatura de specialitate.

Metode numerice n electronic 80

3.2.1.1. Algoritmul 3.11 pentru sisteme neliniare. Metoda lui Newton

{ Variabile
X : valorile soluiilor iterative , vector ;
AX: valorile de modificare a soluiilor iterative , vector ;
X
0
: soluia de start a sistemului , vector ;
det F : determinanatul matricei F(x) ;
{
k = 0;
Dac det F = det F( x
k
) = 0 atunci scrie Alege alt soluie de start

STOP
altfel
{ repet
k = k+1;
calculeaz F ( x
k-1
) ;

{ rezolv sistemul liniar


| |
c
c


f x
x
x x f x
i k-
j j=
n
j,k j ,k- i k-
( )
( )
1
1
1 1

= i = 1,2,...,n
calculeaz
x x x
j,k j,k- j,k-
= + A
1 1
, j = 1,2,...,n
}
pn cnd
x x
j,k j,k-
s
1
c , j = 1,2,...,n sau F(x
k-1
) = 0
}
Soluiile sistemului sunt
}
}


3.2.1.2. Implementarea algoritmului 3.11

/* Funcia care implementeaz metoda lui NEWTON de rezolvare a
sistemelor neliniare cu dou ecuaii i dou necunoscute.
Funcia ntoarce
0 dac determinantul este 0 sau nu s-a atins precizia
1 dac se obin soluiile
*/

int RezSistNelin( double(* ec1)(double x,double y),
/* prima ecuaie din sistem */
Rezolvarea numeric a sistemelor de ecuaii 81
double(* ec2)(double x,double y),
/* a doua ecuaie din sistem */
double(* dec1x)(double x,double y),
/*derivata primei ecuaii n raport cu prima variabil
double(* dec1y)(double x,double y),
/*derivata primei ecuaii n raport cu a doua variabil */
double(* dec2x)(double x,double y),
/*derivata ecuaiei a doua n raport cu prima variabil */
double(* dec2y)(double x,double y),
/*derivata ecuaiei a doua n raport cu a doua variabil */
double eroare,
/* eroarea de calcul a soluiei */
int NITER, /* numrul maxim de iteraii */
double *startx, /* x start */
double *starty) /* y start */
{

int i ;
double deltax,deltay,det,detx,dety,xn_1,xn,yn_1,yn;

i=0;
xn=*startx;
yn=*starty;
do
{
xn_1=xn;
yn_1=yn;
det=dec1x(xn_1,yn_1)*dec2y(xn_1,yn_1)-
dec2x(xn_1,yn_1)*dec1y(xn_1,yn_1);
detx=-
ec1(xn_1,yn_1)*dec2y(xn_1,yn_1)+ec2(xn_1,yn_1)*dec1y(xn_1,yn_1);
dety=-
dec1x(xn_1,yn_1)*ec2(xn_1,yn_1)+dec2x(xn_1,yn_1)*ec1(xn_1,yn_1);
if (det==0) return 0;
deltax=detx/det;
deltay=dety/det;
xn=xn_1+deltax;
yn=yn_1+deltay;
}
while(((fabs(xn-xn_1)>eroare) || (fabs(yn-yn_1)>eroare) &&
i<=NITER));
if(i>=NITER) return 0;
*startx=xn;
*starty=yn;
return 1;
}
Metode numerice n electronic 82


3.3. APLICAII

1. Se d circuitul electric din figura 3.1 ce are urmtoarele componente:


1 2 3 4
5 6 7 8
1 2 3
2 4 36 15 1
18 2 7 12 3
10 12 15
R R R R
R R R R
E E E
k k k k
k k k k
V V V
= = = =
= = = =
= = =
. , . , . , ,
. , . , . , ,
, ,
O O O O
O O O O
Se cer curenii prin fiecare latur a circuitului.

Aplicnd teoremele lui Kirchhoff pentru N-1 noduri deci 3 i pentru O=L-N+1 ochiuri
fundamentale deci O=4, unde N reprezint numrul total de noduri ale circuitului, iar
L numrul total de laturi ale circuitului, rezult urmtorul sistem liniar de apte ecuaii
cu apte necunoscute. Necunoscutele sunt curenii din cele apte laturi ale circuitului,
matricea necunoscutelor sistemului este format din valorile rezistoarelor din circuit,
iar termenii liberi ai sistemului sunt valorile surselor de alimentare.


R I R I I I I I I E
I R I R I R I I I I
I I R I I I R I R I E
I I I I R I R I I
1 1 2 2 3 4 5 6 7 1
1 2 2 3 3 4 4 5 6 7
1 2 3 3 4 5 6 6 7 7 2
1 2 3 4 5 5 6 6
0 0 0 0 0
0 0 0 0 0
0 0 0 0
0 0 0 0 0
+ + + + + =
+ + + + =
+ + + + =
+ + + + + +
7 3
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
0 0 0
0 0 0 0 0
0 0 0 0 0
=
+ + + + + =
+ + + + + + =
+ + + + + =

E
I I I I I I I
I I I I I I I
I I I I I I I

Introducnd valorile numerice ale rezistenelor i ale surselor se obine sistemul:
2 4 3 6 0 0 0 0 0 10
0 3 6 15 0 0 0 0
0 0 15 0 0 2 7 1 2 12
0 0 0 0 4 8 2 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5
, ,
, ,
, , ,
, ,
+ + + + + =
+ + + + =
+ + + + =
+ + + + +
I I I I I I I
I I I I I I I
I I I I I I I
I I I I I I
6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
0 15
0 0 0
0 0 0 0 0
0 0 0 0 0
+ =
+ + + + + =
+ + + + + + =
+ + + + + =

I
I I I I I I I
I I I I I I I
I I I I I I I

Fig.3.1.Circuitelectriccusursedeccirezistoare
R
1

E
1

R
2
R
4
R
3
E
2
R
7
R
6
R
5
R
8

E
3

Rezolvarea numeric a sistemelor de ecuaii 83
Determinantul matricei sistemului este d=683.834400
Soluiile calculate cu ajutorul metodei eliminrii lui Gauss sunt:

i i i i i i
i
1 2 3 4 5 6
7
1685145 1654348 3949904 0 030797 3410878 0508228
3919107
= = = = = =
=
. ; . ; . ; . ; . ; . ;
.

Semnele minus arat c sensul curenilor luai pentru scrierea ecuaiilor lui
Kirchhoff este contrar celor din realitate. Sistemul nu ndeplinete condiia pentru a fi
rezolvat cu metodele iterative .
2. Se consider sistemul :

4 4 0 4 0 7 32
0 23 54 15 01 2 7
13 0 34 6 2 0 3 14
0 3 14 0 34 2 8 21
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
. . . .
. . . . .
. . . . .
. . . . .
x x x x
x x x x
x x x x
x x x x
+ + =
+ + =
+ + =
+ + =

Soluiile sistemului obinute cu metoda eliminrii lui Gauss sunt:
x x x x
1 2 3 4
0 683916 9 484220 0 077529 0 444124 = = = = . ; . ; . ; . ; d=393.832664;
Prin metoda lui Jacobi, pentru care sistemul ndeplinete condiia de rezolvare, se
obin urmtoarele soluii: x x x x
1 2 3 4
0 683916 9 484220 0 077529 0 444124 = = = = . ; . ; . ; . ;
lund soluiile de start: x x x x
1 2 3 4
1 1 1 1 = = = = ; ; ; .


4
DERIVAREA NUMERIC*




n multe probleme tehnice este necesar s se cunoasc derivata ntr-un punct a unui
semnal eantionat. Rezultatele multor experimentri electronice sunt date sub form
de funcii tabelate: u f i = ( ) , i g u = ( ) etc. Calculul derivatelor acestor funcii ntr-un
anumit punct ne poate da informaii asupra unui parametru al circuitului cum ar fi
rezistena dinamic, inversul ei etc. Pentru determinarea derivatei funciilor tabelate
suntem nevoii s utilizm metodele numerice .
Metodele numerice de calcul al derivatei ntr-un punct dat, se pot aplica i
funciilor a cror expresie analitic este cunoscut, obinnd n acest mod tangenta la
curb n punctul de calcul.


4.1. DERIVATA NUMERIC PRIN DOU PUNCTE

Prin definiie derivata funciei f x ( ) n punctul x
0
,dac exist, este :
( ) f x
f(x x) f(x )
x
1
0
0 0
=
+
lim
A
A
(4.1)
Pentru o valoare mic a lui A
x
calculul expresiei :
D
+
=
( ) ( )
x
x f x x f
A
A +
0 0
(4.2)
poate aproxima destul de bine derivata funciei n punctul x
0
, f x
'
( )
0
. Valoarea lui Ax
poate fi i negativ, derivata funciei f x '( )
0
putnd fi aproximat i cu expresia:
D
-
=
( ) ( ) f x x f x
x
0 0

A
A
(4.3)
n figura 4.1 se observ c la limit pentru Ax 0 ambele corzi ale curbei, PQ i
QR, devin tangente la curb n x
0
, QT. Dac se consider coarda PR la curb, se
observ c ea aproximeaz mult mai bine derivata funciei n punctul x
0
.

( ) ( )
f x
f x x f x x
x
D D
+ -
'
( )
0
0 0
2 2
~
+
=
+ A A
A
(4.4)
Dac notm 2Ax h = , se obine derivata numeric n x
0
:
-
*)Bibliografie: [6], [7], [15]

Derivarea numeric

85
( ) f x
f x
h
f x
h
h
'
0
0 0
2 2
~
+
|
\

|
.
|

|
\

|
.
|
(4.5)
Deoarece n formula de calcul a derivatei numerice intervin numai dou puncte
x h
0
2 / i x h
0
2 + / , numim aceast formul derivata prin dou puncte a funciei
f x ( ) .
Pentru calculul derivatelor de ordin superior se aplic formula (4.5) pentru funcia
f x
'
( ). Pentru o mai bun nelegere se face un calcul complet al derivatei de ordinul
doi i trei a metodei de calcul a
derivatelor de ordin superior.


( )
( ) ( ) ( ) ( )
f x
f x
h
f x
h
h
f x h f x f x f x h
h
''
' '
0
0 0
0 0 0 0
2
2 2
~
+
|
\

|
.
|

|
\

|
.
|
=
+ +

( ) ( ) ( ) f x h f x f x h
h
=
+ +
0 0 0
2
2
(4.6)
( ) f x
f x
h
f x
h
h

'''
'' ''
0
0 0
2 2
~
+
|
\

|
.
|
|
\

|
.
|

|
.
|

\
|
|
.
|

\
|
+ |
.
|

\
|
+ |
.
|

\
|
+ |
.
|

\
|
+ |
.
|

\
|
+
=
h x f
h
x f
h
h
x f
h
x f
h
x f h x f
2
3
2
2
2 2 2
2
2
3
0 0
3
0 0 0 0
=
+
|
\

|
.
|
+
|
\

|
.
|
+
|
\

|
.
|

|
\

|
.
|
f x h f x
h
f x
h
f x h
h
0 0 0 0
3
3
2
3
2
3
2
3
2
(4.7)
n acest mod se poate obine orice derivat de ordin superior .


4.1.1. EROAREA DE TRUNCHIERE A DERIVATEI PRIN DOU
PUNCTE

Dezvoltm n serie Taylor funcia f x ( ) n jurul punctului x
0
, reinnd primii trei
termeni :
f x f x ( ) ( ) =
0
+ ( )
( )
( )
( ) x-x
f x
x-x
f x
x-x
f
' '' ''' 0
0
0
2
0
0
3
1 2 3! ! !
( ) + + (4.8)
y
x
P
Q
R

y f x = ( )
Fig.4.1.GraficulderivateinpunctulQ
Metode numerice n electronic

86
unde
| |
e x , x
0
. Substituim x x
h
= +
0
2
n dezvoltarea lui f x ( ) , (4.8).
( ) ( ) ( ) ( ) f x
h
f x
h
f x
h
f x
h
f
' ''
0 0 0
2
0
3
2 2 8 48
+
|
\

|
.
|
= + + +
'''
1
(4.9)
unde
1 0 0
2
e +

(
x ,x
h
.
Substituim x x
h
=
0
2
n dezvoltarea lui f x ( ) , (4.8)
( ) ( ) ( ) ( ) f x
h
f x
h
f x
h
f x
h
f
' '' '''
0 0 0
2
0
3
2
2 2 8 48

|
\

|
.
|
= + (4.10)
unde
2 0 0
2
e

(
x
h
,x . Scznd membru cu membru relaiile (4.9) i (4.10) rezult:

( )
( ) ( )
( )
f x
f x
h
f x
h
h
h f f
f x
h
f x
h
h
h
f
'
0
0 0 2
1 2
0 0 2
2 2
24 2
2 2
24
=
+
|
\

|
.
|

|
\

|
.
|

+
=
+
|
\

|
.
|

|
\

|
.
|

''' '''
'''
=

(4.11)
unde e +

(
x
h
,x
h
0 0
2 2
,
rezult c eroarea de trunchiere a derivatei prin dou puncte este :
e
T
= ( )
h
f
2
24

'''
(4.12)

Dac ( ) f M
'''
< pentru orice x e +

(
x
h
,x
h
0 0
2 2
atunci e
T
<
h
M
2
24



4.1.2. ALGORITMUL 4.1. DERIVATA PRIN DOU PUNCTE

{Variabile
x
0
: punctul n care se calculeaz derivata , real;
h : pasul, real ;
der : variabila derivatei, real;
{
calculeaz der =
( ) ( ) f x . h f x . h
h
0 0
0 5 0 5 +
;
}
Derivata este der ;
}


Derivarea numeric

87
4.1.3. IMPLEMENTAREA ALGORITMULUI 4.1

/* Funcia care implementeaz derivata prin dou puncte.
Funcia ntoarce valoarea derivatei
*/
double Derivata2P( double (*f) (double),
double x0,
double h)
{
return((f(x0+0.5*h)-f(x0-0.5*h))/h);
}

4.2. DERIVATA NUMERIC PRIN TREI PUNCTE

Deoarece n calculul acestei derivate numerice intervin trei puncte o denumim
derivata numeric prin trei puncte .
Se pune problema determinrii derivatei numerice a funciei f x ( ) n punctul x
0
, sub
forma:
( ) ( ) ( ) ( ) f x af x h bf x cf x h
'
0 0 1 0 0 2
= + + + (4.13)
unde x
0
, h
1
, h
2
sunt date cunoscute, iar a b c , , necunoscute. Pentru determinarea
acestor necunoscute vom considera funcia f x ( ) , o constant, liniar i ptratic .
Pentru f x c f x f x ( ) ( ) , ( ) ,
' '
= = = 0 0
0
iar ecuaia (4.13) devine:
0 = + + a b c , (4.14)
pentru f x x x f x f x ( ) ( ) ( ) , ( )
' '
= = =
0 0
1 1 i
1 0
1 2
= + + h a b h c , (4.15)
pentru f x x x f x x x f x ( ) ( ) ( ) ( ), ( )
' '
= = =
0
2
0 0
2 0 i
0 0
1
2
2
2
= + + h a b h c (4.16)
Deoarece h
1
, h
2
> 0 i determinantul sistemului A = h
1
h
2
(h
1
+h
2
) = 0, sistemul
este unic determinat. Rezolvnd sistemul, se obin valorile necunoscutelor :


( )
2 1 1
2
h h h
h
a
+

=
,
) (
2 1 2 1
2
1
2
2
h h h h
h h
b
+

= ,
( )
2 1 2
1
h h h
h
c
+
=
(4.17)

Formula derivatei numerice a funciei f x ( ) prin trei puncte este :


( ) ( ) ( ) ( )
( )
f x
h f x h h h f x h f x h
h h h h
'
( )
0
1
2
0 2 2
2
1
2
0 2
2
0 1
1 2 1 2
~
+ +
+
(4.18)
care d o eroare de trunchiere nul pentru funciile constante, liniare i ptratice.
Pentru h h h
1 2
2 = = / se obine formula derivatei numerice prin dou puncte.

4.2.1. EROAREA DE TRUNCHIERE A DERIVATEI PRIN TREI
Metode numerice n electronic

88
PUNCTE

Pentru funciile de grad mai mare ca doi, eroarea de trunchiere o determinm din
dezvoltarea n serie Taylor a funciei f x ( ) :
f x f x
x x
f x
x x
f x
x x
f ( ) ( )
( )
!
( )
( )
!
( )
( )
!
( )
' ' '
= +

+

+

0
0
0
0
2
0
0
3
1 2 3
(4.19)
unde e[ , ] x x
0
.
Substituim x x h =
0 1
i rezult:
( ) ( ) ( )
1
' ' '
3
1
0
2
1
0
1
0 1 0
! 3 ! 2 ! 1
) ( ) ( f
h
x f
h
x f
h
x f h x f
'' '
+ = (4.20)
unde
| |

1 0 1 0
e x -h ,x .
( ) ( ) ( ) f x h f x
h
!
f x
h
!
f x
h
!
f
' ''
( ) ( )
0 2 0
2
0
2
2
0
2
3
2
1 2 3
+ = + + +
'''
(4.21)
unde
| |

2 0 0 2
e x ,x +h .
Se nmulete egalitatea (4.20) cu - h
2
2
i egalitatea (4.21) cu h
1
2
i se adun. Rezult :
( )
( )
( ) ( )
( ) ( )
( ) ( )
| |
f x
h f x h h h f x h f x h
h h h h
h h
h h
h f h f
'
( )
0
1
2
0 2 2
2
1
2
0 2
2
0 1
1 2 1 2
1 2
1 2
2 1 1 2
6
~
+ +
+

+
+
''' '''
(4.22)

Eroarea de trunchiere este dat de formula :

( )
( ) ( )
| |
e
h h
h h
h f h f
T
'''
=
+
+
1 2
1 2
2 1 1 2
6
'''
(4.23)
Dac ( ) f x M
'''
< pentru orice
| |
x x -h ,x h e +
0 0 2
atunci
e
hh
M
T
s
1 2
6
(4.24)


4.2.2. ALGORITMUL 4.2. DERIVATA PRIN TREI PUNCTE

{Variabile
x
0
: punctul n care se calculeaz derivata , real ;
h
1
: distana punctului din stnga fa de x
0
, real ;
h
2
: distana punctului din dreapta fa de x
0
, real ;
der : variabila derivatei , real;
{
calculeaz der =
( )
( )
( ) ( )
( )
h f x h h h f x h f x h
h h h h
1
2
0 2 2
2
1
2
0 2
2
0 1
1 2 1 2
+ +
+
;
}


Derivarea numeric

89
4.2.3. IMPLEMENTAREA ALGORITMULUI 4.2

/* Funcia care implementeaz derivata prin trei puncte.
Funcia ntoarce valoarea derivatei }
*/
double Derivata3P( double (*f) (double),
double x0,
double h1,
double h2)
{
return(h1*h1*f(x0+h2)+(h2*h2-h1*h1)*f(x0)-h2*h2*f(x0-
h1))/(h1*h2*(h1+h2));
}


4.3. DERIVATA NUMERIC PRIN CINCI PUNCTE

Pentru formula acestei derivate se utilizeaz cinci puncte, dou cte dou egal
distanate de punctul central, n care se calculeaz derivata :
x h x h x x h x h
0 0 0 0 0
2 2 + + , , , , (4.25)
Formula derivatei numerice prin cinci puncte se caut sub forma :
( ) ( ) ( ) ( ) ( ) ( ) h x +ef +h x df x cf h x bf h x af x f 2 2
0 0 0 0 0 0
'
+ + + + = (4.26)
Pentru determinarea necunoscutelor a , b, c, d, e, particularizm funcia f x ( )
cu funcie: constant, liniar, ptratic, de gradul trei i de gradul patru .
Pentru 0 ) ( , 0 ) ( ) (
0
' '
= = = x f x f c x f i ecuaia (4.26) devine:
0 = + + + + a b c d e (4.27)
Pentru f x x x f x f x ( ) ( ) , ( )
' '
= = =
0 0
1 1i
1 2 0 2 = + + + ha hb c hd he (4.28)
Pentru f x x x f x x x f x ( ) ( ) ( ) ( ), ( )
' '
= = =
0
2
0 0
2 0 i
0 4 0 4
2 2 2 2
= + + + + h a h b c h d h e (4.29)
Pentru f x x x f x x x f x ( ) ( ) ( ) ( ) , ( )
' '
= = =
0
3
0
2
0
3 0 i
0 8 0 8
3 3 3 3
= + + + h a h b c h d h e (4.30)
Pentru f x x x f x x x f x ( ) ( ) ( ) ( ), ( )
' '
= = =
0
4
0 0
4 0 i
0 16 0 16
4 4 4 4
= + + + + h a h b c h d h e (4.31)
Determinantul sistemului format de ecuaiile (4.27), (4.28), (4.29), (4.30), (4.31) este
A = 144h
10
= 0 pentru c h >0. Ca urmare sistemul dat este unic determinat i are
soluiile :
a = 12h
9
, b = -96h
9
, c = 0 , d = 96h
9
, e = -12h
9
(4.32)
Formula derivatei numerice prin cinci puncte a funciei f x ( ) este :
( ) ( ) ( ) ( ) | | h x f h x f h x f h x f
h
x f 2 8 8 2
12
1
) (
0 0 0 0 0
'
+ + + =
(4.33)
Metode numerice n electronic

90
Aceast formul de derivare numeric are eroarea de trunchiere zero pn la funcii de
gradul patru. Pentru funcii de grad mai mare ca patru, eroarea de trunchiere se
determin analog ca la derivatele precedente, obinndu-se valoarea :
( )
IV
T
f h e
4
5
24
=


(4.34)
unde
| |
x x h , x h e +
0 0
2 2
Dac numrul de puncte crete pentru calculul unei derivate, atunci eroarea de
trunchiere se micoreaz.


4.3.1. ALGORITMUL 4.3. DERIVATA PRIN CINCI PUNCTE

{Variabile
x
0
: punctul n care se calculeaz derivata, real ;
h : pasul, real ;
der : variabila derivatei, real;
{
calculeaz der = ( ) ( ) ( ) ( )
| |
1
12
2 8 8 2
0 0 0 0
h
f x h f x h f x h f x h + + ;
}
Derivata este der ;
}


4.3.2. IMPLEMENTAREA ALGORITMULUI 4.3

/* Funcia care implementeaz derivata prin cinci puncte.
Funcia ntoarce valoarea derivatei
*/
double Derivata5P( double (*f) (double),
double x0,
double h)
{
return(f(x0-2*h)-8*f(x0-h)+8*f(x0+h)-f(x0+2*h))/(12*h);
}

4.4. CALCULUL DERIVATEI FUNCIILOR TABELATE

Se tie c numai funciile continue au derivat. n practic ntlnim des cazuri cnd
o funcie continu este dat sub form de eantioane, fr a cunoate expresia analitic
a funciei. n acest caz, se poate calcula derivata funciei date sub form de tabel cu
ajutorul programului prezentat n paragraful 4.4.1. Deoarece eantioanele pot fi luate
la pai diferii, se utilizeaz metoda derivrii n trei puncte. Pentru ca derivata s fie
Derivarea numeric

91
ct mai exact este necesar ca pasul de eantionare s fie ct mai mic. In caz contrar,
derivata se va calcula cu eroare mare.


4.4.1. PROGRAM PENTRU CALCULUL DERIVATEI UNEI
FUNCII EANTIONATE

#include <stdio.h>
#include <conio.h>
#include <math.h>
{
double Derfcnr( double h1,
double h2,
double f1,
double f0,
double f2)
{
return (h1*h1*f2+(h2*h2-h1*h1)*f0-h2*h2*f1)/(h1*h2*(h1+h2);
}
void main(void)
{
double pas1,pas2,fc1,fco,fc2;
clrscr( );
printf(Dai pasul1) ; scanf(%lf,&pas1);
printf (Dai pasul2); scanf(%lf,&pas2);
printf (dai funcia in x0-h1);scanf(%lf,&fc1);
printf (Dai funcia in x0);scanf(%lf,&f0);
printf (Dai funcia in x0+h2);scanf(%lf,&fc2);
printf(derivata este %lf\n,Derfcnr(pas1,pas2,fc1,fc0,fc2));
getche( );
/

4.5. APLICAII

1. Se d caracteristica I-U a unei diode tunel n figura 4.2. Se cere rezistena dinamic
a diodei n punctele A,B,C,D,E,F,G,H,I,J,K,L.

Pentru calculul rezistenei dinamice a diodei n punctele cerute se utilizeaz programul
dat n paragraful 4.4.1. Acest program ndeplinete condiiile problemei deoarece nu
se cunoate expresia analitic a caracteristicii diodei tunel i se cere rezistena
dinamic n diferite puncte ale caracteristicii. Din grafic se determin, la diferite
distane h
1
i h
2
de punctul dat, valorile funciei. Aceste valori sunt date n tabelul
4.1


Metode numerice n electronic

92














Tabelul 4.1.


h
1

h
2

f
1

f
0

f
2
Derivata
A 0.2 0.3 0.7 0.1 0.2 0.223333
B 0.2 0.3 2.3 27 40 29.33333
C 0.2 0.2 40 50 77 92.53333
D 0.01 0.01 60 65 68 400.3333
E 70
F 0.2 0.3 130 150 170 86.66667
G 0.2 0.3 190 200 240 83.33333
H 0.25 0.2 220 250 295 38.33333
I 0.1 0.1 250 275 300 500.8922
J 300
K 0.2 0.3 380 400 430 100.4356
L 0.2 0.3 440 450 470 56.34012


2. Se consider funcia
f(x) x x x . = + 2 3 12
2
exp( ) sin( )
i se cere derivata funciei n punctul x = 1.
Derivata s-a calculat prin toate metodele i s-au obinut urmtoarele rezultate:
-derivata prin dou puncte h=10
6
; f
'
( ) . 1 15628085 =
-derivata prin trei puncte h ; h . ; f( ) .
1
6
2
6
10 15 1 15 628085 = = =


-dervata prin cinci puncte ( ) h f = =

10 1 15628085
6
; . .







5
INTEGRAREA NUMERIC*
Metodele numerice de integrare se clasific dup tipul funciei de integrat i
valoarea limitelor de integrare.
I. Prima grup de metode se refer la funciile continue i cu limite finite de
integrare. Aceste metode se mpart la rndul lor n dou subgrupe n funcie de modul
de divizare a intervalului de integrare:
a) Metode ce mpart intervalul de integrare n subintervale de aceeai lungime,
numrul subintervalelor fiind impus de operator. Dintre aceste metode amintim:
metoda dreptunghiului, metoda trapezului, metoda lui Simpson i metoda lui
Richardson;
b) Metode ce mpart intervalul de integrare n aa fel nct eroarea de calcul s fie
minim. Dintre aceste metode amintim i studiem metoda cuadraturii a lui Gauss.
II. A doua grup de metode se refer la integralele improprii, adic la integrarea
funciilor cu discontinuiti de spea nti i a doua pe intervale de integrare finite sau
integrarea funciilor continue pe intervale de integrare infinite.
III. A treia grup de metode numerice de integrare se ocup cu integrarea dubl
a funciilor de dou variabile. Amintim n acest sens formulele de cubatur a
trapezului i a lui Simpson.

5.1. INTEGRAREA FUNCIILOR DE O SINGUR
VARIABIL. METODE CU DIVIZAREA CONSTANT

Aceste metode mpart intervalul de integrare ntr-un numr n de subintervale de
lungime egal. Numrul n are influen asupra preciziei rezultatului integralei astfel:
cu ct n este mai mare, cu att precizia rezultatului este mai mare, deci cele dou
mrimi sunt direct proporionale. Numrul n este ales de proiectant.


5.1.1. METODA DREPTUNGHIULUI

Aceast metod are erori de calcul mari pentru funcii diferite de o constant. n
cazul cnd se dorete o evaluare grosier a unei integrale, se poate aplica aceast
metod, iar dac numrul subintervalelor pentru intervalul de integrare crete, eroarea

*)Bibliografie: [6],[7],[15],[22]
de calcul scade. Aceast cretere a numrului de subintervale se face n detrimentul
Metode numerice n electronic

94
timpului de calcul. Se consider :
I= f x x
a
b
( )d
}
(5.1)
unde f x ( ) este o funcie continu pe
| |
a b , i a , b sunt finite.
I- reprezint aria haurat punctat din fig. 5.1.
Calculul numeric al acestei integrale se realizeaz prin divizarea intervalului | | a b ,
n n subintervale de lungime egal cu
Ax
b a
n
x x h
i i+ i
=

= =
1
, i = 0,1,...,n-1. (5.2)
Se calculeaz aproximativ aria fiecrui dreptunghi
s
b a
n
f x
i i
=

( ) (5.3)
i se nsumeaz
s =h f x
i
i
n
i
i=
n
=


0
1
0
1
( ) (5.4)
unde x a h i
i
= +
Formula (5.4) reprezint formula
de integrare a dreptunghiului.
Pentru funcia constant metoda
dreptunghiului are eroarea de
calcul nul deoarece aria format
de funcie, axa Ox i verticalele
n capetele intervalului este egal
cu integrala din funcie pe
intervalul dat. Aceast metod
nu are aplicaii n practic
datorit erorilor mari, pe care le
introduce.






5.1.1.1. Algoritmul 5.1. Metoda dreptunghiului

{ Variabile
ls: limita stng a intervalului de integrare, real;
ld: limita dreapt a intervalului de integrare, real;
n: numrul de subintervale, ntreg;
h: valoarea lungimii unui subinterval, real;
sum: valoarea integralei, real;
{
Fig.5.1.ReprezentareagraficaintegraleiI
f x
i
( )
f x
i
( )
+1

a b
x
i
x
i+1

x
y
Integrarea numeric

95
sum=0;
calculeaz h
ld ls
n
=

;
pentru i=0, , n-1 calculeaz sum =sum +h* f i ( )
tiprete valoarea integralei sum;
}
}


5.1.1.2. Implementarea algoritmului. Metoda dreptunghiului

/* Funcia care implementeaz metoda de integrare a dreptunghiului.
Funcia ntoarce valoarea integralei.
*/
double DreptunghiF(double (*f)(double),
double ls,
double ld,
int nrpas)
{
int i;
double suma=0,h;
h=(ld-ls)/nrpas;
for(i=0;i<=nrpas-1;i++)suma+=h*f(ls+i*h);
return suma;
}


5.1.2. METODA TRAPEZULUI

Fie I f x x
a
b
=
}
( )d unde f x ( ) este continu pe
| |
a b , i a , b sunt finite.
Funcia este reprezentat grafic n figura 5.2, iar integrala I reprezint aria haurat
i punctat.
Intervalul
| |
a b , se mparte n n subintervale de lungime egal
Ax x x
b a
n
h
i i i
= =

=
+1
, i=0,1,...,n-1 , x =a x =b
n 0
si
Aria I
i
este aproximat cu aria trapezului ( ( ), ( ))
, ,
x x f x f x
i i i i + + 1 1


I
f x f x
h
i
i i
~
+
+
( ) ( )
1
2
(5.5)

| | | |
I
h
f x f x
h
f x f x ... x f x
i i n n
i
n
~ + = + + + +
+
=

2 2
2 2
1 0 1 1
0
1
( ) ( ) ( ) ( ) ( ) ( ) (5.6)
Metode numerice n electronic

96
Aceast expresie prezint formula de integrare numeric prin metoda trapezului i are
eroare de trunchiere nul pentru funcii pn la gradul nti inclusiv.
Metoda de integrare a
trapezului este superioar din
punct de vedere al erorilor de
trunchiere fa de metoda
dreptunghiului, dar ca timp de
calcul este comparabil cu
aceasta, pentru un acelai
numr de pai de integrare.
Simplitatea ei o face
utilizabil n numeroase cazuri,
precizia ei depinznd de
numrul de subintervale ales.
Cu ct acest numr este mai
mare cu att precizia este mai
bun, dar timpul de calcul
al integralei crete. Aceast in-
tegral st la baza metodei lui
Richardson.

5.1.2.1. Eroarea de trunchiere pentru metoda trapezului

Vom calcula eroarea de trunchiere pentru I
i
(5.5). Pentru aceasta vom dezvolta funcia
f x ( ) n jurul punctelor x
i
i x
i +1
:
f x = x
x x
!
f x +
x-x
!
f x ...
i
i
i
i
i
( ) ( )
( )
( )
( )
( ) +

' ' ' +
1 2
2
(5.7)
f(x) f x
x x
!
f x
x x
!
f x ...
i
i
i
i
i
= +

' +

' ' +
+
+
+
+
+
( )
( )
( )
( )
( )
1
1
1
1
2
1
1 2
(5.8)
Cu ajutorul celor dou dezvoltri (5.7) i (5.8) vom construi o nou funcie, media
acestor funcii care aproximeaz cel mai bine funcia n intervalul ( , ) x x
i i +1
.
Considernd x x h
i i +
= +
1
putem scrie noua funcie astfel:


f x =
f x f x
x x
f x f x
h f x
x x
f x f x
h x x
f x h
f x ..
i+ i
i
i i
i
i
i i
i
i
i
( )
( ) ( )
( )
( ) ( )
( )
( )
( ) ( )
( )
( )
( )
1 1
1
2 1 1
2
1
2 2
4 2 4
+
+
' + '
' +
+
' ' + ' '

' '
+ '' +
+
+
+ +
+
.
(5.9)

Prin integrarea acestei funcii (5.9) de la x
i
la x
i +1
se obine urmtorul rezultat:
f x x
f x f x
h
f x f x
h
f x
h
i i
x
x
i i i
i
i
( )
( ) ( ) ( ) ( ) ( )
d =
+
+
' + '

'
+
+ + +
+
}
1 1 2 1 2
2 4 2
1

+
' ' + ' '

' '
+
' '
+ =
+ +
f x f x
h
f x
h
f x
h ...
i+ i i i
( ) ( ) ( ) ( )
1 3 1 3 1 3
12 4 4

Fig.5.2.Reprezentareagraficametodeideintegrare
atrapezului
f x
i
( )
f x
i
( )
+1

a x
i
x
i+1

b
x
y
Integrarea numeric

97
=
+

' '

' ' + '
+
+ + +
f x f x
h
f x f x
h
f x f x
h .
i i i i i i
( ) ( ) ( ) ( ) ( ) ( )
1 1 2 1 3
2 4 12
.. (5.10)
Observm c eroarea de trunchiere este
e
f x f x
h
f x f x
h ..
T
i i i i
i
=


' ' + '
+
+ +
( ) ( ) ( ) ( )
1 2 1 3
4 12
. (5.11)
Considerm c eroarea de trunchiere este de forma:


| |
e k h f x f x
T i i
i
~ ' '
+
2
1
( ) ( ) (5.12)
unde k se determin astfel ca formulele (5.11) i (5.12) s fie egale. Considerm o
funcie pentru care avem eroare de trunchiere prin metoda trapezului. Aceasta este
funcia ptratic f x x ( ) =
2
. innd cont c x x h
i i +
= +
1
rezult :
x x
x x x
x h h x
h
x
x
x
x
i i
i i
i
i
i
i
2
3
3
3 3
2 2
3 1
1
3 3 3
+
+
}
= =

= + +
+
d (5.13)
Aplicnd metoda trapezului aceleai funcii avem:
x x
x x
h e x h x h
h
e
i+ i
T
x
x
i i T
i
i
i
i
2 1
2 2
2 2
2
2 2
1
d =
+
+ = + + +
+
}
( )
(5.14)
Din relaiile (5.13) i (5.14) rezult e h
T
i
=
3
6 / (5.15)
Aplicnd formula (5.12) pentru f x x ( ) =
2
rezult
e k h ( x x ) k h
T i i
i
= =
+
2
1
3
2 2 2 (5.16)
Din formulele (5.16) i (5.15) rezult k=-
1
12

Eroarea de trunchiere pentru trapezul ( , , ( ), ( )) x x f x f x
i i i i + + 1 1
este

| |
e h f x f x
T i i
i
~ ' '
+
1
12
2
1
( ) ( ) (5.17)
iar pentru ntreaga integral pe intervalul
| |
a b , avem cu aproximaie eroarea de
trunchiere:

| |
e h f b f a
T
' '
~ ( / ) ( ) ( ) 1 2
2
(5.18)
Aceast eroare reprezint aproximativ suma ariilor cuprinse ntre curb i coarda dus
prin punctele ( , ( )), ( , ( )) x f x x f x
i i i i + + 1 1
, i = 0,1,...,n-1


5.1.2.2. Eroarea de rotunjire pentru metoda trapezului

Formula de calcul a integralei numerice prin metoda trapezului este dat n expresia
(5.6). Construim graful de procedur a formulei de calcul considernd c f x
i
( ) au
erorile relative c
i
, i = 0,1,...,n , nodurile n care se realizeaz operaiile r
i
, i
=1,2,...,n+3.
E ...
f x
f x f x
f x
f x f x
r
f x f x
f x f x f x
I
=
+
+
+
+
+
+ +
+ ((( (((
( )
( ) ( )
( )
( ) ( )
)
( ) ( )
( ) ( ) ( )
c c
1
1
1 2
2
2
1 2
1
1 2
1 2 3


Metode numerice n electronic

98
+
f x
f x f x f x
r ... r
f x f x ... f x
f x f(x ... f(x f x
n
n
n n
c
3
3
1 2 3
2 3
1 2 2
1 2 2 1

+ +
+ +
+ + +
+ + + +
+



( )
( ) ( ) ( )
)
( ) ( ) ( )
( ) ) ) ( )
)

+
+ + +
+ +
+ + +
+ + + +
+

c
n
n
n
n n
n
n n
f x
f x f x ... f x )
r r
f x f x ... x
f x f x ... f x f x
1
1
1 2 1
2 1
1 2 1
0 1 1
2 2 2
2 2
(
( ) ( ) (
)
( ) ( ) ) ) (
( ) ( ) ( ) ( )


+
+
+
+
+
+
+ + + +
+

(
( )
( ) ( )
( )
( ) ( )
)
( ) ( )
( ) ( ) ( ) ( )
c c
0
0
0 1 0
0
0 1 1
2 2
f x
f x f x
f x
f x f x
r
f x f x
f x f x ... f x f x
n
n
n
n
n
n n


+ + + = + + +
+
+ + + +
+
+ + + +

r r r r r
f x f x
f x f x ... f x f x
n h n n h n n
n
n n
1 2 1 2
0
0 1 1
2 2
c c
( ) ( )
( ) ( ) ( ) ( )
+
+ + + +
+
+ + + +
+

c c
0
f x
f x f x ... f x f x
f x
f x f x ... f x f x
n n
n
n
n n
( )
( ) ( ) ( ) ( )
( )
( ) ( ) ( ) ( )
0
0 1 1 0 1 1
2 2 2 2


+ +
+ +
+ + + +
+
+ + + +
+

( )
( ) ( ) ( )
( ) ( ) ( ) ( )
( )
( ) ( ) ( ) ( )
r r
f x + f x ... f x
f x f x ... f x f x
f x
f x f x ... f x f x
n n
n
n n
n
n
n n
2 1
1 2 1
0 1 1
1
1
0 1 1
2 2 2
2 2
2
2 2
c

| |
+r
f x +f x ... f x
f x f x ... f x f x
f x
f x f x ... f x f x
n-
n
n n
n
n n
3
1 2 2
0 1 1
2
0 1 1
2
2 2
2
2 2
( ) ( ) ( )
( ) ( ) ( ) ( )
( )
( ) ( ) ( ) ( )
+ +
+ + + +
+
+ + + +
+

c
n-2


| |
+
2
r
f x +f x ... f x
f x f x ... f x f x
f x
f x f x ... f x f x
n-
n
n n n n
4
1 2 3
0 1 1
2
0 1 1
2
2 2
2
2 2
( ) ( ) ( )
( ) ( ) ( ) ( )
...
( )
( ) ( ) ( ) ( )
+ +
+ + + +
+ +
+ + + +
+


c

+
+ + + +

c
1
2
2 2
1
0 1 1
f x
f x f x ... f x f x
n n
( )
( ) ( ) ( ) ( )
(5.19)

innd cont c eroarea relativ este c
I
I
e
I
= , unde e
I
este eroarea absolut, putem
calcula eroarea absolut:
| |
e r r
h f x f x h f x
I n
n
= + + +
+
+

+
+ +
(
( ) ( ) ( )
n 1 h n 2
) I c c c
0
0
0
2 2


| |
+ + + + + + +

c
n-1
h f x r r h f x f x .... f x
n n n n
( ) ( ) ( ) ( ) ( )
1 1 2 1 2 1


| |
+ + + + + +

c
n n n n
h f x r h f x f x .... f x
2 2 3 1 2 2
( ) ( ) ( ) ( )

| |
+ + + + + + +

c
n 3
h f x r h f x f x .... f x ....
n n n
( ) ( ) ( ) ( )
3 4 1 2 3

+ + + + c c
2 1
h f x h f x r h f x f x ( ) ( ) [ ( ) ( )]
2 1 1 1 2
(5.20)



Integrarea numeric

99

Dac considerm c toate erorile relative ce intervin n calcul se obin tot prin rotunjire
i sunt mai mici ca 5
.
10
-t
unde t este mantisa calculatorului i | f x
i
( ) |<o pentru i =
0, 1, 2,...., n , atunci rezult urmtoarea margine a erorii absolute:

e I h n n
n n
I
t
s + + + + + + +
+ + + + + + + =

5 10 3
2
2 1 2
3 4 2
[ ( ) ( )
( ) ( ) ... )]
(o
o
o o o o
o o o o o o o


= + + + =

5 10 3
t
nh h h n n [ / ( ) / ] o o o 5 2 3 8 2
2

= +

5 10 9 3 2
2 t
h n n . ( ) / o

e h n n
I
t
s +

5 10 9 3 2
2
o( ) / (5.21)

Se observ c eroarea de rotunjire depinde proporional de valoarea lui n ( numrul de
puncte ale diviziunii ). Cnd n crete, eroarea de rotunjire se mrete datorit creterii
numrului de operaii de calcul.


5.1.2.3. Algoritmul 5.2. Metoda trapezului

{ Variabile
ls: limita stng a intervalului de integrare, real;
ld: limita dreapt a intervalului de integrare, real;
Fig.5.3.Grafuldeprocedurpentrumetodatrapezului
Metode numerice n electronic

100
n: numrul de subintervale, ntreg;
h: valoarea lungimii unui subinterval, real;
sum: valoarea integralei, real;

{
calculeaz h
ld ls
n
=

;
calculeaz sum
f l f l
h
s d
=
+

( ) ( )
2
;
pentru i=1 pn la n-1 calculeaz sum =sum +h* f (ls+i*h);
tiprete valoarea integralei sum;
}

5.1.2.4. Implementarea algoritmului 5.2

/* Funcia care implementeaz metoda de integrare a trapezului.
Funcia ntoarce valoarea integralei
*/
double TrapezF(double (*f)(double),
double ls,
double ld,
int nrpas)
{
int i;
double suma,h;
h=(ld-ls)/nrpas;
suma=0.5*h*(f(ls)+f(ld));
for(i=1;i<=nrpas-1;i++)suma+=h*f(ls+i*h);
return suma;
}


5.1.3. METODA LUI RICHARDSON

Aceast metod d o precizie mai bun de calcul a integralei numerice dect
metoda trapezului i s-a obinut prin modificarea metodei trapezului.
Se pleac de la eroarea de trunchiere a metodei trapezului (5.18), e
T
= Ch
2
pentru
diviziunea h = (b-a)/n.
Pentru o alt diviziune k = (b-a)/m se obine eroarea de trunchiere

e
T
=Ck
2
(5.22)
Ca urmare
I=I
h
+Ch
2

I=I
k
+Ck
2
(5.23)
Integrarea numeric

101

Prin scdere se calculeaz C=
I -I
k h
h k
2 2

i nlocuind n formula integralei I rezult:



I I
I I
k
h
h
h k
= +

|
\

|
.
|
2
1
(5.24)
expresie ce poart denumirea de formula lui Richardson i are o precizie mai mare
dect metoda trapezului.


5.1.3.1. Algoritmul 5.3. Metoda lui Richardson

{ Variabile
ls: limita stng a intervalului de integrare, real;
ld: limita dreapt a intervalului de integrare, real;
n: numrul de subintervale, ntreg;
m: numrul de subintervale, ntreg;
h: valoarea lungimii unui subinterval cu diviziunea n, real;
k: valoarea lungimii unui subinterval cu diviziunea m, real;
sumh: valoarea integralei cu diviziunea h, real;
sumk: valoarea integralei cu diviziunea k, real;
sum: valoarea integralei, real;
{ calculeaz h
ld ls
n
=

;
calculeaz k
ld ls
m
=

;
calculeaz sumh
f l f l
h
s d
=
+

( ) ( )
2
;
calculeaz sumk
f l f l
k
s d
=
+

( ) ( )
2
;
pentru i=1 pn la n-1 calculeaz sumh =sumh
+h* f (ls+i*h);
pentru i=1 pn la m-1 calculeaz sumk=sumk+k*
f (ls+i*k);
calculeaz sum=sumh+(sumh-sumk)/((k/h)*(k/h)-1);
tiprete valoarea integralei sum;
}

5.1.3.2. Implementarea algoritmului 5.3

/* Funcia care implementeaz metoda de integrare a lui Richardson.
Funcia ntoarce valoarea integralei
Metode numerice n electronic

102
*/
double RichardsonF(double (*f)(double),
double ls,
double ld,
int nrpash,
int nrpask)
{
int i;
double suma,sumah,sumak,h,k;
h=(ld-ls)/nrpash;
k=(ld-ls)/nrpask;
sumah=0.5*h*(f(ls)+f(ld));
sumak=0.5*k*(f(ls)+f(ld));
for(i=1;i<=nrpash-1;i++)sumah+=h*f(ls+i*h);
for(i=1;i<=nrpask-1;i++)sumak+=k*f(ls+i*k);
suma=sumah+(sumah-sumak)/(((k*k)/(h*h)-1));
return suma;
}


5.1.4. METODA LUI SIMPSON

Metoda lui Simpson utilizeaz tot procedeul mpririi intervalului de integrare n
subintervale egale, dar aproximarea este aici fcut cu aria de sub o parabol, pentru
dou intervale adiacente. Parabola trece prin trei puncte consecutive ale diviziunii.
Formula de calcul a metodei lui Simpson se poate deduce mult mai uor utiliznd
formula lui Richardson. Aceast formul se utilizeaz pentru dou diviziuni ntre care
avem relaiile:
k h = 2 , k
b a
m
=

, h
b a
n
=

(5.25)
Scriem formula metodei trapezului pentru fiecare diviziune n parte:


| |
I
h
f x f x f x + f x +... f x f x
h n n
= + + + +

2
2 2 2 2
0 1 2 3 1
( ) ( ) ( ) ( ) ( ) ( ) (5.26)


| |
I h f x f x f x + f x +... f x f x
k n n
= + + + +

( ) ( ) ( ) ( ) ( ) ( )
0 2 4 6 2
2 2 2 2 (5.27)

Aplicm formula lui Richardson (5.23):

I h
f x
f x f x +f x +f x +... f x
f x
n
n
= + + + +

(
+

( )
( ) ( ) ( ) ( ) ( )
( )
0
1 2 3 4 1
2 2


+ + + + +

(
+

h
f x
f x f x + f x + f x +... f x
f x
n
n
( )
( ) ( ) ( ) ( ) ( )
( )
0
1 2 3 4 1
6
1
3
1
3
1
3
1
3
1
3 6

Integrarea numeric

103

+

(
h - f x - f x - f x -... f x f x
n n
1
3
2
3
2
3
2
3
1
3
0 2 4 2
( ) ( ) ( ) ( ) ( )


| |
I
h
f x f x f x + f x +... f x f x
n n
= + + + +

3
4 2 4 4
0 1 2 3 1
( ) ( ) ( ) ( ) ( ) ( ) (5.28)

Expresia reprezint formula de calcul numeric al integralei pentru metoda lui Simpson.

5.1.4.1. Algoritmul 5.4. Metoda lui Simpson

{ Variabile
ls: limita stng a intervalului de integrare, real;
ld: limita dreapt a intervalului de integrare, real;
n: numrul de subintervale, ntreg;
h: valoarea lungimii unui subinterval, real;
suma: valoarea integralei, real;
{ Variabile
ls: limita stng a intervalului de integrare, real;
ld: limita dreapt a intervalului de integrare, real;
n: numrul de subintervale, ntreg;
h: valoarea lungimii unui subinterval, real;
suma: valoarea integralei, real;
{
calculeaz h
ld ls
n
=

;
calculeaz sum h
f l f l
s d
=
+
.
( ) ( )
3
;
pentru i=1 pn la n-1
dac i = par atunci calculeaz sum =sum
+(2/3)*h* f (ls+i*h);
altfel calculeaz sum=sum+(4/3)*h* f (ls+i*h);
tiprete valoarea integralei sum;
}
}


5.1.4.2. Implementarea algoritmului 5.4

/* Funcia care implementeaz metoda de integrare a lui Simpson.
Funcia ntoarce valoarea integralei. */
double SimpsonF(double (*f)(double),
double ls,
double ld,
Metode numerice n electronic

104
int nrpas)
{
int i;
double suma,h;
h=(ld-ls)/nrpas;
suma=h*(f(ls)+f(ld))/3.0;
for(i=0;i<=nrpas-1;i++)suma+=2*(1+i%2)*h*f(ls+i*h)/3.0;
return suma }


5.2.INTEGRAREA FUNCIILOR DE O SINGUR
VARIABIL CU METODE CU DIVIZAREA
VARIABIL

Dintre aceste metode se prezint metoda cuadraturii lui Gauss. Aceast metod
determin punctele de divizare ale intervalului de integrare astfel ca eroarea de calcul
a integralei s fie minim.


5.2.1. METODA CUADRATURII GAUSSIENE CU DOU PUNCTE

Aceast metod reduce orice interval de integrare
| |
a b , la intervalul |-1,1| cu ajutorul
formulei de substituie:
y
x b a
b a
=
+

2 ( )
(5.29)
Pentru x =a rezult y =-1, iar pentru x =b rezult y =1. Substituia este dat de
formula:
x b a y b a = + +
1
2
1
2
( ) ( ) (5.30)
i d d x b a y =
1
2
( ) (5.31)
Ca urmare, integrala I f x x
a
b
=
}
( )d se transform n integrala:
I f b a y b a b a y y y
+ +
= + +

(
=

} }
1
2
1
2
1
2
1
1
1
1
( ) ( ) ( ) ( ) d d (5.32)

Integrarea numeric

105



Formula de calcul a integralei o demonstrm pentru cazul a dou puncte n intervalul
de integrare, puncte ce le determinm astfel ca integrala I y y =

+
}
( )d
1
1
s dea
eroarea zero pn la un polinom de gradul trei inclusiv. Alegerea punctelor de divizare
a intervalului |-1,1| se face astfel ca ntre ariile S
1
, S
2
, S
3
s avem relaia
S
1
=S
2
+S
3
(5.33)
pn la o funcie ( y) de gradul trei.
Integrala prin metoda cuadraturii o calculm cu formula: I=k
0
(y
0
)+k
1
(y
1
)
unde y
0
i y
1
sunt punctele de divizare a intervalului, iar k
0
, k
1
sunt nite ponderi,
toate necunoscute pe care le vom determina.

Calculm valoarea exact a integralei I y y =

}
( )d
1
1
innd cont de formula (5.33)
I= y y= a a y y
-
+
-
+

1
1
0 1
1
1
} }
+ ( ) ( ) d d (5.34)
unde z a a y = +
0 1
reprezint ecuaia dreptei care trece prin punctele ( , ( )) y y
0 0
i
( , ( )) y y
1 1
.
Considerm funcia ( ) y de gradul trei, pentru care integrala se calculeaz cu eroarea
zero:
( ) y =b +b y+b y +b y
0 1 2
2
3
3
(5.35)
Aceast funcie o putem scrie i sub forma urmtoare:
o o ( ) ( )( ) ) y a +a y+ y-y y-y y = (
0 0 1 0 1 1
+ (5.36)

Fig.5.4.Reprezentareagraficafunciei z y = ( ) iapunctelordedivizare
z y = ( )
y
0
y
1
y
z a a y = +
0 1
z
Metode numerice n electronic

106
punnd n eviden trecerea curbei ( ) u prin punctele ( , ( )) y y
0 0
i ( , ( )) y y
1
1 ale
dreptei z a a y = +
0 1
.
Egalitatea (5.34) se scrie sub forma:
| | ( ) ( )( a a y y a a y y y y-y y y
0 1
1
1
0 1 0 1 1
+ = + + +

} }
d )( ) d
0
1
+1
o o (5.37)
i, pentru ca aceast egalitate s fie satisfcut pentru orice o
0
i o
1
, trebuie ca
( )( ) y y y y y
+
=

} 0 1
1
1
0 d (5.38)
i y y y y y y
+
( )( ) =

} 0 1
1
1
0 d (5.39)
Din aceste dou ecuaii se obine sistemul:

| |
| |
y y y y y y y
y y y y y y y y
+
+
2
0 1 0 1
1
1
3
0 1
2
0 1
1
1
0
0
+ + =
+ + =

}
}
( )
( )
d
d
(5.40)
sau

y y
y y
0 1
0 1
1
3
0
0
+ =
+ =

(5.41)
cu soluiile y
0
1
3
= i y
1
1
3
= (5.42)
Pentru calculul ponderilor k
0
, k
1
utilizm egalitatea
I = ( d = d
-1
+1
-1
+1

} }
+ = + y y a a y y k k ) ( ) ( ) ( )
0 1 0 1
1
3
1
3
(5.43)
( ) ( ) a a y y a y
a
y a
+
+
0 1 0
1
2
1
1
0
1
1
2
2 + = + =

}
d (5.44)
nlocuind n (5.43) rezult:
k a a k a a a
0 0 1 1 0 1 0
1
3
1
3
2 ( ) ( ) + + = (5.45)
Prin identificare se obine sistemul:

k k
k k
0 1
0 1
2
0
+ =
=

(5.46)
cu soluiile: k k
0 1
1 0 = = , (5.47)
Formula de calcul a integralei prin metoda cuadraturii gaussiene cnd utilizm dou
puncte de divizare este:
I f x x y dy = = = +

+
} }
( ) ( ) ( ) ( ) d
a
b

1
3
1
3
1
1
(5.48)
unde: ( ) ( ) ( ) y b a f y =
1
2
(5.49)
Integrarea numeric

107


5.2.1.1.Eroarea de trunchiere a formulei cuadraturii gaussiene prin
dou puncte

Integrala dintr-un polinom pn la gradul trei are eroarea de trunchiere nul. Pentru
polinoame de grad mai mare ca trei este:
e k
T
=
(IV)
( ) , -1<< 1 (5.50)
Pentru determinarea lui k lum ( ) y y =
4

( ) y y y y
y
d d = = =

+
} }
4
5
1
1
1
1
1
1
5
2
5
(5.51)

( ) ( ) ( ) y y y y e e
T T
d d
2
9
= = + + = +

+
} }
4
1
1
1
1
1
3
1
3
(5.52)

Din egalitile (5.51) i (5.52) rezult:
e
T
=
8
45

Aplicnd formula (5.55) pentru ( ) y y =
4
unde
( )
( )
IV
y = 24 avem:

8
45
24 = k de unde rezult k =
1
135


Eroarea de trunchiere pentru formula cuadraturii gaussiene prin dou puncte este:
e
T
=
1
135

( )
( )
IV
, -1<<1 (5.53)


5.2.2. Metoda cuadraturii gaussiene cu mai multe puncte de divizare

n acest caz
f x x u u k y
i i
( ) ( ) ( ) d d
i 0
n 1
a
b
= =
=

} }

1
1
(5.54)
utiliznd n puncte de divizare i n ponderi.
Valorile punctelor de divizare n intervalul |-1,1| sunt rdcinile polinoamelor lui
Legendre care sunt definite prin relaia de recuren:

P y
0
1 ( ) = , P y y
1
( ) =

| |
P y
n
n yP y n P y
n n n
( ) ( ) ( ) ( ) ( ) =

1
2 1 1
1 2
(5.55)
iar ponderile sunt date de formula:
Metode numerice n electronic

108
k
y P y
i
i n i
=

'

(
2
1
2
2
( ) ( )
(5.56)

Pentru polinoamele lui Legendre pn la gradul 16 sunt date rdcinile i ponderile n
funcia de implementare a metodei.
n cazul a n puncte de divizare a intervalului de integrare |-1,1| eroarea de trunchiere
este zero pentru toate integralele polinoamelor de grad mai mic dect 2n-1, inclusiv
2n-1.


5.2.2.1.Eroarea de trunchiere pentru formula cuadraturii gaussiene cu
mai multe puncte de divizare

Considerm un polinom de gradul 2n pentru care integrala gaussian are eroarea de
trunchiere: e k
T
( n)
=
2
( ) , -1<< 1 (5.57)
Calculm integrala pentru ( ) y y
n
=
2

( )
( )
y y y y
y
n n
n
n
d d = =
+
=
+
+

+
} }
2
2 1
1
1
1
1
1
1
2 1
2
2 1
(5.58)

( ) y y y y k y e
n
i i
n
T
i
n
d d = = +

+
=

+
}

}
2
1
1
2
0
1
1
1
(5.59)
Din egalarea relaiilor (5.58) i (5.59) rezult:
e
n
k y
T i
i
n
i
n
=
+

=

2
2 1
0
1
2
(5.60)
Aplicnd formula (5.57) , unde
(2n)
()=(2n)! i egalnd-o cu (5.60)
rezult:
k
n ! n
k u
i i
n
i
n
=
+

|
\

|
.
|
=

1
2
2
2 1
2
0
1
( )
(5.61)
iar eroarea de trunchiere
e
n ! n
k u
T i i
n
i
n
=
+

|
\

|
.
|
=


(2n)
( )
( ) 2
2
2 1
2
0
1
(5.62)



5.2.2.2. Algoritmul 5.5. Metoda cuadraturii a lui Gauss

{ Variabile
ls: limita stng a intervalului de integrare, real;
ld: limita dreapt a intervalului de integrare, real;
n: gradul polinomului lui Legendre;
A[n, i]:matricea ponderilor, reali;
Integrarea numeric

109
U[n, i]:matricea soluiilor polinoamelor lui Legendre, reale;
sum: valoarea integralei, real;
{ Construiete matricea A[n, i];
Construiete matricea Y[n, i];
suma=0;
pentru i=1 pn la n calculeaz
sum=sum+A[n,i]*(1/2)*(ld-ls)*f((1/2)*(ld-
ls)*Y[n,i]+(1/2)(ls+ld));
tiprete valoarea integralei sum;
}
}


5.2.2.3. Implementarea algoritmului 5.5

/* Funcia care implementeaz metoda cuadraturii lui Gauss
pentru integrarea funciilor reale de variabil real
*/
double CuadraturaGauss(double (*f)(double),
double ls,
double ld,
int ord_pol)
{
static double A[17][17]=

{

/* n=0 */
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

/* n=1 */
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

/* n=2 */
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

/* n=3 */
{ 5.0/9.0,8.0/9.0,5.0/9.0,0,0,0,0,0,0,0,0,0,0,0,0,0},

/* n=4 */
{0.34785485413745 4 0.652145145862564
0.652145145862564 0.347854854137454
0 0
0 0
0 0
0 0
Metode numerice n electronic

110
0 0
0 0}
/* n=5 */
{ 0.236926885056189, 0.478628670499366
0.568888888888889, 0.478628670499366,
0.236926885056189 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0}
/* n=6 */
{ 0.17132449237917, 0.360761573048139,
0.467913934572691, 0.467913934572691,
0.360761573048139, 0.17132449237917,
0, 0,
0, 0,
0, 0,
0. 0,
0, 0}
/* n=7 */
{ 0.12948496616887, 0.279705391489277,
0.381830050505119, 0.417959183673469,
0.381830050505119, 0.279705391489277,
0.12948496616887, 0,
0, 0,
0, 0,
0, 0,
0, 0}
/* n=8 */
{ 0.101228536290376, 0.222381034453374,
0.313706645877887, 0.362684783378362,
0.362684783378362, 0.313706645877887,
0.222381034453374, 0.101228536290376,
0, 0,
0, 0,
0, 0,
0, 0},

/* n=9 */
{ 0.08127438361574, 0.180648160694857
0.260610696402935 0.312347077040003,
0.33023935500126 0.312347077040003,
0.260610696402935, 0.180648160694857,
0.08127438361574, 0,
0, 0,
Integrarea numeric

111
0, 0,
0, 0},

/* n=10 */
{ 0.066671344308688, 0.14945134915058
0.219086362515982, 0.269266719309996,
0.295524224714753, 0.295524224714753,
0.269266719309996, 0.219086362515982,
0.14945134915058, 0.066671344308688,
0, 0,
0, 0,
0, 0},
/* n=11 */
{ 0.055668567116, 0.125580369465,
0.186290210928, 0.233193764592,
0.26280454451, 0.272925086778,
0.26280454451, 0.233193764592,
0.186290210928, 0.125580369465,
0.055668567116, 0,
0, 0,
0, 0},
/* n=12 */
{ 0.047175336387, 0.106939325995,
0.160078328542, 0.203167426723,
0.233492536538, 0.249147045813,
0.249147045813, 0.233492536538,
0.203167426723, 0.160078328542,
0.106939325995, 0.047175336387,
0, 0,
0, 0},
/* n=13 */
{ 0.040484004765, 0.092121499838,
0.13887351022, 0.178145980762,
0.207816047537, 0.226283180263
0.232551553231, 0.226283180263,
0.207816047537 0.178145980762,
0.13887351022, 0.092121499838
0.040484004765, 0,
0, 0},
0,
/* n=14 */
{ 0.035119460332, 0.08015808716,
0.121518570688, 0.157203167158,
0.185538397478, 0.205198463721,
0.215263853463, 0.215263853463,
0.205198463721, 0.185538397478,
Metode numerice n electronic

112
0.157203167158, 0.121518570688,
0.08015808716, 0.035119460332,
0, 0},
/* n=15 */
{ 0.030753241996, 0.070366047488,
0.107159220467, 0.139570677926,
0.166269205817, 0.186161000016,
0.198431485327, 0.202578241926,
0.198431485327, 0.186161000016,
0.166269205817, 0.139570677926,
0.107159220467, 0.070366047488,
0.030753241996, 0},
/* n=16 */
{ 0.027152459412, 0.062253523939,
0.095158511682, 0.124628971256,
0.149595988817, 0.169156519395,
0.182603415045, 0.189450610455,
0.189450610455, 0.182603415045,
0.169156519395, 0.149595988817,
0.124628971256, 0.095158511682,
0.062253523939, 0.027152459412};


static double U[17][17]=
{
/* n=0 */
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
/* n=1 */
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
/* n=2 */
{ 0.5773502692, -0.5773502692,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0},
/* n=3 */
{ 0.7745966692, 0,
-0.7745966692 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0,
Integrarea numeric

113
0, 0},

/* n=4 */
{ 0.861136311594053, 0.339981043584856,
-0.339981043584856, -0.861136311594053,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0}
/* n=5 */
{ 0.906179845938664, 0.538469310105683,
0, -0.538469310105683,
-0.906179845938664, 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0},
/* n=6 */
{ 0.932469514203152, 0.661209386466265,
0.238619186083197, -0.238619186083197,
-0.661209386466265, -0.932469514203152,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0},
/* n=7 */
{ 0.949107912342759, 0.741531185599394,
0.405845151377397, 0,
-0.405845151377397, -0.741531185599394,
-0.949107912342759, 0,
0, 0,
0, 0,
0, 0,
0, 0},
/* n=8 */
{ 0.96269856497336, 0.796666477413627,
0.525532409916329, 0.18343464249565,
-0.18343464249565, -0.525532409916329,
-0.796666477413627, -0.96269856497336,
0, 0,
0, 0,
0, 0,
Metode numerice n electronic

114
0, 0},
/* n=9 */
{ 0.968160239507626, 0.836031107326636,
0.613371432700591, 0.324253423403809,
0, -0.324253423403809,
-0.613371432700591, -0.836031107326636,
-0.968160239507626, 0,
0, 0,
0, 0,
0, 0},
/* n=10 */
{ 0.973906528517172, 0.865063366688985,
0.679409568299024, 0.433395394129247,
0.148874338981631, -0.148874338981631,
-0.433395394129247, -0.679409568299024,
-0.865063366688985, -0.973906528517172,
0, 0,
0, 0,
0, 0},
/* n=11 */
{ 0.978228658146, 0.887062599768,
0.730152005574, 0.519096129207,
0.269543155952, 0,
-0.269543155952, -0.519096129207,
-0.730152005574, -0.887062599768,
-0.978228658146, 0,
0, 0,
0, 0},
/* n=12 */
{ 0.981560634247, 0.90411725637,
0.769902671494, 0.587317954287,
0.367831498998, 0.125233408511,
-0.125233408511, -0.367831498998,
-0.587317954287, -0.769902671494,
-0.90411725637, -0.981560634247,
0, 0,
0, 0},
/* n=13 */
{ 0.984183054719, 0.917598399223,
0.801578090733, 0.64234933944,
0.448492751036, 0.230458315955,
0, -0.230458315955,
-0.448492751036, -0.64234933944,
-0.801578090733, -0.917598399223,
-0.984183054719, 0,
0, 0},
Integrarea numeric

115
/* n=14 */
{ 0.986283808697, 0.928434883664,
0.82720131507, 0.687292904812,
0.515248636358, 0.319112368928,
0.108054948707, -0.108054948707,
-0.319112368928, -0.515248636358,
-0.687292904812, -0.82720131507,
-0.928434883664, -0.986283808697,
0, 0},
/* n=15 */
{ 0.98799251802, 0.937273392401,
0.84820658341, 0.72441773136,
0.570972172609, 0.394151347078,
0.201194093997, 0,
-0.201194093997, -0.394151347078,
-0.570972172609, -0.72441773136,
-0.84820658341, -0.937273392401,
-0.98799251802, 0},
/* n=16 */
{ 0.989400934992, 0.944575023075,
0.865631202388, 0.755404408355,
0.617876244403, 0.458016777657,
0.281603550779, 0.095012509838,
-0.095012509838, -0.281603550779,
-0.458016777657, -0.617876244403,
-0.755404408355, -0.865631202388,
-0.944575023075, -0.989400934992}};

int i;
double suma=0;
for(i=1;i<=ord_pol;i++)
suma+=0.5*(ld-ls)*A[ord_pol][i-1]*f(0.5*(ld-ls)*
U[ord_pol][i-1]+0.5*(ls+ld));
return suma;
}

5.3.COMPARAREA METODELOR DE INTEGRARE
NUMERIC A FUNCIILOR DE O SINGUR
VARIABIL

Dintre toate metodele de integrare numeric, metoda cuadraturii gaussiene este cea
mai precis, realiznd aceeai precizie ca i metoda lui Simpson cu un numr dublu de
puncte de divizare i ca metoda trapezului cu un numr de patru ori mai mare de
puncte de divizare.
Metode numerice n electronic

116
Pentru aceeai precizie de calcul a integralei numerice, eficiena crete sau timpul
de calcul al calculatorului scade dup cum utilizm n ordine metoda trapezului,
metoda lui Simpson i metoda cuadraturii gaussiene.


5.4. CALCULUL NUMERIC AL INTEGRALELOR
IMPROPRII

Definiia 5.1: Se numete integral improprie, integrala pentru care cel puin una
dintre limitele de integrare este infinit i funcia este continu pe intervalul de
integrare sau funcia are puncte de discontinuitate de spea nti sau a doua i limitele
de integrare sunt finite.
Integralele improprii de forma

f x x ( )d

+
}
, f x x
a
( )d
+
}
, f x x
a
( )d

}
(5.63)
pot fi aduse la forma
f x x
a
( )d
+
}
(5.64)
Ca atare, se va studia integrala improprie de aceast form.
Dac funcia de integrat definit pe intervalul
| | a, este integrabil pe acest interval i
exist limita:
lim ( )
A
a
A
f x x k

=
}
d (5.65)

atunci f x x k
a
+
( )d =

}
(5.66)
n acest caz integrala improprie este convergent. Cnd limita nu exist sau este
infinit, atunci integrala improprie este divergent. Valoarea lui A se poate lua suficient
de mare pentru ca
f x x
A
( )d

}
<c (5.67)
unde c este o constant pozitiv suficient de mic. n acest caz integrala improprie

f x x f x x
a a
A
( ) ( ) d d

} }
~ (5.68)
integral ce poate fi calculat cu una dintre metodele studiate n paragraful 5.1.
Funciile care pe intervalul de integrare
| |
a b , au un punct de discontinuitate de spea
nti
| |
c a,b e au proprietatea c:
Integrarea numeric

117
f c f x
x c
x c
( ) lim ( ) =

<
0 i f c f x
x c
x c
( ) lim ( ) + =

>
0 (5.69)

iar f c f c ( ) ( ) = 0 sau f c f c ( ) ( ) = 0 i f c f c ( ) ( ) = + 0 sau f c f c ( ) ( ) = + 0 .
n cazul acestor funcii:
f x x f x x f x x
c
b
a
c
a
b
( ) ( ) ( ) d d d = +
} } } 1 2
(5.70)
unde
f x
f x a x c
f c x c
1
0
( )
( )
( )
=
< <
=

pentru
pentru


f x
f x c x b
f x c x c
2
( )
( )
( )
=
< <
+ =

pentru
pentru

Dac integrala (5.70) exist, spunem c integrala improprie este convergent i
valoarea ei poate fi calculat cu ajutorul unei metode studiat n paragraful 5.1.
Funcia f x ( ) are un punct de discontinuitate de spea a doua
| |
c a,b e dac cel puin
una din limitele (5.69) are valoarea infinit. n acest caz

f x x f x x f x x
a
c e
c e
b
a
b
( ) ( ) ( ) d d d = +

+
} } }
(5.71)

unde c poate fi luat suficient de mic astfel ca f x x ( ) , d
c
c

+
}
< >
c
c
c c
1 1
0

de valoare foarte mic, care reprezint i eroarea de calcul a integralei. Integrala (5.71)
poate fi rezolvat cu una dintre metodele studiate n paragraful 5.1. (metoda
dreptunghiului, metoda trapezului, metoda lui Richardson, metoda lui Simpson sau
metoda cuadraturii).



5.5. CALCULUL NUMERIC AL INTEGRALELOR
DUBLE
Pentru simplitate vom considera domeniul de integrare al funciei de dou
variabile un dreptunghi (Fig. 5.5)
Metode numerice n electronic

118
f x,y x f x,y x y
c
d
a
b
D
( ) ( ) d d d =
} } }}

(5.72)
reprezint integrala
dubl din funcia de
dou variabile f x y ( , ) .
Pentru calculul valorii
acestei integrale vom
utiliza formula de
cubatur a trapezului sau
formula de cubatur a
lui Simpson care sunt
prezentate n continuare.




5.5.1. FORMULA DE CUBATUR A TRAPEZULUI

Se mpart n subintervale de lungimi egale intervalele
| |
a b , i
| |
c d ,
h
b a
n
=

, k
d c
m
=

(5.73)
i se consider dreptunghiul cu vrfurile
| |
x y
i i
, , | | x y
i i +1
, , | | x y
i i + + 1 1
, , | | x y
i i
,
+1
,
unde x a i h
i
= + , y c j k
j
= + .
Pentru dreptunghiul dat care conine vrful
| |
x y
i i
, se calculeaz integrala I
IJ
aplicnd
formula trapezului.

| |
I x f x,y x y
k
f x,y f x,y x
ij
y
y
x
x
j j
x
x
j
j
i
i
i
i
= ~ +


`
)
=
+
+ +
} } } +
d d d d ( ) ( ) ( )
1
1 1
2
1

= +

(
(
=
+ +
} } +
k
f x y x f x y x
j
x
x
j
x
x
i
i
i
i
2
1 1
1
( , ) ( , ) d d

| |
=

+ + +
+ + + +
k h
f x ,y f x ,y f x ,y f x ,y
i j i j i j i j
4
1 1 1 1
( ) ( ) ( ) ( ) (5.74)
Integrala pe ntreg dreptunghiul | | a b c d , , , este:

| |
I I
kh
f x ,y f x ,y f x ,y f x ,y
ij i j i j i j i j
j
m
i
n
j
m
i
n
~ = + + +
+ + + +
=


4
1 1 1 1
0
1
0
1
0
1
0
1
( ) ( ) ( ) ( ) (5.75)
expresie cunoscut sub numele de formula de cubatur a trapezului.


a b i
c
j
y
d
x
Fig.5.5.Reprezentareagraficadreptunghiuluide
integrare
Integrarea numeric

119
5.5.1.1. Algoritmul 5.6. Metoda cubaturii trapezului

{Variabile
a: limita stng a intervalului de integrare pe axa Ox, real;
b: limita dreapt a intervalului de integrare pe axa Ox, real;
c: limita stng a intervalului de integrare pe axa Oy, real;
d: limita dreapt a intervalului de integrare pe axa Oy, real;
n: numrul de subintervale pe axa Ox, ntreg;
m: numrul de subintervale pe axa Oy, ntreg;
h: valoarea lungimii unui subinterval cu diviziunea n, real;
k: valoarea lungimii unui subinterval cu diviziunea m, real;
sum: valoarea integralei, real;
{
calculeaz h
b a
n
=

;

calculeaz k
d c
m
=

;
sum=0;
pentru i=1 pn la n-1
pentru j=1 pn la m-1
calculeaz

sum=sum+((h*k)/4)*(f(a+i*h,c+j*k)+f(a+i*h,c+(j+1)*k) +
+f(a+(i+1)h,c+j*k)+f(a+(i+1)h,(j+1)*k))
tiprete valoarea integralei sum;
}
}


5.5.1.2. Implementarea algoritmului 5.6

/* Funcia care implementeaz metoda de cubatur a trapezului */
/* Funcia ntoarce integrala unei funcii de dou variabile */
double CubaturaTrapez( double (*f)(double,double),
double sx,
double dx,
double sy,
double dy,
int nx,
int ny)
{double suma=0,h,k;
int i,j;
h=(dx-sx)/nx;
Metode numerice n electronic

120
k=(dy-sy)/ny;
for(i=0;i<=nx-1;i++)
for(j=0;j<=ny-1;j++)
suma+=0.25*h*k*( f(sx+i*h,sy+j*k)+f(sx+i*h,sy+(j+1)*k)+
f(sx+(i+1)*h,sy+j*k)+f(sx+(i+1)*h,sy+(j+1)*k));
return suma;
}


5.5.2. FORMULA LUI SIMPSON DE CUBATUR

Pentru acelai dreptunghi
| | a b c d , , , reprezentat n fig. 5.5 vom aplica formula lui
Simpson de integrare. Vom considera dreptunghiul de integrare cu vrfurile
| |
x y
i i
, , | | x y
i i +1
, , | | x y
i i + + 1 1
, , | | x y
i i
,
+1
i cu punctul central
| |
x y
i i
,
| |
I f x,y x y
k
f x,y f x,y f x,y x
ij j j j
x
x
y
y
x
x
i
i
j
j
i
i
~ = + + =
+

+
} } }
( ) ( ) ( ) ( ) d d d
3
4
1 1
1
1
1
1
1
1

{
= + + + +
+ + + +
kh
f x ,y f x ,y f x ,y f x ,y
i j i j i j i j
9
1 1 1 1 1 1 1 1
( ) ( ) ( ) ( )

| |}
+ + + + +
+ +
4 16
1 1 1 1
f x ,y f x ,y f x ,y f x ,y f x ,y
i j i j i j i j i i
( ) ( ) ( ) ( ) ( )
( 5.76)
Integrala pe ntreg dreptunghiul
| | a b c d , , , este dat de formula de cubatur a lui
Simpson:
{
I I
kh
f x ,y f x ,y f x ,y f x ,y
ij i j i j i j i j
j
m
i
n
j
m
i
n
= = + + + +
+ + + +
=


9
1 1 1 1 1 1 1 1
0
1
0
1
0
1
0
1
( ) ( ) ( ) ( )

| | }
+ + + + +
+ +
4 16
1 1 1 1
f x ,y f x ,y f x ,y f x ,y f x ,y
i j i j i j i j i j
( ) ( ) ( ) ( ) ( ) (5.77)

5.5.2.1. Algoritmul 5.7. Metoda lui Simpson de cubatur

{ Variabile
a: limita stng a intervalului de integrare pe axa Ox, real;
b: limita dreapt a intervalului de integrare pe axa Ox, real;
c: limita stng a intervalului de integrare pe axa Oy, real;
d: limita dreapt a intervalului de integrare pe axa Oy, real;
n: numrul de subintervale pe axa Ox, ntreg;
m: numrul de subintervale pe axa Oy, ntreg;
h: valoarea lungimii unui subinterval cu diviziunea n, real;
k: valoarea lungimii unui subinterval cu diviziunea m, real;
sum: valoarea integralei, real;

Integrarea numeric

121
{ calculeaz h
b a
n
=

;
calculeaz k
d c
m
=

;
sum=0; i=1;
repet
j=1;
repet

sum=sum+((h*k)/9)*(f(a+(i-1)*h,c+(j-1)*k)+f(a+(i+1)*h,c+(j-1)*k) +
+f(a+(i-1)h,c+(j+1)*k)+4*(f(a+ih,(j+1)*k))+
+f(a+i*h,c+(j-1)*k)+f(a+(i-1)*h,c+j*k)+f(a+(i+1)*h,j*k)+
+ 16*f(a+i*h,c+j*k))

j=j+2;
pn cnd j>m-1;
i=i+2;
pn cnd i>n-1;

tiprete valoarea integralei sum;
}
}


5.5.2.2. Implementarea algoritmului 5.7

/* Funcia care implementeaz metoda lui Simpson de cubatur.
Funcia ntoarce valoarea integralei duble.*/

double CubaturaSimpson( double (*f)(double,double),
double sx,
double dx,
double sy,
double dy,
int nx,
int ny)
{
double suma=0,h,k;
int i,j;
h=(dx-sx)/nx;
k=(dy-sy)/ny;
for(i=1;i<=nx-1;i+=2)
for(j=1;j<=ny-1;j+=2)
suma+=h*k*( f(sx+(i-1)*h,sy+(j-1)*k)+f(sx+(i+1)*h,sy+(j-1)*k)+
f(sx+(i-1)*h,sy+(j+1)*k)+f(sx+(i+1)*h,sy+(j+1)*k)+
Metode numerice n electronic

122
4*f(sx+i*h,sy+(j+1)*k)+4*f(sx+i*h,sy+(j-1)*k)+
4*f(sx+(i-1)*h,sy+j*k)+4*f(sx+(i+1)*h,sy+j*k)+
16*f(sx+i*h,sy+j*k))/9;
return suma;
}


5.6. APLICAII

1.Se d funcia f x
x
x
.e . x
x
( )
cos( )
( sin ) =
+ +
+
3
2
1 1
1
2

pentru care se cere integrala de la 0 la 3.
Valoarea integralei este dat n tabelul 5.1

Tabelul 5.1.
Metoda Numrul de
subintervale
Valoarea integralei
Dreptunghiului 10000 1394.642843
Trapezului 10000 1395.704297
Richardson 5000 i 10000 1395.703984
Simpson 10000 1395.703984
Cuadratura Gauss Grad pol Legendre
n=15
1395.7031


2. Se consider funcia de dou variabile:
f x,y
x y
.x.y
. x . x y ( ) exp( ) sin( ) =
+
+
+ + +
2 2
1 2
1 2
Se cere valoarea integralei din funcia dat pe domeniul x e [0,2]; y e [0,2].
Valoarea integralei este dat n tabelul 5.2.
Tabelul 5.2
Metoda Nr. Pct. Pe Ox Nr. Pct. Pe Oy Valoarea integralei
Cubatura trapezului 100 100 -24.730047
Cubatura Simpson 100 100 -24.733155


6
INTERPOLAREA*



Interpolarea este una dintre metodele de aproximare a funciilor. Considerm dat o
funcie sub form de tabel. Cunoscnd valorile funciei n anumite puncte pentru care
funcia este definit, se pune problema cunoaterii valorilor funciei n alte puncte ale
domeniului de definiie, n care funcia este necunoscut. Aceast problem se pune n
cazul reprezentrii grafice a funciei tabelate sau n cazul necesitii cunoaterii valorii
funciei ntr-un punct n care nu este cunoscut.
n cazul cunoaterii expresiei analitice a funciei y f x = ( ) , valorile necunoscute ale
funciei se calculeaz prin introducerea argumentului corespunztor n funcie. Dac
nu se cunoate expresia analitic a funciei, se aproximeaz funcia cu o alt funcie,
care o aproximeaz cel mai bine pe prima ntre punctele unde dorim valoarea funciei.
Aproximarea funciei date cu o funcie liniar sau cu o funcie polinomial de un
anumit grad poate da valori foarte apropiate de valorile funciei.


6.1. INTERPOLAREA POLINOMIAL

Se consider funcia dat prin tabelul 6.1:
Tabelul 6.1.
x x
0
x
1
. x
k
. x
n
y y
0
y
1
. y
k
. y
n


Cunoatem valoarea funciei n n+1 puncte. Prin n+1 puncte se poate duce un polinom
de gradul n, unic determinat.
Fie polinomul:

0 1
1
1
... ) ( a x a x a x a x P
n
n
n
n n
+ + + + =



Conform tabelului 6.1 avem sistemul:

a x a x a x a y
a x a x a x a y
a x a x a x a y
n
n
n
n
n
n
n
n
n n
n
n n
n
n n
0 1 0
1
1 0 0 0
1 1 1
1
1 1 0 1
1
1
1 0
+ + + + =
+ + + + =

+ + + + =



________________________________
*) Bibliografie: [1],[6],[7],[15],[21],[22]
Acest sistem are n+1 ecuaii cu n+1 necunoscute, a a a a a a
n n n 0 1 2 2 1
, , ,..., , ,

.
Considerm sistemul omogen:
Metode numerice n electronic 124

a x a x a x a
a x a x a x a
a x a x a x a
n
n
n
n
n
n
n
n
n n
n
n n
n
n
0 1 0
1
1 0 0
1 1 1
1
1 1 0
1
1
1 0
0
0
0
+ + + + =
+ + + + =

+ + + + =



(6.3)

Determinantul sistemului omogen este diferit de zero. Dac determinantul sistemului
ar fi zero, ar nsemna c polinomul de gradul n ar avea n+1 soluii x x x x
n 0 1 2
, , ,...,
ceea ce este imposibil. Acest sistem omogen admite numai soluii banale, ca urmare,
determinantul sistemului este diferit de zero. Acest determinant este i determinantul
sistemului (6.2) rezultnd c acest sistem este un sistem Cramer cu soluii unic
determinate. Deci, polinomul de grad n este unic determinat. Pentru simplificarea
calculului scriem polinomul sub forma urmtoare:

P x x a x a x a
n
n
n
n
( ) ... = + + + +


1
1
1 0
.


(6.4)
El este obinut din polinomul (6.1) prin mprire cu a
n
lsnd notaia neschimbat a
coeficienilor dup mprire.
Considerm urmtoarele polinoame:

H
H
H
0 1 2
1 0 2
0 1 1
( ) ( )( )...( )
( ) ( )( )...( )
( ) ( )( )...( )
x x x x x x x
x x x x x x x
x x x x x x x
n
n
n n
=
=

=

(6.5)
Formm polinomul P x
n
( ) sub forma:
P x b x b x b b x
n k k n n
( ) ( ) ( ) ... ... ( ) = + + + + +
0 0 1 1
H H H H (6.6)
Trebuie s determinm coeficienii b b b
n 0 1
, ,..., .

) (
) (
,...,
) (
) (
,...,
) (
) (
,
) (
) (
1 1
1
1
0 0
0
0
n n
n n
n
k k
k n
k
n n
x
x P
b
x
x P
b
x
x P
b
x
x P
b
H
=
H
=
H
=
H
= (6.7)
Ca urmare,

( )
( )
[
[
[

= = = =
= =
= =
=

=
H
H
=
n
i
n
i j j j i
j
n
i
i
n
i j j
j i
n
i j j
j
i
n
i i i
i
i n n
x x
x x
y
x x
x x
y
x
x
x P x P
0 , 0 0
, 0
, 0
0
) (
) (
) ( ) (

Polinomul de gradul n care trece prin n+1 puncte date, numit i polinomul de
interpolare al lui Lagrange, are forma:

( )
[
= = =

=
n
i j j j i
j
n
i
i n
x x
x x
y x P
, 0 0
. (6.8)
Expresia polinomului lui Lagrange este funcie de coordonatele punctelor cunoscute i
de variabila x . Cu ajutorul formulei determinate (6.8) a polinomului, care
aproximeaz o funcie, se poate calcula valoarea funciei n orice punct necunoscut
cuprins ntre x
0
i x
n
.
6.1.1. EROAREA DE TRUNCHIERE N INTERPOLAREA
LAGRANJIAN

Interpolarea 125
Eroarea de trunchiere este dat de diferena dintre funcia f x ( ) de interpolat i
polinomul de interpolare al lui Lagrange.
( ) ( ) e f x y
x x
x x
F x
T i
i
n
j
i j j j i
n
=

=
= = =
[
0 0,
(6.9)
Construim funcia
G x x x x x x x
n
( ) ( )( )...( ) =
0 1
(6.10)
Cu funciile F x ( ) , (6.9) i G x ( ) , (6.10) formm urmtoarea funcie :
H t F x G t F t G x ( ) ( ) ( ) ( ) ( ) = (6.11)
care are proprietile :
1. H x
j
( ) = 0 pentru j = 0, . . . ,n, deoarece nlocuind x x
j
= n formula (6.9)
rezult F x
j
( ) = 0 ; j = 0, 2, . . . ,n i G x
j
( ) = 0 ; j=0, 2, . . . ,n;
2. H x ( ) = 0
Pe baza teoremei valorii medii rezult c exist n+2 puncte
0 1 2 1
, , ,...,
n+
pentru
care derivata H'(t)=0, H H H H H
n n
' ' ' ' '
( ), ( ), ( ),..., ( ), ( )
0 1 2 1 +

i n
x x e[ , ]
0
, i = 0,..,n+1.
Continund aplicarea teoremei valorii medii, se ajunge n final la egalitatea :
H
n ( )
( )
+
=
1
0 unde x x
n 0
< <
Din (6.11) rezult:

( )
( ) ( )
( )
( )
( )
( ) ( ) ( )
( )
( ) ( )
( ) ( )
( )
( ) ( )
H t F x G t F t G x n F x f t G x
H n F x f G x
n n n n
n n
+ + + +
+ +
= = +
= = +
1 1 1 1
1 1
1
0 1
( )!
( )!
( )

(6.12)
sau
( )
( )
( )
( ) e F x
f
n
G x
T
n
= =
+
+1
1

( )!
x x
n 0
< < (6.13)
formul ce reprezint eroarea de trunchiere pentru interpolarea lagranjian.

6.1.2 EROAREA DE ROTUNJIRE N INTERPOLAREA
LAGRANJIAN

Considerm polinomul lui Lagrange dat de relaia (6.8) pe care o scriem sub forma:
P x y z
i i
i
n
( ) =
=

0
1
unde z
x x
x x
i
j
i j j ,j i
n
=

= =

[
0
1
i p y z
i k k
k
i
=
=

0
, P x p
n
( ) = (6.14)
Construim graful de procedur pentru calculul erorii de rontunjire a expresiei (6.14)
care reprezint produsul de ordinul i din expresia polinomului lui Lagrange. In
expresia produsului exist operaii de scdere, mprire i nmulire. Pentru fiecare
nod al grafului unde se realizeaz o operaie aritmetic se d eroarea de rotunjire de tip
simetric. Pentru calculul erorii de rotunjire totale a expresiei polinomului lui Lagrange
se realizeaz un graf de procedur i pentru expresia sumei din (6.14).
Metode numerice n electronic 126

x
i

x
j

x
-
-
:
.

4
1
-1
1
-1
z
j 1

z
j


Fig.6.1. Graful de procedur a expresiei z.

Considerm toate valorile x
i
, i=1,2,... ,n, fr erori i notm cu
t
k
i
k n i n , ... ; , ,... = = 0 1 01 1, erorile termenilor produsului. n aceste condiii pentru z
0

avem eroarea de rotunjire t
0
=0, deoarece z
0
iniializat este 1 i are eroarea zero.

i
n
i
n
i
n
i
n
i
n
i
n
i i i i i i
i i i i i
2 1 , 4 1 , 3 1 , 2 1 , 1 1
0 42 32 22 12 1
41 31 21 11 0
0
0

+ + + =

+ + + =
+ + =
=
t t
t t
t
t
(6.15)
n expresia (6.15) lipsete termenul t
i
i
. Din (6.15) rezult:

( )
t
n
i
j j j j
j
i j
n

=
=

= + +

1 1 2 3 4
0
1
(6.16)
Dac considerm
kj
t
s =

10 unde t este mantisa calculatorului i notm cu t


i

eroarea produsului z
i
, avem
( ) t
i
n s 4 1 (6.17)
sau pentru z
i
, i=0,1,2,n-1, avem
( ) t
i
n s 4 1 i=0,1,2,...,n-1 (6.18)
Construim graful de procedur pentru expresia p
i
.

2
Interpolarea 127

z
i

y
i

1
1
.
+
p
i-1

p
i


Fig.6.2. Graful de procedur al expresiei p y z
i k k
k
n
=
=

0
1

Se consider eroarea iniial n punctul p
i
nul, erorile de rotunjire n nodurile 5,6 le
notm cu
5 6
01 1
i i
i n , , , ,.., = i notm cu c
i
i n , , ,... = 01 1 erorile termenilor sumei.
( ) c t
0 0 0 50
0 0
0
60
= + + + e
z y
p

( ) c t c
1 1 1 31
1 1
1
1
1
2
61
= + + + + e
z y
p
p
p
(6.19)

( )
c t c
n n n n
n n
n
n
n
n
n
e
z y
p
p
p


= + + + +
1 1 1 5 1
1
1
1
2
1
6 1 , ,

tim c ( ) t
i
n s 4 1 pentru i=0,1,..,n-1 i considerm c e e
i
< pentru i=0.1.,n-1.
n aceste condiii avem :
kj
<
( )
| |
( )
| |
c
n n i i
i
n
i
i
n
i
i
n
i
i
n
p n e z y p n e p p

=

s + + s + +
1 1
0
1
0
1
0
1
0
1
4 3 4 3 | |
Se mai poate face majorarea | | p np
i n
i
n
s

=

1
0
1
i rezult:
( ) c
n
n n en

s +
1
2 2 1 (6.20)
expresie care reprezint eroarea de rotunjire pentru interpolarea lagranjian.

6.1.3. PARTICULARIZRI ALE POLINOMULUI LUI LAGRANGE

Dac considerm dou puncte, interpolarea devine liniar
y y
x x
x x
y
x x
x x
=

1
2
1 2
2
1
2 1
(6.21)
Eroarea de trunchiere a interpolrii liniare devine:

( )
( )( ) e
f
x x x x
T
=
''

2
1 2
!
x x
1 2
< < (6.22)
z y
p
i i
i

p
p
i
i
1
Metode numerice n electronic 128
i eroarea de rotunjire:
c
2
12 2 s + e (6.23)
unde i e sunt date n paragraful 6.1.2.
Pentru trei puncte, interpolarea devine ptratic.


6.1.4.ALGORITMUL 6.1. POLINOMUL LUI LAGRANGE

{Variabile
n : numrul de puncte cunoscute, ntreg ;
x : abscisele punctelor cunoscute, vector ;
y : ordonatele punctelor cunoscute, vector ;
x: punctul n care se calculeaz interpolarea, real ;
i,j : contori, ntregi ;
sum : variabil ce reine suma, real ;
prod : variabil ce reine produsul, real ;
{ sum=0;
pentru i=0..n
{ prod=1;
pentru j=0..n dac j i = atunci
calculeaz prod prod
x x
x x
j
i j
= -

;
sum sum y prod
i
= + - ;
}

Valoarea interpolat este sum;

}.


6.1.5. IMPLEMENTAREA ALGORITMULUI 6.1

/* Funcia care implementeaz metoda lui Lagrange de interpolare
Funcia ntoarce valoarea interpolat */
double Lagrange(int n,
double x[],
double y[],
double point)
{
int i,j;
double sum=0,prod;
for(i=0;i<=n;i++)
{
Interpolarea 129
prod=1;
for(j=0;j<=n;j++)if(j!=i)prod*=(point-x[j])/(x[i]-x[j]);
sum+=y[i]*prod;
}
return sum;
}



6.2. POLINOMUL DE INTERPOLARE DE SPEA
NTI AL LUI NEWTON

Acest polinom de interpolare se exprim funcie de diferenele finite. Fie
| | f a b : , R i reeaua x x x x
n 1 2 3
, , ,..., cu pasul constant h.
Definiia 6.1. Se numete diferen finit de ordinul nti expresia :
( ) ( ) ( ) Af x f x h f x = + (6.24)
unde h este pasul constant, iar diferena finit de ordinul n expresia :
( ) ( )
( )
A A A
n n
f x f x =
1
(6.25)
Diferenele finite au urmtoarele proprieti :
1. Operatorul diferen finit este liniar :
( ) A A A c f c f c f c f
1 1 2 2 1 1 2 2
+ = + (6.26)
2. Diferena finit de ordinul n se calculeaz cu formula :
( ) ( ) ( ) ( )
A
n
k
n
k
k
n
f x C f x n k h = +
=

1
0
(6.27)
3. Diferenele finite mai pot fi obinute i cu ajutorul tabelului 6.2
Tabelul 6.2
x
i
y
i
Ay
i

A
2
y
i
A
3
y
i
A
4
y
i
A
5
y
i
A
6
y
i

x
0
y
0
Ay
0

x
1
y
1
Ay
1

A
2
0
y A
3
0
y

x
2
y
2
Ay
2

A
2
1
y A
3
1
y A
4
0
y A
5
0
y

x
3
y
3
Ay
3

A
2
2
y A
3
2
y A
4
1
y A
5
1
y A
6
0
y
x
4
y
4
Ay
4

A
2
3
y A
3
3
y A
4
2
y

x
5
y
5
Ay
5

A
2
4
y

x
6
y
6


Definiia 6.2. Se numete putere generalizat de ordinul n a lui x expresia:

| |
( )( ) ( ) ( ) x x x h x h x n h
n
= 2 1 ... (6.28)
Pentru h=0 puterea generalizat coincide cu puterea obinuit.
Metode numerice n electronic 130
1. Diferena finit a puterii generalizate este:

| | | |
Ax nhx
n n
=
1
(6.29)
2. Diferena finit de ordinul k a puterii generalizate este:

| |
( )( ) ( )
| |
A
k n n k
x n n n n k x = +

1 2 1 ... (6.30)
Fie funcia tabelat dat n tabelul (6.1), unde reeaua x x x x x
n 0 1 2 3
, , , ,..., este cu
pasul constant h.
Prin cele n+1 puncte trece un polinom de gradul n pe care l cutm sub forma
P x C C x x C x x C x x
n n
n
( ) ( ) ( ) ... ( )
[ ] [ ] [ ]
= + + + +
0 1 0
1
2 0
2
0
(6.31)
unde ( ) ( )( )...( )
[ ]
x x x x x x x x
i
i
=
0 0 1 1
, i =1, 2, ...n
i coeficienii C C C
n 0 1
, ,..., sunt necunoscute pe care le vom calcula. Se observ c
P x y C
n
( )
0 0 0
= = (6.32)
Calculm diferena finit de ordinul nti :
AP x C h C h x x nC h x x
n n
n
( ) ( ) ... ( )
[ ] [ ]
= + + +

1 2 0
1
0
1
2 (6.33)
Fcnd substituia x x =
0
rezult AP x C h
n
( ) !
0 1
1 = .
Se poate calcula
( )
C
P x
h
n
1
0
1!
=
A
(6.34)
Se continu calculul diferenelor finite n punctul x
0
i se observ c :

( )
( )
C
P x
k h
k
k
n
k
=
A
0
!
, ( ) A A
k
n
k
P x y
0 0
= , k=0, 1, 2, ... n. (6.35)
innd cont de formulele de calcul ale coeficienilor, polinomul lui Newton de
interpolare de spea nti poate fi scris astfel:
( ) ( )
| |
( )
| |
( )
| |
P x y
y
h
x x
y
h
x x
y
n h
x x
n
n
n
n
0 0
0
0
1
2
0
2
0
2
0
0
1!
2
= + + + +
A A A
! !
(6.36)
Deoarece n calculul coeficienilor s-au utilizat diferenele finite la dreapta
(tabelul 6.2), polinomul poart denumirea de polinom a lui Newton de interpolare de
spea nti.

6.2.1. ALGORITMUL 6.2. NEWTON 1

{Variabile
n:numrul de puncte cunoscute, ntreg;
h:pasul constant ntre abscisele cunoscute, real;
y:ordonatele punctelor, vector;
xp:abscisa punctului n care se face interpolarea;
x
0
:abscisa primului punct cunoscut, real ;
sum:variabila ce reine sumele pariale, real;
prod:variabila ce reine produsele, real;
i, j:contoare, ntregi;
{ sum=y
0
;
prod=1 ;
pentru i=1...n
{pentru j=0...n-i
Interpolarea 131
calculeaz y
j
=y
j+1
-y
j

( ) ( ) ( ) ;
1
*
1
* * 1 *
0
i h
h i x x prod prod
p
+ =
sum=sum+y
0
*prod; }
valoarea interpolat este sum ;
} }.


6.2.2. IMPLEMENTAREA ALGORITMULUI 6.2

/* Funcia care implementeaz metoda de interpolare a lui Newton
de spea ntia.
Funcia ntoarce valoarea interpolat
*/
double Newton1(int n,
double vi,
double pas,
double y[],
double point)
{
double sum=y[0],prod=1;
int i,j;
for(i=1;i<=n;i++)
{
for(j=0;j<=n-i;j++)y[j]=y[j+1]-y[j];
prod*=(point-(vi+(i-1)*pas))/(i*pas);
sum+=y[0]*prod;
}
return sum;
}


6.3. POLINOMUL DE INTERPOLARE DE SPEA A
DOUA AL LUI NEWTON

Pentru funcia dat n tabelul 6.1 se caut un polinom de gradul n care trece prin
cele n+1 puncte, sub forma:
P x C C x x C x x x x C x x x x x x
n n n n n n n
( ) ( ) ( )( ) ... ( )( )...( ) = + + + +
0 1 2 1 1 1
(6.37)
Polinomul mai poate fi scris i funcie de puterea generalizat astfel
P x C C x x C x x C x x C x x
n n n n n
n
( ) ( ) ( ) ( ) ... ( )
[ ] [ ] [3] [ ]
= + + + + +
0 1
1
2 1
2
3 2 1


(6.38)
Se observ c P x y C
n n n
( ) = =
0
(6.39)
Calculm diferena finit de ordinul nti
AP x C h C h x x C h x x nC h x x
n n n n
n
( ) ! ( ) ( ) ... ( )
[ ] [ ] [ ]
= + + + +


1 2 1
1
3 2
2
1
1
1 2 3 (6.40)
Metode numerice n electronic 132
h C y x P
n n n
! 1 ) (
1 1 1
= A = A

pentru x x
n
=
1
i rezult C
y
h
n
1
1
1!
=

A
.


Continund calculele diferenelor finite n punctele x x x
n n n k 2 3
, ,..., , pentru rangul k
rezult formula de calcul al coeficientului C
k
:

( )
C
y
k h
k
k
n k
k
=

A
!
(6.41)
Substituind k n = 01 2 , , ,.., n formula (6.41) se obin coeficienii polinomului. innd
cont de formula (6.41) polinomul de gradul n (6.38) poate fi scris sub forma :
( ) ( )
| |
( )
| |
( )
| | n
n
n
n
n
n
n
n n
x x
h n
y
x x
h
y
x x
h
y
y x P
1
0
2
1
2
2
2
1
1
! ! 2 ! 1

A
+ +
A
+
A
+ =


(6.42)
Acest polinom este numit polinomul lui Newton de interpolare de spea a doua
deoarece s-au utilizat diferenele finite la stnga (tabelul 6.2). Dac punctul de
aproximare a funciei se gsete n apropierea lui x
n
, se recomand utilizarea metodei
se spea a doua deoarece d erori mai mici.


6.3.1. ALGORITMUL 6.3. NEWTON 2

{Variabile
n:numrul de puncte cunoscute, ntreg;
h:pasul constant ntre abscisele cunoscute, real;
y:ordonatele punctelor, vector;
xp:abscisa punctului n care se face interpolarea;
x
n
:abscisa maxim a punctelor cunoscute, real ;
sum:variabila ce reine sumele pariale, real;
prod:variabila ce reine produsele, real;
i, j:contoare, ntregi;
{ sum=y
n
;
prod=1 ;
pentru i=1...n
{pentru j=n...i
calculeaz y
j
=y
j
-y
j-1

( ) ( ) ( )
prod prod x x i h
h i
p n
= * * * * ; 1
1 1

sum=sum+y
n
*prod;
}
valoarea interpolat este sum ;
}
}.

6.3.2. IMPLEMENTAREA ALGORITMULUI 6.4

/* Funcia care implementeaz metoda de interpolare a lui Newton
Interpolarea 133
de spea a doua.
Funcia ntoarce valoarea interpolat
*/
double Newton2(int n,
double vi,
double pas,
double y[],
double point)
{
double sum,prod,vf;
int i,j;
vf=vi+n*pas;
sum=y[n];prod=1;
for(i=1;i<=n;i++)
{
for(j=n;j>=i;j--)y[j]=y[j]-y[j-1];
prod*=(point-(vf-(i-1)*pas))/(i*pas);
sum+=y[n]*prod;
}
return sum;
}


6.4. POLINOMUL LUI NEWTON DE INTERPOLARE CU
DIFERENE DIVIZATE

Fie funcia f x ( ) dat sub forma celei prezentate n tabelul (6.1) unde reeaua
x x x x
n 0 1 2
, , ,..., din domeniul de definiie al funciei nu are pas constant.
Definiia 6.3. Se numete diferen divizat de ordinul k+i a funciei f expresia :
( )
( ) ( )
f x x x x
f x x x f x x x
x x
i i i i k
i i i k i i i k
i k i
+ +
+ + +
+
=

1 1
1 1 1
1
, , , ... ,
, , ... , , , ...,
(6.43)
Se determin polinomul de gradul n, de forma :
P x C C x x C x x x x C x x x x x x
n n n
( ) ( ) ( )( ) ... ( )( )...( ) = + + + +
0 1 0 2 0 1 0 1 1
(6.44)
cunoscnd n+1 puncte ( , ) x y
i i
, i=0, ...,n , care verific polinomul.
Se observ c P x y C
n
( )
0 0 0
= = .
Calculm diferena divizat de ordinul nti pentru polinomul P x
n
( ) i se face x x =
1

P x x C
n
( , )
0 1 1
= .
Calculnd n continuare, se determin diferena divizat de ordinul k i lund pe
x x
k
= se obine valoarea coeficientului C
k
:
C P x x x x
k n k
= ( , , ,..., )
0 1 2
, k=0, 1, ...,n. (6.45)
innd cont de formula (6.45), polinomul (6.44) se scrie sub forma:
Metode numerice n electronic 134

P x y P x x x x P x x x x x x x
P x x x x x x x x
n n n
n n n
( ) ( , )( ) ( , , )( )( ) ...
( ,..., )( )( )...( )
= + + +
+

0 0 1 0 0 1 2 0 1
0 0 1 1
(6.46)
unde fiecare diferen divizat se calculeaz cu ajutorul formulei (6.43). Polinomul
obinut (6.46) poart numele de polinomul lui Newton de interpolare cu diferene
divizate.


6.4.1. ALGORITMUL 6.4. NEWTON 3

{Variabile
n : numrul de puncte date ale funciei, ntreg ;
x : abscisele punctelor date, vector ;
y : ordonatele punctelor date, vector ;
x : punctul n care se interpoleaz funcia, real ;
i,j : contoare, ntregi ;
sum : variabil ce reine sumele pariale, real ;
prod : variabil ce reine produsele pariale, real ;
{ sum=y
0
;
prod=1;
pentru i=1...n
pentru j=0...n-i calculeaz y
y y
x x
j
j j
j i j
=

+
+
1
;
prod= prod*( x -x
i-1
);
sum=sum+y
0
*prod;
}
valoarea interpolat este sum;

}


6.4.2. IMPLEMENTAREA ALGORITMULUI 6.4

/* Funcia care implementeaz metoda de interpolare a lui Newton
cu diferene divizate.
Funcia ntoarce valorea interpolat.
*/
double NewtonDD(int n,
double x[],
double y[],
double point)
{
int i,j;
double sum,prod;
sum=y[0];prod=1;
for(i=1;i<=n;i++)
Interpolarea 135
{
for(j=0;j<=n-i;j++)y[j]=(y[j+1]-y[j])/(x[j+i]-x[j]);
prod*=(point-x[i-1]);
sum+=y[0]*prod;
}
return sum;
}


6.5. METODA LUI AITKEN DE INTERPOLARE

Metoda lui Aitken de interpolare d acelai rezultat ca i metoda lui Lagrange de
interpolare doar c prin aceast metod nu se determin un polinom, ci se realizeaz
mai multe interpolri liniare. Cu fiecare interpolare, numrul punctelor rmase se
micoreaz cu o unitate, iar funcia ce trece prin dou puncte de la etapa curent
crete n grad, astfel c n final, dac sunt date n+1 puncte, se obine o funcie de
gradul n.
Considerm funcia dat n tabelul 6.1
Tabelul 6.3
x
y

x
0
y
0

x
1
y
1
y
01

x
2
y
2
y
02
y
012

x
3
y
3
y
03
y
013
y
0123

x
4
y
4
y
04
y
014
y
0124
----
----- ---- ---- ---- ---- ----
x
n
y
n
y
n 0
y
n 01
y
n 012
---- y
n 0123...


y
x x
x x
y
x x
x x
y
j
j
j j
j 0
0
0
0
0
=

j=1, 2, 3, ..., n

j
j j
j
j
y
x x
x x
y
x x
x x
y
0
1
1
01
1
01

=
j=2, 3, ..., n (6.47)
- - - - - - - - - - - - - - - ----------------

( )( ) ( )n n
n n
n
n n
n n
n
n
y
x x
x x
y
x x
x x
y
2 ... 012
1
1
1 2 ... 012
1
... 012

=
(6.48)

Valoarea interpolat a funciei tabelate n punctul x este y
012...n
.


6.5.1. ALGORITMUL 6.5. METODA LUI AITKEN

{Variabile
Metode numerice n electronic 136
n : numrul de puncte date ale funciei, ntreg ;
x :abscisele punctelor date, vector ;
y : ordonatele punctelor date, vector ;
xp: punctul n care se interpoleaz funcia, real ;
i,j : contoare, ntregi ;
{
pentru i=1...n
pentru j=i...n
calculeaz
y y
x x
x x
y
x x
x x
j i
p j
i j
j
p i
j i
=

1
1
1
1
;
}
valoarea interpolat este y
n
;
}


6.5.2. IMPLEMENTAREA ALGORITMULUI 6.5

/* Funcia care implementeaz metoda lui Aitken de interpolare
Funcia ntoarce valoarea interpolat */
double Aitken(int n,
double x[],
double y[],
double point)
{
int i,j;
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
y[j]=y[i-1]*(point-x[j])/(x[i-1]-x[j])+y[j]*(point-x[i-1])/(x[j]-x[i-1]);
return y[n];
}



6.6. INTERPOLAREA CU FUNCII SPLINE

Cuvntul splin provine din englez i nseamn o rigl elastic de care dac se
aga greuti poate fi fcut s treac prin diferite puncte dorite, cuprinse ntre
capetele riglei.
Considerm dat o funcie tabelat, reprezentat n tabelul 6.4.
Tabelul 6.4
x x
1
x
2
x
3
---- x
n

y
y
1
y
2
y
3
---- y
n


Interpolarea 137
Considerm x a
1
= i x b
n
= , [ , ] a b fiind intervalul de definiie a funciei f , iar
abscisele x
1
,x
2
,...,x
n
o diviziune A a intervalului de definiie. Valorile funciei sunt
y f x
i i
= ( ) , i n = 1 2 , ,..., (6.49)
Definiia 6.4. Se numete funcie spline de ordinul n relativ la diviziunea A
a intervalului [ , ] a b o funcie S: [ , ] a b R de clas C
m-1
[ , ] a b ale crei restricii S
i
(x)
pe fiecare interval [ , ] x x
i i+1
al diviziunii sunt polinoame de ordinul m, adic:
S x P x
i m
i
( ) ( ) = , dac x x x
i i
e
+
[ , ]
1
, i =1,2,...,(n-1) (6.50)
Funcia S(x) este neted pe poriuni deoarece are primele (m-1) derivate continue pe
[ , ] a b , iar derivata de ordinul m este discontinu n x
i
, i =1,2,...,n. Gradul de netezire
al funciei este m. Restriciile funciei sunt polinoamele:
S
i
(x)=A
i
x
m
+ B
i
x
m-1
+ C
i
x
m-2
+ E
i
x
m-3
+ ... +R
i
(6.51)
dac, x x x
i i
e
+
[ , ]
1
, i =1,2,...,(n-1)
Aceste funcii sunt derivabile pn la (m-1) i sunt continue mpreun cu derivatele.
Derivata de ordinul (m-1) a lui S
i
(x) pe intervalul [ , ] x x
i i +1
este o funcie liniar i trece
prin punctele ( , ) x D
i i
i ( , ) x D
i i + + 1 1
unde, D S x
i i
m
=
( )
( )
1
i =1,2,...,n.
Rezult ecuaia liniar:
S x
D x x D x x
h
i
m i i i i
i
( )
( )
( ) ( )
+ +
=
+
1 1 1
(6.52)
unde h
i
=x
i+1
-x
i
, i =1,2,...,(n-1)
Integrnd de m-1 ori relaia (6.52) se obine:
S x
D x x D x x
h
C
i
m i i i i
i
i
( )
( )
( ) ( )
+ +
=

+
2 1
2
1
2
1
2
(6.53)
i i
i
i i i i
m
i
C x C
h
x x D x x D
x S
2 1
3
1
3
1
) 3 (
6
) ( ) (
) ( + +
+
=
+ +

(6.54)
' =
+

+ +
+

+

S x
D x x x x D
n h
C x
m
C x
m
C
i
i i
m m
i
m
i
i
i
m
i
m
m i
( )
( ) ( ) ( )
( )! ( )! ( )!
...
,
1
1 2
1
1
1
3
2
4
1
1
1 3 4
(6.55)
S x
D x x x x D
n h
i
i i
m m
i
m
i
i
( )
( ) ( ) ( )
!
=
+
+
+

+

1
1
1
1
1 C x
m
C x
m
C x C
i
m
i
m
m i m i
1
2
2
3
2 1
2 3

+ + +
( )! ( )!
..
, ,
(6.56)

Pentru ntreg intervalul [ , ] a b rezult un sistem liniar punnd condiia ca S
i
(x
i
)=y
i
,
i=1,2,..,n i continuitatea celor (m-1) ecuaii n toate punctele x
i
. n extremele x
1
i
x
2
se scrie polinomul lui Lagrange, l derivm pn la m-1 i aflm corespunztor
valorile derivatelor n x
1
i x
n
. Rezult necunoscutele:
D
i
, D
i+1
, C
1i
,..., C
m-1,i
pentru fiecare interval. n acest caz sunt n+(m-1)+ (n-1)
necunoscute i n+(m-1)+(n-1) ecuaii. Sistemul fiind liniar se rezolv cu una din
metodele de la capitolul 3.
Algoritmul i programul s-au realizat pentru restriciile S
i
polinoame de gradul 3.
n acest caz:
S
i
(x)=A
i
x
3
+ B
i
x
2
+ C
i
x + E
i
(6.57)
Metode numerice n electronic 138

i
i i i i
i
h
x x D x x D
x S
) ( ) (
) (
1 1
+
= ' '
+ +


i
i
i i i i
i
C
h
x x D x x D
x S
1
2
1
2
1
2
) ( ) (
) ( +

= '
+ +

S x
D x x D x x
h
C x C
i
i i i i
i
i i
( )
( ) ( )
=

+ +
+ + 1
3
1
3
1 2
6
(6.58)
Din S x y
i i
( ) = i S x y
i i
( )
+ +
=
1 1
rezult:
C
y y
h
D D
h
i
i i
i
i i
i 1
1 1
6
=


+ +

C
x y x y
h
D x D x
h
i
i i i i
i
i i i i
i 2
1 1 1 1
6
=



+ + + +

Din identificarea relaiilor (6.57) i (6.58) rezult :

i
i i
i
h
D D
A
6
1

=
+
; B
D x D x
h
i
i i i i
i
=

+ + 1 1
2
(6.59)
C
D x D x
h
y y
h
D D
h
i
i i i i
i
i i
i
i i
i
=

+


+ + + + 1
2
1
2
1 1
2 6

E
x D x D
h
y x y x
h
D x D x
h
i
i i i i
i
i i i i
i
i i i i
i
=

+



+ + + + + + 1
3 3
1 1 1 1 1
6 6
(6.60)
Din continuitatea primei derivate n punctul x
i
, S x S x
i i i i
=
1
' '
( ) ( ) rezult:
h D h h D h D
y y
h
y y
h
i i i i i i i
i i
i
i i
i
+
+

+ + + =


|
\

|
.
|
1 1 1 1
1 1
1
2 6 ( ) (6.61)
Considernd derivatele de ordinul nti n punctele x
1
i x
2
egale cu:
' =

y
y y
x x
y y
x x
y y
x x
1
2 1
2 1
3 2
3 2
3 1
3 1
(6.62)
respectiv
' =

y
y y
x x
y y
x x
y y
x x
n
n n
n n
n n
n n
n n
n n
1 2
1 2
1
1
2
2
(6.63)
rezult sistemul tridiagonal n D
i
i n = 1 2 3 , , ,...,
Interpolarea 139

2 6
2 6
2 6
1 1 1 2
2 1
1
1
1 1 1 2 2 2 3
4 3
3
3 2
3
1 1 1 1
1 1
h D h D
y y
h
y
h D h h D h D
y y
h
y y
h
........................................................................................
h D h h D h D
y y
h
y y
h
............................................................
i i i i i i i
i i
i
i i
i
+ =

'
|
\

|
.
|
+ + + =

|
\

|
.
|
+ + + =

|
\

|
.
|
+
+ +
( )
( )
.............................
h D h h D h D
y y
h
y y
h
h D h D y
y y
h
n n n n n n n
n n
n
n n
n
n n n n n
n n
i



+ + + =

|
\

|
.
|
+ = '
|
\

|
.
|

2 2 2 1 1 1
1
1
1 2
1
1 1 1
1
2 6
2 6
( )
(6.64)
unde y
1
' i y
n
' sunt date de expresiile (6.62), respectiv (6.63) .
Din sistemul (6.64) rezult valorile lui D
i
, i =1,2,...,n. Din (6.59) rezult
coeficienii restriciilor pe fiecare interval, restricii care aproximeaz funcia dat.
Dac se d x n care trebuie calculat funcia, se stabilete intervalul n care se
gsete x i se calculeaz valoarea restriciei funciei pe acest interval n punctul x .


6.6.1. ALGORITMUL 6.6. FUNCII SPLINE

{ Variabile
n : numrul de puncte date ale funciei, ntreg ;
x :abscisele punctelor date, vector ;
y : ordonatele punctelor date, vector ;
xp: punctul n care se interpoleaz funcia, real ;
A,B,C: vectorii elementelor diagonale ale sistemului tridiagonal;
TL:vectorul termenilor liberi al sistemului tridiagonal;
h:vectorul pailor punctelor pe abscis;
S:vectorul soluiilor sistemului tridiagonal;
derx1:derivata n punctul x1, real;
derx2:derivata n punctul x2, real;
num:variabila ce d numrul intervalului n care se gsete xp, ntreg;
valint:variabil ce reine valoarea polinomului de gradul trei n punctul
xp, real;
i,j : contoare, ntregi;
{ pentru i = 1 pn la n-1

calculeaz h x x
i i i
=
+1
;

calculeaz derx
y y
x x
y y
x x
y y
x x
1
2 1
2 1
3 2
3 2
3 1
3 1
=

;
Metode numerice n electronic 140
calculeaz derxn
y y
x x
y y
x x
y y
x x
n n
n n
n n
n n
n n
n n
=

1 2
1 2
1
1
2
2
;
construiete sistemul tridiagonal
2 0 0 6 1
0 2 0 0 6
1 1 1 2 3
2 1
1
1 1 2 1 2 2 2 3 4
3 2
2
2 1
1
.h .D h .D .D .D (
y y
h
derx )
.D h .D (h h )D h D .D .D (
y y
h
y y
h
)
n
n
i
+ + + + =


+ + + + + + + =






+ + + + + =

0 0 0 2 6
1 2 3 1 1 1
1
1
.D .D .D h D .h .D (derxn
y y
h
)
n n n n
n n
n

Rezolv sistemul conform algoritmului (3.8) din capitolul 3.
Calculeaz S=Tridiagonal(A,B.C.TL);
/* Se caut intervalul care conine punctul de interpolare*/
i =1
repet
i=i+1;
pn cnd xp<x[i];
Cu formulele (6.59) calculeaz valorile A B C E
i i i i
, , , pentru i gsit;
calculeaz val A xp B xp C xp E
s s s s
int . . . ; = + + +
3 2


tiprete valint

}


6.6.2. IMPLEMENTAREA ALGORITMULUI 6.6

/* Funcia care implementeaz interpolarea prin funcii spline cubice
Funcia ntoarce
1 dac se gsete valoarea ;
0 dac sistemul tridiagonal nu se poate rezolva;
2 dac valoarea de interpolat nu se afl n interval;
*/
int SPLINE(int ord,
double xi[],
double yi[],
double point,
double *valoare
)
{
static double a[NrMax],b[NrMax],c[NrMax],d[NrMax],der2[NrMax];
Interpolarea 141
int i,cod,loc;
double d1,d2;
if( (point<xi[1])||(point>xi[ord]) )return 2;
/*Pregtesc sistemul tridiagonal pentru aflarea derivatei a doua */
/*Calculez prima derivat n capete */
d1=(yi[2]-yi[1])/(xi[2]-xi[1])-(yi[3]-yi[2])/(xi[3]-xi[2])+(yi[3]-yi[1])
/(xi[3]-xi[1]);
d2=-(yi[ord-1]-yi[ord-2])/(xi[ord-1]-xi[ord-2])+(yi[ord]-yi[ord-1])
/(xi[ord]-xi[ord-1])+(yi[ord]-yi[ord-2])/(xi[ord]-xi[ord-2]);
/*Calculez coeficienii primei linii */
a[1]=0;
b[1]=2*(xi[2]-xi[1]);
c[1]=xi[2]-xi[1];
d[1]=6*( (yi[2]-yi[1])/(xi[2]-xi[1])-d1);
/*Calculez coeficienii liniilor 2...ord-1*/
for(i=2;i<=ord-1;i++)
{
a[i]=xi[i]-xi[i-1];
b[i]=2*(xi[i+1]-xi[i-1]);
c[i]=xi[i+1]-xi[i];
d[i]=6*( (yi[i+1]-yi[i])/(xi[i+1]-xi[i])-(yi[i]-yi[i-1])
/(xi[i]-xi[i-1]) );
}

/* Calculez coeficienii ultimei linii */
a[ord]=xi[ord]-xi[ord-1];
b[ord]=2*(xi[ord]-xi[ord-1]);
c[ord]=0;
d[ord]=6*(d2-(yi[ord]-yi[ord-1])/(xi[ord]-xi[ord-1]));
cod=SolveTridi(ord,a,b,c,d,der2);
if(cod==0)return 0;
/*Calculez coeficienii funciilor Spline locale
Utilizez aceleai variabile ca pentru sistemul tridiagonal */
for(i=1;i<=ord-1;i++)
{
a[i]=(der2[i+1]-der2[i])/( 6*(xi[i+1]-xi[i]));
b[i]=(der2[i]*xi[i+1]-der2[i+1]*xi[i])/(2*(xi[i+1]-xi[i]));
c[i]=( der2[i+1]*pow(xi[i],2)-der2[i]*pow(xi[i+1],2) )
/(2*(xi[i+1]-xi[i]))+(yi[i+1]-yi[i])
/(xi[i+1]-xi[i])-a[i]*pow(xi[i+1]-xi[i],2);
d[i]=(der2[i]*pow(xi[i+1],3)-der2[i+1]*pow(xi[i],3))
/(6*(xi[i+1]-xi[i]))+(yi[i]*xi[i+1]-yi[i+1]*xi[i])
/(xi[i+1]-xi[i])-b[i]*pow( ( xi[i+1]-xi[i]),2)/3;
}
/*Localizez valoarea de interpolat pentru a afla ce funcie i aplic */
loc=1;
Metode numerice n electronic 142
while (point<xi[loc]) loc++;
*valoare=a[loc]*pow(point,3)+b[loc]*pow(point,2)+c[loc]*point+d[loc];
return 1;
}


6.7. INTERPOLAREA FUNCIILOR PERIODICE

Se consider funcia periodic f a b :[ , ] R cu proprietatea c f a f b ( ) ( ) = unde
T b a = este perioada funciei.
Experimental s-au obinut n valori ale funciei pe perioada [ , ] a b prezentate n
tabelul 6.5 i se cere o valoare a funciei f ntr-un punct x a b
p
e[ , ] , dar x x
p i
= ,
i n = 1 2 , ,..., .
Tabelul 6.5
x x a
1
= x
2
x
3
---- x b
n 2
=
y
y
1
y
2
y
3
---- y
n 2


Pentru determinarea acestei valori se determin un polinom de interpolare a
funciei periodice.
Definiia 6.5. Se numete sistem fundamental de funcii periodice irul de funcii ,
i=0,1,2,...,n definite pe [ , ] a b , dac: sunt continue, liniar independente pe [ , ] a b ,
( ) ( ) a b = pentru orice i =1,2,...,n , iar funcia
H x a
i i
i
n
( ) =
=


0
cu a
i
i
n
2
0
0 >
=

(6.65)
are cel mult n rdcini pe [ , ] a b .
Se face transformarea t
x a
b a
=

2t( )
pentru a transforma intervalul [ , ] a b n
intervalul |0,2t|. n acest caz se consider sistemul de funcii periodice fundamental
pe [ , ] a b .
1 , cos x, sin x, cos 2x, sin 2x, ... , cos nx, sin nx (6.66)
Propoziia 1: Fie funcia periodic f: |0,2t|R i punctele ( x f x
i i
, ( ) ), i=0,1,...,n
unde | | x o
i
e ,2t , x x
i j
= . Atunci polinomul de interpolare a funciei date este:

[
=
=
=

=
n
i
n
i j
j j i
j
i n
x x
x x
x f I
0 0
2
sin
2
sin
) (
(6.67)
Se observ o analogie ntre polinomul de interpolare al lui Lagrange i polinomul
de interpolare a funciilor periodice (6.67).

6.7.1. ALGORITMUL 6.7. FUNCII PERIODICE

{Variabile
Interpolarea 143
a : limita stng a intervalului, real ;
b : limita dreapt a intervalului, real ;
n : numrul de valori cunoscute ale funciei, ntreg ;
x : abscisele punctelor cunoscute, vector ;
y : ordonatele punctelor cunoscute, vector ;
x : punctul de interpolare a funciei, real;
i,j : contoare, ntregi ;
sum : variabil pentru a reine sumele, real;
prod : variabil pentru a reine produsele, real ;
{ T
b a
=

t
;
sum=0;
pentru i=0,1,...,n
{prod=1;
pentru j=0,1,...,n dac j=i atunci
calculeaz
| |
| |
prod prod
T x x
T x x
j
i j
= -
-
-
sin ( )
sin ( )
;
calculeaz sum=sum+y
i
-prod;
}
valoarea interpolat este sum
}
}


6.7.2. IMPLEMENTAREA ALGORITMULUI 6.7

/* Funcia care implementeaz metoda de interpolare a funciilor
periodice.
Funcia ntoarce valoarea interpolat */
double IFPer(int n,
double x[],
double y[],
double T,
double point)
{
int i,j;
double sum=0,prod;

for(i=0;i<=n;i++)
{
prod=1;
for(j=0;j<=n;j++)
if(j!=i)prod*=sin( pi*(point-x[j])/T )/sin (pi*(x[i]-x[j])/T);
sum+=y[i]*prod;
Metode numerice n electronic 144
}
return sum;
}


6.8. INTERPOLAREA FUNCIILOR DE MAI MULTE
VARIABILE

Vom considera o funcie de dou variabile: f : ER unde EcR
2
de forma
f g x y = ( , ) . Se consider urmtoarele puncte cunoscute )) , ( , , (
j i j i
y x f y x pentru
i n = 01 2 , , ,..., i j n = 01 , ,..., .
Se pune problema determinrii unui polinom de gradul n care s satisfac condiiile
P x y f x y
n i i i i
( , ) ( , ) = cu i j n , , , ,..., = 012 . Fie polinomul de grad n n dou variabile:
P x y a a x a y a xy a xy
n n
n
( , ) .. = + + + + +
00 10 01 11 1
(6.68)

Coeficienii polinomului pot fi pui sub form matriceal astfel:



a a a a a a
a a a a a
a a a
a a
a
n n
n
n n n
n n
n
00 01 02 03 0 1 0
10 11 12 13 1 1
2 0 2 1 2 2
1 0 1 1
0
0
0 0 0
0 0 0 0
0 0 0 0 0
...
...
. ..
...
...
( )
( )
( ) ( ) ( )
( ) ( )




|
\

|
.
|
|
|
|
|
|
|
|
(6.69)

Pentru determinarea acestor coeficieni avem nevoie de
( )( ) n n + + 1 2
2
ecuaii.
Aceste ecuaii le putem obine numai din punctele date ( ) x y f x y
i i i i
, , ( , ) care trebuie
s fie tot n numr de
( )( ) n n + + 1 2
2
.
Ca urmare, punctele n care se cunoate funcia este necesar s se dea sub form
triunghiular:

( ) ( )
( ) ( )
( )
( , ) ( , ) , ... ,
( , ) , , ...
( , ) , ...
( , ) ...
x y x y x y x y
x y x y x y
x y x y
x y
n
n n
n
0 0 0 1 0 2 0
1 0 1 1 1 2
1 0 1 1
0
0
0 0
0 0 0

|
\

|
.
|
|
|
|
|
|
|

(6.70)

Interpolarea 145
n acest caz punctele nu sunt aezate pe o curb de gradul n ceea ce conduce la un
determinant A=0 , deci la o determinare unic a coeficienilor polinomului (6.68). Se
caut un polinom de gradul n sub forma:


| | | | | |
P x y a a x x a y y a x x
n
( , ) ( ) ( ) ( ) = + + + +
00 10 0
1
01 0
1
20 0
2


| | | | | | | | n
n
y y a y y a y y x x a ) ( ... ) ( ) ( ) (
0 0
2
0 02
1
0
1
0 11
+ + + + (6.71)

Aplicm diferenele finite pentru funciile de dou variabile:
A A
x y
i j
x y
i j
n ij
i j
i j i j
f x y P x y a h k i j
+ +
= = ( , ) ( , ) ! !
0 0 0 0
(6.72)
innd cont de formula (6.72) n expresia (6.71) rezult:

a
f x y
h k i j
ij
x y
i j
i j
i j
=
+
A ( , )
! !
0 0


Introducnd coeficienii calculai n expresia polinomului (6.71) rezult polinomul de
interpolare pentru funcii de dou variabile:


| | | |
P x y
f x y
h k i j
x x y y
n
x y
i j
i j
i j
i j n
n
i j
i j
( , )
( , )
! !
( ) ( )
,
=
+
=
+ s

A
0 0
0
0 0
(6.73)

Formula se poate extinde la funcii multidimensionale, dar trebuie s fim ateni la
modul de selecie a punctelor n care se alege funcia pentru a putea fi posibil calculul
coeficienilor polinomului de interpolare.
n aplicaii se utilizeaz des pentru interpolarea funciilor de dou variabile,
polinomul lui Lagrange extins. Considerm (n+1)(m+1) puncte distincte n care este
dat funcia f x y i n j n
i j
( , ), , ,..., ; , ,..., . = = 01 01 Se caut polinomul P x y ( , ) de grad cel mult
n n x i m n y astfel ca: . ,..., 2 , 1 , 0 ; ,..., 1 , 0 ), , ( ) , ( m j n i y x f y x P
j i j i
= = = Polinomul
lui Lagrange pentru dou variabile are forma:
L x y f x y
x x
x x
y y
y y
i j
k
i k
k
j k k
k j
m
k
k i
n
j
m
i
n
( , ) ( , ) =

=
=
=
=
= =
[ [
0 0 0 0
. (6.74)
Pentru acest polinom sunt prezentate n continuare algoritmul i implementarea
algoritmului n limbaj C.


6.8.1. ALGORITMUL 6.8. FUNCII DE DOU VARIABILE

{Variabile
n,m:intregi,numrul de puncte pe Ox i Oy ;
x:vectorul coordonatelor punctelor pe Ox;
y:vectorul coordonatelor punctelor pe y;
Metode numerice n electronic 146
z:matricea valorilor funciei;
pcx:coordonata pe Ox a punctului de interpolare;
pcy:coordonata pe Oy a punctului de interpolare;
i,j,k:intregi,contori;
prodx,prody:produse pariale;
valoare:sume pariale;
{
valoare=0;
pentru i=0 la n
{
prodx=1;
pentru k=0 la n dac k= i
calculeaz prodx=(pcx-x[k])/(x[i]-x[k]);
pentru j=0 la m
{
prody=1;
pentru k=0 la m dac k=j
calculeaz prody=(pcy-y[k])/(y[j]-y[k]);
calculeaz valoare=z(i,j)*prodx*prody;
}
}
funcia n punctul de interpolare este valoare;
}


6.8.2. IMPLEMENTAREA ALGORITMULUI 6.8

double Lagrange2(int n, int m,
double x[],
double y[],
double z[][NMAX],
double pcx,
double pcy
)

{
int i,j,k;
double prodx,prody,valoare;
valoare=0;
for(i=0;i<=n;i++)
{
prodx=1;
for(k=0;k<=n;k++)if(k!=i)
prodx*=(pcx-x[k])/(x[i]-x[k]);
for(j=0;j<=m;j++)
{
Interpolarea 147
prody=1;
for(k=0;k<=m;k++)
if(k!=j)
prody*=(pcy-y[k])/(y[j]-y[k]);
valoare+=z[i][j]*prodx*prody;
}
}
return valoare;
}


6.9. APLICAII

1. Se consider datele experimentale obinute pentru caracteristica rezistenei
termice jonciune termic R
jt
[

C W / ] funcie de lungimea terminalului l[ inch ],


pentru o dioda Zener prezentate n tabelul urmtor:
Tabelul 6.6
l
[inch]

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9
Rjt
[oC/w]

70

140

175

200

225

250

265

280

290

300
Se cere s se determine puncte ntre valorile date pentru o reprezentare grafic ct mai
precis.

S-a determinat valoarea funciei pentru l=0.45 inch. S-au obinut pentru rezistena
termic jonciune terminal urmtoarele valori:
cu metoda lui Lagrange 238.3757

C W / ;
cu metoda lui Newton de spea nti 238.3770

C W / ;
cu metoda lui Newton de spea a doua 238.3783

C W / ;
cu metoda lui Aitken 238.3757

C W / ;




7
METODE DE OPTIMIZARE*



Metodele de optimizare se clasific, n raport cu problema care se pune pentru
funcia int sau scop, astfel:
1. Metode ce determin expresia analitic a funciei, care aproximeaz cel mai bine
o funcie tabelat dat prin puncte;
2. Metode ce determin diferii parametri ai funciei scop (int), pentru a obine un
extrem al funciei.


7.1. METODA CELOR MAI MICI PTRATE

Presupunem c avem o funcie definit printr-un tabel de valori. Dac tabelul este
obinut n urma unor msurtori fizice, atunci elementele lui pot avea erori. Elementele
care difer mult de celelalte pot fi eliminate. Problema care se pune este s
determinm funcia analitic care aproximeaz cel mai bine datele din tabel sau curba
care trece prin punctele tabelului.
Considerm c funcia tabelat poate fi aproximat cu funcia: ( ) y f x = .
Deoarece funcia tabelat este cunoscut numai n anumite puncte, n numr de m, n
aceste puncte avem urmtoarele erori:
( )
( )
( )
e y y y f x
e y y y f x
e y y y f x
m m m m m
1 1 1 1 1
2 2 2 2 2
= =
= =

= =

(7.1)
care ar putea fi calculate dac am cunoate funcia ( ) y f x = .
Pentru determinarea funciei, vom anticipa nti o funcie care s se asemene foarte
mult cu curba realizat cu punctele tabelului. Aceast funcie poate fi: liniar,
hiperbolic, logaritmic, exponenial geometric, trigonometric etc.
Al doilea pas este determinarea funciei din condiiile ca suma abaterilor:

________________
*)
Bibliografie: [7], [14],[15],[20]
e =
( )
y y
i i
i=
m

1
(7.2)
Metode de optimizare

149
s fie minim.
n cazul unei drepte dat prin dou puncte, abaterea (7.2) este nul pentru toate
dreptele ce trec prin mijlocul segmentului format de cele dou puncte. Ca urmare
problema nu este unic determinat. Aceast problem se elimin dac considerm
valoarea absolut a erorilor:
e y y
i
i
i=
m
=
1
(7.2a)
Inconvenientul n cazul formulei (7.2a) l prezint funcia valoare absolut care nu are
derivat n punctele n care se anuleaz funcia. Pentru eliminarea acestor
inconveniente s-a trecut la suma ptratelor erorilor, pe care o notm cu E.
( ) E y y
i i
i=
m
=
1
2
(7.3)
Metoda de optimizare a primit denumirea de metoda celor mai mici ptrate, conform
formulei (7.3) pentru c determin funcia ( ) y f x = pentru eroarea maxim i mai
poart denumirea i de regresie deoarece problema este de deducere a funciei
cunoscnd valorile ei ntr-un anumit numr de puncte.


7.1.1. REGRESIA LINIAR

Se consider funcia tabelat:
Tabelul 7.1
x
x
1
x
2
x
3
x
4
..
x
m

y
y
1
y
2
y
3
y
4
..
y
m


unde m reprezint numrul de msurtori sau de valori ale funciei. Se cere s se
determine funcia liniar de forma general
y ax b = + (7.4)
care s aproximeze cel mai bine funcia tabelat (tabelul 7.1) asfel ca eroarea:

( )
2
1

+ =
m
i=
i i
y b ax E
(7.5)
s fie minim. Necunoscutele a i b se determin din condiia de minim a lui E care
se realizeaz pentru anularea derivatelor pariale n raport cu a i b ale lui E:

( ) ( )
( ) ( )

= + =
= + =

0 2
0 1 2
1
1
i
m
i=
i i
m
i=
i i
x y b ax
a
E
y b ax
a
E
c
c
c
c
(7.6)
Rezult sistemul n necunoscutele a i b :
Metode n electronic

150

m b+ x a= y
x b+ x a= x y
i
i=
m
i
i=
m
i
i=
m
i
i=
m
i i
i=
m

|
\

|
.
|
|
\

|
.
|
|
\

|
.
|



1 1
1
2
1 1
(7.7)
Soluiile sistemului liniar (7.7) n a i b sunt:
b
x y x x y
m x x
i
i=
m
i
i=
m
i
i=
m
i i
i=
m
i
i=
m
i
i=
m
=

|
\

|
.
|


2
1 1 1 1
2
1 1
2
(7.8)
a
m x y x y
m x x
i i
i=
m
i
i=
m
i
i=
m
i
i=
m
i
i=
m
=

|
\

|
.
|


1 1 1
2
1 1
2
(7.9)

Numitorii expresiilor lui a i b se anuleaz numai dac x
i
sunt identice, caz exclus.
nlocuind valorile lui a i b n ecuaia (7.4) avem funcia liniar care aproximeaz cel
mai bine funcia tabelat dat (7.1).


7.1.1.1. Algoritm 7.1. Regresia liniar

{Variabile
x:abscisele funciei,vector;
y:ordonatele funciei,vector;
m: numrul experienelor, ntreg;
sx: variabila pentru suma absciselor, real;
sy: variabila pentru suma ordonatelor, real;
sxx:variabila pentru sumele de forma x
2
, real;
sxy: variabila pentru sumele de forma xy, real;
a:coeficientul lui x, real;
b: termenul liber, real;
i: contor, ntreg;
{
s
x
= 0; s
y
= 0; s
xy
= 0; s
xx
= 0;
pentru i = 1... m
{
calculeaz s
x
= s
x
+x
i
;
calculeaz s
y
= s
y
+y
i
;
calculeaz s
xy
= s
xy
+x
i
*y
i
;
calculeaz s
xx
= s
xx
+x
i
*x
i
;
}
Metode de optimizare

151
calculeaz a =
m s -s s
m s -s s
;
xy x y
xx x x



calculeaz b =
s s -s s
m s -s s
xx y x xy
xx x x


;
}

Funcia este y = ax +b;

}


7.1.1.2. Implementarea algoritmului 7.1

/*Funcia ce implementeaz regresia liniar */
void RegLin(int nrp,
double x[],
double y[],
double *coef1,
double *coef2)
{
double sx=0,sy=0,sxx=0,sxy=0;
int i;
for (i=1;i<=nrp;i++)
{
sx+=x[i];
sy+=y[i];
sxy+=x[i]*y[i];
sxx+=x[i]*x[i];
}
*coef1=(nrp*sxy-sx*sy)/(nrp*sxx-sx*sx);
*coef2=(sy*sxx-sx*sxy)/(nrp*sxx-sx*sx);
}


7.1.2. REGRESIA POLINOMIAL

Dac regresia liniar nu este satisfctoare se caut o funcie polinom de un anumit
grad (2, 3, 4n).
Fie funcia dat n tabelul (7.1). Considerm c reprezentarea grafic a acestei
funcii se aseamn foarte mult cu curba unui polinom de gradul n de forma:
y a x a x ...... a x a
n
n
n
n
= + + + +


1
1
1 0
(7.10)
Notm cu y
i
expresia:
y
i
= a x a x ... a x a
n i
n
n- i
n-
i
+ + + +
1
1
1 0
(7.11)
Se minimizeaz funcia int:
Metode n electronic

152
E = ( ) y a x -a x ... a x a
i n i
n
n- i
n-
i
i=
m

1
1
1 0
1
2
(7.12)
unde m reprezint numrul de valori ale funciei tabelate.
Necunoscutele sunt: a
n
, a
n-1
,..., a
0
. (7.13)
Se deriveaz n raport cu necunoscutele (7.13) i se obine sistemul:

ma x a x a x a x a y
x a x a x a x a x
i
i=
m
i
i=
m
i
k
i=
m
k i
n
i=
m
n i
i
i=
m
i
i=
m
i
i=
m
i
k+
i=
m
k i
n+
i=
m
0
1
1
2
1
2
1 1
1
0
2
1
1
3
1
2
1
1
1
1
+
|
\

|
.
| +
|
\

|
.
| + +
|
\

|
.
| + +
|
\

|
.
| =
|
\

|
.
| +
|
\

|
.
| +
|
\

|
.
| + +
|
\

|
.
| + +
|
\


.
| =

|
\

|
.
| +
|
\

|
.
| +
|
\

|
.
| + +
|
\

|
.
| + +
|
\

|
.
| =


a x y
x a x a x a x a x a x y
________________________________________
n i i
i
p
i=
m
i
p+
i=
m
i
p+
i=
m
i
p+k
i=
m
k i
p+n
i=
m
n i
p
i
1
0
1
1
1
2
1
2
1 1

_____________
x a x a x a x a x a x y
i
n
i=
m
i
n+
i=
m
i
n+
i=
m
i
n+k
i=
m
k i
n
i=
m
n i
n
i
1
0
1
1
1
2
1
2
1
2
1

|
\

|
.
| +
|
\

|
.
| +
|
\

|
.
| + +
|
\

|
.
| + +
|
\

|
.
| =


(7.14)

Sistemul obinut este un sistem liniar n necunoscutele a
0
, a
1
, a
2
.,..., a
n
i se rezolv
cu una dintre metodele cunoscute n capitolul 3.

7.1.2.1. Algoritmul 7.2.Metoda polinomial

{Variabile
X: abscisele funciei, vector;
Y: ordonatele funciei, vector;
m: numrul de puncte cunoscute ale funciei, ntreg;
n: gradul polinomului, ntreg;
{
pentru i = 1. ... n+1
{
B[i] = 0;
pentru j = 1,....,n+1 A[i] = 0
}
pentru i = 1. ... n+1
{
pentru k = 1. ... m calculeaz B[i] = B[i]+ y
k
*pow(x
k
, i-1);
pentru j = 1,....,n+1
pentru k = 1. ... m calculeaz A[i,j] = A[i,j]+ pow(x
k
, i+j-2);
}
Metoda_Rez_Sist.(n+1,A,B,Sol); (*se rezolv sistemul*)
}
coeficienii polinomului sunt Sol;
}

Metode de optimizare

153

7.1.2.2. Implementarea algoritmului 7.2

/* Funcia ntoarce:
0 dac gradul polinomului este mai mare ca numrul de puncte
1 n caz de succes
*/
int RegPol(int nrp,
double xx[],
double yy[],
int grdp,
double coef[])
{
static double mat[NrMax][NrMax],b[NrMax];
int i,j,k,putere;
if (nrp<=grdp) return 0;
for(i=1;i<=grdp+1;i++)
for(j=1;j<=grdp+1;j++)
{
mat[i][j]=0;
putere=i+j-2;
for(k=1;k<=nrp;k++)mat[i][j]+=pow(xx[k],putere);
}
for(i=1;i<=grdp+1;i++)
{
b[i]=0;
putere=i-1;
for(k=1;k<=nrp;k++)b[i]=b[i]+yy[k]*pow(xx[k],putere);
}
GAUSS(grdp+1,mat,b,coef);
return 1;
}


7.1.3. REGRESIA HIPERBOLIC

Fie funcia numeric dat n tabelul 7.1. Reprezentarea grafic prin puncte a
acestei funcii se aseamn foarte bine cu o funcie hiperbolic. Se pune problema
determinrii funciei hiperbolice
y
ax+b
=
1
(7.15)
care aproximeaz cel mai bine funcia numeric. Pentru comoditatea calculului se
inverseaz funcia hiperbolic i se construiete funcia eroare:
Metode n electronic

154
E
y
ax b
i
i
i=
m
=
|
\

|
.
|
|

1
1
2
(7.16)
Prin derivare n raport cu a i dup aceea cu b se obine sistemul liniar:

mb+ x a=
y
x b+ x a=
x
y
i
i=
m
i i=
m
i
i=
m
i
i=
m
i
i i=
m
1 1
1
2
1 1
1


|
\

|
.
|
|
\

|
.
|
|
\

|
.
|

(7.17)
Soluiile sistemului (7.17) sunt:
a
x
y
m
x
y
x m x
i
i=
m
i i=
m
i
i i=
m
i
i=
m
i
i=
m
=

|
\

|
.
|


1 1 1
1
2
2
1
1
(7.18)
b
y
x
x
y
x
m x x
i=
m
i
i
i=
m
i
i
i
i=
m
i=
m
i
i=
m
i
i=
m
=

|
\

|
.
|


1
2
1 1 1
2
1 1
2
1
(7.19)
nlocuim valorile lui a i b n funcia hiperbolic (7.15) i se obine funcia care
aproximeaz cel mai bine funcia numeric din tabelul 7.1.


7.1.3.1. Algoritm 7.3. Regresia hiperbolic

{Variabile
x:abscisele funciei numerice, real;
y:ordonatele funciei numerice, real;
m: numrul experienelor, ntreg;
s
x:
variabila ce conine sumele absciselor, real;
s
y
: variabila ce conine suma inverselor ordonatelor, real;
s
xx
:variabila ce conine ptratul absciselor, real;
s
xy
: variabila ce conine suma raportului dintre abscise i ordonate, real;
a,b:coeficienii funciei hiperbolice, real;
i: contor, ntreg;
{
s
x
= 0; s
y
= 0; s
xy
= 0; s
xx
= 0;
pentru i = 1... m
{
calculeaz s
x
= s
x
+x
i
;
calculeaz s
y
= s
y
+
1
y
i
;
calculeaz s
xy
= s
xy
+
x
y
i
i
;
calculeaz s
xx
= s
xx
+x
i
*x
i
;
Metode de optimizare

155
}
calculeaz a =
s s -m s
m s -s s
;
x y xy
xx x x



calculeaz b =


s s -s s
m s -s s
;
xx y xy x
xx x x


Funcia este y
ax+b
=
1
;
}


7.1.3.2. Implementarea algoritmului 7.3

/* Regresia hiperbolic */
Programul principal poate fi realizat
de ctre cititor ca un exerciiu. n continuare este dat funcia:
/* Funcia ce implementeaz regresia hiperbolic */
void RegHip(int nrp,
double *x,
double *y,
double *coef1,
double *coef2)
{
double sx=0,sy=0,sxx=0,sxy=0;
int i;
for (i=1;i<=nrp;i++)
{
sx+=x[i];
sy+=1/y[i];
sxy+=x[i]/y[i];
sxx+=x[i]*x[i];
}

*coef1=(nrp*sxy-sx*sy)/(nrp*sxx-sx*sx);
*coef2=(sy*sxx-sx*sxy)/(nrp*sxx-sx*sx);

}


7.1.4. REGRESIA EXPONENIAL

Se constat c funcia numeric din tabelul 7.1 reprezentat grafic, se aseamn
foarte mult cu o exponenial. Considerm funcia exponenial de forma general:
y=a b
x
(7.20)
Metode n electronic

156
n care a i b sunt constante pozitive.
Pentru un calcul comod al constantelor a i b se logaritmeaz funcia (7.20)
y a x b = + ln ln (7.21)
i se determin constantele asfel ca eroarea:

( )
2
1
ln ln ln

=
m
i=
i i
y b a+x E
(7.22)
s fie minim.
Prin derivarea parial a funciei E n raport cu a i b se obine urmtorul
sistem:

|
.
|

\
|
|
.
|

\
|
|
.
|

\
|


m
i=
i i
m
i=
i
m
i=
i
m
i=
i
m
i=
i
y x b= x a+ x
y b= x a+ m
1 1
2
1
1 1
ln ln ln
ln ln ln
(7.23)
Soluiile sistemului obinut (7.23) sunt:
a
y x x y x
m x x
i
i=
m
i i i
i=
m
i
i=
m
i
i=
m
i
i=
m
=

(
(

|
\

|
.
|

(
(



exp
ln ln
1
2
1 1
2
1 1
2
(7.24)
b
m x y x y
m x x
i i i i
i=
m
i=
m
i=
m
i
i=
m
i
i=
m
=

|
\

|
.
|

(
(



exp
ln ln
1 1 1
2
1 1
2
(7.25)


7.1.4.1. Algoritm 7.4. Regresia exponenial

{Variabile
x:abscisele funciei numerice, real;
y:ordonatele funciei numerice, real;
m: numrul absciselor funciei, ntreg;
s
x:
variabil a sumei absciselor, real;
s
xx
: variabil a sumei ptratelor absciselor, real;
s
ln y
: variabil a sumei logaritmilor din ordonate, real;
s
xln y
:variabil a sumei absciselor nmulite cu logaritmul ordonatelor,
real;
{
s
x
= 0; s
ln y
= 0; s
xln y
= 0; s
xx
= 0;
pentru i = 1... m
{
calculeaz s
x
= s
x
+x
i
;
Metode de optimizare

157
calculeaz s
xx
= s
xx
+x
i
*x
i
;
calculeaz s
lny
= s
lny
+ln y
i
;
calculeaz s
xln y
= s
xln y
+ x
i
ln y
i
;
}
calculeaz a =exp
ln ln
s s -s s
m s -s s
;
y xx x x y
xx x x


`
)

calculeaz b =exp
ln ln
ms -s
m s -s s

x y x y
xx x x


`
)
;

Funcia este y = ab
x
;
}


7.1.4.2. Implementarea algoritmului 7.4

/* (Regresia exponenial )*/
/*Funcia ce implementeaz regresia exponenial */
void RegExp(int nrp,
double x[],
double y[],
double *coef1,
double *coef2)
{
double sx=0,sy=0,sxx=0,sxy=0;
int i;
for (i=1;i<=nrp;i++)
{
sx+=x[i];
sy+=log(y[i]);
sxy+=x[i]*log(y[i]);
sxx+=x[i]*x[i];
}
*coef2=exp((nrp*sxy-sx*sy)/(nrp*sxx-sx*sx));
*coef1=exp((sy*sxx-sx*sxy)/(nrp*sxx-sx*sx));
}

7.1.5. REGRESIA GEOMETRIC

Dac funcia numeric din tabelul 7.1 se aseamn cu o funcie de tip geometric,
vom cuta s determinm funcia de forma:
y ax
b
= (7.26)
care s aproximeze cel mai bine funcia numeric.
Se logaritmeaz cel mai bine funcia (7.26) i se construiete funcia:
Metode n electronic

158

( )
2
1
ln ln ln

=
m
i=
i i
y x a+b E
(7.27)
Se calculeaz valorile lui a i b asfel ca funcia E s fie minim. Prin derivarea
parial n raport cu a i b a expresiei E i egalarea derivatelor cu zero se obine
urmtorul sistem n necunoscutele a i b:

( )

|
.
|

\
|
|
.
|

\
|


m
i=
i i
m
i=
i
m
i=
i
m
i=
i
m
i=
i
y x = x a+b x
y = x a+b m
1
2
1 1
1 1
ln ln ln ln ln
ln ln ln
(7.28)
Rezolvnd sistemul se obin urmtoarele valori pentru a i b:

( ) ( ) ( ) ( ) ( )
( ) ( )
a
y x x x y
m x x
i
i=
m
i
i=
m
i
i=
m
i i
i=
m
i
i=
m
i
i=
m
=
|
\

|
.
|
|
\

|
.
|

|
\

|
.
|
|
\

|
.
|
|
\

|
.
|

|
\

|
.
|


exp
ln ln ln ln ln
ln ln
1
2
1 1 1
2
1 1
2
(7.29)

( ) ( ) ( ) ( )
( ) ( )
b
m y x x y
m x x
i
i=
m
i i
i=
m
i
i=
m
i
i=
m
i
i=
m
=
|
\

|
.
|

|
\

|
.
|
|
\

|
.
|
|
\

|
.
|

|
\

|
.
|


ln ln ln ln
ln ln
1 1 1
2
1 1
2
(7.30)
Cu aceste valori funcia y ax
b
= aproximeaz cel mai bine funcia tabelat (7.1) care
se aseamn cel mai bine cu o funcie de tip geometric.


7.1.5.1. Algoritmul 7.5. Regresia geometric

{ Variabile
x:abscisele funciei numerice, vector;
y:ordonatele funciei numerice, vector;
m: numrul de abscise, ntreg;
s
lnx:
variabil a sumei logaritmilor absciselor, real;
s
ln y
: variabil a sumei logaritmilor ordonatelor, real;
s
lnxlny
: variabil sumei produsului logaritmilor absciselor i a
logaritmilor ordonatelor, real;
s
lnxlnx:
variabila sumei ptratelor logaritmilor absciselor, real;
a,b: coeficienii, real;
i: contor, ntreg;
{
s
lnx
= 0; s
ln y
= 0; s
lnxlny
= 0; s
lnxlnx
= 0;
pentru i = 1... m
{
calculeaz s
lnx
= s
lnx
+ln(x
i
);
calculeaz s
lnxlnx
= s
lnxlnx
+ln(x
i
)*ln(x
i
);
calculeaz s
lny
= s
lny
+ln y
i
;
Metode de optimizare

159
calculeaz s
lnxlny
=s
lnxlny
+ln(x
i
)* ln(y
i
);
}
calculeaz a =exp
ln ln ln ln ln ln
ln ln ln ln
s s -s s
m s -s s
;
y x x x x y
x x x x


`
)


calculeaz b =
x x x x
y x y x
s -s s m
s -s s m
ln ln ln ln
ln ln ln ln


;

Funcia este y = ax
b
;
}


7.1.5.2. Implementarea algoritmului 7.5

/*Funcia ce implementeaz regresia geometric */
void RegGeo(int nrp,
double x[],
double y[],
double *coef1,
double *coef2)
{
double sx=0,sy=0,sxx=0,sxy=0;
int i;
for (i=1;i<=nrp;i++)
{
sx+=log(x[i]);
sy+=log(y[i]);
sxy+=log(x[i])*log(y[i]);
sxx+=log(x[i])*log(x[i]);
}
*coef2=(nrp*sxy-sx*sy)/(nrp*sxx-sx*sx);
*coef1=exp((sy*sxx-sx*sxy)/(nrp*sxx-sx*sx));
}
7.1.6. REGRESIA TRIGONOMETRIC

Se consider funcia numeric dat n tabelul 7.1 i funcia trigonometric de
forma:
y a b x = + cose (7.31)
care aproximeaz cel mai bine funcia numeric.
Se determin constantele a i b asfel ca funcia de a i b
( ) E y a-b x
i i
I=
m
= cose
2
1
(7.32)
s fie minim.
Metode n electronic

160
Prin egalarea cu zero a derivatelor pariale n raport cu a i b ale funciei E se obine
urmtorul sistem n necunoscutele a i b :

ma+ x b= y
x a+ x b= y x
i
i=
m
i
i=
m
i
i=
m
i
i=
m
i i
i=
m
cos
cos cos cos
e
e e e
1 1
1
2
1 1


|
\

|
.
|
|
\

|
.
|
|
\

|
.
|

(7.33)
Soluiile sistemului (7.32) sunt:
a
y x x y x
m x x
i
i=
m
i
i=
m
i
i=
m
i i
i=
m
i
i=
m
i
i=
m
=
|
\

|
.
|
|
\

|
.
|

|
\

|
.
|
|
\

|
.
|
|
\

|
.
|

|
\

|
.
|


1
2
1 1 1
2
1 1
2
cos cos cos
cos cos
e e e
e e
(7.34)
b
m y x x y
m x x
i i
i=
m
i
i=
m
i
i=
m
i
i=
m
i
i=
m
=
|
\

|
.
|

|
\

|
.
|
|
\

|
.
|
|
\

|
.
|

|
\

|
.
|


cos cos
cos cos
e e
e e
1 1 1
2
1 1
2
(7.35)
e t
t
= 2 =
2


f
T
unde f -frecvena, e - pulsaia, iar T -perioada. e se stabilete
funcie de periodicitatea funciei numerice date.


7.1.6.1. Algoritmul 7.6. Regresia trigonometric

{ Variabile
x:abscisele funciei numerice, vector;
y:ordonatele funciei numerice, vector;
m: numrul absciselor funciei numerice, ntreg;
e : pulsaia, real;
s
y
: suma ordonatelor funciei numerice, real;
s
cos 2x
: suma ptratelor cosinusurilor din abscise, real;
s
cos x:
suma cosinusurilor din abscise, real;
s
ycosx
:suma produsului ordonatelor cu cosinusul absciselor
corespunztoare, real;
a,b: coeficienii funciei, real;
i: contor, ntreg;
{
s
y
= 0; s
cos 2x
= 0; s
cos x
= 0; s
ycos x
= 0;
pentru i = 1... m
{
calculeaz s
y
= s
y
+ y
i
;
calculeaz s
cos 2x
= s
cos 2x
+ ( ) cos x
i
e * ( ) cos x
i
e ;
calculeaz s
cos x
= s
cos x
+ ( ) cos x
i
e ;
Metode de optimizare

161
calculeaz s
ycos x
= s
ycos x
+ y
i* ( ) cos x
i
e ;
}
calculeaz a =
s s -s s
m s -s s
;
y x x y x
x x x


cos cos cos
cos cos cos
2
2

calculeaz b =
m s -s s
m s -s s
;
y x x y
x x x


cos cos
cos cos cos 2

}
Funcia este ( ) f a+b x = cos e ;
}


7.1.6.2. Implementarea algoritmului 7.6

void reg_trig( int n,
double x[],
double y[],
double ,w
double *coef1,
double *coef2)
{
int i;
double sx=0,sy=0,sxx=0,sxy=0;
for(i=1;i<=n;i++)
{
sx+=cos(w*x[i]);
sy+=y[i];
sxy+=y[i]*cos(w*x[i]);
sxx+= cos(w*x[i])*cos(w*x[i]);
}
*coef1=(sy*sxx-sx*sxy)/(n*sxx-sx*sx);
*coef2=(n*sxy-sx*sy)/(n*sxx-sx*sx);
}
7.1.7. REGRESIA MULTIPL

Aceast regresie se refer la funciile de mai multe variabile. Considernd o funcie
numeric de n variabile y f x x x
n
= ( , , .... , )
1 2
i un tip de funcie analitic de n
variabile care se aseamn cu cea numeric, se pune problema determinrii funciei
analitice asfel ca ea s aproximeze cel mai bine funcia numeric. Aceast funcie se
determin prin minimizarea sumei ptratelor erorilor n punctele funciei numerice.
Pentru exemplificare considerm funcia de dou variabile numeric ( x y z , , ) unde
z g x y = ( , ) . Suprafaa punctelor z se poate asemna cu un plan, hiperboloid de rotaie,
elipsoid de rotaie, cilindru, con etc.
Vom considera funcia numeric dat n figura 7.1
Metode n electronic

162


O
yn
y4
y3
y2
y
1
y
x4 x3
x2 x1 xm
z1n
z
2n z3n z4n
z14
z
m1
zm2
zm3
zm4
znm
z13
z12
z11
z24
z
23
z
22
z21
z34
z33
z32
z31
z
44
z
43
z42
z41
x

Fig.7.1.Reprezentarea funciei multiple.


Considerm c punctele z z z
n 1 2
, ,..., se afl aproximativ pe un plan:
C By Ax z + + = (7.36)
Se pune problema determinrii acestui plan, adic a valorilor constantelor A, B, C
astfel ca planul s aproximeze cel mai bine funcia numeric dat n tabelul 7.2. Se
construiete funcia sumelor ptratelor erorilor n punctele reelei:


( )
E z Ax By C
ij i j
j=
n
i=
m
=
1 1
2
(7.37)

Prin egalarea derivatelor pariale ale funciei E n raport cu necunoscutele A, B, C,
rezult un sistem liniar funcie de aceste necunoscute:

mnC+ x nA+ y mB= z
x nC+ x nA+ x y B= x z
y mC+ x y A+ y mB= y
i
i=
m
j
j=
m
ij
j=
n
i=
m
i
i=
m
i
i=
m
i
j=
m
i=
m
j i
j=
n
i=
m
ij
j
j=
n
i
j=
n
i=
m
j j
j=
n
j
j=
n
i=
m
1 1 1 1
1
2
1 1 1 1 1
1 1 1
2
1 1 1



|
\

|
.
|
|
\

|
.
|
|
\

|
.
|
|
\

|
.
|
|
\

|
.
|
|
\

|
.
|
|
\

|
.
|
|
\

|
.
| z
ij

(7.38)

Utiliznd una dintre metodele numerice de rezolvare a sistemelor liniare din capitolul
3 se determin A, B, C, deci planul cutat.


7.1.7.1. Algoritmul 7.7. Regresia multipl

Metode de optimizare

163
{Variabile
x: argumentele pe axa Ox a funciei numerice, vector;
y: argumentele pe axa Oy a funciei numerice, vector;
z: valorile funciei numerice, matrice;
m: numrul de argumente pe Ox, ntreg ;
n: numrul de argumente pe Oy, ntreg;
s
x :
sumele argumentelor de pe Ox, real;
s
y
: suma parial a argumentelor de pe Oy, real;
s
xx
: suma parial a ptratelor argumentelor x, real;
s
xy
: suma parial a produselor argumentelor, real;
s
yy
: suma parial a ptratelor argumentelor y, real;
s
z
,s
xz
,s
yz
: sume pariale ale termenilor liberi ai sistemului;
i: contor, ntreg;
{
s
x
= 0; s
y
= 0; s
xy
= 0; s
xx
= 0; s
yy
= 0; s
xz
=0; s
yz
=0 ;s
z
=0;
pentru i = 1,..., m
pentru j=1,..,m
calculeaz s
x
= s
x
+x
i
;
calculeaz s
xx
= s
xx
+x
i
*x
i
;
calculeaz s
y
= s
y
+ y
i
;
calculeaz s
yy
= s
yy
+ y
i
* y
i
;
calculeaz s
xy
= s
xy
+ x
i
*y
i
;
calculeaz s
z
=s
z
+z
ij
; calculeaz s
xz
=s
xz
+x
i
*z
ij
;
calculeaz s
yz
=s
yz
+y
j
*z
ij
;
}
{ METODA (n,m, s
x
; s
y
; s
xy
; s
xx
; s
yy
, SOL ); // rezolv sistemul
}
Planul este z = Ax + By + C
}
7.1.7.2. Implementarea algoritmului 7.7

/* Funcia ntoarce -1 n caz de eroare 0 altfel */
int reg_mul( int m, /* pe Ox */
int n, /* pe Oy */
double x[],
double y[],
double z[][NMAX],
double *coef1,
double *coef2,
double *coef3)
{
int i,j;
double mat[4][4], tl[4],det,det1,det2,det3;
for(i=1;i<=3;i++)
{
Metode n electronic

164
tl[i]=0;
for(j=1;j<=3;j++) mat[i][j]=0;
}
mat[1][1]=n*m;
for(i=1;i<=m;i++)
{
mat[1][2]+=n*x[i];
mat[2][2]+=n*x[i]*x[i];
}
for(j=1;j<=n;j++)
{
mat[1][3]+=m*y[j];
mat[3][3]+=m*y[j]*y[j];
}
for (i=1;i<=m;i++ )
for(j=1;j<=n;j++)
{
mat[2][3]+=x[i]*y[j];
tl[1]+=z[i][j];
tl[2]+=x[i]*z[i][j];
tl[3]+=y[j]*z[i][j];
}
mat[2][1]=mat[1][2];
mat[3][1]=mat[1][3];
mat[3][2]=mat[2][3];
det=mat[1][1]*mat[2][2]*mat[3][3]+mat[2][1]*mat[3][2]*mat[1][3
]+
mat[1][2]*mat[2][3]*mat[3][1]-mat[3][1]*mat[2][2]*mat[1][3]-
mat[1][1]*mat[3][2]*mat[2][3]-mat[2][1]*mat[1][2]*mat[3][3];
if (det==0 ) return -1;
det1=tl[1]*mat[2][2]*mat[3][3]+tl[2]*mat[3][2]*mat[1][3]+
mat[1][2]*mat[2][3]*tl[3]-tl[3]*mat[2][2]*mat[1][3]-
tl[1]*mat[3][2]*mat[2][3]-tl[2]*mat[1][2]*mat[3][3];
det2=mat[1][1]*tl[2]*mat[3][3]+mat[2][1]*tl[3]*mat[1][3]+
tl[1]*mat[2][3]*mat[3][1]-mat[3][1]*tl[2]*mat[1][3]-
mat[1][1]*tl[3]*mat[2][3]-mat[2][1]*tl[1]*mat[3][3];
det3=mat[1][1]*mat[2][2]*tl[3]+mat[2][1]*mat[3][2]*tl[1]+
mat[1][2]*tl[2]*mat[3][1]-mat[3][1]*mat[2][2]*tl[1]-
mat[1][1]*mat[3][2]*tl[2]-mat[2][1]*mat[1][2]*tl[3];
*coef1=det1/det;
*coef2=det2/det;
*coef3=det3/det;
return 0;
}


Metode de optimizare

165
7.2. OPTIMIZAREA NELINIAR FR RESTRICII

n cadrul acestui paragraf vor fi studiate dou metode pentru aflarea minimului
unei funcii de n variabile n lipsa relaiilor de restricie. In general, problemele de
minimizare sunt cu relaii de restricie, dar aceste probleme pot fi reduse la probleme
de optimizare fr restricii ntr-o serie de aplicaii.
n condiiile n care nu sunt restricii, funcia int
F X F x x x
n
( ) ( , , ..., ) =
1 2
(7.39)
care are derivatele pariale continue, are un minim local ntr-un punct X
k
dac este
ndeplinit inegalitatea:
F X F X
k
( ) ( ) s (7.40)
pentru orice vector X din vecintatea lui X
k
.
Din analiza matematic cunoatem condiia necesar pentru ca o funcie F X ( ) s aib
un minim ntr-un punct X din domeniul de definiie al funciei:
-existena i rezolvabilitatea sistemului
c
c
F(x)
x
, i , ,...,n;
i
= = 0 12 (7.41)
-matricea

(
(
(
(
(
(

=
2
2
2
2
1
2
1
2
2 1
2
2
1
2

) (
...

) (

) (

) (
...

) (


) (
n n n
n
x
x F
x x
x F
x x
x F
x x
x F
x x
x F
x
x F
J
c
c
c c
c
c c
c
c c
c
c c
c
c
c
(7.42)
s fie pozitiv definit.
Dintre metodele de optimizare neliniar fr restricii amintim: metode aleatoare de
cutare, metode de cutare unidirecional i metode de gradient.
Metodele aleatoare de cutare au la baz o schimbare aleatoare a
componentelor vectorului X, pentru care se calculeaz valoarea funciei F(X) i se
compar cu valoarea precedent a funciei.
Metodele de cutare unidimensional constau n modificarea succesiv a
componentelor vectorului i compararea valorilor funciei n punctele respective.
Metodele de gradient efectueaz modificarea simultan a componentelor
vectorului X, n aa fel nct s rezulte o evoluie a funciei F(X) opus gradientului.
Aceste metode se bazeaz pe generarea aleatoare a unor numere ntr-un domeniu
prestabilit.


7.2.1. METODE ALEATOARE DE CUTARE

Procesul este iterativ i pentru fiecare etap se genereaz o succesiune de numere
aleatoare avnd o densitate de probabilitate uniform n domeniul de variaie admis, cu
care se modific componentele vectorului.
Metode n electronic

166
Metoda drumului aleator, una dintre metodele des utilizate, const n modificarea
vectorului de poziie pentru noul punct astfel:
r X X
k k
+ =
+
o
1
(7.43)
unde r este vectorul unitate care are direcia aleatoare, X
k
este vectorul de poziie al
punctului anterior i o un scalar. Se calculeaz valoarea funciei n noul punct i se
compar cu valoarea funciei n vechiul punct. Dac, dup un anumit numr de iteraii
valoarea lui F nu se micoreaz, se reduce scalarul o pn ce valoarea lui devine mai
mic dect o eroare de calcul dat, er > 0.


7.2.1.1. Algoritmul 7.8. Metoda drumului aleator

{ Variabile
X:vectorul de poziie al punctului curent;
alfa:scalarul, real;
er:eroarea de calcul, real;
sol:souia optimizrii, real;
i:contor, ntreg;
minim:minimul dintre valorile funciilor, real;
valcurent:valoarea minim curent a funciei, real;
xcurent[2];valoarea anterioar i curent a abscisei punctului, real;
maxiter:numrul maxim de iteraii, ntreg;
{
maxiter=1000;
atta timp ct ( alfa0>eps )
{contor=0
minim=F(x0[0],x0[1]);
calculeaz
xcurent[0]=x0[0]+alfa0*r;
xcurent[1]=x0[1]+alfa0*r;
val_curenta=F(xcurent[0],xcurent[1]);
ii+1;
}atta timp ct ((contor<=maxiter) i (valcurenta>minim) );
dac (valcurenta<minim)
{
minim=valcurenta;
x0[0]=xcurent[0];
x0[1]=xcurent[1];
}
dac (contor>maxiter)alfa0-=0.001;
}
sol[0]=x0[0];
sol[1]=x0[1];
stop
}
Metode de optimizare

167


7.2.1.2. Implementarea algoritmului 7.8

int cutare_aleatoare( double (*f)( double, double),
double x0[],
double gama0,
double eps,
double rez[])
{
double minim,val_curenta,x_curent[2];
int contor,maxiter;
maxiter=1000;
while( gama0>eps )
{ contor=0
minim=f(x0[0],x0[1]);
do{
x_curent[0]=x0[0]+gama0*rand(101)/100*pow(-1,rand(101) % 2);
x_curent[1]=x0[1]+gama0*rand(101)/100*pow(-1,rand(101) % 2);
val_curenta=f(x_curent[0],x_curent[1]);
contor++;
}while ((contor<=maxiter) && (val_curenta>minim) );
if (val_curenta< -1e10) return 1;
if(val_curenta<minim)
{ minim=val_curenta;
x0[0]=x_curent[0];
x0[1]=x_curent[1];
}
if (contor>maxiter)gama0-=0.001;
}
rez[0]=x0[0];
rez[1]=x0[1];
return 0;
}


7.2.2. METODA CUTRII UNIDIMENSIONALE

Aceast metod determin minimul unei funcii F X ( ) prin modificarea
componentelor vectorului X pe rnd, ncepnd cu prima component. Se modific
prima component atta timp ct se obine o valoare mai mic a funciei n punctul
curent dect n cel precedent. Cnd aceast condiie nu mai este ndeplinit se trece la
urmtoarea component a vectorului X i se procedeaz la fel pn se baleiaz toate
componentele vectorului considernd, n acest caz, c s-a realizat un ciclu. Se poate
Metode n electronic

168
ncepe un nou ciclu lund ca punct iniial minimul obinut. La fiecare iteraie se
determin un nou punct funcie de precedentul asfel:
X X pas E
k k k +
= +
1
(7.44)
unde E
k
reprezint vectorul E
k
=(0,0, ,1,,0), cifra 1 fiind pe locul k, k=0,1,,n,
iar pas reprezint pasul cu care se modific componentele. Dup un ciclu ncheiat se
trece la un nou ciclu cu vectorul iniial cel pentru care s-a obinut minimul n ciclul
ncheiat (precedent), lund un nou pas mai mic, obinut din pasul precedent nmulit cu
o raie subunitar. Se continu iteraia pn cnd pas< c sau numrul de iteraii
depete un numr maxim dat. c reprezint eroarea de calcul a punctului de minim.


7.2.2.1. Algoritmul 7.9. Metoda cutrii unidimensionale

{Variabile
X:vectorul coordonetelor punctelor;
pas:pasul de modificare al cooronatelor, real;
E: maticea unitate de ordinul n ce are pe orizontal vectorii E
k
;
k:contor, ntreg;
minimcurent:minimul obinut pn la pasul respectiv, real;
Maxiter:numrul maxim de iteraii, ntreg;
t:valoare subunitar cu care se multiplic pasul, real;
p:valoarea iniial a pasului, real;
{Maxiter=1000;
t=0.1;
repet
pas=p;
minimcurent=F(X[0],X[1]);
pentru k=1 pn la n calculeaz
X[1]=X[0]+pas* E
k
;
valcurent=minimcurent;
p=p*t;
pn cnd pas< er;
}
minimul este valcurent;
}


7.2.2.2. Implementarea algoritmului 7.9

int cutare_unidimensional( double (*f)( double, double),
double x0[],
double pas,
double eps,
double rez[])
Metode de optimizare

169
{
double min_prec,min_curent,min_ant;
int i,nrp,st,dr;
min_curent=f(x0[0],x0[1]);
do
{
min_ant=min_curent;
for(i=0;i<2;i++)
{
nrp=0;
st=0;
dr=1;
do
{
nrp++;
x0[i]+=-st*pas+dr*pas;
min_prec=min_curent;
min_curent=f(x0[0],x0[1]);
if ( (nrp==1) && (min_curent>min_prec) )
{
x0[i]-=2*pas;
nrp++;
min_curent=f(x0[0],x0[1]);
st=1;
dr=0;
}
}
while ( (min_curent<min_prec) );
x0[i]+=st*pas-dr*pas;
min_curent=f(x0[0],x0[1]);
}
if (min_curent<-1e10) {
rez[0]=x0[0];
rez[1]=x0[1];
return 1;
}
}
while( fabs(min_ant-min_curent)>eps);
rez[0]=x0[0];
rez[1]=x0[1];
return 0;
}


7.3. APLICAII
Metode n electronic

170

1.Se dau datele experimentale din tabelul 7.2:
Tabelul 7.2.
x
1 2 3 4 5 6 7 8 9
y
1.44 1.728 2.0736 2.4883 2.9859 3.5831 4.2998 5.1597 6.191

Analiznd rezultatele vedem c funcia are evoluia unei funcii exponeniale. Se
aplic programul pentru regresia exponenial i se obine funcia:
y . ( . )
x
= 12 12

2.Se d funcia:
z x y x y = + +
2 2
2 4 3
S se determine minimul funciei cu metoda drumului aleator, lund punctul de start
(15,34) i c = 0.000001 i cu metoda cutrii unidimensionale lund punctul se start
(10,10) i c = 0.001.
Cu metoda drumului aleator s-a obinut minimul n punctul (0.99518, 1,99978), iar
minimul funciei z
min
=-1.99977.
Aplicnd metoda cutrii unidimensionale s-a obinut minimul n punctul (1, 2), iar
minimul funciei z
min
=-2.

8
REZOLVAREA NUMERIC A ECUAIILOR
I SISTEMELOR DIFERENIALE*


n acest capitol sunt prezentate metodele de rezolvare a ecuaiilor difereniale
ordinare, a ecuaiilor cu derivate pariale i a sistemelor de ecuaii difereniale.

8.1. REZOLVAREA NUMERIC A ECUAIILOR
DIFERENIALE ORDINARE DE ORDINUL NTI

Se consider ecuaiile de tipul:
y f x y
'
( , ) = (8.1)
cu condiia iniial:
y x y ( )
0 0
= (8.2)
Ecuaia diferenial (8.1) definete o curb n planul xOy . n fiecare punct al
curbei se d valoarea derivatei funcie de x i y . Ecuaia este satisfcut de o familie
de curbe, iar condiia (8.2) d curba din familie care trece printr-un anumit punct din
plan ( x y
0 0 ,
). Soluia analitic a ecuaiei (8.1) este o expresie a lui y funcie de x .
Metodele numerice ne ajut s determinm puncte ale soluiei ecuaiei date.
O soluie numeric a ecuaiei se poate obine plecnd din punctul dat ( x y
0 0 ,
),
tiind c dac nlocuim valorile date, n ecuaia diferenial (8.1) se poate obine panta
curbei cutate n acest punct. Dup calculul pantei curbei n punctul x
0
se avanseaz
cu un pas mic pe tangenta n punctul ( x y
0 0 ,
)
y f x y x x y = + ( , )( )
0 0 0 0
(8.3)
Dac considerm punctul de coordonate ( y , x
1 1
) pe tangent i pasul de cretere al lui
x
1
fa de x
0
, h avem
x x h
1 0
= + i y f(x ,y )h y
1 0 0 0
= + (8.4)
deci un nou punct cunoscut ( x y
1 1
, ), foarte aproape de curba soluiei cutate cu ct h
este mai mic, (fig. 8.1). Procedeul de calcul se repet cu calculul pantei la curb n
punctul ( x y
1 1
, ) i determinarea unui alt punct pe tangenta la curb n punctul
( x y
1 1
, ) cu x x h
2 1
= + i y
2
corespunztor. Continund n acest mod se obine o
succesiune de segmente de dreapt care aproximeaz curba soluie a ecuaiei
difereniale.
__________________________
*)
Bibliografie :[6], [7], [9], [12], [17]
Aproximarea curbei soluie cu segmente de dreapt poate da erori i succesiunea de
segmente de dreapt poate s se deprteze considerabil de curba soluiei. Aceast
problem reprezint problema stabilitii procesului de rezolvare a ecuaiei difereniale
Metode numerice n electronic
172
i trebuie s-i acordm o atenie deosebit. Trebuie implementat o metod prin care,
n loc s aproximm soluia printr-o succesiune de drepte, s se ia n considerare i
curba soluie adevrat.
Exist dou tipuri de metode:
a) Metode directe n care soluia nu se itereaz i se folosete numai o informaie
asupra curbei ntr-un punct. Astfel de metode constau n rezolvarea ecuaiilor prin serii
Taylor, care ns nu sunt practice. Metode practice Runge-Kutta pretind un mare
numr de evaluri ale funciilor,iar eroarea este dificil de evaluat.
b) Metode indirecte n care se poate estima punctul urmtor de pe curb folosind
mai puine estimri ale funciei, dar care necesit iteraii pentru a ajunge la o valoare
suficient de precis. Aceste metode sunt denumite predictor-corector i prin aplicarea
lor se poate obine o estimare a erorii.


8.1.1. METODA SERIILOR LUI TAYLOR

Aceast metod asigur soluia oricrei ecuaii difereniale, dar are o aplicabilitate
redus din cauza dificultilor de rezolvare. Totui, aceast metod servete pentru
compararea cu metodele practice pentru a le stabili ordinul metodei.
Dezvoltm pe y(x) n vecintatea lui x x
m
= ,
( ) ( ) ( )
( )
( )
( )
( )
( )
( ) y x y y x-x
y
!
x-x
y
j!
x-x
y
j+ !
x-x
m m
'
m
m
''
m
m
j
m
j m
j+
m
j+
= + + + + +
2 1
2
1
1


(8.5)
unde y
m
j ( )
este derivata de ordinul j a lui y x ( ) n punctul x x
m
= , iar x x
m
< <
Utilznd relaia x x h
m
= + obinem:

( )
( )
( )
( )
y y hy
h
y
y
j!
h
y
j+ !
h
m+ m m
'
m
'' m
j
j m
j+
j+
1
2
1
1
2 1
= + + + + +

(8.6)
Ultimul termen al relaiei (8.6) reprezint eroarea de trunchiere. Aproximaia va fi cu
att mai bun cu ct j este mai mare.
( ) y f x ,y
m
'
m m
= (8.7)
Derivnd funcia ) , (
'
y x f y = obinem:

( ) ( )
f f f
x
y
y
x,y f
x
x,y f
y
y x
''
+ =
c
c
+
c
c
=
d
d
(8.8)
unde
x
f
f
x
c
c
=
i
y
f
f
y
c
c
=
(8.9)
Pentru x x
m
= rezult:
y f f f
m
''
x y
= + (8.10)

Pentru j = 2 rezult:

( )
y y hy
h
y
y
h
m+ m m
'
m
''
'''
1
2
3
2 6
= + + +

(8.11)
sau
Rezolvarea numeric a ecuaiilor i sistemelor difereniale 173
( ) y y h f+
h
f f f
m+ m x y 1
2
= + +

(
(8.12)
cu eroarea de trunchiere

( )
e
y
h
T
'''
=

6
3
, x x
m
< <
(8.13)
Punnd m = 0 n ecuaia (8.12) se obine pentru x x h
1 0
= + valoarea soluiei y
1

deci punctul ( x y
1 1 ,
). Pentru m = 1 rezult punctul ( x y
2 2 ,
). Continund, se obin
punctele soluiei ecuaiei difereniale, cu erorile de trunchiere corespunztoare, care se
mresc n timp. Aceast metod este direct deoarece pentru calculul lui y
m+1
sunt
necesare numai valorile lui y
m
i x
m
. Pentru o eroare mai mic trebuie s mrim
ordinul termenilor utilizai n dezvoltarea Taylor. Dac dorim y
m
'''
acesta are expresia:

2 2
2
y y x yy xy xx
'''
m
f f f f f f f f f y + + + + = (8.14)
unde s-a notat:
2
2
x
f
f
xx
c
c
=
,
y x
f
f
xy
c c
c
=
2
i
2
2
y
f
f
yy
c
c
=

Complexitatea acestor derivate face practic inutilizabil aceast metod.


8.1.2. METODELE RUNGE-KUTTA

Metodele Runge-Kutta se caracterizeaz prin urmtoarele proprieti:
1. Sunt metode directe, deci pentru calculul lui y
m+1
sunt necesare informaiile de la
punctul precedent x
m
i y
m .

2. Sunt echivalente cu seriile Taylor pn la termenii h
p
, unde p este diferit pentru
metode diferite i se numete ordinul metodei.
3. Nu necesit evaluarea nici unei derivate a funciei f , ci numai valoarea funciei.
Proprietatea a treia a metodelor Runge-Kutta le recomand pentru utilizarea lor
practic. Se pune problema evalurii funciei soluie a ecuaiei difereniale (8.1) n mai
multe puncte. Geometric, problema const n determinarea punctului ( x y
m m + + 1 1 ,
)
cunoscnd punctul ( x y
m m
, ) i c x x h
m m +
= +
1
. n punctul ( x y
m m
, ) se duce tangenta
la curb deoarece tim panta curbei n acest punct.
y y y x x
m m m
= +
'
( ) (8.15)
unde ( ) y f x ,y
m
'
m m
= (8.16)
i x x h
m m +
= +
1
(8.17)
nlocuind n (8.15) relaiile (8.16) i (8.17) rezult:
x x h
m m +
= +
1
(8.18)
iar eroarea este dat de segmentul e.
Dac n dezvoltarea lui Taylor lum j = 1 rezult:

( )
2
1
2
h
y
hy y y
''
'
m m m

+ + =
+
(8.19)
Metode numerice n electronic
174
unde x
m
< < x
m+1
(8.20)
y
m
x
m
x
m+1

Fig.8.1.Determinarea grafic a soluiei ecuaiei difereniale.

Comparnd relaiile (8.19) i (8.20) rezult eroarea de trunchiere pentru metoda
aplicat:

( )
e
y
h
T
''
=

2
2
(8.21)
Formula (8.19) reprezint metoda lui Euler de rezolvare a ecuaiilor difereniale de
ordinul nti. Metoda este veche, are eroare de trunchiere relativ mare i eroarea de
rotunjire sau trunchiere se mrete odat cu mrirea lui x .


8.1.2.1. Algoritm 8.1. Metoda lui Euler

{Variabile
x
0
: abscisa punctului de start, real;
y
0
: ordonata punctului de start, real;
h: pasul ntre abscisele punctelor de calcul ale soluiei, real;
y: ordonatele soluiei numerice, vector;
x: abscisele soluiei numerice, vector;
n: numrul de puncte n care se calculez soluia, intreg;

{
x[0]= x
o
; y[0]= y
0
; h=const;
pentru i = 1,2,...n
calculeaz x[i]= x
0
+i*h;
calculez
y[i+1]= y[i]+ h*f( x[i-1],y[i-1]);

Soluiile numerice sunt x[i]; y[i]; i=0,1,2,...n;

}
Rezolvarea numeric a ecuaiilor i sistemelor difereniale 175
}


8.1.2.2. Implementarea algoritmului 8.1

/* Funcia care implementeaz algoritmul de rezolvare a ecuaiilor
difereniale ordinare prin metoda Euler.
*/
void EULERED( double(*f)(double x, double y),
double x0,
double y0,
double pas,
int nrp,
double sol[])
{
int i;
sol[0]=y0;
for(i=1;i<=nrp;i++)
sol[i]=sol[i-1]+pas*f(x0+(i-1)*pas,sol[i-1]);
}


8.1.3. METODELE RUNGE-KUTTA DE ORDINUL DOI

Aceste metode se numesc de ordinul doi deoarece sunt echivalente cu dezvoltarea
n serie Taylor pn la termenii de ordinul doi.




8.1.3.1. Metoda lui Euler mbuntit

Aceast metod face parte din acest grup de metode i utilizeaz media pantelor din
punctele ( x y
m m
, ) i ( x y
m m + + 1 1
, ) unde x x h
m m +
= +
1
iar y y hy
m m m
'
+
= +
1
ordonat
obinut din ecuaia tangentei n punctul M la curb cu panta y f x y
m m m
'
( , ) = . Grafic
metoda este prezentat n figura 8.2. n acest punct H de coordonate ( x y hy
m m m
'
+
+
1
, )
se calculeaz panta la curb care este:
( )
'
m m m
m+ hy +h,y x f y + = 1
'
(8.22)
Se face media dintre panta n punctul M (dreapta ML
1
)i panta n punctul H (dreapta
HL
2
)i o notm cu
( ) ( ) ( ) z f x ,y f x +h,y hy
m m m m m m
'
= + +
1
2
(8.23)


Metode numerice n electronic
176


y
x
m x
m+1

Fig.8.2.Calculul grafic al soluiei prin metoda lui Euler mbuntit.

Dreapta de pant z
m
este HT. Cu acest pant z
m
se traseaz coarda prin M i se
intersecteaz cu dreapta x x
m
=
+1
rezultnd punctul R, de coordonate ( x , y
m m+ +1 1
) al
doilea punct de pe curba soluie, primul fiind considerat ( x , y
m m
). Ecuaia coardei
MR este: ( )
( ) ( )
( ) y y . f x ,y f x +h,y hy x x
m m m m m m
'
m
= + + + 0 5 (8.24)
Punctul R, care reprezint soluia numeric a ecuaiei difereniale, are ordonata:
( ) ( ) ( ) y y . h f x ,y f x +h,y hy
m+ m m m m m m
'
1
05 = + + + (8.25)
unde ( ) y f x ,y
m
'
m m
= .
Aceast formul (8.25) reprezint formula de calcul a soluiilor numerice pentru o
ecuaie diferenial ordinar de ordinul nti.


8.1.3.1.1. Precizia metodei lui Euler mbuntit

Se dezvolt n serie Taylor funcia de dou variabile f x y ( , ) :

( ) ( )
( ) ( ) ( )( ) ( ) ( ) ( )
| |
f x y f x y x x f x y y y f x y
x - x f , x - x y-y f , y-y f ,
m m m x m m m y m m
m xx m m xy m yy
( , ) ( , ) ( , ) ( , ) = + + +
+ + +
1
2
2
2
0 0 0 0
2
0 0
q q q
(8.26)
unde
| |

0
e x ,x
m
i
| |
q
0
e y ,y
m

Dac notm x x h
m
= + iar y y h y
m m
'
= +
unde y f(x ,y )
m
'
m m
= (8.27)
rezult:
( )
( ) ( ) ( )
| |
f x +h,y hy f+hf hff h f ,y ff ,y f f ,
m m m
'
x y xx xy yy
+ = + + + +
1
2
2
2
0 0 0 0
2
0 0
q (8.28)
H
Rezolvarea numeric a ecuaiilor i sistemelor difereniale 177
unde f f x y
m m
= ( , ) , ( ) ( ) f
f
x
x ,y , f
f
y
x ,y
x m m y m m
= =
c
c
c
c
(8.29)
nlocuind acest rezultat n (8.23) i (8.24) rezult:
( ) ( ) ( )
| |
y y h f+
h
f ff
h
f ,y ff f f ,
m+ m x y xy xy yy 1
3
0 0 0 0
2
0 0
2 4
2 = + +

(
+ + + q q ( , ) (8.30)
unde
| |

0 1
e x ,x
m m+
i
| |
q
0 1
e y ,y
m m+


( )
| |
y y h f . h f ff
m+ m x y 1
05 = + + + (8.31)
reprezint formula de calcul din dezvoltarea Taylor de ordinul doi care este
echivalent cu formula de calcul a lui Runge-Kutta (8.25) i are eroarea de trunchiere:

| |
e h
y
f ff f f
T xy xy yy
= + +


`
)

3
0 0 0 0
2
0 0
6
1
4
2
'''
( )
( , ) ( , ) ( , )

q q q (8.32)
Dac presupunem c f f f
xy xx yy
, , i y
'''
sunt mai mici dect o constant rezult:
e k h
T
s
3
(8.33)


8.1.3.1.2. Algoritmul 8.2. Metoda lui Euler mbuntit

{
x
0
: abscisa punctului prin care trece graficul soluiei, real;
y
0
: ordonata punctului prin care trece graficul soluiei, real;
h: pasul ntre abscisele punctelor de calcul ale soluiei, real;
y: ordonatele solutiei numerice, vector;
x: abscisele solutiei numerice, vector;
n: numrul de puncte n care se calculez soluia, ntreg;

{
x[0]= x
o
; y[0]= y
0
; h=const;
pentru i = 1,...n
{
calculeaz x[i]= x[i -1]+i*h;
calculez
y[i]= y[i-1]+ 0.5*h*(f[ x[i-1],y[i-1])+ f( x[i-1]+h, y[i-1]+h*f(x[i-
1],y[i-
1])));
}
Soluiile numerice sunt x[i], y[i] , i=0,1,2,...n;
}
}

8.1.3.1.3. Implementarea algoritmului 8.2

/* Funcia care implementeaz algoritmul de rezolvare a ecuaiilor
difereniale ordinare prin metoda Euler mbuntit.
Metode numerice n electronic
178
*/
void EULERIED( double(*f)(double x, double y),
double x0,
double y0,
double pas,
int nrp,
double sol[])
{
int i;
sol[0]=y0;
for(i=1;i<=nrp;i++)
sol[i]=sol[i-1]+0.5*pas*( f(x0+(i-1)*pas,
sol[i-1])+f(x0+i*pas,sol[i-1]+pas*f(x0+(i-1)*pas,sol[i-1])));
}


8.1.3.2. Metoda lui Euler modificat

n cadrul acestei metode nu se mediaz pantele, ci se evalueaz panta ntr-un punct
care reprezint media a dou puncte. Considerm curba din figura 8.3 n care se d
punctul iniial prin care s treac curba soluie a ecuaiei difereniale i dorim s
determinm cel de al doilea punct al soluiei. Prin punctul ( x y
m m
, ) dat, cunoscut sau
determinat, se duce tangenta MH i se determin pe aceast tangent punctul H de
coordonate ( x
m+1
, y
m+1
)
Tangenta MH are ecuaia
y y f x y x x
m m m m
= + ( , )( ) (8.34)
Prin intersecia cu dreapta x x h
m
= + rezult coordonatele punctului H
( x x h
m m +
= +
1
, y y hf x y
m m m m +
= +
1
( , ) (8.35)
prezentat n figura (8.3).
Metoda face media coordonatelor punctelor M i H i determin punctul
( ) P x x
h
y y
h
f x y
p m p m m m
= + = +
|
\

|
.
|
2 2
, , (8.36)
Se calculeaz panta soluiei y n acest punct P i rezult:
( ) z f x
h
y
h
f x y
m m m m m
= + +
|
\

|
.
|
2 2
, , (8.37)
Se scrie ecuaia dreptei care trece prin M de pant z
m
i o intersectm cu dreapta
y x x h
m m
= = +
+1

Dreapta MN are ecuaia:
( ) ( ) y y f x
h
y
h
f x y x x
m m m m m m
= + + +
|
\

|
.
|

2 2
, , (8.38)
Prin intersecia cu dreapta x x x h
m m
= = +
+1
rezult ordonata:
( ) y y h f x
h
y
h
f x y
m m m m m m +
= + + +
|
\

|
.
|
1
2 2
, , (8.39)
care reprezint formula de calcul a ordonatelor soluiei ecuaiei difereniale.
Rezolvarea numeric a ecuaiilor i sistemelor difereniale 179



y

x
x
m+1
x
m+2
x
m

Fig.8.3.Calculul grafic al soluiei ecuaiei difereniale prin metoda lui Euler modificat.

Aceast metod d aceleai soluii ca i metoda lui Taylor pn la h
2
, deci este o
metod Runge-Kutta de ordinul doi.


8.1.3.2.1. Algoritmul 8.3. Metoda lui Euler modificat

{Variabile
x
0
: abscisa punctului prin care trece graficul soluiei, real;
y
0
: ordonata punctului prin care trece graficul soluiei, real;
h: pasul ntre abscisele punctelor de calcul ale soluiei, real
y: ordonatele soluiei numerice, vector;
x: abscisele soluiei numerice, vector;
n: numrul de puncte ale soluiei, ntreg;

{
x[0]= x
o
; y[0]= y
0
;
pentru i = 1,...n
{
calculeaz x[i]= x[i -1]+i*h;
calculez
y[ i ]= y[i-1]+ h*f( x[i-1]+0.5*h, y[ i-1]+0.5*h*f(x[i-1],y[i-1])) ;
}
Soluiile numerice ale ecuaiei sunt x[ i ], y[ i ] , i=0,...n;
}
}


8.1.3.2.2. Implementarea algoritmului 8.3

P
x
m
+h/2
Metode numerice n electronic
180
/* Funcia care implementeaz algoritmul de rezolvare a ecuaiilor
difereniale ordinare prin metoda Euler modificat.
*/
void EULERMED( double(*f)(double x, double y),
double x0,
double y0,
double pas,
int nrp,
double sol[])
{
int i;
sol[0]=y0;
for(i=1;i<=nrp;i++)
sol[i]=sol[i-1]+pas*f(x0+(i-1)*pas+0.5*pas,sol[i-1]
+0.5*pas*f(x0+(i-1)*pas,sol[i-1]));
}


8.1.3.3. Asemnri ntre metodele Euler mbuntit i modificat

Ambele metode au formula de calcul a ordonatelor soluiilor ecuaiei difereniale
y y h u
m m +
= +
1
(8.40)
unde u este panta z
m
sau v
m
care poate fi scris astfel:
u a f x y a f x b h y b h y
m m m m m
= + + +
1 2 1 2
( , ) ( , )
'
(8.41)
unde y f x y
m m m
'
= ( , )
Pentru valorile a a
1 2
1
2
= = i b
1
= b
2
=1 avem panta z
m
, n cazul aplicrii metodei
Euler mbuntit, iar pentru valorile: a a
1 2
0 1 = = , i b b
1 2
1 2 = = / avem panta
v
m
, n cazul aplicrii metodei Euler modificat.
Dezvoltm n serie Taylor funcia f x y ( , ) n jurul punctului ( x y
m m
, ), dezvoltare
prezentat n expresia (8.26) unde O h ( )
2
este restul i facem substituiile:
x x b h
m
= +
1
i y y b hf
m
= +
2

n aceast expresie:
f(x b h, y b hf) f b hf b hff O(h )
m m x y
+ + = + + +
1 2 1 2
2
(8.42)
Expresia lui u conform formulei (8.41) devine:
u a f a f a b hf a b hff O h
x y
= + + + +
1 2 2 1 2 2
2
( ) (8.43)

nlocuind n formula (8.40) de calcul a valorilor funciei soluie a ecuaiei difereniale
rezult:
| | ( )
y y h a a f h a b f a b ff O h
m m x y +
= + + + + +
1 1 2 2 1 2 2
2
( ) ( ) (8.44)
Dac comparm aceast formul (8.44) cu formula lui Taylor (8.30) rezult:
a a
1 2
1 + = ; a b a b
2 1 2 2
1
2
= = ; (8.45)
Rezolvarea numeric a ecuaiilor i sistemelor difereniale 181
Deoarece avem trei ecuaii cu patru necunoscute, alegem n mod arbitrar una din ele i
exprimm pe celelalte funcie de aceasta. Lum a w
2
= i rezult
a w
1
1 = , b b
w
1 2
1
2
= = (8.46)
Formula de calcul (8.44) devine:
( ) ( ) ( )
( )
y y h w f x y wf x
h
w
y
h
w
f x y O h
m m m m m m m m +
= + + + +
|
\

|
.
|

(
+
1
3
1
2 2
, , , (8.47)
Expresia (8.47) reprezint formula de calcul a metodei Runge-Kutta de ordinul doi
general. Pentru w =
1
2
se obine metoda lui Euler mbuntit, iar pentru w = 1 se
obine metoda lui Euler modificat. Eroarea de trunchiere este:
e k h
T
~
3
(8.48)
n mod analog se pot dezvolta metodele Runge-Kutta de ordinul trei i patru.


8.1.4. METODA RUNGE-KUTTA DE ORDINUL PATRU

Formula de calcul numeric a soluiei ecuaiei difereniale (8.1) este dat de expresia
(8.49)
x x h
m m +
= +
1

| | y y
h
k k k k
m m +
= + + + +
1 1 2 3 4
6
2 2 (8.49)

unde
k f x y
m m 1
= ( , )
k =f x
h
, y
h
k
m m 2 1
2 2
+ +
|
\

|
.
| (8.50)
k =f x
h
, y
h
k
m m 3 2
2 2
+ +
|
\

|
.
|

( ) k =f x h, y hk
m m 4 3
+ +

Eroarea de trunchiere a metodei este:

e k h
T
~
5
(8.51)

8.1.4.1. Algoritmul 8.4. Metoda Runge-Kutta de ordinul 4

{ Variabile
x
0
:abscisa punctului prin care trece soluia, real;
y
0
: ordonata punctului prin care trece soluia, real;
h : pasul ntre abscisele punctelor de calcul ale soluiei, real;
y : ordonatele soluiei numerice, vector;
x : abscisele soluiei numerice, vector;
n : numrul de puncte n care se calculeaz soluia, ntreg;
Metode numerice n electronic
182
{
x[0]= x
o
; y[0]= y
0
;
pentru i = 1,,n
{
calculeaz x[ i-1 ]=x
0
+i*h;
calculez
k
1
= f(x[ i-1 ], y[ i-1 ]);
calculeaz
k
2
= f(x[ i-1 ]+0.5*h, y[ i-1 ]+ 0.5*h*k
1
);
calculeaz
k
3
= f(x[ i-1 ]+0.5*h, y[ i-1 ]+ 0.5*h*k
2
);
calculeaz
k
4
= f(x[ i-1 ]+h, y[ i-1 ]+ h*k
4
);
calculeaz
y | | ( )
4 3 2 1
2 2
6
1 ] [ k k k k
h
i y i + + + + = ;
}
Soluiile numerice ale ecuaiei sunt x[ i ], y[ i ] , i=1,2,...n;
}
}

8.1.4.2. Implementarea algoritmului 8.4

/* Funcia care implementeaz algoritmul de rezolvare a ecuaiilor
difereniale ordinare prin metoda Runge-Kutta de ordinul 4.
*/
void RK4( double(*f)(double x, double y),
double x0,
double y0,
double pas,
int nrp,
double sol[])
{
int i;
double k1,k2,k3,k4;
sol[0]=x0;
for(i=1;i<=nrp;i++)
{
k1=f(x0+(i-1)*pas,sol[i-1]);
k2=f(x0+(i-1)*pas+0.5*pas,sol[i-1]+0.5*pas*k1);
k3=f(x0+(i-1)*pas+0.5*pas,sol[i-1]+0.5*pas*k2);
k4=f(x0+i*pas,sol[i-1]+pas*k3);
sol[i]=sol[i-1]+pas*(k1+2*k2+2*k3+k4)/6.0;
}
}

Rezolvarea numeric a ecuaiilor i sistemelor difereniale 183
Concluzie: Putem spune despre metodele Runge-Kutta c sunt metode cu vitez de
calcul mare, deoarece calculul unui punct curent de pe curba soluiei se face numai cu
valorile calculate la punctul precedent. Precizia metodelor depinde de eroarea de
trunchiere.
Dac considerm c n punctul x x h = +
0
valoarea exact a soluiei este y
m
, cu
metoda clasic de ordinul unu rezult:

( )
y y kh
m m
h
= +
2
(8.52)
unde
( )
y
m
h
arat c y
m
s-a calculat cu pasul h. Se repet calculul pentru pasul h/2 i
avem
y y k
h
m m
( h/ )
= +
|
\

|
.
|
2
2
4
(8.53)
Din egalitatea relaiilor (8.52) i (8.53) rezult:
y y - h
m
( h )
m
h/
~
2 2
3
4

iar eroarea de trunchiere devine:

( ) ( )
( )
e kh y y
T m
h/
m
h
~ =
2 2
4
3
(8.54)
Aplicnd metodele Runge - Kutta de ordinul doi rezult:

( ) ( )
( ) e kh y y
T m
h/
m
h
~ =
3 2
8
7
(8.55)
Metoda Runge - Kutta de ordinul patru are o eroare de trunchiere care poate fi
estimat cu relaia:
( ) ( )
( ) e kh y y
T m
h/
m
h
~ =
5 2
32
31
(8.56)
dedus prin acelai procedeu ca i la metoda Runge - Kutta de ordinul nti.
n anumite condiii metodele Runge - Kutta pot da rezultate foarte imprecise chiar
dac erorile de trunchiere i rotunjire sunt mici. Aceasta se datoreaz faptului c
erorile de trunchiere sau rotunjire pot crete odat cu x. Acest fenomen, care apare
referitor la devierea mare a soluiei a primit denumirea de instabilitate parial,
autorul fiind Mayers D.F. n acest caz instabilitatea depinde de ecuaia diferenial,
algoritm i dimensiunea intervalului.


8.1.5. METODE PREDICTOR-CORECTOR

Aceste metode prezic o valoare pentru soluie la pasul m+1, y
m+1
, apoi se
utilizeaz o formul pentru corecia ei. Formula de corecie se poate utiliza de mai
multe ori pentru recorectri. Acest proces de iteraie poate fi fcut eficient dac se
alege dimensiunea intervalului pentru un numr minim de iteraii.
Considerm formula predictor- corector de ordinul doi:

( )
( ) y y hf x ,y
m+ m- m m 1
0
1
2 = + (8.57)
n care indicele (0) arat prima estimare a lui y
m+1
.
Deoarece este necesar s se cunoasc un punct anterior lui x
0
se utilizeaz pentru
pornirea metodei, metoda Runge-Kutta de ordinul doi.

Metode numerice n electronic
184
y

x

x y
m m + + 1 1
,
y y x = ( )

Fig. 8.4 Determinarea grafic a soluiei prin metoda predictor - corector

Punctul prezis de prima estimare se calculeaz astfel: se duce tangenta ET, n punctul
E x y
m m
( , ) dup care se duce coarda FR paralel cu tangenta ET prin punctul
F x y
m m
( , )
1 1
i intersecteaz dreapta x x
m
=
+1
n punctul P( x ,y
m+ m+ 1 1
0
) obinndu-se
prima valoare prezis la estimarea zero. Se poate mbunti valoarea y
m+1
0
dac se
consider panta n punctul ( x ,y
m+ m+ 1 1
0
) i se face media cu panta n ( x ,y
m m
). Prin
punctul ( x ,y
m m
) ducem o coard cu aceast pant care intersecteaz dreapta x x
m
=
+1

n punctul (
( )
x ,y
m+ m+ 1 1
1
) unde
( )
y
m+1
1
este estimarea de ordinul 1. Continund acest
procedeu se poate estima valoarea lui
( )
y
m+
k
1
pn la o valoare k, pn cnd

| |
y y
m
k
m + +
<
1 1
0
c (8.58)
unde c este o eroare impus.
Cu panta f x y
m m
( , ) din punctul E se duce coarda prin F
y y f x y x x
m m m m
= +
1 1
( , )( ) (8.59)
Punctul de abscis x
m+1
pe aceast coard are ordonata

( )
y y hf x y
m+ m m m 1
0
1
2 = +

( , ) care reprezint prima estimare a soluiei.


Ducem prin E coarda de pant
( )
( )
( ) ( ) z f x ,y f x ,y
m m m m+ m+
= +
1
2
1 1
0
(8.60)
Punctul de abscis x
m+1
pe aceast coard are ordonata

( )
( )
( )
( )
| |
y y
h
f x ,y f x ,y
m+ m m m m+ m+ 1
1
1 1
0
2
= + + (8.61)
Procednd n mod analog pentru a k-a estimare avem

( )
( )
( )
( )
| |
y y
h
f x ,y f x ,y
m+
k
m m m m+ m+
k-
1 1 1
1
2
= + + (8.62)
Dac
( )
y
m+
k
1
( )
-y
m+
k-
1
1
<c unde c > 0, (8.63)
orict de mic, iteraiile se opresc. Relaia (8.63) este satisfcut cnd metoda
predictor-corector este convergent.
Rezolvarea numeric a ecuaiilor i sistemelor difereniale 185

( )
y
m+
k
1
-
( )
y
m+
k-
1
1
=
h
2
|
( )
( )
( )
( ) | f x ,y f x ,y
m+ m+
k-
m+ m+
k-
1 1
1
1 1
2
(8.64)
Aplicnd teorema valorii medii obinem

| | | | | |
( ) y y
h f
y
y y
m
k
m
k
m
k
m
k
+ +

=
1 1
1
1
1
1
2
2
c
c
(8.65)
unde
c
c
f
y
este evaluat n x x
m
=
+1
i
( ) ( )
| |
y y ,y
m+
k-
m+
k
e
1
1
1
.
Dac
c
c
f
y
este mrginit de M >0 astfel ca:

c
c
f
y
s M (8.66)
rezult
( )
y
m+
k
1
( )
-y
m+
k-
1
1
s
M h
2
( ) ( )
y y
m+
k-
m+
k-
1
1
1
2
. (8.67)
Analog

( ) ( )
y y
m+
k-
m+
k-
1
1
1
2
s
h M
2
( ) ( )
y y
m+
k-
m+
k-
1
2
1
3
(8.68)

sau
( )
y
m+
k
1
( )
-y
m+
k-
1
1
s
h M
2
2
|
\

|
.
|
( ) ( )
y y
m+
k-
m+
k-
1
2
1
3
. (8.69)
Continund calculul prin acest procedeu se ajunge la rezultatul:

( )
y
m+
k
1
( )
-y
m+
k-
1
1
s
h
k-
M
2
1
|
\

|
.
|
( ) ( )
y y
m+ m+ 1
1
1
0
(8.70)
Dac dimensiunea intervalului h este bine aleas adic h
M
<
2
(8.71)
atunci metoda este convergent. Viteza de convergen este cu att mai mare cu ct h
este mai mic.


8.1.5.1. Eroarea de trunchiere a metodei predictor-corector

Pentru determinarea erorii de trunchiere se dezvolt n serie Taylor funcia y x ( ) n
jurul punctului x x
m
=

( )
( ) ( )( )
( )
( ) ( ) ( ) y x y x y x x-x
y x
x-x x-x y
m m m
''
m
m m
'''
= + + +
1
2 3
2
1
6
(8.72)
unde x x
m
s s
Considernd x x x h
m m
= = +
+1
rezult:
( ) ( ) ( ) ( ) ( ) y x y x h y x
h
y x
h
y
m+ m m
''
m
'''
1
1
2 3
1
2 6
= + + + (8.73)
unde x x
m m+
s s
1 1

Pentru x x x h
m m
= =
1
rezult:
( ) ( ) ( ) ( ) ( ) y x y x h y x
h
y x
h
y
m- m m
''
m
'''
1
1
2 3
2
2 6
= +

(8.74)
Metode numerice n electronic
186
unde x x
m- m 1 2
s s
Scznd din expresiile (8.67) i (8.68) rezult:
( ) ( ) ( ) ( ) y x y x h y x
h
y
m+ m- m
'''
1 1
1
3
2
3
= + + (8.75)
tiind c

( ) ( )
( )
y y
y
''' '''
'''

1 2
2
+
= unde x x
m- m+ 1 1
s s
Comparnd (8.69) cu (8.57) rezult c eroarea metodei predictor- corector este :

| |
( ) e
h
y
T
p
'''
=
3
3
unde x x
m- m+ 1 1
s s (8.76)
Formula (8.61) este analoag formulei de la integrarea prin metoda trapezului unde am
determinat eroarea

( )
e
T
c
=
( )

h
y h
'''
3
12
unde x h x
m- m+ 1 1
s s (8.77)
Calculm valoarea adevrat y
m
n punctul
m

( )
( ) y y
h
y
m m
'''
= +
0
2
3
(8.78)
iar dup (8.71) avem

( )
( )
y y
h
y h
m m
k '''
=
2
12
(8.79)
Scznd relaiile (8.72) i (8.73) rezult:

( ) ( )
( )
( )
| |
y y
h
y h y
m
k
m
''' '''
= +
0
3
12
4
Considernd y
'''
aproximativ constant pentru x x x
m- m+ 1 1
s s
se obine:

5
12
3
h
y
'''
=
( ) ( )
y y
m
k
m

0

sau

( )
e
T
c
=
( ) ( )
| | =
h
y y y
'''
m m
k
3
0
12
1
5
(8.80)
Convergena metodei este mai rapid cu ct h este mai mic. Numrul de iteraii nu
trebuie s fie mare. Exist dovezi care arat c cel mai eficient numr de iteraii pentru
metoda predictor-corector este doi.


8.1.5.2. Algoritm 8.5. Metoda predictor-corector

{Variabile
x
0
:abscisa punctului prin care trece soluia, real;
y
0
: ordonata punctului prin care trece soluia, real;
h : pasul ntre abscisele punctelor de calcul ale soluiei, real;
y : ordonatele soluiei numerice, vector;
x : abscisele soluiei numerice, vector;
Rezolvarea numeric a ecuaiilor i sistemelor difereniale 187
n : numrul de puncte n care se calculeaz soluia, ntreg;

er : eroarea de calcul, real;
{
x[0]= x
o
; y[0]= y
0
;
pentru i = 0,1,2,...,n
{

( )
| | | | ( ) y y *h*f x i- ,y i-
i i-
0
1
2 1 1 = +
k = 1;
repet
calculeaz


( )
| | | | ( )
( )
| | | |
y y . * f x i- ,y i- f x ,y
i
k
i- i i
k-
= + +
1
1
05 1 1
k = k+1;

pn cnd


( ) ( )
y y e
i
k
i
k-
<
1

}
Soluiile numerice ale ecuaiei sunt x[ i ], y
( )
| |
k
i , i=0,1,2,...n;
}
}


8.1.5.3. Implementarea algoritmului 8.5

/* Funcia care implemeneteaz rezolvarea ecuaiilor difereniale prin
metoda predictor-corector 1.
*/
void PRED_COR( double(*f)(double x, double y),
double x0,
double y0,
double pas,
double eps,
int nrp,
double sol[])
{
int i;
double prec;
/* start */
sol[0]=y0;
sol[1]=sol[0]+0.5*pas*(f(x0,sol[0])+f(x0+pas,sol[0]+
pas*f(x0+pas,sol[0])));
for(i=2;i<=nrp;i++)
Metode numerice n electronic
188
{
sol[i]=sol[i-2]+2*pas*f(x0+(i-1)*pas,sol[i-1]);
do
{
prec=sol[i];
sol[i]=sol[i-1]+0.5*pas*( f(x0+(i-1)*pas,sol[i-1]+f(x0+i*pas,prec));
}
while( fabs(sol[i]-prec)>eps );
}
}


8.1.6. METODA MILNE

Aceast metod folosete o pereche de formule de precizare i corectare, utilizeaz
o integrare dup metoda lui Simpson.

( )
( )
y y
h
y y y
y y
h
y y y
k+ k- k-
'
k-
'
k
'
k+ k- k-
'
k
'
k+
'
1 3 2 1
1 1 1 1
4
3
2 2
3
4
= +
|
\

|
.
|
+
= +
|
\

|
.
|
+ +
(8.81)
Pentru aplicarea metodei din start trebuie cunoscute patru valori y y y y
k k k k ,
, ,
1 2 3

care se obin cu o metod direct. Corecia soluiei se face pn cnd diferena dintre
dou valori consecutive ale soluiei ntr-un punct devine mai mic dect o eroare c
impus.


8.1.6.1. Algoritmul 8.7. Metoda lui Milne

{Variabile
x
0
:abscisa punctului iniial al soluiei, real;
y
0
: ordonata punctului iniial al soluiei, real;
h : pasul dintre punctele soluiei, real;
n : numrul de puncte n care se calculeaz soluia, ntreg;
{x[0]= x
o
; y[0]= y
0
;
pentru k = 1, . .. 3
{ calculeaz ( ) ( )
| |
y y
h
f x ,y f x h,y hy
k k- m m m m m
'
= +
|
\

|
.
| + + +
1
2
;
i = 3;
repet
calculeaz
( )
( ) y y
h
y y y
i+ i- i-
'
i-
'
i
'
1
0
3 2 1
4
3
2 2 = +
|
\

|
.
| + ;
j = 1;
repet
Rezolvarea numeric a ecuaiilor i sistemelor difereniale 189
calculeaz
( ) ( )
y y
h
y y y
i+
j
i- i-
'
i
'
i+
j-
'
1 1 1 1
1
3
= +
|
\

|
.
| + +
|
\

|
.
|
|
\

|
.
| ;
j = j+1;
pn cnd

( ) ( )
y y e
i+
j
i+
j-
1 1
1
0 < > ;

i = i +1;
pn cnd i = n;
}
valorile unice ale soluiei sunt y
i
, i = 1, 2, . .., n
}
}


8.1.6.2. Implementarea algoritmului 8.7

/* Funcia care implementeaz metoda de rezolvare a ecuaiilor
difereniale ordinare prin metoda Milne
*/
void MILNE( double(*f)(double x, double y),
double x0,
double y0,
double pas,
double eps,
int nrp,
double sol[])
{
int i;
double prec;
/* start */
sol[0]=y0;
for(i=1;i<=3;i++)
sol[i]=sol[i-1]+0.5*pas*( f(x0+(i-1)*pas,sol[i-1])
+f(x0+i*pas,sol[i-1]+pas*f(x0+(i-1)*pas,sol[i-1])));
for(i=4;i<=nrp;i++)
{
sol[i]=sol[i-4]+4*pas*( 2*f(x0+(i-3)*pas,sol[i-3])
-f(x0+(i-2)*pas,sol[i-2])+2*f(x0+(i-1)*pas,sol[i-1]))/3;
do
{
prec=sol[i];
sol[i]=sol[i-2]+pas*( f(x0+(i-3)*pas,sol[i-3])
+4*f(x0+(i-2)*pas,sol[i-2])+f(x0+i*pas,sol[i]))/3;
}
while( fabs(sol[i]-prec)>eps );
Metode numerice n electronic
190
}
}


8.2. INTEGRAREA NUMERIC A SISTEMELOR DE
ECUAII DIFERENIALE DE ORDINUL NTI I A
ECUAIILOR DIFERENIALE DE ORDINUL DOI

Ecuaiile de ordin superior cu condiii iniiale se refer la un sistem de ecuaii
difereniale de ordinul nti.
Considerm ecuaia diferenial de ordinul n de forma:

( )
( ) F x , y , y , y , , y
' '' n
= 0 (8.82)
cu condiiile iniiale:
x x =
0
, y y y y y y
n n
= = =

0 0
1 1
, ' ' ,.....,
( ) ( )

. (8.83)
Aceast ecuaie diferenial poate fi scris sub forma unui sistem de ecuaii
difereniale de ordinul nti cu n funcii necunoscute.
Pe lng funcia cutat y (soluia ecuaiei) mai introducem (n-1) necunoscute
auxiliare: y y y
n- 1 2 1
, , .... , (8.84)
legate de y prin ecuaiile:

d
d
d
d
d
d
d
d
y
x
y ,
y
x
y ,
y
x
y , ,
y
x
y
n-
n-
= = = =
1
1
2
2
3
2
1
. (8.85)
Se observ c

( )
y
y
x
y
k
k
k
k
= =
d
d
(8.86)
Ecuaia (8.82) o putem scrie sub forma

( ) ( )
( )
( )
y f x , y , y , y , , y
y
dx
f x , y , y , y , , y
n ' '' n-
n-
n-
=
=

1
1
1 2 1
sau
d
(8.87)
Ecuaiile (8.87 ) i (8.85 ) formeaz un sistem de n ecuaii difereniale de ordinul nti
cu n funcii necunoscute. Dintre ecuaiile sistemului numai ultima are o form mai
general, celelalte fiind mai speciale.
Condiiile iniiale ale sistemului vor fi:
pentru x x =
0
, rezult

( ) ( )
( )
y y y , y y y , , y y y
' '' '' n- n-
n-
= = = = = =
0
1
10 0 20
1
0
1
1 0
(8.88)
Pentru fiecare ecuaie se poate aplica una dintre metodele studiate pentru ecuaiile
difereniale de ordinul nti. Dac aplicm metoda Runge - Kutta de ordinul patru se
pleac de la ultima ecuaie (8.89) spre prima din (8.88).
Pentru i = 0,1,2,. .., p rezult:

Rezolvarea numeric a ecuaiilor i sistemelor difereniale 191

( )
( )
y y k k k k
y y k k k k
y y k
n
i
n
i n n n n
n
i
n
i n n n n
i i


+
= + + + +
= + + + +

= +
1
1
1 1
1
2
1
3
1
4
1
2
1
2 1
2
2
2
3
2
4
2
1
1
1 1
1
6
2 2
1
6
2 2
1
6
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
( ) ( )
( )
( )
( ) ( ) ( ) ( )
( ) ( )
1
2
1
3
1
4
1
1
1 2 3 4
2 2
1
6
2 2
+ + +
= + + + +

+
k k k
y y k k k k
i i
(8.89)
unde


( )
k hf x y y y y
k hf x
h
y
k
y
k
y
k
k hf x
h
y
k
y
k
y
k
n
i i
i i
m
i
n
i i
i i
n
i
n
n
i i
i
n
i
n
1
1
1 2
2
1 1
1
1
1
1
1
3
1 2
1
2
1
2
1
2 2 2 2
2 2 2 2
( ) ( ) ( ) ( )
( ) ( ) ( )
( )
( )
( )
( ) ( )
( )
( )
( )
, , , ,...,
, , ,...,
, , ,...,


=
= + + + +
|
\

|
.
|
|
= + + + +
( )
|
\

|
.
|
|
= + + + + +


k hf x h y k y k y k y k
n
i i
i i
m
i n
4
1
3 1 3
1
2 3
2
3
1 ( ) ( ) ( ) ( ) ( ) ( ) ( )
, , , ,...,
(8.90)

( ) ( )
( )
( ) ( )
( )
( ) ( ) ( )
( )
k hy
k h y
k
k h y
k
k h y k
n
n
i
n-
n-
i
n-
n-
n-
i
n-
n-
n-
i n-
1
2
1
2
2
1
1
1
3
2
1
2
1
4
2
1 3
1
2
2
( ) ( )

=
= +
|
\

|
.
|
|
= +
|
\

|
.
|
|
= +

(8.91)

Analog se calculeaz i celelalte valori ale lui k i dup nlocuire n y
i +1
se obine
formula de recuren pentru calculul soluiilor numerice ale ecuaiei difereniale.
Cazul general de tratare a problemei este foarte laborios, dar pentru cazul unei
ecuaii difereniale de ordinul doi sau trei, calculele se simplific mult. Pentru o
ecuaie de ordinul doi

( )
y f x , y , y
'' '
= , (8.92)
rezolvat cu metoda Runge - Kutta de ordinul patru, rezult sistemul de ecuaii de
ordinul trei:

dy
dx
dy
dx
1
=
=

f x y y
y
( , , )
1
1
(8.93)

corespunztor lui (8.84) i (8.85).
Metode numerice n electronic
192
Relaiile de calcul (8.90) i (8.91) devin:


( ) ( )
( )
( )
y y k k k k
y y k k k k
i+ i
i+ i
1
1
1 1
1
2
1
3
1
4
1
1 1 2 3 4
1
6
2 2
1
6
2 2
= + + + +
= + + + +
(8.94)

unde


( )
k hf x y y
k h f x +
h
, y +
k
, y +
k

k h f x +
h
, y +
k
, y +
k

k hf x h y k y k
i i
i
'
i i
i
'
i i
i
i i
i
1 1
2
1
1
1
1
3
2
1
2
1
4 3 1 3
1
2 2 2
2 2 2
'
'
( , , )
( , , )
=
=
|
\

|
.
|
|
=
|
\

|
.
|
|
= + + +

(8.95)

k hy
k h y
k
k h y
k
k h y k
i
i
i
i
1 1
2 1
1
3 1
2
4 1 3
2
2
=
= +
|
\

|
.
|
= +
|
\

|
.
|
= +

( )
(8.96)
nlocuind (8.95 ) n (8.94 ) rezult formulele de calcul:

( )
y y k k k
i+ i 1 1 2 3
1
6
= + + + i = 0,1,2,. .., n
unde

( ) ( )
( )
( )
( )
( ) ( )
( ) ( )
( ) ( )
y y k k k k
k h f x , y , y
k h f x +
h
, y
h
y , y
k
k h f x +
h
, y
h
y
h
k , y
k
k h f x +h , y h y
h
k , y k
i+ i
i i
i
i i
i i
i i
i i
i i
i i
1
1
1 1 2 3 4
1 1
2 1 1
1
3 1 1 1
2
4 1 2 1 3
1
6
2
2 2 2
2 2 4 2
2
= + + + +
=
= + +
|
\

|
.
|
= + + +
|
\

|
.
|
= + + +
|
\

|
.
|

(8.97)


8.3. REZOLVAREA NUMERIC A ECUAIILOR
DIFERENIALE CU DERIVATE PARIALE

Rezolvarea numeric a ecuaiilor i sistemelor difereniale 193
Vom considera ecuaiile difereniale cu derivate pariale de ordinul doi de dou
variabile ce au forma general:
( ) ( ) ( ) ( ) ( ) ( ) a x , y
u
x
b x , y
u
x y
c x , y
u
y
d x , y
u
x
e x , y
u
y
f x , y u=
c
c
c
c c
c
c
c
c
c
c
2
2
2 2
2
2 0 + + + + +
(8.98)
unde a x y b x y c x y d x y e x y f x y ( , ), ( , ), ( , ), ( , ), ( , ), ( , )
sunt funcii date ntr-un domeniu plan D. Funcia necunoscut u x y ( , ) i derivatele
pariale apar n ecuaie la puterea nti. Ecuaia are proprietatea c dac u x y
1
( , ) i
u x y
2
( , ) sunt dou soluii ale ecuaiei, atunci i combinaia liniar
c u c u
1 1 2 2
+ (8.99)
este tot o soluie a ecuaiei unde c
1
i c
2
sunt constante. Aceste tipuri de ecuaii se
clasific dup semnul valorii determinantului ataat formulei (8.98).
A =
a (x ,y ) b (x ,y )
b (x ,y ) c (x ,y )
(8.100)
1. Dac A > 0 ecuaia se numete de tip eliptic
2. Dac A < 0 ecuaia se numete de tip hiperbolic
3. Dac A = 0 ecuaia se numete de tip parabolic


8.3.1. METODA DIFERENELOR FINITE

Aceast metod const n acoperirea domeniului D i o frontier a lui C, cu o reea
de drepte paralele cu axele de coordonate. Paii reelei sunt constani, de valoare h
pentru axa Ox i de valoare k pentru axa Oy. Nodurile reelei se mpart i ele n dou
categorii: una n care punctele au toate vecinele n interiorul lui D i a doua pentru
care cel puin unul dintre vecinele lui este exterior domeniului D i aceasta formeaz
frontiera C
1
a reelei. Se aproximeaz derivatele pariale de ordinul unu i doi din
ecuaia (8.98) cu diferenele finite corespunztoare:

( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( )
( ) ( )
c
c
c
c
c
c c
c
c
c
c
2
2 2
2
2 2
2
2
2
u
x
u x+y , y u x+y u x-h , y
h

u
y
u x,y+h u x,y u x, y-h
k

u
x y
u x+h ,y+h u x,y+h u x+h ,y u x, y
h k

u
x
u x+h ,y u x, y
h

u
y
u x,y+k u x, y
k

~
+
~
+
~
+
~

~

(8.101)
Ecuaia (8.98) scris cu ajutorul diferenelor finite devine
Metode numerice n electronic
194

( ) ( ) ( )
( ) ( ) ( ) ( ) ( )
( ) ( )
u x , y
k a+ h c+ hkb+hk d+kh e+k h f
[k au x+h , y k au x-h , y
h cu x , y+k k cu x , y-k khbu x+h , y+k khbu x , y+k kh bu x+h , y
k hdu x+h , y kh eu x , y+h ]
= + +
+ + + +
+ +
1
2 2 2
2 2 2
2 2 2 2 2 2
2 2
2 2
2 2

(8.102)
Pentru cazul egalitii valorilor pailor h = k n ecuaia obinut (8.102 ) rezult:

( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( )
u x , y
a+ c+ b+h d+h e+h f
[a u x+h , y au x-h , y c u x , y+h
c u x , y-h b u x+h , y+h b u x , y+h b x+h , y
h du x+h , y h e u x , y+h ]
= + + +
+ + +
+ +
1
2 2 2
2 2 2
2

(8.103)
Dac se consider reeaua prezentat n figura 8.1 i se ine seama de condiiile la
limit, atunci pentru nodul (1,1) se obine ecuaia:

( ) ( ) ( )
| |
u
a c b hd he h f
a u c c b u b u b u d u eu
( , )
( , ) , , , ( , ) ( , ) ( , )
11
1
2 2 2
21 1 2 2 2 2 2 1 2 2 21 21 112
1 1 1 1 1
2
1
1 1 1 1 1 1 1
=
+ + + + +

+ + + + +
(8.104)
unde am considerat h=k=1 pentru reeaua din figura 8.5. Procednd la nlocuiri n
fiecare punct al domeniului D se obine un sistem din care calculm valorile funciei
soluie a ecuaiei (8.98). Funcie de semnul lui A se rezolv tipuri de ecuaii eliptice,
hiperbolice sau parabolice.
Pentru a x y b x y c x y d x y e x y f x y ( , ) , ( , ) , ( , ) , ( , ) , ( , ) , ( , ) = = = = = = 1 0 1 0 0 0 rezult o
particularizare a ecuaiei (8.98) obinndu-se ecuaia lui Laplace.


Fig 8.5 Reeaua domeniului funciei soluie i condiiile la limit



8.3.1.1. Ecuaia lui Laplace


c
c
c
c
2
2
2
2
0
u
x
u
y
+ = (8.105)
Aplicnd relaiile 8.101, ecuaia lui Laplace se scrie funcie de diferenele finite astfel:
( ) ( ) ( ) ( ) ( ) | |
u x , y u x+h , y u x-h , y u x , y+h u x , y-h = + + +
1
4
(8.106)
Rezolvarea numeric a ecuaiilor i sistemelor difereniale 195
Considerm reeaua din fig.8.6 i notm cu u
11
, u
12
, u
13
, u
21
, u
22
, u
23
, u
31
, u
32
, u
33




0 0,1 0,2
0,3 0,4 x
0,1
0,2
0,3
0,4
y
u (x,0)=1
u (x, 0,4)=0
u (0, y)=0 u (0,4, y)=0
u
11 u
12 u
13
u
21
u
22
u
23
u
31
u
32
u
33

Fig.8.6 Reeaua domeniului funciei i condiiile la limit pentru ecuaia lui Laplace.

valorile funciei n punctele 1, 2, 3, 4, 5, 6, 7, 8, 9. Se obine sistemul (8.107) care este
un sistem iterativ de tip Jacobi (Capitolul 3).
Prin rezolvarea recursiv a sistemului, rezult valorile funciei soluie a ecuaiei
difereniale cu derivate pariale Laplace n punctele reelei. Reeaua se poate realiza cu
un pas mai mic ceea ce duce la un sistem cu multe ecuaii i necunoscute, determinnd
valorile funciei soluie n punctele mai fine ale reelei.



( )
( )
( )
( )
( )
u u
u u u u
u u u
u u u u
u u u u u
u u u
11 12
12 11 13 22
13 12 23
21 11 22 31
22 12 21 23 32
23 13 22
1
4
0 0 0 0 0 0 0 0 1
1
4
0 0 0 0 0 0 1
1
4
0 0 0 0 0 0 0 1
1
4
0 0 0 0 0 0 0
1
4
0 0 0 0 0
1
4
0 0 0 0 0
= + + + + + + + + +
= + + + + + + + + +
= + + + + + + + + +
= + + + + + + + + +
= + + + + + + + +
= + + + + + + + ( )
( )
( )
( )
( )
0 0
1
4
0 0 0 0 0 0 0 0
1
4
0 0 0 0 0 0 0
1
4
0 0 0 0 0 0 0
1
4
0 0 0 0 0 0 0 0
33
31 21 32
32 22 31 33
32 22 31 33
33 23 32
+ +
= + + + + + + + + +
= + + + + + + + + +
= + + + + + + + + +
= + + + + + + + + +

u
u u u
u u u u
u u u u
u u u
(8.107)

Metode numerice n electronic
196

8.3.1.1.1. Algoritmul 8.8. Ecuaia Laplace

{ Variabile
lsx:limita stng a domeniului pe Ox, real;
ldx:limita dreapt a domeniului pe axa Ox, real;
lsy:limita stng a domeniului pe axa Oy, real;
ldy:limita dreapt a domeniului pe axa Oy, real;
nrx:numrul de subintervale pe Ox, ntreg;
nry:numrul de subintervale pe Oy, ntreg;
h:pasul pe Ox, real;
k:pasul pe Oy, real;
{calculeaz h=(ldx-lsx)/nrx;
k=h;
pentru i=0 pn la nrx
{
u lsx ih ( , ) + = 0 1;
u lsx ih ldy ( , ) + = 0
}
pentru j=1 pn la nrt
u lsy jk ( , ) 0 0 + = ;
u ldx lsy jk ( , ) + = 0;
}
pentru i=1 pn la nrx
pentru j=1 pn la nrt
{
calculeaz
u x y u lsx i h lsy jh u lsx i h lsy jh
u x ih lsy i h u lsx ih lsy j h
i j
( , ) ( ( ( ) , ) ( ( ) , )
( , ( ) ) ( , ( ) )
= + + + + + +
+ + + + + + +
1
4
1 1
1 1

}
construiete sistemul iterativ i -l rezolv cu metoda Iacobi sau
Gauss-Seidel
tiprete u
ij
pentru i=0 pn la nrx
j=0 pn la nrt;
}


8.3.1.1.2. Implementarea algoritmului 8.8

/*
Funcia care implementeaz metoda de rezolvare a ecuaiilor
difereniale de tip eliptic
*/
void ELIPTIC( int ord,
Rezolvarea numeric a ecuaiilor i sistemelor difereniale 197
double Domeniu[][NrMax]
)
{
int i,j,nrp,lung;
double mat[NrMax][NrMax];
lung=ord-2;
for(nrp=1;nrp<=ord*ord-4*ord+4;nrp++)
{
for(i=1;i<=ord-2;i++)
for(j=1;j<=ord-2;j++)
{
if ( (nrp/lung==(i-1)) && (nrp%lung==j) )
{
mat[i][j]=-1;
mat[i-1][j]=mat[i+1][j]=mat[i][j+1]=mat[i][j-1]=0.25;
}
else mat[i][j]=0;
}
}
i=20;
}


8.3.1.2. Ecuaii difereniale cu derivate pariale de tip parabolic

Vom considera ecuaia cldurii ntr-o bar de lungime l ce reprezint o ecuaie cu
derivate pariale de tip parabolic:
1
0
2
2
2
a
u
t
u
x
c
c
c
c


= (8.108)
u(x,t) reprezint temperatura funcie de coordonata punctului i timp. Prin schimbarea
de variabil t=a
2
t
'
ecuaia (8.108) se pote scrie:

c
c
c
c


u
t
u
x
=
2
2
0 (8.109)
Pentru rezolvarea ecuaiei se aplic metoda diferenelor finite pe reeaua prezentat n
figura (8.7) cu paii h
l
n
= pe axa Ox i k h = q
2
pe axa Ot. q=1/6 reprezint
constanta pentru care eroarea este minim dac rezolvarea se face cu metoda
diferenelor finite.


Metode numerice n electronic
198
t
x
h
k
0

Fig.8.7.Reeaua domeniului pe care se integreaz ecuaia diferenial cu derivate
pariale de tip parabolic.

Presupunem date condiia iniial u(x, ) f(x 0 = ) i condiiile la limit:
u( ,t) s(t), u( ,t) z(t) 0 1 = = .
Ecuaia (8.109), scris cu diferene finite, devine:
u u
h
u u u
h
i j i j i j i j i j , , , , ,
.
.
+ +

=
+
1
2
1 1
2
2
q
(8.110)
Din ecuaia (8.110) se deduce formula de calcul a valorilor funciei n punctele reelei:
u u u u
ij i j i j i j + +
= + +
1 1 1
1
6
4 ( )
, , ,
(8.111)
Pentru calculul valorilor funciei se ine seama de condiiile iniiale i de cele la limit.


8.3.1.2.1. Algoritmul 8.9. Ecuaii cu derivate pariale de tip parabolic

{Variabile
lsx:limita stng a domeniului pe Ox, real;
ldx:limita dreapt a domeniului pe axa Ox, real;
lst:limita stng a domeniului pe axa Ot, real;
ldt:limita dreapt a domeniului pe axa Ot, real;
nrx:numrul de subintervale pe Ox, ntreg;
nrt:numrul de subintervale pe Ot, ntreg;
h:pasul pe Ox, real;
k:pasul pe Ot, real;
{pentru i=0 pn la nrx
calculeaz u f lsx i h
i 0
= + ( * ) ;
calculeaz k=(1/6)*h;
pentru j=1 pn la nrt
{
calculeaz u s lst j k
j 0
= + ( * ) ;
calculeaz u z lst j k
lj
= + ( * ) ;
}
pentru i=1 pn la nrx
Rezolvarea numeric a ecuaiilor i sistemelor difereniale 199
pentru j=1 pn la nrt
calculeaz u u u u
ij i j i j i j
= + +
+
1
6
4
1 1 1 1 1
( )
, , ,
;
tiprete u
ij
pentru i=0 pn la nrx
j=0 pn la nrt;
}


8.3.1.2.2. Implementarea algoritmului 8.9

/* Funcia care implementeaz metoda de rezolvare a ecuaiilor
difereniale
cu derivate pariale de tip parabolic.
*/
void Parabolica( double (*F)(double),
double (*S)(double),
double (*Z)(double),
double lims,
double limd,
int nrx,
int nry,
double sol[][NMax]
)
{
int i,j;
double h,k;
h=(limd-lims)/nrx;
k=h*h/6;
for(i=0;i<=nrx;i++)sol[i][0]=f(lims+i*h); /*pe orizontala de jos */
for(j=1;j<=nry;j++)
{
sol[0][j]=s(j*k); /* verticala stanga */
sol[nrx][j]=z(j*k); /*verticala dreapta */
}
for(j=1;j<=nry;j++)
for(i=1;i<=nrx-1;i++)
sol[i][j]=(sol[i-1][j-1]+4*sol[i][j-1]+sol[i+1][j-1])/6;
}


8.3.1.3. Ecuaiile cu derivate pariale de tip hiperbolic

O ecuaie de acest tip este ecuaia oscilaiilor libere ale unei bare omogene finite:


c
c
c
c
2
2
2
2
2
0
u
t
a
u
x
= (8.112)
Metode numerice n electronic
200
care are condiiile la iniiale: u x f x ( , ) ( ) 0 = u (x, ) g(x), x l
t
'
0 0 = s s i condiiile la
limit: u t s t u t z t t ( , ) ( ), ( , ) ( ), 0 1 0 = = s s . Se poate lua acelai domeniu de integrare dat
n figura 8.7. Ecuaia cu derivate pariale (8.112) poate fi transcris cu ajutorul
diferenelor finite, aplicate pe o reea dreptunghiular de pas hl/n pe axa Ox i de pas
k ntreg oarecare astfel:

u u u
k
a
u u u
h
i,j i,j i,j i ,j i,j i ,j + +
+
=
+
1 1
2
2
1 1
2
2 2
(8.113)

Dac se alege h = ka, ecuaia (8.113) se simplific la forma:

u u u u
i j i j i j i j , , , , + +
= +
1 1 1 1
. (8.114)
Cu ajutorul formulei de calcul (8.114) se obin valorile funciei u(x,t) n punctele
domeniului dat astfel ca funcia s verifice ecuaia (8.112).


8.3.1.3.1. Algoritmul 8.10. Ecuaii cu derivate pariale de tip hiperbolic

{Variabile
lsx:limita stng a domeniului pe Ox, real;
ldx:limita dreapt a domeniului pe axa Ox, real;
lst:limita stng a domeniului pe axa Ot, real;
ldt:limita dreapt a domeniului pe axa Ot, real;
nrx:numrul de subintervale pe Ox, ntreg;
nrt:numrul de subintervale pe Ot, ntreg;
h:pasul pe Ox, real;
k:pasul pe Ot, real;
{
calculeaz h=
l
nrx
;
calculeaz k
h
a
= ;
pentru i=0 pn la nrx
{
calculeaz u f lsx i h
i 0
= + ( * ) ;
calculeaz u k g lsx i h u
i i ,
* ( * )

= + +
1 0

}
pentru j=1 pn la nrt
{
calculeaz u s lst j k
j 0
= + ( * ) ;
calculeaz u z lst j k
lj
= + ( * ) ;
}
pentru i=1 pn la nrx
Rezolvarea numeric a ecuaiilor i sistemelor difereniale 201
pentru j=1 pn la nrt

calculeaz u u u u
ij i j i j i j
= + +
+ +
( )
, , , 1 1 2 1 1
;
pentru i=0 pn la nrx

pentru j=0 pn la nrt tiprete u
ij

}

8.3.1.3.2. Implementarea algoritmului 8.10

/*
Funcia care implementeaz metoda de rezolvare a ecuaiilor
difereniale cu derivate pariale de tip hiperbolic
*/

void Hiperbolica( double (*F)(double),
double (*S)(double),
double (*Z)(double),
double lims,
double limd,
int nrx,
int nry,
double a,
double sol[][NMax]
)

{
int i,j,k1;
double h,k;
h=(limd-lims)/nrx;
k=k1;
for(i=0;i<=nrx;i++)sol[i][0]=f(lims+i*h); /*pe orizontala de jos */
for(j=1;j<=nry;j++)
{
sol[0][j]=s(j*k); /* verticala stnga */
sol[nrx][j]=z(j*k); /*verticala dreapta */
}

for(i=1;i<=nrx-1;i++)
sol[i][1]=sol[i+1][0]+sol[i-1][0]-sol[i][0]+k*g(lims+i*h);
for(j=2;j<=nry;j++)
for(i=1;i<=nrx-1;i++)
sol[i][j]=(sol[i+1][j-1]-sol[i][j-2]+sol[i-1][j-1]);

}

Metode numerice n electronic
202





8.4. APLICAIE

Se consider un circuit R,L n serie alimentat de o surs de curent alternativ
e t = 10 100 cos( ) t V, f =50Hz, prezentat n fig.(8.8).


Fig.8.8. Circuitul R,L


Cunoscnd R=10O, L=10mH i c la t=0 i=0, s se calculeze valorile curentului la
t=0.001; 0.002; 0.003; 0.004; 0.005; 0.006; 0.007; 0.008; 0.009; 0.01s.
Se aplic circuitului electric legea a doua a lui Kirchhoff i se obine ecuaia
diferenial
L
i
Ri e
d
dt
+ =

Rezultatele obinute prin metoda lui Euller modificat sunt prezentate n tabelul (8.1)

Tabelul 8.1
t[s] i[A]
0.0000 0.00000
0.00100 0.48770
0.00200 0.65941
0.00300 0.63249
0.00400 0.447665
0.00500 0.24065
0.00600 - 0.03564
0.00700 -0.31683
0.00800 -0.57124
0.00900 -0.77188
0.001000 -0.89808

9
REZOLVAREA NUMERICA A ECUAIILOR
INTEGRALE*


Ecuaiile integrale sunt ecuaii n care funcia necunoscut se gsete sub semnul
integralei. Ecuaiile integrale liniare se clasific n funcie de tipul limitelor de
integrare i modul de apariie n ecuaie a funciei necunoscute astfel :
1 - ecuaii integrale la care limitele de integrare sunt constante i se numesc ecuaii
de tip Fredholm ;
2 - ecuaii integrale la care o limit de integrare este variabil i se numesc ecuaii
de tip Volterra.
n ambele cazuri, dac funcia necunoscut este numai sub integral, spunem c
ecuaiile sunt de spea ntia, iar dac funcia necunoscut este i n afara integralei,
spunem c ecuaiile sunt de spea a doua.

Ecuatii
integrale
liniare
de tip Fredholm
spea I
spea II
de tip Volterra
spea I
spea II




9.1. INTEGRAREA ECUAIEI FREDHOLM
NEOMOGEN DE SPEA A DOUA PRIN
METODA APROXIMAIILOR SUCCESIVE

Se consider ecuaia:
( ) x f x S x y y y
a
b
= +
}
( ) ( , ) ( )d (9.1)
unde f i S sunt funcii date , este funcia necunoscut pe care o determinm i
un parametru numeric suficient de mic, astfel c pentru nceput poate fi aproximat
soluia :

1
( ) ( ) x f x = (9.2)
Se obine formula de recuren
_______________________
*Bibliografie [12], [17], [18], [22]
Rezolvarea numeric a ecuaiilor integrale 205

k
a
b
k-
x f x S x y y ( ) ( ) ( , ) = +
} 1
(y)d (9.3)
Pentru convergena irului de soluii aproximative se scad funciile (9.1) i (9.3)
obinndu-se eroarea :
c c
k k
a
b
k-
x x x S x y y ( ) ( ) ( ) ( , ) = =
} 1
(y)d (9.4)
Dac ( ) S x , y M s oricare ar fi ( ) | | | | { }
x , y a , b a , b e atunci
( ) c S x y y y S b-a E
a
b
k- k-
( , ) ( )
}
s
1 1
d (9.5)
unde E
k
este maximul lui ( ) c
k
x din [ , ] a b .
Convergena irului de soluii este satisfcut dac

( )
M b-a < 1 . (9.6)
Utiliznd pentru integrare o metod de cuadratur cunoscut se obine din ecuaia
(9.3) ecuaia :



i i
a
b
i j
j=
n
i j j
i i ij j
j=
n
f S x y y y f h A S x y y
f C i = , ,...,n
= + ~ +
= +
}

( , ) ( ) ( , ) ( ) d
sau
0
0
01
(9.7)
care reprezint un sistem n necunoscutele
i
. Sistemul se poate rezolva iterativ
aplicnd formula de iteraie:

( ) ( )
f l C
i
k
i ij j
k-
j=
n
= +

1
0
i = 0,1,2,...,n (9.8)
Procesul de iteraie se continu pn cnd

( ) ( )
c
i
k
i
k+
<
1
(9.9)
unde c > 0 reprezint eroarea de calcul .


9.1.1. ALGORITMUL 9.1. METODA LUI FREDHOLM

{Variabile
l : constanta ecuaiei ;
x : vectorul punctelor de pe 0x, real ;
y : vectorul punctelor de pe 0y, real ;
M : matricea punctelor format de vectorul x i y ;
C
ij
: valorile funciei cunoscute S(x,y) n punctele matricei M reale
nmulit cu ponderile din metoda cuadraturii, real ;
a : limita stng de integrare, real ;
b : limita dreapt de integrare, real ;
Metode numerice n electronic 206

0
: valooarea iniial a funciei soluie, real ;
f
i
: valorile funciei cunoscute n variabilele vectorului x, real ;
sum : suma parial, real ;
c : eroarea, real ;
n : numrul de puncte n care se calculeaz soluia, ntreg ;
{
0
= o ;
i = 1;
repet
( )

i
k
=
0
;
k = 1;
repet
{ calculeaz f
i
= f( x
i
);
pentru j = 1... n
{calculeaz sum = sum + * A
i
*S(x
i
,y
j
)*
( )
( )
k-1
i
x ;
calculeaz
( )

i
k+1
i
f sum = + ;
}
k = k+1;
pn cnd
( ) ( )
c
i
k+1
i
k
< ;
i = i + 1;
pn cnd i = n;
tiprete soluia
i
k ( +1)
i=1 pn la n;
}


9.1.2.IMPLEMENTAREA ALGORITMULUI 9.1. METODA LUI
FREDHOLM

{void Fredholm(double (*f)(double),
double (*S)(double,double),
double lims,
double limd,
int np,
double lam,
double sola[]
)
{
double h,sum;
int i,j,sem,cont;
int niter=10000;
double eps=1e-15;
static double mat[NMax][NMax];
Rezolvarea numeric a ecuaiilor integrale 207
static double tl[NMax];
static double solp[NMax];
h=(limd-lims)/np;
for (i=1;i<=np+1;i++)
{
tl[i]=f(lims+(i-1)*h);
sola[i]=0;
for(j=1;j<=np+1;j++)
}
if ( (j==1)||(j==np+1) ) mat[i][j]=0.5*lam*h*S(lims+(i-1)*h,lims+
(j-1)*h);
else mat[i][j]=lam*h*S(lims+(i-1)*h,lims+(j-1)*h);
}}
cont=0;
do
{
sem=1;
for(i=1;i<=np+1;i++)solp[i]=sola[i];
for(i=1;i<=np+1;i++)
{
sum=0;
for(j=1;j<=np+1;j++)if(j!=i)sum+=mat[i][j]*solp[j];
sola[i]=(tl[i]+sum)/(1-mat[i][i]);
}
for(i=1;i<=np+1;i++) if(fabs(sola[i]-solp[i])>eps)sem=0;
cont++;
}
while ((sem==0)&&(cont<niter))
}
}


9.2. INTEGRAREA ECUAIEI DE TIP VOLTERRA
NEOMOGEN DE SPEA A DOUA PRIN METODA
APROXIMAIILOR SUCCESIVE

Fie ecuaia
( ) ( ) ( , ) ( ) x f x S x y y y
a
x
= +
}
d . (9.10)
Diferena finit pentru ecuaia (9.10) este dat de relaia :
( ) A = = +
}
( ) ( ) ( ) ( , ) ( ) d x x-h f x f x h S s y y y
x-h
x
(9.11)
Aplicnd o formul de cuadratur pentru integral pe intervalul h rezult :
Metode numerice n electronic 208

i i- i i- ij j
j=
i
f f C = +
1 1
0
(9.12)
Din aceast relaie prin explicitarea lui j
i
se obine

i
ii
i i- i,i- i- ij j
j=
i-
C
f f C C =

+ + +

(
1
1
1
1 1 1
0
2
( ) (9.13)
Din ecuaia iniial (9.10) rezult c ( ) ( ) a f a deci f = =
0 0
. Ca urmare, din ultima
relaie (9.13 ) rezult :

| |

1
11
1 0 10 0
1 10 0
11
1
1
1
1
=

+ =
+
C
f f C
f C f
C
( ) (9.14)
Aceast valoare este utilizat ca valoare de start pentru ecuaia de recuren (9.13 ) .


9.2.1. ALGORITM 9.2. METODA LUI VOLTERRA

{Variabile
n : numrul de puncte n care se calculeaz soluia , ntreg ;
x : vectorul punctelor de pe 0x , real ;
y : vectorul punctelor de pe 0y , real ;
M : matricea punctelor format de vectorul x i y ;
C
ij
: valorile funciei cunoscute S(x , y) n punctele n care se
calculeaz prin metoda cuadraturii mulit cu ponderile, real ;
f
i
: valorile funciei f(x
i
) , real ;
h :intervalul de integrare , real ;

i
:valoarile funciei soluie , real ;
c : eroarea de calcul , real ;
sum : suma parial , real ;
{
sum = 0 ;
calculeaz f
1
, f
0
;
calculeaz
1
1 10 0
11
1
=
+ f C f
-C
;
i = 1;
repet
pentru j = 0 la i -2
{calculeaz sum = sum + C
ij

j
;
calculeaza
| |

i
ii
i i- i,i- i-
C
f f ( C ) sum =

+ + +
1
1
1
1 1 1
;
}
i = i + 1;
pn cnd i = n;
Valorile funciei soluie sunt
i
pentru i = 1 , ... , n;
Rezolvarea numeric a ecuaiilor integrale 209
}


9.2.2. IMPLEMENTAREA ALGORITMULUI 9.2

{void Volterra(double (*f)(double),
double (*S)(double,double),
double lambda,
double lims,
double h,
int np,
double sola[]
)
{
int i,j;
double sum;
sola[0]=f(lims);
sola[1]=(f(lims+h)+0.5*f(lims)*S(lims,lims)*lambda)
/(10.5*S(lims+h,lims+h)*lambda );
for(i=2;i<=np;i++)
{
sum=0;
for(j=0;j<=i-2;j++)sum+=sola[j]*S(lims+i*h,lims+j*h)*lambda;
sum=sum-0.5*sola[0]*S(lims,lims)*lambda;
sola[i]=(f(lims+i*h)-f(lims+(i-1)*h)+(1+S(lims+i*h,lims+
(i-1)*h))*lambda*sola(i1)+sum)/(10.5*lambda*S(lims+i*h,lims+i*h));
}


9.3. APLICAIE

S se rezolve ecuaia integral de tip Fredholm
( ) ( ) d x x . x . . x y y y = + +
}
0 05 0 025 01
2 2 2
0
1

pentru care lims=0,limd=1,lambda=0.1, nr=5.
Rezultatele obinute sunt :
. . , . . , . . ,
. . . . ., . . .


( ) ( ) ( )
( ) ( ) )
0 0 0 001038 0 2 0 201042 0 4 0 401055
0 6 0 601076 0 8 0 801106 10 1001145
= = =
= = = (

Aceste rezultate sunt valorile funciei soluiei n punctele de diviziune ale
intervalului
[0 1].


10
VECTORI I VALORI PROPRII*


Se consider o matrice ptrat M
R
n n
de ordinul n
M
a a ... a
a a ... a
- - - -
a a ... a
R
n
n
n n nn
=
|
\

|
.
|
|
|
|
11 12 1
21 22 2
1 2
(10.1)
i un vector X
T
= =[ x x x x
n 1 2 3
, , , ..., ] (10.2)
Problema care se pune este s determinm valorile i vectorii X pentru care
transformarea fcut de matrice asupra vectorului X s ne dea un vector X adic
un vector coliniar cu el . Ca urmare A X X = (10.3)
sau scris matriceal :

a a ... a
a a ... a
- - - -
a a ... a
x
x
--
x
x
x
--
x

n
n
n n nn n n
11 12 1
21 22 2
1 2
1
2
1
2
|
\

|
.
|
|
|
|

|
\

|
.
|
|
|
|
=
|
\

|
.
|
|
|
|
(10.4)
Relaiile (10.4) se mai pot scrie i sub forma :

a a ... a
a a ... a
- - - -
a a ... a
x
x
--
x
n
n
n n nn n
11 12 1
21 22 2
1 2
1
2
0

|
\

|
.
|
|
|
|

|
\

|
.
|
|
|
|
=

(10.5)
Sistemul obinut (10.5) este un sistem omogen care admite ntotdeauna soluia banal
x x x x
n 1 2 3
0 = = = = = .
Suntem interesai de soluiile diferite de zero ale sistemului. Pentru ca sistemul (10.5)
s admit soluii diferite de soluiile banale este necesar i suficient ca determinantul
sistemului s fie nul. Determinantul n necunoscuta prezint un polinom de grad n
i se numete prin definiie polinom caracteristic, iar egalat cu zero poart numele de
ecuaie caracteristic a matricei A. Ecuaia (10.6) reprezint polinomul caracteristic
iar P( ) = 0 ecuaia caracteristic. Pentru fiecare valoare proprie determinat din
ecuaia caracteristic se pot determina valori proprii care verific ecuaia AX X = .
Pentru o valoare proprie , exist o infinitate de vectori proprii.
__________________________
*Bibliografie : [6], [10], [11], [22], [23]
Vectori i valori proprii

211
( ) P
a a ... a
a a .... a
- - - -
a a ... a
n
n
n n nn

|
\

|
.
|
|
|
|
11 12 1
21 22 2
1 2
(10.6)
Vectorii i valorile proprii sunt utili pentru simplificarea operaiilor cu matrice ce se
ntlnesc n rezolvarea diferitelor sisteme de ecuaii difereniale i n alte operaii mai
complicate .

10.1. TIPURI DE MATRICE

n continuare sunt date definiiile unor tipuri de matrici, mai des utilizate n
cercetare i proiectare i unele proprietile mai importante a lor.

10.1.1. MATRICE SIMILARE

Dou matrice A i B ( ) e

M S
n n
unde S c R sau S c C (complex ) se numesc
similare dac exist o matrice nesingular P ( ) e

M S
n n
astfel nct
B = PA P
-1
(10.7)
Teorema1: Dou matrice similare au aceleai valori proprii. Matricea vectorilor
proprii :
V=
x x ... x
x x ... x
-- -- ... --
x x ... x
n
n
n n n
n
1
1
1
2
1
2
1
2
2
2
1 2
|
\

|
.
|
|
|
|
|
(10.8)
se numete matricea modal iar matricea valorilor proprii A se numete matricea
diagonal:
A
...
...
...
n
=

|
\

|
.
|
|
|
|

1
2
0 0
0 0
0 0
(10.9)
Relaia ntre cele dou matrice este :
A V = V (ecuaia modal) (10.10)
sau A = V V
-1
(10.11)
Matricea modal a vectorilor proprii i matricea diagonal a valorilor proprii sunt
similare .

10.1.2. MATRICE SIMETRICE

O matrice ptratic A este simetric dac
A A
T
= (10.12)
(adic transpusa este egal cu matricea ) .
Metode numerice n electronic

212
Teorema 2: Valorile proprii ale unei matrice simetrice A M
R
n n
e

sunt reale .
Corolar 1: Dac A M
R
n n
e

este simetric, atunci exist o transformare similar
P A P
-1
=A unde P M
R
n n
e

este o matrice ortogonal i A
I
e

M
n n
este diagonal .

10.1.3. MARTRICE ORTOGONALE

O matrice ptratic A se numete ortogonal dac
A A
T
=
1
(10.13)
Aceste matrice sunt utile pentru transformrile similare .

10.1.4. MATRICE SUPERIOR TRIUNGHIULARE

Sunt matricele cu toate elementele nule sub diagonala principal. Pentru aceste
matrice valorile proprii sunt elementele de pe diagonal .

10.1.5. MATRICE INFERIOR TRIUNGHILARE

Sunt matricele cu toate elementele nule deasupra diagonalei principale. Valorile
proprii sunt elementele de pe diagonal .

10.1.6. MATRICEA DIAGONAL

Este matricea cu toate elementele nule deasupra i dedesubtul diagonalei
principale. Valorile proprii sunt elementele de pe diagonal .

10.1.7. MATRICEA HERMITIC

Matricea A este hermitic dac A A =
H
unde
a a
ij ji
= ,
iar pentru elementele de pe diagonala principal avem
a a
ii ii
= ,
adic sunt reale .
Dac A M
n n
e

I
este o matrice hermitic triunghiular, atunci pentru orice XeC
expresia X AX
H
este real .
Dac A este matricea hermitic, atunci :
-este pozitiv definit dac pentru X = u
rezult X AX
H
> 0
-este semipozitiv definit dac pentru X = u
rezult X AX
H
>0 .

10.1.8. MATRICEA SINGULAR
Vectori i valori proprii

213

A M
n n
e

I
este o matrice singular dac i numai dac admite o valoare proprie
nul. Prin definiie urma unei matrice A M
n n
e

I
este suma elementelor de pe
diagonala principal :
tr A = a
ii
i=
n
1

(10.14)
Prin definiie spectrul radial S(A) al unei matrice A M
n n
e

I
este dat de este valoarea
| |
i
unde
i
este valoarea absolut maxim dintre valorile proprii .


10.2. LOCALIZAREA VALORILOR PROPRII

Teorema 3 : Fiecare valoare proprie a unei matrice A M
n n
e

I
se gsete n cel
puin un disc circular, L
i
cu centrul n a
ii
i raz
i
unde

i i ij
j=
j i
n
l a = =
=

1
i=1,2,..., n (10.15)
sau un disc circular C
j
cu centrul n a
jj
i raz c
j



j j ij
i=
i j
n
c a = =
=

1
j = 1,2, ... ,n (10.16)
Toate valorile proprii s se gseasc n reuniunea cercurilor :


{ }
L z , z-a l
i ii i i
= s = i = 1,2, ... ,n (10.17)
sau n reuniunea cercurilor :


{ }
C z , z-a c
j jj j j
= s = j=1,2,...,n (10.18)


10.3. METODE DE DETERMINARE A VALORILOR I
VECTORILOR PROPRII AI UNEI MATRICE

Valorile proprii ale unei matrice A, deci soluiile ecuaiei ei carcteristice pot fi
reale sau complexe. Din acest punct de vedere clasificm matricele n :
a) Matrice hermitice care admit numai valori proprii reale, iar vectorii asociai sunt
distinci i ortogonali. Aceste matrice pot fi diagonalizate cu matrice ortogonale .
b) Matrice nehermitice ale cror valori proprii nu sunt toate reale, iar vectorii
asociai nu au proprieti particulare .


Metode numerice n electronic

214
10.3.1. METODE DE DETERMINARE A VALORILOR I
VECTORILOR PROPRII ALE MATRICELOR HERMITICE

Dintre aceste metode se prezint metoda puterii, metoda lui Krlov, metoda
Hauseholder, metoda RT i metoda LR.


10.3.1. METODA PUTERII

Considerm ecuaia (10.3) n care reprezint valoarea proprie iar X vectorul
propriu al matricei A. Pentru rangul n al matricei A presupunem existena a n valori
proprii distincte i a n vectori proprii X , independeni. Rezult c un vector
oarecare Y din spaiul n poate fi scris ca o combinaie liniar de cei n vectori proprii
ai matricei A:
Y x x ... x
n n
= + + + o o o
1 1 2 2
(10.19)
nmulim ecuaia (10.19) cu matricea A i rezult:
AY A x A x ... A x x x ... x
n n n n n
= + + + = + + + o o o o o o
1 1 2 2 1 1 1 2 2 2
(10.20)
Continum nmulirea ecuaiei (10.20) cu A pn la un rang k cnd se obine
urmtoarea ecuaie:
A Y A x A x ... A x x x ... x
k k k k
n n
k k
n n
k
n
= + + + = + + + o o o o o o
1 1 2 2 1 1 1 2 2 2
(10.21)
Ecuaia (10.21) se mai poate scrie i astfel:
A Y x x ... x x
k k
k
n
n
k
n
k
= +
|
\

|
.
| + +
|
\

|
.
| ~ o o

o
1 1 1 2
2
1
2
1
1 1 1
( ) (10.22)

dac valoarea lui
1
este cea mai mare valoare proprie i k este mare.
Se poate face aceeai aproximare i pentru ecuaia:
A Y x x ... x x
k k
k
n
n
k
n
k

= +
|
\

|
.
| + +
|
\

|
.
| ~
1
1
1
1 1 2
2
1
1
2
1
1
1
1
1 1
o o

o ( ) (10.23)

Din mprirea ecuaiei (10.22) la (10.23) rezult valoarea proprie maxim pentru
matricea A. Vectorul Y este un vector coloan i prin mprirea vectorilor
corespunztori ecuaiilor (10.22) i (10.23) vom realiza mprirea componentelor
vectorilor a cror valoare este aproximativ egal cu valoarea proprie maxim.
Dac maticea A este nesingular atunci ecuaia (10.3) mai pate fi scris i asfel:
A X X

=
1 1
(10.24)

Calculnd valoarea caracteristic maxim pentru ecuaia (10.24) rezult valoarea
caracteristic minim a matricei A. Cu aceast metod se poate determina cea mai
mare i cea mai mic valoare careacteristic a unei matrice date.


10.3.1.1. Algoritmul 10.1. Metoda puterii
Vectori i valori proprii

215

{Variabile
n,k:rangul matricei,contor, ntregi;
A:matrice;
y:vector;
p:vectorul produs;
A:vectorul valorilor proprii;
{
p[0]=y
pentru i=1,, k
/* presupunem valoarea maxim a valorilor proprii
1
*/
calculeaz p[i]=A*p[i-1] ;
calculeaz [1]=p[k]/p[k-1];
/* mprirea vectorilor const n mprirea componrntelor*/
}
}


10.3.1.2. Implementarea algoritmului 10.1. Metoda puterii

/* Funcia ntoarce :
0 dac s-a gsit valoarea proprie cu precizia dorit,
1 daca s-a gsit o valoare proprie, algoritmul terminndu-se
dup numrul de iteraii specificat.
*/
int PowerDirVP(int or_mat, /*ordinul matricei */
double MAT[][NrMax], /*matricea */
double VECS[NrMax], /*vectorul de start */
double eps, /* precizia */
int maxiter, /* numrul maxim de iteraii */
double *valpr /* valorile propri */
)
{
int i,j,k,sem;
static double XN[NrMax],XN_1[NrMax];
k=0;
for(i=1;i<=or_mat;i++)XN[i]=VECS[i];
do
{sem=1;
k++;
for(i=1;i<=or_mat;i++)XN_1[i]=XN[i];
for(i=1;i<=or_mat;i++)
{ XN[i]=0;
for(j=1;j<=or_mat;j++)XN[i]+=MAT[i][j]*XN_1[j];
}
Metode numerice n electronic

216
for(i=1;i<=or_mat;i++)if(XN_1[i]==0)sem=0;
if(sem!=0)for(i=2;i<=or_mat;i++)
if( fabs( XN[1]/XN_1[1]-XN[i]/XN_1[i]) >eps)sem=0;
}while( (sem==0) && (k<maxiter) );
for(i=1;i<=or_mat;i++)VECS[i]=XN[i];
if(k>=maxiter)return 1;
*valpr=XN[1]/XN_1[1];
return 0;
}


10.3.2. METODA LUI KRLOV

Aceast metod determin coeficienii polinomului caracteristic. Dac se consider
polinomul caracteristic
p c c
i
i
n
i
n
( ) = =
=

cu 1
0
(10.25)
i substituim =A obinem ecuaia: P(A)=0 (10.26)
Se alege un vector de start X
0
cu care nmulim ecuaia obinut (10.26) i se obine
ecuaia: c A X
i
i
i
n
0
0
0 =
=
cu condiiile c ; A I
n
= = 1
0
(10.27)
Notm A X X
i
i 0
= unde componentele lui X
i
sunt calculate iterativ din X
0

astfel: X AX ; X AX ; ....,X AX ;
i i 1 0 2 1 1
= = =

(10.28)
i au formulele de calcul:
x a x ; j ....n ; x a x : j ...n; ...,x a x ;j ...n
j jk k j jk k ij jk i ,k
k
n
k
n
k
n
1 0 2 1 1
1 1 1
1 1 1 = = = = = =

= = =

(10.29)
Rezult sistemul: x c x ; i ...n.
ki k ni
k
n
= =
=

1
0
1
(10.30)
sau scris matriceal

x x x ...x
x x x ...x
x x x ...x
c
c
c
x
x
x
n ,
n ,
n n n n ,n n
n
n
nn
01 11 31 11
02 12 22 1 2
0 1 2 1
1
2
1
2


|
\

|
.
|
|
|
|
|

|
\

|
.
|
|
|
|
=

|
\

|
.
|
|
|
|
(10.31)
unde C
i
reprezint coeficienii polinomului caracteristic al maticei A.
Din rezolvarea sistemului se obin coeficienii polinomului caracteristic al matricei A.


10.3.2.1. Algoritmul 10.2. Metoda lui Krlov

{Variabile
Vectori i valori proprii

217
n:ordinul matricei, ntreg;
A:matrice;
V:vectorul de start ales;
C:vectorul coloan al coeficienilor polinomului caracteristic;
X: vector,produs de matrice A cu vector;
i,j,k:contori, ntregi;
{X[0]=V;
pentru i=1, , n
calculeaz X[i]=A*X[i-1];
formeaz sistemul [X[0],X[1],,X[n-1]]*C=-X[n];
Rezolv sistemul;
tiprete soluiile sistemului C[i]; i=1,,n ;
}
}


10.3.2.2. Implementarea algoritmului 10.2. Metoda lui Krlov

/*Funcia care implementeaz metoda lui Krilov pentru
determinarea coeficienilor polinomului caracteristic
*/
int Krilov(int ord,
double mat[][NrMax],
double X[],
double pol[])
{
static double A[NrMax][NrMax];
static double TL[NrMax];
static double V[NrMax];
int i,j,k;
for(i=1;i<=ord;i++)A[i][ord]=X[i];
for(i=1;i<=ord-1;i++)
{
for(j=1;j<=ord;j++)V[j]=X[j];
for(k=1;k<=i;k++)ProdMatVect(ord,mat,V);
for(j=1;j<=ord;j++)A[j][ord-i]=V[j];
}
for(i=1;i<=ord;i++)TL[i]=X[i];
for(i=1;i<=ord;i++)ProdMatVect(ord,mat,TL);
for(i=1;i<=ord;i++)TL[i]=-TL[i];
for(i=1;i<=ord;i++)
{
for(j=1;j<=ord;j++)
printf("%5.3lf ",A[i][j]);
printf("\n");
}
Metode numerice n electronic

218
getche();
for(i=1;i<=ord;i++) printf("%5.3lf\n",TL[i]);
getche();
if(GAUSS(ord,A,TL,V)==0) return 0;
for(i=1;i<=ord;i++)pol[i]=V[i];
return 1;
}


10.3.3. METODA LUI HOUSEHOLDER

Aceast metod determin valorile i vectorii proprii ai unei matrice simetrice
A A
T
= . Mai nti matricea A este adus cu ajutorul transformrilor ortogonale la o
matrice tridiagonal similar cu A. Se determin valorile proprii ale matricei
tridiagonale, care sunt identice cu cele ale matricei A, prin metoda irului lui turm i
prin metoda biseciei. Se trece la determinarea vectorilor proprii pentru matricea
tridiagonal din care se determin vectorii proprii ai matricei A.
Tridiagonalizarea se realizeaz cu ajutorul transformrilor ortogonale de tipul
B E W W W ,.., ,w ,..,W (W W
(k) (k) (k) (k)
k
(k)
n
(k) (k) (k)
= = =
+
2 0 0 1
1
( ) unde( ) ( ) )
T T T
;
(10.32)
Matricea B
(k)
este o matrice simetric i ortogonal. Detaliat matricea se prezint ca n
expresia (10.33).

B
...
...
(w ) .w .w .w .w ... w .w
(k)
k
(k)
k
(k)
k
(k)
k
(k)
k
(k)
k
(k)
=


+ + + + + +
1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 0 1 2 2 2 2
1
2
1 2 1 3 1
...
...
...
n
(k)
k
(k)
k
(k)
k
(k)
k
(k)
k k
(k)
n
(k)
k
(k)
k
(k)
k
(k)
k
(k)
k
(k)
k
(k)
n
(k)

.w .w .(w ) .w .w ... w .w
... .w .w w .w .(w ) ... w .w
0 0 0 2 1 2 2 2
0 0 0 2 2 1 2 2
2 1 2
2
2 3 2
3 1 3 2 3
2
3
...


+ + + + + +
+ + + + +


|
\

|
.
|
|
|
|
|
|
|
|
|
|
|
+ + +
0 0 0 2 2 2 1 2
1 2 3
2
.w .w .w .w .w .w ... .(w )
n
(k)
k
(k)
n
(k)
k
(k)
n
(k)
k
(k)
n
(k)
...

k=1,2,,n-2. (10.33)
Din produsul A B
k k ( ) ( )
.
1
, punnd condiia ca matricea pe linia k i coloana k s aib
numai primii doi termeni rezult formulele de calcul ale elementelor w ; i k,..,n.
i
(k)
= Se
ine seama c suma ptratelor elementelor unei linii a unei matrice A este invariant la
transformarea similar ortogonal (B ) A B
(k) (k) T
. n aceste condiii, se obin
urmtoarele formule de calcul:
pentru k1,2,,n-2
Vectori i valori proprii

219

( )
sum a , w , pentru i ,...,k ;
w (
a .sign(a )
sum
);
w
a .sign(a )
.w . sum
; i k ,...,n;
kj i
(k)
j k
n
k
(k) k,k k,k
i
(k) ki k,k
k
(k)
= = =
= +
= = +
= +
+
+ +
+
+

2
1
1
1 1
1
1
0 1
1
2
1
2
2
(10.34)

t a .w , i k ,...,n;
s w .t ;
r t s.w ; i k ,...,n;
a ;
sign(a ). sum ;
i ij j
(k)
j k
n
i
(k)
i
i k
n
i i i
(k)
k kk
k k,k
= = +
=
= = +
=
=
= +
= +
+

1
1
1
1
1
o
|

Cnd se ajunge la pasul n-2, tridiagonalizarea ia sfrit i se consider:
a a ; a a ; a ;
n n ,n n nn n n ,n
= = =
1 1 1 1 1
|
Matricea A
(n ) 2
este tridiagonal iar matricea W se prezint astfel:
W (W ,W ,...,W )
...
w ...
w w ...
w w w ...
w w w w ... w
( ) ( ) (n )
( )
( ) ( )
( ) ( )
n
( )
n
( )
n
( )
n
( )
n
(n )
= =

|
\

|
.
|
|
|
|
|
|
|
|
|

1 2 2
2
1
3
1
3
2
4
1
4
2
4
3
1 2 3 4 2
0 0 0 0 0
0 0 0 0
0 0 0
0 0
(10.35)
Valorile proprii ale matricei A se calculeaz ca soluiile ecuaiei:

o |
| o |
| o |
o



=
1 1
1 2 2
3 3 3
0 0 0
0 0
0 0
0 0 0 0
0

n
...
...
...
...
(10.36)

Din ecuaia (10.36) se pot calcula minorii principali de la ordinul 1 pn la ordinul n
cu formulele:

f ;
f f ;
f f f , i ,...n

i i i i i
1 1
2 2 1 1
2
1 1
2
2
3
( )
( ) ( ( )
( ) ) ( ) ( )
o
o |
o |
=
=
= =

)
( .
(10.37)
Expresiile minorilor principali (10.37) formeaz un ir turm asociat lui f
n
( ) ce
reprezint polinomul caracteristic al matricei tridiagonale i al matricei iniiale date.
Metode numerice n electronic

220
Numrul de variaii de semn ale irului lui turm d numrul de valori proprii reale ale
matricei tridiagonale. Se calculeaz :
L | | | |,| | | | | | i , ,...n , | | | |
i i n n
= + + + = +

max{ } o | | o | | o
1 1 1 1 1
2 3 1 (10.38)
Valorile caracteristice sunt cuprinse n intervalul (-L,L). Ca urmare pentru n valori
caracteristice reale, numrul de variaii de semn ale irului lui turm n puncul -L este
n, iar n L este zero. Dac se consider intervalul ( , ) I S
i i
n care este situat soluia

i
se pornete cu I L ; S l
i i
= = pentru toate soluile. Se aplic metoda biseciei
pn cnd |S I |
i i
< c , c fiind eroarea dat.
Vectorii proprii ai matricei tridiagonale se calculeaz prin rezolvarea sistemului
A .V V
n
=
2
unde ia valorile calculate.

v ;
v ); j ,...,n ; k ,...,n ;
v ( l ).v .v );
(j)
(j)
k
(j)
k
i k k
j
k k
(j)
1
2
1
1 1
1 1 1
1
1
1 2 1
1
=
= = =
=
+
|
o
|
o |
( (10.39)
Pentru calculul vectorilor proprii ai matricei iniiale A se ine seama de relaia de
calcul a matricei tridiagonale:
A B B B A B B B
(n ) (n ) ( ) ( ) ( ) ( ) (n )
=
2 2 2 1 1 2 2
(10.40)
Din ecuaia
A V B B B A.B B B V V
(n ) (j) (n ) ( ) ( ) ( ) ( ) (n ) (j)
j
(j)
= =
2 2 2 1 1 2 2
(10.41)
rezult: A B B B V B B B V
( ) ( ) (n ) (j)
j
( ) ( ) (n ) (j)
=
1 2 2 1 2 2
(10.42)
Ecuaia (10.42) se reduce la ecuaia : A X X
(j)
j
(j)
= (10.43)
unde X
(j)
reprezint vectorii proprii ai matricei A .
Fcnd produsul iterativ se obine:
V B V ; V B V V B V
(j) (n ) (j) (j) (n ) (j) (j) ( ) (j)
= = =
2 3 1
(10.44)
Pentru prima ecuaie din (10.44) rezult:
( )
v
v
v
v
v
v
v
v
v
w
w
. ... w w
v
v
v
(j)
(j)
n
(j)
n
(j)
n
(j)
(j)
n
(j)
n
(j)
n
(j)
n
(j)
n
(j)
n
(j)
n
(j)
(j)
n
(j)
n
(j)
1
2
2
1
2
2
1
1
1
2
1
1
2
0
0
0
0 0 0
1
0

|
\

|
.
|
|
|
|
|
|
|
|
|
=

|
\

|
.
|
|
|
|
|
|
|
|
|


|
\

|
.
|
|
|
|
|
|
|
|

|
\

|
.
|
|
|
|
|
|
|
|
|
. (10.45)
Dac notm suma w v
i
(k)
i
(j)
i k
n
=
= +

1
, atunci vectorii proprii sunt:
v v suma w
i
(j)
i
(j)
i
(k)
= 2 pentru k=n-2,,1;i=k+1,,n;j=1,,n; (10.46)


10.3.3.1. Algoritmul 10.3. Metoda lui Householder
Vectori i valori proprii

221

{Variabile
n:ordinul matricei, ntreg;
A:matrice simetric;
V:vectorul ;
X:vectorii proprii;
W:matrice cu coloane vectori;
i,j,k:contori, ntregi;
A:vectorul valorilor proprii;
o:vectorul elementelor de pe diagonala principal a matricei
tridiagonale;
|:vectorul elementelor de pe prima i a doua diagonal;
t,r:vectori;
p,sum,suma:variabile, reale;
c:eroare de calcul, real;
{
pentru k=1,, n-2
{calculeaz ( ) sum a , w , pentru i ,...,k ;
kj i
(k)
j k
n
= = =
= +

2
1
0 1
calculeaz
w (
a .sign(a )
sum
);
k
(k) k,k k,k
+
+ +
= +
1
1 1
1
2
1

pentru i=k+2, , l
{ calculeaz
w
a .sign(a )
.w . sum
i
(k)
ki k,k
k
(k)
=
+
+
1
1
2
;

calculeaz
t a .w ,
i ij j
(k)
j k
n
=
= +

1

calculeaz
s w .t ;
i
(k)
i
i k
n
=
= +

1

calculeaz
r t s.w ;
i i i
(k)
=

}
calculeaz
a a ;
k kk
=

calculeaz
b sign(a ). sum ;
k k,k
=
+1

}
calculeaz o
n n ,n
a ;

=
1 1 1

Metode numerice n electronic

222
calculeaz o
n nn
a ; =
calculeaz a
n n ,n
|

=
1 1
;
pentru i = 2 ,, n-1
calculeaz

f (l) l a ;
f (l) (l a ).f (l) b ;
f (l) (l a ).f (l) b .f (l)

i i i i i
1 1
2 2 1 1
2
1 1
2
2
=
=
=

;

pentru i=2 ,, n-1

calculeaz

L |a | |b |,|b | |a | |b| |b | |a |
i i n n
= + + + +

max( )
1 1 1 1 1


pentru i=1 , , n
{

I L;
S L;
i
i
=
=

}
determin numrul de varaii de semn al irului;
pentru k=i pn la m compar k cu nv i modific
I
k
sau S
k

Aplic metoda biseciei i calculeaz l
i
, i=1, , n;
pentru j=1, , n
{
calculeaz

v ;
v
b
(l a );
v
b
((l a ).v b .v );
(j)
(j)
k
(j)
k
i k k
j
k k
(j)
1
2
1
1 1
1 1 1
1
1
1
=
=
=
+

}
pentru k=n-2, ,1
pentru j=1, , n
{
calculeaz
suma w .v
i
(k)
i
(j)
i k
n
=
= +

1
;
v v suma w
i
j
i
j
i
k ( ) ( ) ( )
. . = 2 ;
}
}
}
}
Vectori i valori proprii

223

10.3.3.2. Implementarea algoritmului 10.3

Funcia signatur
*/
int SGN(double x)
{
if(x>0) return 1;
if(x<0) return -1;
return 0;
}
/*
Funcia care ntoarce numrul de variaii de semn al polinoamelor
turm ntr-un punct dat
*/
int Nr_var(int ord, /* ordinul matricei*/
double valfa[],
double vbeta[],
/* Coeficienii alfa si beta ai matricei tridiagonale */
double Med)
{
int i,nv;
double q;
double eps=0.00001;
nv=0;
q=valfa[1]-Med;
if(q<=0)nv++;
for(i=2;i<=ord;i++)
{
if(q!=0)q=valfa[i]-Med-vbeta[i-1]*vbeta[i-1]/q;
else q=valfa[i]-Med-fabs(vbeta[i-1])/eps;
if(q<0) nv++;
}
return nv;
}
/*
Funcia care implementeaz metoda Householder pentru aflarea
valorilor proprii.
*/
void HOW( int n,
double mat[][NrMax],
/* matricea simetric */
double Lambda[])
/* vectorul valorilor proprii */
{
int i,j,k,VB1,VB2,nv,r;
Metode numerice n electronic

224
double spat,c;
double static W[NrMax][NrMax];
static double p[NrMax];
static double q[NrMax];
static double alfa[NrMax];
static double beta[NrMax];
double N0,T,M,LAM,suma;
static double S[NrMax];
static double D[NrMax];
double eps=0.000001;
static double v[NrMax][NrMax];
for(k=1;k<=n-2;k++) /* ciclul mare */
{
spat=0;
for(j=k+1;j<=n;j++)spat=spat+mat[k][j]*mat[k][j];
for(i=1;i<=n;i++)W[i][k]=0;
W[k+1][k]=sqrt( 0.5*(1+mat[k][k+1]*SGN(mat[k][k+1])/sqrt(spat) )
);
for(i=k+2;i<=n;i++)
W[i][k]=mat[k][i]*SGN(mat[k][k+1])/(2*W[k+1][k]*sqrt(spat));
for(i=k+1;i<=n;i++)
{
p[i]=0;
for(j=k+1;j<=n;j++)p[i]+=mat[i][j]*W[j][k];
}
c=0;
for(i=k+1;i<=n;i++)c=c+W[i][k]*p[i];
for(i=k+1;i<=n;i++)q[i]=p[i]-c*W[i][k];
alfa[k]=mat[k][k];
beta[k]=-SGN(mat[k][k+1])*sqrt(spat);
mat[k][k+1]=mat[k+1][k]=beta[k];
for(j=k+2;j<=n;j++)
{ mat[k][j]=0;
mat[j][k]=0;
}
for(i=k+1;i<=n;i++)
for(j=k+1;j<=n;j++)
mat[i][j]=mat[i][j]-2*W[i][k]*q[j]-2*q[i]*W[j][k];
}
alfa[n-1]=mat[n-1][n-1];
alfa[n]=mat[n][n];
beta[n-1]=mat[n-1][n];
/*.........................................................................*/
/* Se calculeaz intervalul (-N0 , N0) n care se afl valorile proprii */
N0=fabs(alfa[1])+fabs(beta[1]);
for(i=2;i<=n-1;i++)
Vectori i valori proprii

225
{
T=fabs(beta[i-1])+fabs(alfa[i])+fabs(beta[i]);
if(N0<T) N0=T;
}
T=fabs(beta[n-1])+fabs(alfa[n]);
if(N0<T) N0=T;
/*........................................................................*/
/*Iniializarea limitei stng si dreapt a intervalului n care se
gsesc valorile proprii */
for(i=1;i<=n;i++)
{
S[i]=-N0;
D[i]=N0;
}
/* M mijlocul intervalului - Se va aplica bisecia */
for(i=1;i<=n;i++)
{ while( fabs(D[i]-S[i])>eps )
{ M=(D[i]+S[i])/2;
nv=Nr_var(n,alfa,beta,M);
if(nv>=i) D[i]=M;
else S[i]=M;
}
}
for(j=1;j<=n;j++) Lambda[j]=D[j];
}


10.3.4. METODA RT

Aceast metod utilizeaz tridiagonalizarea matricei simetrice prin metoda
Householder, calculeaz coeficienii polinomului caracteristic i rezolv ecuaia
caracteristic cu metoda Birge -Vieta, determinnd astfel valorile proprii ale matricei
date. Din ecuaia (10.36) se calculeaz coeficienii polinomului caracteristic n mod
iterativ dup urmtoarele formule:
1
1
1
1
1 1
2 1 2 2 2 1 1
2
3 2 3 3 3 2 2 2
2
3 3 2 2
2
1
4 3 4 4 4 3 3 3
2
4 4 3 3 3
2
2 4 4 3 3
2
2
; a ;
; a a ; b a ;
; a a ; b a b ; c b a ;
; a a ; b a b ; c b c a ; d c b ;
=
= =
= = + =
= = + = + =

o
o o |
o o | o |
o o | o | o |


(10.47)


10.3.4.1. Algoritmul 10.4. Metoda RT
Metode numerice n electronic

226

{Variabile
n:ordinul matricei, ntreg;
A:matricea simetric;
o:vectorul elementelor de pe diagonala principal,tridiagonal;
|:vectorul elementelor de pe diagonalele simetrice,tridiagonale;
i,j:contori, ntregi;
C:matricea de calcul a coeficienilor polinomului caracteristic;
{pentru i=1, , n

C
i 0
1 = ;

pentru j=1, , n
C
ij
= 0;

C
C
11 1
22 2 1 1
2
=
=
o
o o |
;
. ;

pentru i=3 , , n
calculeaz C C C
ii i i i i i i
=

o | . . ;
, , 1 1 1
2
2 2

pentru i=2 , , n
calculeaz C C
i i i 1 1 1
=
,
; o
pentru i=3 , , n
calculeaz C C C
i i i i i 2 1 1 1 2 1
2
= +

o | . ;
, ,

pentru j=3 , , n
pentru i=j+1, , n
calculeaz
C C C C
ij i i j i j i i j
= +

o | . . ;
, , , 1 1 1 1
2
2 2

coeficienii polinomului caracteristic sunt

u
i n n i
C i n = =
,
; , ,..., ; 12
}
}


10.3.4.2. Implementarea algoritmului 10.4

/*
Funcia care implementeaz metoda Householder pentru
aflarea vectorilor i valorilor proprii ale unei matrice simetrice
*/
void HOW2( int n,
double mat[][NrMax],
double Lambda[])
{
Vectori i valori proprii

227
int i,j,k,VB1,VB2,nv,r;
double spat,c;
double static W[NrMax][NrMax];
static double p[NrMax];
static double q[NrMax];
static double alfa[NrMax];
static double beta[NrMax];
double N0,T,M,LAM,suma;
static double S[NrMax];
static double D[NrMax];
double eps=0.000001;
static double v[NrMax][NrMax];
static double Coef[NrMax][NrMax];
static double Pol[NrMax];
for(k=1;k<=n-2;k++) /* ciclul mare */
{
spat=0;
for(j=k+1;j<=n;j++)spat=spat+mat[k][j]*mat[k][j];
for(i=1;i<=n;i++)W[i][k]=0;
W[k+1][k]=sqrt( 0.5*(1+mat[k][k+1]*SGN(mat[k][k+1])/sqrt(spat) )
);
for(i=k+2;i<=n;i++)
W[i][k]=mat[k][i]*SGN(mat[k][k+1])/(2*W[k+1][k]*sqrt(spat));
for(i=k+1;i<=n;i++)
{
p[i]=0;
for(j=k+1;j<=n;j++)p[i]+=mat[i][j]*W[j][k];
}
c=0;
for(i=k+1;i<=n;i++)c=c+W[i][k]*p[i];
for(i=k+1;i<=n;i++)q[i]=p[i]-c*W[i][k];
alfa[k]=mat[k][k];
beta[k]=-SGN(mat[k][k+1])*sqrt(spat);
mat[k][k+1]=mat[k+1][k]=beta[k];
for(j=k+2;j<=n;j++)
{ mat[k][j]=0;
mat[j][k]=0;
}
for(i=k+1;i<=n;i++)
for(j=k+1;j<=n;j++)
mat[i][j]=mat[i][j]-2*W[i][k]*q[j]-2*q[i]*W[j][k];
}
alfa[n-1]=mat[n-1][n-1];
alfa[n]=mat[n][n];
beta[n-1]=mat[n-1][n];
for(i=1;i<=n;i++)
Metode numerice n electronic

228
{ for(j=1;j<=n;j++) printf("%5.3lf ",mat[i][j]);
printf("\n");
}
getche();
for(i=1;i<=n;i++)
{
Coef[i][0]=1;
for(j=1;j<=n;j++) Coef[i][j]=0;
}
Coef[1][1]=-alfa[1];
Coef[2][2]=alfa[2]*alfa[1]-beta[1]*beta[1];
for(i=3;i<=n;i++)
Coef[i][i]=-alfa[i]*Coef[i-1][i-1]-beta[i-1]*beta[i-1]*Coef[i-2][i-2];
for(i=2;i<=n;i++)
Coef[i][1]=Coef[i-1][1]-alfa[i];
for(i=3;i<=n;i++)
Coef[i][2]=-alfa[i]*Coef[i-1][1]+Coef[i-1][2]-beta[i-1]*beta[i-1];
for(j=3;j<=n;j++)
for(i=j+1;i<=n;i++)
Coef[i][j]=-alfa[i]*Coef[i-1][j-1]+Coef[i-1][j]
-beta[i-1]*beta[i-1]*Coef[i-2][j-2];
for(i=0;i<=n;i++)
{
Pol[i]=Coef[n][n-i];
printf("%5.2lf\n",Pol[i]);
}
getche();
Birge_Vieta(n,Pol,0,1000,0.00001,S);
for(i=1;i<=n;i++)
{
Lambda[i]=S[i];
printf("%5.2lf\n",S[i]);
}
getche();
for(j=1;j<=n;j++)
{
LAM=S[j];
v[1][j]=1;
for(k=2;k<=n-1;k++)
v[k+1][j]=((LAM-alfa[k])*v[k][j]-beta[k-1]*v[k-1][j])/beta[k];
}
for(j=1;j<=n;j++)
for(r=1;r<=n-2;r++)
{
k=n-1-r;
suma=0;
Vectori i valori proprii

229
for(i=k+1;i<=n;i++)
suma=suma+W[i][k]*v[i][j];
for(i=k+1;i<=n;i++)
v[i][j]=v[i][j]-2*suma*W[i][k];
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++) printf("%5.3lf ",v[i][j]);
printf("\n");
}
getche();
}


10.3.5.METODA LR (LEFT-RIGHT)

Aceast metod se bazeaz pe descompunerea matricei A
1
n dou matrice una
inferior trunghiular cu elementele diagonalei principale egale cu unitatea L
1
i una
superior trunghiular R
1
.
A L .R ;
1 1 1
= (10.48)
Se formeaz o nou matrice din matricele triunghiulare obinute:
A R .L
2 1 1
= (10.49)
Matricea A
2
se descompune iari n dou matrice inferior i superior triunghiulare
L
2
i respectiv R
2
:
A L .R
2 2 2
= (10.50)
Se formeaz o nou matrice A
2

A R .L
2 2 2
= (10.51)
Procedeul este iterativ i se obine irul:
A ,A ,...,A
n 1 2
(10.52)
Din ecuaia (10.48) rezult:
L A .R
1 1 1
1
=

i R L .A
1 1
1
1
=

(10.53)
innd cont de relaiile (10.53) avem:

A R .A .R
2 1 1 1
1
=

sau A L .A .L
2 1
1
1 1
=

(10.54)

Deci un element oarecare al irului (10.52) se poate scrie sub forma:

A (R .R . ... .R .R ).A .(R .. ... .R .R ) (L .L . ... L ) A .(L .L . ...L )
i i i i i i
= =


1 2 2 1 1 1 2 1
1
1 2 1
1
1 1 2 1

(10.55)
ca urmare toate matricele irului (10.52) au aceleai valori caracteristice.
Produsul matricelor inferior triunghiulare L este tot o matrice inferior triunghiular cu
elementele diagonalei principale egale cu unitatea:
Metode numerice n electronic

230
L L
i
i
n
=
=
[
1
(10.56)
iar produsul matricelor superior triunghiulare R, este o matrice superior triunghiular
R R
i
i
n
=
=
[
1
(10.57)
Dac n irul matricelor A
n
, n , elementele diagonale ale matricei R
n
tind la
valorile proprii ale matricei A
1
.
n cadrul metodei se pune problema descompunerii matricei A
i
n matricele L
i
i R
i

i calculul produsului R L
i i
.
Calculul elementelor matricelor L
i
i R
i
se realizeaz dup expresiile (10.58) iar
elementele produsului R
i
L
i
dup expresiile (10.59).


l ; i , ,...,n;
l ; i j;
l
a
a
; i , ,...,n; a ;
r a ; i , ,...,n;
r ; i j;
r a l r ; i j;
l
r
(a l r ); r ; i j;
ii
ij
i
i
i i
ij
ij ij ik kj
k
i
ij
ii
ij ik kj ii
k
i
= =
= <
= = =
= =
= >
= s
= = >
=

1 12
0
2 3 0
12
0
1
0
1
1
11
11
1 1
1
1
1
1
pentru
(10.58)


a r r .l ; i j; j n;
a r ; i j ;j n ;
a r .l ; i j ;
ij ij ik kj
k j
n
ij ij
ij ik kj
k i
n
= + s <
= s =
= >
= +
=

1
(10.59)
Valorile proprii ale matricei A
1
sunt elementele diagonale ale matricei R
n1
dac se
ndeplinete condiia
|a a | ; i , ,...,n ;
ii
(n)
ii
(n )
< =
1
12 c (10.60)
unde c este eroarea de calcul.


Vectori i valori proprii

231
10.3.5.1. Algoritmul 10.5. Metoda LR

{Variabile
A:matrice;
L:matrice inferior triunghiular;
R:matrice superior triunghiular;
i,j,k:contori, ntregi;
A:vectorul valorilor proprii;
c:eroarea de calcul, real;
sum:sum parial, real;

{pentru i=1, , n
pentru j=1, , n
b a
ij ij
= ;
repet
a b
ij ij
= ;
pentru i=1, , n
pentru j=1, , n
{dac i>j atunci r
ij
= 0;
dac i<j atunci l
ij
= 0 ;
}
pentru i=1, , n
pentru j=i , , n
{
sum=0;
pentru k=1, , i-1
calculeaz sum sum l r
ik kj
= + . ;
calculeaz r a sum
ij ij
= ;
}

dac r
ii
= 0 atunci
stop problema este nerezolvabil;

pentru j=i+1, , n
{
sum=0;
pentru k=1, , i-1
calculeaz sum sum l r
jk ki
= + + ;
calculeaz l
a sum
r
ji
ji
ii
=

;
l
ii
= 1;
Metode numerice n electronic

232
}
pentru i=1, , n
pentru j-1, , n
dac ((i<j) i (j<n)) atunci
{
sum=0;
pentru k=j+1, , n

calculeaz sum sum r l
ik kj
= + . ;
calculeaz b r sum
ij ij
= + ;
}
dac ((i<j) i (j=1)) atunci b r
ij ij
= ;
dac (i>j) atunci
{ b
ij
= 0 ;
pentru k=1, , n
calculeaz b a r l
ij ij ik kj
= + . ;
}
pn cnd |b a | e
ii ii
< ;
scrie valorile proprii sunt r
ii
pentru i=1, , n;
}
}


10.3.5.2. Implementarea algoritmului 10.5. Metoda LR

int LR(int n,
double A[][NrMax],
double L[][NrMax],
double R[][NrMax])
{int i,j,k;
double sum;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(i>j)R[i][j]=0;
if(i<j)L[i][j]=0;
}
for(i=1;i<=n;i++)
{
for(j=i;j<=n;j++)
{
{
sum=0;
Vectori i valori proprii

233
for(k=1;k<=i-1;k++)sum+=L[i][k]*R[k][j];
R[i][j]=A[i][j]-sum;
}
}
if (R[i][i]==0) return 0;
for(j=i+1;j<=n;j++)
{
sum=0;
for(k=1;k<=i-1;k++)sum+=L[j][k]*R[k][i];
L[j][i]=(A[j][i]-sum)/R[i][i];
}
L[i][i]=1;
}
return 1;
}
void ProdRL(int n,
double R[][NrMax],
double L[][NrMax],
double A[][NrMax])
{
int i,j,k;
double sum;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if ( ( i<=j ) && (j<n) )
{
sum=0;
for(k=j+1;k<=n;k++) sum+=R[i][k]*L[k][j];
A[i][j]=R[i][j]+sum;
}
if ( ( i<=j ) && (j==n) ) A[i][j]=R[i][j];
if ( i>j )
{
A[i][j]=0;
for(k=i;k<=n;k++) A[i][j]+=R[i][k]*L[k][j];
}
}
}
/* Funcia care implementeaz metoda descompunerii LR
pentru aflarea valorilor proprii
*/
int VPLR(int n,
double A[][NrMax],
double VP[])
{
Metode numerice n electronic

234
double static
r[NrMax][NrMax],l[NrMax][NrMax],A_1[NrMax][NrMax];
int i,j,sem;
double eps=0.00000001;
do
{
sem=1;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
A_1[i][j]=A[i][j];
if( LR(n,A,l,r)==0) return 0;
ProdRL(n,r,l,A);
for(i=1;i<=n;i++)if( fabs(A[i][i]-A_1[i][i])>eps)sem=0;
}
while(sem==0);
for(i=1;i<=n;i++)VP[i]=A[i][i];
return 1;
}


10.4. APLICAII

1. Se consider matricea:

A =




1 2 3 5
1 2 4 3
3 2 1 2
3 5 2 1



|
\

|
.
|
|
|
|

S se determine valorile i vectorii proprii ai matricei date.
Prin metoda puterii se obine cea mai mare valoare caracteristic:

max
= 7 225565 . ;

Prin metoda lui Krlov se obine urmtorul polinom caracteristic:
P( ) = + +
4 3 2
5 28 50 261
Rdcinile polinomului sunt determinate cu metoda lui Bairstow i se obin
urmtoarele valori caracteristice:

1 2 3 4
7 225565 3680183 2 952874 1046774 = = = . ; . ; . i .
,
;

2. Se d matricea simetric:

Vectori i valori proprii

235
A =
1 2 3 4
2 3 2 5
3 2 4 3
4 5 3 5




|
\

|
.
|
|
|
|


Se cer valorile i vectorii proprii ai matricei A.

Prin metoda Householder se obin valorile proprii:
l . ; l . ; l . ; l . ;
1 2 3 4
6429979 3741197 6029197 9 659586 = = = =
i vectorii proprii:

x ( . , . , . , . ) ; x ( . , . , . , . );
x ( , , . , . , . ); x ( . , . , . , . );
1 2
3 4
1000 2 0112 573 0 924 10001016 1719 1797
10001626 0 914 0128 1000 3720 9 950 5602
= =
= =


Prin metoda puterii se obine urmtoarea valoare caracteristic maxim

max
. ; 9 659586

Prin metoda lui Krlov se obine urmtorul polinom caracteristic:
P( ) ; = +
4 3 2
13 8 534 1401
Valorile caracteristice sunt:

1 2 3 4
6 429979 3741197 6 029197 9 659586 = = = = . ; . ; . ; . ;
iar vectorii proprii sunt identici cu cei de la metoda Householder.

Prin metoda LR i TR s-au obinut aceleai valori proprii ca i n cazul metodei lui
Householder.
11
FUNCII SPECIALE *



Acest capitol cuprinde cteva funcii utilizate mai mult n aplicaii, i ale cror
valori este necesar s le cunoatem n diferite puncte ale domeniului de definiie. Ca
funcii speciale considerm funciile transcendentale (funcii definite prin integrale
improprii) sau funcii care reprezint soluii pentru diferite ecuaii difereniale de
ordinul doi. Deoarece n calculul acestor funcii se utilizeaz funcii mai simple,se
prezint i aceste funcii.


11.1. FUNCIA GAMMA

Funcia gamma este definit de integrala improprie:
I( ) x t e t
x t
=

}
1
0
d (11.1)
Pentru x e N funcia gamma se calculeaz cu ajutorul formulei:
I( ) n n! + = 1 (11.2)
Ca urmare a acestei relaii, funcia factorial se poate calcula i cu ajutorul funciei
gamma. Argumentul funciei gamma poate fi i complex, deci x z = eC (mulimea
numerelor complexe) . Funcia gamma satisface urmtoarea relaie de recuren:
I I ( ) ( ) z z z + = 1 (11.3)
Dac funcia gamma este cunoscut pentru Re(z)>1, ea poate fi calculat i pentru
Re(z)<1 cu ajutorul expresiei :
I
I I
( )
( ) sin ( ) sin
1
1
=

=

+
z
z z
z
z z
t
t
t
t
(11.4)
Calculul numeric al funciei gamma se poate face cu o formul aproximativ, funcie
de constantele ntregi r , k i de un ir de constante c c ,...,c
, k 1 2
, cu condiia z > 0.
I( ) z z r c
c
z
c
z
c
z k
(z )
(z r )
k
+ = + +
|
\

|
.
| +
+
+
+
+ +
+
+
|
\

|
.
|
+
+ +
1
1
2
2
1 2
1
2
1
2
0
1 2
e t c (11.5)
Pentru r = 5 i k = 6 se determin setul de coeficieni astfel ca eroarea | | c <

2 10
10
.

*Bibliografie [20], [22], [24]
Funcii speciale 237
Pentru calculul valorii gamma se realizeaz calculul ln( I( ) x ) pentru x eR
+
. Se
ine seama de formula (11.3) din care se calculeaz I I ( ) ( ) x
x
x = +
1
1 i de (11.5).


11.1.1. ALGORITMUL 11.1. FUNCIA GAMMA

{Variabile
x: punctul n care se calculeaz funcia, real ;
coef:vectorul coeficienilor ;
j:contor, ntreg;
t,s:variabile pentru sume, real;
z,y:variabile pentru punctul de calcul, reale;
gamma:valoarea funciei gamma n x, real;
{coef[0]= 76.18009172947146;
coef[1]=-86.50532032941677C;
coef[2]=24.01409824083091;
coef[3]=-1.231739572450155;
coef[4]=0.1208650973866179e-2;
coef [5]=-0.5395239384953e-5
y:=x;
z:=x;
t=x+5.5;
t:=(x+0.2)*log(t)-t;
s:=1.000000000190015;
pentru j=1 pn la 5
{
calculeaz s:=s+coef[j]/(y+j+1);
}
calculeaz gamma=exp(-t+log(2.5066282746310005*s/x));
}
}


11.2.2. IMPLEMENTAREA ALGORITMULUI 11.1


#include <math.h>
/* Funcia ntoarce valoarea funciei gamma n punctul xx>0 */
float gammln( float xx)
{
double x,y ,tmp,ser;
static double coef[6]={ 76.18009172947146,
-86.50532032941677,
24.01409824083091,
Metode numerice n electronic 238
-1.231739572450155,
0.1208650973866179e-2,
-0.5395239384953e-5};
int j;
float valoare;
y=x=xx;
tmp=x+5.5;
tmp-=(x+0.5)*log(tmp);
ser=1.000000000190015;
for(j=0;j<=5;j++)ser+=coef[j]/++y;
valoare= - tmp+log(2.5066282746310005*ser/x);
return valoare;
}
int main(void)
{
float punct;
clrscr();
printf("Punctul de calcul : ");
scanf("%f",&punct);
printf(" Valoare funciei Gamma n punctul %.5f este
%.5f",punct,exp(gammln(punct)));
getche();
return 0;
}


11.2. FUNCIA FACTORIAL

Aceast funcie este definit pe mulimea numerelor naturale N. Pentru n=0
ia valoarea 1. Funcia factorial reprezint o funcie numeric calculabil cu expresia:
n n ! = 1 2 3 (11.6)
Calculul valorii acestei funcii ntr-un punct al domeniului de definiie se poate realiza
cu ajutorul funciei gamma, expresia (11.2).


11.2.1. ALGORITMUL 11.2. FUNCIA FACTORIAL

{Variabile
x: punctul n care se calculeaz funcia gamma, real ;
coef:vectorul coeficienilor ;
j:contor, ntreg;
t,s:variabile pentru sume, real;
z,y:variabile pentru punctul de calcul, real;
n:punctul n care se calculeaz funcia factorial, ntreg;
fact:valoarea factorialului, ntreg;
Funcii speciale 239
{
gamma(x): funcia gamma
}
{f[1]=1.0;
f[2]=2.0;
f[3]=6.0;
f[4]=24.0;
dac n<0 atunci scrie eroare Stop;
dac (n>32) atunci f[n] = exp(gammaln(n+1.0);
atta timp ct (ntop<n )
{
j=ntop+1;
f[ntop]=f[j]*ntop;
}
fact=a[n];
}
}


11.2.2.IMPLEMENTAREA ALGORITMULUI 11.2

{Variabile
#include <math.h>
/* Funcia ntoarce valoarea funciei gamma n punctul xx>0 */
float gammln( float xx)
{
double x,y ,tmp,ser;
static double coef[6]={ 76.18009172947146,
-86.50532032941677,
24.01409824083091,
-1.231739572450155,
0.1208650973866179e-2,
-0.5395239384953e-5};
int j;
float valoare;
y=x=xx;
tmp=x+5.5;
tmp-=(x+0.5)*log(tmp);
ser=1.000000000190015;
for(j=0;j<=5;j++)ser+=coef[j]/++y;
valoare= - tmp+log(2.5066282746310005*ser/x);
return valoare;
}
/* ntoarce factorialul unui ntreg pozitiv utiliznd funcia Gamma */
float factrl(int n)
{
Metode numerice n electronic 240
static int ntop=4;
static float a[33]={1.0,1.0,2.0,6.0,24.0};
int j;
if(n<0){
printf("Eroare. Argument negativ");
getche();
return -1;
}
if (n>32) return exp(gammln(n+1.0));
while(ntop<n)
{
j=ntop++;
a[ntop]=a[j]*ntop;
}
return a[n];
}
int main(void)
{
int punct;
clrscr();
printf("Punctul de calcul : ");
scanf("%d",&punct);
printf(" Valoarea funciei factorial n punctul %d este
%.5f",punct,factrl(punct));
getche();
return 0;
}


11.3. COEFICIENII BINOMIALI

Coeficienii binomiali sunt definii astfel:
C(k,n)
n!
k!(n k)!
; k n ; =

s s 0 (11.7)
Valoarea coeficienilor binomiali se calculeaz cu ajutorul funciei factorial, ei fiind
definii tot pe mulimea numerelor naturale N. Pentru calculul valorilor coeficienilor
binomiali se logaritmeaz formula coeficienilor binomiali i se utilizeaz funciile:
fact(n) = exp(gammaln(n+1,0)) i factln(n) = gammaln(n+1.0) (11.8)
De aceste expresii se ine seama n realizarea algoritmului metodei de calcul.


11.3.1. ALGORITMUL 11.3. COEFICIENII BINOMIALI

{Variabile
x: punctul n care se calculeaz funcia gamma ;
Funcii speciale 241
coef:vectorul coeficienilor , real;
j:contor, ntreg;
t,s:variabile pentru sume, real;
z,y:variabile pentru pumctul de calcul, real;
n:punctul n care se calculeaz funcia factorial, ntreg;
fact:valoarea factorialului, ntreg;
{
gamma(x): funcia gama;
}
calculeaz factln(n);
calculeaz floor(0.5+exp(factln(n)-factln(k)-factln(n-k)));
scrie coeficienii binomiali;
}
}


11.3.2. Implementarea algoritmului 11.3

#include <math.h>
/* Funcia ntoarce valoarea funciei gamma n punctul xx>0 */
float gammln( float xx)
{
double x,y ,tmp,ser;
static double coef[6]={ 76.18009172947146,
-86.50532032941677,
24.01409824083091,
-1.231739572450155,
0.1208650973866179e-2,
-0.5395239384953e-5};
int j;
float valoare;
y=x=xx;
tmp=x+5.5;
tmp-=(x+0.5)*log(tmp);
ser=1.000000000190015;
for(j=0;j<=5;j++)ser+=coef[j]/++y;
valoare= - tmp+log(2.5066282746310005*ser/x);
return valoare;
}
float factln(int n)
{
static float a[101];
if( n<0 ) {
printf("Eroare. Argument negativ");
return -1;
Metode numerice n electronic 242
getche();
}
if(n<=1) return 0;
else return gammln(n+1.0);
}
/* Funcia ntoarce coeficienii binomial Combinri de n luate cte k */
float coef_bin(int n, int k)
{
return floor(0.5+exp(factln(n)-factln(k)-factln(n-k)));
}
int main(void)
{
int nn,kk;
clrscr();
printf("n : ");scanf("%d",&nn);
printf("k : ");scanf("%d",&kk);
printf(" Valoare funciei coef_bin de %d luate cte %d este
%f",nn,kk,coef_bin(nn,kk));
getche();
return 0;
}


11.4. FUNCIA BETA

Funcia beta este definit de urmtoarea integral:
B z,w B w,z t t t
z w
( ) ( ) ( ) = =

}
1 1
0
1
1 d (11.9)
i se calculeaz cu ajutorul funciei gamma dup urmtoarea formul:
B z,w
z w
z w
( )
( ) ( )
( )
=

+
I I
I
(11.10)


11.4.1. Algoritmul 11.4. Funcia beta

{ Variabile
z:argumentul funciei, real;
w:argumentul funciei, real;
sol:valoarea funciei beta, real;
{calculeaz gamma(z);
calculeaz gamma(w);
calculeaz gamma(z+w);
calculeaz sol=gamma(z)*gamma(w)/gamma(z+w);
}
scrie valoarea funciei sol;
Funcii speciale 243
}


11.4.2. Implementarea algoritmului 11.4

#include <math.h>
/* Funcia ntoarce valoarea funciei gamma n punctul xx>0 */
float gammln( float xx)
{
double x,y ,tmp,ser;
static double coef[6]={ 76.18009172947146,
-86.50532032941677,
24.01409824083091,
-1.231739572450155,
0.1208650973866179e-2,
-0.5395239384953e-5};
int j;
float valoare;
y=x=xx;
tmp=x+5.5;
tmp-=(x+0.5)*log(tmp);
ser=1.000000000190015;
for(j=0;j<=5;j++)ser+=coef[j]/++y;
valoare= - tmp+log(2.5066282746310005*ser/x);
return valoare;
}
/* Funcia ntoarce valoarea funciei beta(z,w) */
float beta( float z, float w)
{
return exp(gammln(z)+gammln(w)-gammln(z+w));
}
int main(void)
{
float zz,ww;
clrscr();
printf("z : ");
scanf("%f",&zz);
printf("w : ");
scanf("%f",&ww);
printf(" Valoarea funciei Beta( %.5f ,%.5f) este
%.5f",zz,ww,beta(zz,ww));
getche();
return 0;
}

Metode numerice n electronic 244

11.5. FUNCIILE BESSEL

Prin definiie, se numete ecuaia lui Bessel ecuaia diferenial:
x y xy (x )y
' 2 2 2
0 + + = v (11.11)
unde v este un paremetru real sau complex, iar soluiile ecuaiei se numesc funcii
Bessel sau funcii cilindrice. Soluia ecuaiei (1) se caut sub forma:
y(x) x C x , x C
r
k
k
k
= e
=

0
(11.12)
n care r i C
k
se vor calcula. Prin nlocuirea expresiei (11.12) n ecuaia (11.11) se
ajunge la soluia :
y(x)
( )
k! ( k )
x
k k
k
=

+ +
|
\

|
.
|
+
=

1
1 2
2
0
I v
v
(11.13)
Notaia y a funciei este nlocuit cu notaia J consacrat pentru funciile lui Bessel de
spea nti. Astfel, funcia
J (x)
x
x
k! ( k )
k
k
v
v
v
=
|
\

|
.
|

|
\

|
.
|
+ +
=

2
1
4
1
2
0
I
(11.14)
pentru v= 0, arg(v) e [0,t] are urmtoarele proprieti:
1) pentru v=n e N, J
v
este o funcie ntreag;
2) pentru v
v
eN, J este olomorf pe D\T unde T este o semidreapt cu
originea n O.
Dac v nu este ntreg se poate obine o nou soluie a ecuaiei Bessel ca o combinaie
de funcii Bessel J
v
. Astfel, funcia
Y x
J x n J x
n
v
v v
t
t
( )
( ) cos ( )
sin
=


(11.15)

reprezint soluii ale ecuiei lui Bessel (11.11) i se numesc funcii Bessel de spea a
doua. i aceste funcii la limit pot fi date pentru v ntreg. Pentru 0 < < x v se fac
aproximrile:
J x
x
;
v
v
v
( )
( )
~
+
|
\

|
.
|
1
1 2 I

Y x x
0
2
( ) ln ; ~
t
(11.16)
Y x
x x
v
v
t
( )
( )
; ~
|
\

|
.
|

I
2

Pentru x v >> se fac aproximrile:
Funcii speciale 245

J
x
x
Y
x
x
v
v
t
vt t
t
vt t
~
|
\

|
.
|
~
|
\

|
.
|
2 1
2
1
4
2 1
2
1
4
cos
sin
(11.17)
Pentru x ~ v se fac aproximrile:

J .
.
Y .
.
v
v
v v
v v
~
|
\

|
.
|
~
~
|
\

|
.
|
~
2
9
2
3
1 0 4473
2
3
2
3
1 0 7748
3
3
3 3
3
6
3 3
I
I
(11.18)
Relaiile de recuren pentru calculul funciilor Bessel sunt:

J x
n
x
J x J x
Y x
n
x
Y x Y x
n n n
n n n
+
+
=
=
1 1
1 1
2
2
( ) ( ) ( )
( ) ( ) ( )
(11.19)
Pentru 0< x< 8 se aproximeaz J x
0
( ) i J x
1
( ) prin funcii raionale n x .
Aceste aproximaii pentru Y x
0
( ) i Y x
1
( ) sunt:
Y x J x x
0 0
2
( ) ( ) ln ~
t
i Y x J x x
x
1 1
2 1
( ) ( ) ln ~
|
\

|
.
|
t

Pentru 8<x< se utilizeaz aproximaiile (n=0,1):

J x
x
P
x
X Q
x
X
Y x
x
P
x
X Q
x
X
X x
n
;
x
;
n n n n n
n n n n n
n
( ) cos sin
( ) sin cos
=
|
\

|
.
|
|
\

|
.
|
|
\

|
.
|
=
|
\

|
.
| +
|
\

|
.
|
|
\

|
.
|
=
+
< <
2 8 8
2 8 8
2 1
4
0
8
1
t
t
t
unde
(11.20)
Calculul funciilor Bessel ntregi ncepe cu calculul funciilor J ,J ,Y ,Y
0 1 0 1
, dup care
se aplic formulele de recuren.
Coeficienii polinoamelor P
x
, Q
x
n n
1 1 |
\

|
.
|
|
\

|
.
|
,[24], sunt dai n cadrul programelor.
n continuare, se dau integral programele de calcul pentru funciile Bessel de spea
nti i de ordinul zero,de spea a doua i de ordinul zero, de spea nti i de ordinul
nti, i de spea a doua i ordinul nti notate respectiv J Y J Y
0 0 1 1
, , , .


11.5.1. PROGRAMUL PENTRU FUNCIA BESSEL J0
Metode numerice n electronic 246

#include <math.h>
/* Funcia ntoarce valoarea lui Jo(x) pentru x real */
float bessj0(float x)
{
float ax,z;
double xx,y, ans,ans1,ans2;
if ((ax=fabs(x)) <8.0
{
y=x*x;
ans1=57568490574.0+y*(-13362590354.0+y*(651619640.7
+y*(-11214424.18+y*(77392.33017+y*(-184.9052456)))));
ans2=57568490411.0+y*(-1029532985.0+y*(9494680.718
+y*(59272.64853+y*(267.8532712+y*(1.0)))));
ans=ans1/ans2;
}
else
{
z=8.0/ax;
y=z*z;
xx=ax-0.785398164;
ans1=1.0+y*(-0.1098628627e-2+y*(0.2734510407e-4+
y*(-0.2073370639e-5+y*0.2093887211e-6)));
ans2=-0.1562499995e-1+y*(0.1430488765e-3+
y*(0.6911147651e-5+y*0.7621095161e-6-
y*0.934935152e-7)));
ans=sqrt(0.636619772/ax)*(cos(xx)*ans1-z*sin(xx)*ans2);
}
return ans;
}
int main (void)
{
float punct;
clrscr();
printf("Dai punctul : ");
scanf("%f",&punct);
printf("Rezultat : %.5f",bessj0(punct));
getche();
return 0;
}


11.5.2. PROGRAMUL PENTRU FUNCIA BESSEL Y0

/* ntoarce Yo(x) pentru x>0 */
Funcii speciale 247
float bessy0( float x)
{
float z;
double xx,y,ans,ans1,ans2;
if (x<8.0)
{
y=x*x;
ans1=-2957821389.0+y*(7062834065.0+y*(-512359803.6+
y*(10879881.29+y*(-86327.92757+y*228.4622733))));
ans2=40076544269.0+y*(745249964.8+y*(7189466.438+
y*(47447.26470+y*(226.1030244+y*1.0))));
ans=(ans1/ans2)+0.636619772*bessj0(x)*log(x);
}
else
{
z=8.0/x;
y=z*z;
xx=x-0.785398164;
ans1=1.0+y*(-0.1098628627e-2+y*(0.2734510407e-4+
y*(-0.2073370639e-5+y*0.2093887211e-6)));
ans2=-0.1562499995e-1+y*(0.1430448765e-3+
y*(-0.6911147651e-5+ y*(0.7621095161e-6+
y*(-0.934945152e-7))));
ans=sqrt(0.636619772/x)*(sin(xx)*ans1+z*cos(xx)*ans2);
return ans;
}
}
int main (void)
{
float punct;
clrscr();
printf("Dai punctul : ");
scanf("%f",&punct);
printf("Rezultat : %.5f",bessy0(punct));
getche();
return 0;
}


11.5.3.PROGRAMUL PENTRU FUNCIA BESSEL J1

#include <math.h>
/* Funcia ntoarce valoarea lui J1(x) pentru x real */
float bessj1(float x)
{
float ax,z;
Metode numerice n electronic 248
double xx,y, ans,ans1,ans2;
if ((ax=fabs(x)) <8.0 )
{
y=x*x;
ans1=x*(72362614232.0+y*(-7895059235.0+y*(242396853.1
+y*(-2972611.439+y*(15704.48260+y*(- 30.16036606))))));
ans2=144725228442.0+y*(-2300535178.0+y*(18583304.74
+y*(99447.43394+y*(376.9991397+y*(1.0)))));
ans=ans1/ans2;
}
else
{
z=8.0/ax;
y=z*z;
xx=ax-2.356194491;
ans1=1.0+y*(-0.183105e-2+y*(0.3516396496e-4+
y*(-0.2457520174e-5+y*(-0.240337019e-6))));
ans2=0.04687499995+y*(-0.2002690873e-3+y*(0.8449199096e-5+
y*(-0.88228987e-6+y*0.105787412e-6)));
ans=sqrt(0.636619772/ax)*(cos(xx)*ans1-z*sin(xx)*ans2);
if (x<0.0) ans=-ans;
}
return ans;
}
int main (void)
{
float punct;
clrscr();
printf("Dai punctul : ");
scanf("%f",&punct);
printf("Rezultat : %.5f",bessj1(punct));
getche();
return 0;
}


11.5.4. PROGRAMUL PENTRU FUNCIA BESSEL Y1

#include <math.h>
/* Funcia ntoarce valoarea lui J1(x) pentru x real */
float bessj1(float x)
{
float ax,z;
double xx,y, ansj,ans1,ans2;
if ((ax=fabs(x)) <8.0 )
{y=x*x;
Funcii speciale 249
ans1=x*(72362614232.0+y*(-7895059235.0+y*(242396853.1
+y*(-2972611.439+y*(15704.48260+y*(-30.16036606))))));
ans2=144725228442.0+y*(-2300535178.0+y*(18583304.74
+y*(99447.43394+y*(376.9991397+y*(1.0)))));
ansj=ans1/ans2;
}
else
{
z=8.0/ax;
y=z*z;
xx=ax-2.356194491;
ans1=1.0+y*(-0.183105e-2+y*(0.3516396496e-4+
y*(-0.2457520174e-5+y*(-0.240337019e-6))));
ans2=0.04687499995+y*(-0.2002690873e-3+y*(0.8449199096e-5+
y*(-0.88228987e-6+y*0.105787412e-6)));
ansj=sqrt(0.636619772/ax)*(cos(xx)*ans1-z*sin(xx)*ans2);
if (x<0.0) ansj=-ansj;
}
return ansj;
}
/* Funcia ntoarce valoarea lui Y1(x) pentru x pozitiv */
float bessy1(float x)
{
float z;
double xx,y, ans,ans1,ans2,ansj;
if (x <8.0 )
{
y=x*x;
ans1=x*(-0.4900604943e13+y*(0.1275274390e13
+y*(-0.5153438139e11+y*(0.7349264551e9+y*(-0.4237922726e7
+y*0.8511937935e4)))));

ans2=0.2499580570e14+y*(0.4244419664e12+y*(0.3733650367e10
+y*(0.2245904002e8+y*(0.1020426050e6+y*(0.3549632885e3
+y)))));
ans=(ans1/ans2)+0.636619772*(ansj*log(x)-1.0/x);
}
else
{
z=8.0/x;
y=z*z;
xx=x-2.356194491;
ans1=1.0+y*(0.183105e-2+y*(0.3516396496e-4
+y*(-0.2457520174e-5+y*(-0.240337019e-6))));
ans2=0.04687499995+y*(-0.2002690873e-3+y*(0.8449199096e-5
+y*(-0.88228987e-6-y*0.105787412e-6)));
Metode numerice n electronic 250
ans=sqrt(0.636619772/x)*(sin(xx)*ans1+z*cos(xx)*ans2);
}
return ans;
}
int main (void)
float punct;
clrscr();
printf("Dai punctul : ");
scanf("%f",&punct);
printf("Rezultat : %.5f",bessy1(punct));
getche();
return 0;
}


11.6. APLICAII

n tabelul (11.1) sunt prezentate valorile funciilor J Y ,J ,Y
, 0 0 1 1
pentru diferite
valori ale argumentului x .
Tabelul 11.1
x Jo J1 Yo Y1
0 1.00000 0.00000 -1.144e+308 -1.245+340
0.1 0.99750 0.04995 -1.53424 -6.38575
0,2 0.99002 0.09963 -1.08111 -3.22188
0.5 0,93847 0.24420 -0.44452 -1.36457
0.9 0.80752 0.41654 0.00563 -0.84590
1.0 0.76520 0.45426 0.08826 -0.78121
1.2 0.67113 0.52163 0.22808 -0.67897
1.5 0.51183 0.59930 0.38245 -0.55633
1.9 0.28182 0.65179 0.49682 -0.40188
2.0 0.22389 0.65487 0.51038 -0.36152
2.4 0.00251 0.62454 0.51041 -0.18943
3.0 -0.26005 0.45084 0.37685 0.08754
3.5 -0.38013 0.20216 0.18902 0.30063
4.0 -0.39715 -0.10903 -0.01694 0.45621
4.5 -0.32054 -0.43292 -0,19471 0.52224
5.0 -0,17760 -0.70237 -0.30852 0.48350
5.5 -0.00684 -0.84045 -0.33948 0.34680
6.0 0.15065 -0.77852 -0.28819 0.14059
6.5 0.26009 -0.48785 -0.17324 -0.09077
7.0 0.30008 -0.01631 -0.02595 -0.29687
7.5 0.26634 0.49928 0.11731 -0.43262
Funcii speciale 251
8.0 0.17165 0.23382 0.22352 -0.15806
8.5 0.04194 0.27226 0.27021 -0.02617
9.0 -0.09033 0.24460 0.24994 0.10431

Calculnd mai multe valori ale funciilor date n intervalul (0,10) s-au obinut graficele
funciilor Bessel din fig.11.1.

Funcia Bessel

Fig.11.1. Graficele funciilor Bessel

Cu ajutorul programelor se poate determina valoarea funciilor Bessell n orice punct
din domeniul de definiie al funciilor.



12

TRANSFORMATA FOURIER DISCRET*



Un semnal discret este definit prin valorile acestuia la momente discrete de timp. n general,
timpul t este discretizat uniform dac t=nT cu n Z e . Semnalele n timp discret sunt
reprezentate matematic prin secvene de numere notate astfel:

{ [ ]}, [ , ]
{ [ ]}, [ , ]
[ ], [ , ]
x nT n N N
x n n N N
x n n N N



e
e
e
1 2
1 2
1 2
(12.1)

Toate aceste reprezentri sunt identice dac n prima relaie se ia T=1.
Se va nota semnalul discret x n [ ] iar limitele intervalului n care este definit pot lua valori
ntregi, depinznd de suportul pe care este definit semnalul.
n studiul semnalelor i sistemelor n timp discret se utilizeaz cteva secvene de baz cum
ar fi :
1. Secvena impuls unitate, prezentat n figura (12.1), definit prin relaia (12.2) i cu o
importan mare ca i funcia Dirac o( ) t pentru semnalele analogice.

o[ ]
, ;
, ;
n
n
n
=
=
=

0 0
1 0
pentru
pentru
(12.2)

2. Secvena treapt unitate, prezentat n figura (12.2) i definit prin relaia (12.3).

u n
n
n
[ ]
, ;
;
=
>
<

1 0
0 0
pentru
pentru
(12.3)

Legtura ntre secvena unitate i secvena impuls este dat de relaia:
u n k
k
n
[ ] [ ] =
=

o
0
sau u n n k
k
[ ] [ ] =
=

o
0
(12.4)
Legtura invers, ntre secvena impuls i secvena treapt, este dat de relaia cu diferene finite
(12.5):
o[ ] [ ] [ ] n u n u n = 1 (12.5)
_____________________
*)Bibliografie: [5],[16],[24]

Transformata Fourier discret 253



3. Secvena exponenial este definit prin relaia urmtoare:
x n
A n
n
n
[ ]
. ,
, ;
=
e e
<

o o pentru N, (0,1)
pentru 0 0
(12.6)
iar secvena sinusoidal prin expresia :
x n A n n [ ] . cos( ), = + e e
0
Z (12.7)
Datorit faptului c n=t / T este adimensional, reprezentnd numrul eantionului, pulsaia
trebuie luat n radiani / eantion sau frecvena n Hertz/eantion, iar calculul sau analiza
semnalului se face pentru e t
0
0 2 e[ , ] sau e t t
0
e [ , ] .
Periodicitatea n timp discret este definit prin relaia:
x n x n N n [ ] [ ] = eZ (12.8)
unde N este ntreg. Testnd condiia de periodicitate, trebuie s avem:
x n A A
j n j n N
[ ]
( )
= =
+
e e
e e
0 0
(12.9)
deci e t
0
2 N k = (12.10)
Din relaia (12.10) rezult c numai pentru anumite valori ale pulsaiei, N i k sunt ntregi.
Pulsaiile din intervalul [0,2t] sunt date de setul de valori:
e
t
0
2
0 1 2
k
k
N
k N = = , , , , ..., ; (12.11)
Sistemele care transfer o secven de intrare x n [ ] ntr-o alt secven de ieire y n [ ] se numesc
sisteme n timp discret. Notnd S[.] operatorul sistemului, acesta este descris
matematic prin relaia:
y[n]=S{x[n]} (12.12)
Fig.12.1.Impulsulunitate
Fig.12.2.Impulsultreaptunitate
Metode numerice in electronic 254
Pentru sistemele discrete n timp sunt importante urmtoarele proprieti:
1. Liniaritatea n timp, ce presupune satisfacerea condiiei:
S c x n c x n c y n c y n { [ ] [ ]} [ ] [ ]
1 1 2 2 1 1 2 2
+ = + (12.13)
2. Invariana n timp, care implic conservarea translaiei semnalului la trecerea prin
sistem. Dac x n x n n
1 0
[ ] [ ] = , atunci rspunsul este:
y [n] y[n n ]
1 0
= (12.14)
3. Cauzalitatea presupune un rspuns neanticipativ la orice secven de intrare.
Rspunsul la n n =
0
depinde numai de intrrile la n n s
0
.
4. Stabilitatea definit printr-un rspuns finit la o intrare finit.
5. Sisteme fr memorie sunt sistemele la care rspunsul depinde de intrare pentru
acelai numr n de eantioane.

12.1.ANALIZA N FRECVEN A SEMNALELOR N
TIMP DISCRET

Prelucrarea numeric a semnalelor i mrete domeniul de aplicabilitate dei evoluia
proceselor i n particular a semnalelor este continu. Evoluia rapid a componentelor
electronice digitale i a performanelor circuitelor de conversie analog/numeric au contribuit
decisiv la trecerea spre prelucrarea numeric a semnalelor. n ceea ce privete eantionarea
semnalului continuu, pentru a nu se produce interferarea lobilor secundari cu cel principal n
spectrul semnalului eantionat, este necesar ca frecvena maxim a spectrului s fie mai mic
sau cel mult egal cu frecvena lui Nyquist, care reprezint jumtate din frecvena de
eantionare. La fel ca i pentru semnalele continue este necesar s se cunoasc relaia dintre
semnalul numeric i spectrul semnalului numeric, relaie dat de transformata Fourier discret.


2.1.1. REPREZENTAREA SECVENELOR CU TRANSFORMAT
FOURIER

n acest paragraf frecvena i pulsaia sunt normate i nu apar apar relaii cu mrimi
nenormate. Intervalele de studiu sunt -0.5< f < 0.5 i -t < e < t.
Majoritatea secvenelor utilizate n tehnic pot fi reprezentate n domeniul frecven cu ajutorul
transformatei Fourier (12.15):
F x n X x n
j j n
n
{ [ ]} ( ) [ ] = =

=

e e
e e
(12.15)
unde X
j
( ) e
e
poart numele de funcie densitate spectral sau spectrul secvenei x[n]. Relaia
(12.15) se refer la transformata Fourier a semnalelor n timp discret (notat i DTFT= Discrete
Time Fourier Transform).
Reprezentarea secvenelor prin formula (12.15) necesit existena transformatei deci:
| ( )| X
j
e pentru R
e
e < e (12.16)
Aceast condiie se poate simplifica astfel:
Transformata Fourier discret 255
| ( )| | [ ] | | [ ]|.| | X x n x n
j j n j n
n n
e e e
e e e
= s


(12.17)
unde | | e
j n e
= 1. Ca urmare, condiia devine | [ ]| x n
n
<
=

(12.18)
Dac secvena x[n] este absolut sumabil, transformata Fourier exist i, de aici rezult c
intrrile i rspunsurile sistemelor stabile n timp discret sunt totdeauna reprezentabile n
domeniul frecven cu ajutorul transformatei Fourier. Condiia (12.16) se mai poate exprima i
prin urmtoarea limit:
M
j
M
j
X X e

=
lim
| ( ) ( )| e
e e
0 unde X x n
M
j j n
n M
M
( ) [ ] e e
e e
=

=
(12.19)
Dac x[n] este absolut sumabil, convergena seriei (12.15) este asigurat pentru orice e. Teoria
dezvoltrii n serie exponenial [MA] asigur convergena n sensul erorii ptratice minime
pentru secvene de ptrat sumabil (de energie finit), adic satisfac condiia:
| [ ]| x n
n
2
<
=

(12.20)
Mai general, relaia (12.19) poate fi scris sub forma (12.21):
M
j
M
j
x X

=
} lim
| ( ) ( )| e e d
e e
t
t
e
2
0
Transformatele Fourier sunt funcii continue de e i periodice cu perioada 2t. Dac este
cunoscut transformarea Fourier X
j
( ) e
e
, se poate calcula x[n] cu ajutorul transformrii
inverse:
x n F X sau x n X
j j j n
[ ] { ( )} [ ] ( ) = =

}
1
1
2
e e e d
e e e
t
t
t
e (12.21)
n caz general, transformata Fourier X e
j
( )
e
este o funcie complex de e. n analiza
semnalului intereseaz prile real i imaginar, respectiv modulul i faza:
X X jX
j
R
j
I
j
( ) ( ) ( ) e e e
e e e
= + (12.22)
sau X X
j j j
( ) | ( )|
( )
e e e
e e e
= (12.23)
Funcia X
j
(
)
e
e
reprezint spectrul n frecven al secvenei x[n] , | X
j
(
)
e
e
| este spectrul de
amplitudine, iar e
e
( ) arg( ( )) = X
j
e este spectrul de faz. Funcia spectrului de faz nu este
univoc determinat. Reprezentrile se fac pe o perioad.


12.1.1.1. Algoritmi de calcul al transformatei Fourier rapid FFT (Fast
Fourier Transform )

Pentru calculul transformatei Fourier discrete (DTFT):
X k x n W k N W
N
nk
N
j
N
n
N
[ ] [ ]. , , , ... , , = = =

=

0 1 1
2
0
1
e
t
(12.24)
Metode numerice in electronic 256
sunt necesare un numr de N
2
nmuliri complexe i N(N-1) adunri complexe. Dac o
nmulire complex se efectueaz n patru nmuliri i dou adunri reale, rezult un numr de
4
2
N nmuliri reale i 4 2
2
N N adunri reale.
Avnd n vedere proprietile coeficienilor W
N
:
W W W W W
N
kN
N
k
N
N
N
j
N
nk
N
n
= = = = =
+

1 1
2 1
2 2
2
; ; ;
( ).
e
t
(12.25)
exist algoritmi care permit efectuarea DTFT cu un numr mai mic de operaii. Aceti algoritmi
pleac de la descompunerea transformatei de ordinul N n transformate de ordin mai mic.
Componentele pot fi prime ntre ele sau pot avea divizori comuni. Un caz important este acela n
care N R
P
= , unde R este numit baz. Pentru explicarea unei largi categorii de algoritmi se
poate porni de la reprezentarea indicilor sub forma:
( ) n k n k n N k k k k k N = + = +
1 1 2 2 3 1 4 2
mod ; (mod ) (12.26)

12.1.1.1.1. Algoritmul n baz 2 cu decimare n timp

Algoritmul este ales pentru secvene reale. Secvenele x[n] reale au proprietile:
X k X N k sau X k X n k X k X N k [ ] [ ], Re [ ] Re [ ], Im [ ] Im [ }
*
= = = (12.27)
iar X[0] [i X[N/2] au valori reale. Ca urmare, este suficient s se calculeze urmtoarele N valori:
X[0],Re X[1],Re X[2],,Re X[N/2-1],
X[N/2],Im X[1],Im X[2], Im X[N/2-1]
Algoritmul este:
X k
N
k x n W W W x n W
N
n k
N
k
N
N
k
N
n k
n
N
n
N
[ ] [ ]. . . [ . ].
.
1 2 1
2
2
1
2
0
2
1
0
2
1
2
2 2 1
1 1
2
1 1
1 1
+ = + +
=

. (12.28)
Pentru k
2
0 = rezult:
X k X k W X k
N
k
[ ] [ ] . "[ ]
'
1 1 1
1
= + (12.29)
unde X k
'
[ ]
1
i X k

[ ]
1
reprezint cele dou DTFT de ordinul doi. Pentru a pune n eviden
simetria circular par a acestor transformate:
X k X
N
k X k X
N
k
' '* '' ''*
[ ] [ ] ; [ ] [ ]
1 1 1 1
2 2
= = (12.30)
i evalund avem:
X
N
k X k W X k
N
k
[ ] [ ] . [ ]
' ''
2
1 1 1
1
=

(12.31)
Prile reale i imaginare sunt:

Transformata Fourier discret 257

Re [ ] Re [ ] cos Re [ ] sin Re [ ]
Im [ ] Im [ ] sin Re [ ] cos Im [ ]
Re [ ] Re [ ] cos Re [ ] sin Re [ ]
Im [ ] Im [ ] sin Im [ ] cos Re [ ]
' '' ''
' '' ''
' '' '''
' '' ''
X k X k X k X k
X k X k X k X k
X
N
k X k X k X k
X
N
k X k X k X k
k
N
1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1
2
2
2
= + +
= +
=
= +
=
u u
u u
u u
u u
u
t
(12.32)
Se utilizeaz primele dou relaii pentru eantioanele de ordin 0,,N/4, lund k
1
=0,,N/4,
apoi eantioanele N/4,,N/2, lund k
1
=0,,N/4. Rezult fluturele de calcul cu structura din
figura 12.3.
Structuri mai simple se obin pentru k
1
=0,N/4,N/8.
Pentru evaluarea complexitii calculului aritmetic trebuie avut n vedere c ntr-un etaj exist
un fluture de tipul k
1
=0 caracterizat prin dou adunri, un fluture de tipul
k
1
=N/4 care nu necesit operaii, un fluture de tipul k
1
=N/8 care necesit dou nmuliri i ase
adunri i N/4 -2 fluturi compleci care necesit fiecare patru nmuliri i ase adunri. n final
rezult:


Fig.1.2.3. Structura fluturelui de calcul n algoritmul cu decimare n timp

TFD
N / 2

0
Re [ ]
*
X k
1

Re [ ]
*
X k
1

cos( ) u
cos( ) u
sin( )
sin( )
u
u -1
Re [ / ] X N k 2
1

Im [ / ] X N k 2
1

Im [ ] X k
1

Re [ ] X k
1

TFD
N / 2

0
Re [ ] X k
1

Re [ ] X k
1

-1
-1
-1
Metode numerice in electronic 258
numrul de nmuliri reale(NMR), NMR N N N N [ ] log = +
2
13
4
4 (12.33)
numrul de adunri reale (NAR), NAR N N N N [ ] log = +
3
2
5
2
4
2
(12.34)
unde N= 2
n
reprezint numrul total de eantioane. Numrul de operaii se micoreaz, prin
acest algoritm rezultnd o reducere a memoriei necesare ca urmare a utilizrii unor numere reale
n loc de numere complexe.


12.1.1.1.2. Programul pentru FFT cu decimare n timp

#include <math.h>
#include <graphics.h>
#define PI 3.141592653
/* Transformata Fourier rapid cu decimare n timp
pentru secvene de tipul 2^m
m ordinul secvenei
x vector cu dimensiunea 2^m care conine la intrare
partea real a semnalului n timp, iar la ieire
partea real a semnalului n frecven
y vector cu dimensiunea 2^m care conine la intrare
partea imaginar a semnalului n timp, iar la ieire
partea imaginar a semnalului n frecven
*/
void FFT_DT(int m, double x[],double y[])
{
int i,j,k,l,n1,n2,n;
double a,c,s,xt,yt,w;
n=pow(2,m);
j=1;
for(i=1;i<=n-1;i++)
{
if(i<j)
{
xt=x[j];
x[j]=x[i];
x[i]=xt;
xt=y[j];
y[j]=y[i];
y[i]=xt;
}
k=n/2;
while (k<j)
{
j-=k;
Transformata Fourier discret 259
k=k/2;
}
j+=k;
}
n1=1;
for(k=1;k<=m;k++)
{
n2=n1;
n1=n2*2;
w=PI/n2;
a=0;
for(j=1;j<=n2;j++)
{
c=cos(a);
s=sin(a);
a=j*w;
for(i=j;i<=n;i+=n1)
{
l=i+n2;
xt=c*x[l]+s*y[l];
yt=c*y[l]-s*x[l];
x[l]=x[i]-xt;
x[i]=x[i]+xt;
y[l]=y[i]-yt;
y[i]=y[i]+yt;
}
}
}
}
void main(void)
{
int i;
int gdriver = DETECT, gmode, errorcode;
double re[128],im[128], modul[128];
for(i=0;i<=127;i++)
{
re[i]=0;
im[i]=0;
}

/* Sunt date funciile impuls i triunghiular */

/* impuls */
for(i=0;i<=10;i++) re[i]=1;
/*sinus */
/* for(i=0;i<=127;i++) re[i]=0.2*sin(PI/4*i)+0.1*sin(PI/8*i);*/
Metode numerice in electronic 260

/* triunghi
for(i=0;i<10;i++) re[i]=i;
for(i=10;i<20;i++) re[i]=20-i; */
FFT_DT(7,re,im);
for(i=0;i<=127;i++)modul[i]=sqrt( pow(re[i],2)+pow(im[i],2) );

/* iniializare mod grafice */
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Eroare grafica: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
putpixel(4,300-30*modul[1],YELLOW);
for(i=2;i<=127;i++)
{
lineto(4*i,300-30*modul[i]);
}
getche();
closegraph();
}


12.1.1.1.3. Algoritmul n baza 2 cu decimare n frecven

n acest caz se prezint indicii sub forma:

n n
N
n n
N
n
k k k k
N
k
= + = =
= + = =
2
0 1
2
1 0 1
2 0 1
2
1 0 1
2 1 2
1 2 1 2
, , , ..., , , ;
, , ,... , , , ;
(12.35)
deci
X k k x n
N
n W
n
i
n
N
N
k k n
N
n
[ ] [ ].
( )( )
2
2
1 2 1 2
0 0
2 2
2
2 1
1 2 1 2
+ = +
= =
+ +
(12.36)

din care rezult pentru k
2
0 = i respectiv k
2
1 =



Transformata Fourier discret 261
X k x n x n
N
W TFD x n x n
N
X k x n x n
N
W W TFD x n x n
N
W
n
N
N
n k
N
N
n
N
n k
N n
n
n
N
[ ] { [ ] [ ]} { [ ] [ ]}
[ ] { [ ] [ ]} {( [ ] [ ]) }
2
2 2
2 1
2 2
1 1 1
0
2
1
2 2
1 1
1 1 1
2 2 2
1 1
0
2
1
1
1 1
1 1 1
1
1
= + + = + +
+ = + = +
=

(12.37)

Transformata de ordin N se descompune n dou transformate de ordin N/2.Fiecare din cele
dou grupuri de cte N/2 semnale ce constituie intrrile transformatelor n N/2 puncte se divide
n dou dup acelai procedeu (primele N/4 i urmtoarele N/4).Vor rezulta un numr de
log
2
N etaje, n fiecare realizndu-se N/2 operaii de tip fluture structura fluturelui fiind dat
n figura 12.4.
Complexitatea calculelor aritmetice este dat de :

NMR N N NAR N N N [ ] log , [ ] log = = 2 3
2 2
(12.38)

n varianta 4/2 ,ca i la decimarea n timp, I

NMR N N N NAR N N N [ ] ( / ) log , [ ] ( / ) log = = 3 2 7 2
2 2
(12.39)
pentru varianta 3/3.
Pentru acest algoritm eantioanele semnalului se iau n ordinea natural, iar ale ieirii rezult n
ordinea invers a biilor.




Fig.12.4. Structura fluturelui de calcul n algoritmul cu decimare n frecven


12.1.1.1.4. Programul pentru FFT cu decimare n frecven

#include <math.h>
#include <graphics.h>
#define PI 3.141592653
/* Transformata Fourier rapid cu decimare n frecven
pentru secvene de tipul 2^m
-1
a b +
( ) a b W
N
n

1

a
b
Metode numerice in electronic 262
m ordinul secvenei
x vector cu dimensiunea 2^m care conine la intrare
partea real a semnalului n timp, iar la ieire
partea real a semnalului n frecven
y vector cu dimensiunea 2^m care conine la intrare
partea imaginar a semnalului n timp , iar la ieire
partea imaginar a semnalului n frecven
*/
void FFT_DF(int m, double x[],double y[])
{
int i,j,k,l,n1,n2,n;
double a,c,s,xt,yt,w;
n=pow(2,m);
n2=n;
for(k=1;k<=m;k++)
{
n1=n2;
n2=n2/2;
w=PI/n2;
a=0;
for(j=1;j<=n2;j++)
{
c=cos(a);
s=sin(a);
a=j*w;
for(i=j;i<=n;i+=n1)
{
l=i+n2;
xt=x[i]-x[l];
x[i]=x[i]+x[l];
xt=y[i]-y[l];
y[i]=y[i]+y[l];
x[l]=c*xt+s*yt;
y[l]=c*yt-s*xt;
}
}
}
j=1;
for(i=1;i<=n-1;i++)
{
if(i<j)
{
xt=x[j];
x[j]=x[i];
x[i]=xt;
xt=y[j];
Transformata Fourier discret 263
y[j]=y[i];
y[i]=xt;
}
k=n/2;
while(k<j)
{
j-=k;
k=k/2;
}
j+=k;
}
}
void main(void)
{
int i;
int gdriver = DETECT, gmode, errorcode;
double re[128],im[128], modul[128];
for(i=0;i<=127;i++)
{
re[i]=0;
im[i]=0;
}

/* impuls */
for(i=0;i<=10;i++) re[i]=1;
/*sinus */
/* for(i=0;i<=127;i++) re[i]=0.2*sin(PI/4*i)+0.1*sin(PI/8*i);*/

/* triunghi
for(i=0;i<10;i++) re[i]=i;
for(i=10;i<20;i++) re[i]=20-i; */
FFT_DF(7,re,im);
for(i=0;i<=127;i++)modul[i]=sqrt( pow(re[i],2)+pow(im[i],2) );

/* iniializare mod grafice */
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Eroare grafic: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
putpixel(1,300-30*modul[1],YELLOW);
for(i=2;i<=127;i++)
Metode numerice in electronic 264
{
lineto(8*i,300-30*modul[i]);
}
getche();
closegraph();
}


12.1.2. ALGORITMUL GOERTZEL

Acest algoritm are viteza de calcul inferioar algoritmilor FFT prezentai, dar superioar
vitezei de calcul a transformatei DTFT. Codul algoritmului este simplu, ceea ce-l face util n
unele aplicaii.
Utiliznd egalitatea W
N
Nk
= 1, expresia transformatei Fourier discrete (12.23) devine:
X k x n W
N
k N n
n
N
[ ] [ ]
( )
=

=

0
1
(12.40)
Relaia (12.40) poate fi interpretat ca o convoluie discret a secvenei x[n] cu secvena
W
N
kn
,care reprezint funcia de transfer a unui filtru. Notnd rspunsul filtrului cu y n
k
[ ]
pentru intrarea x n [ ] se obine:
y n x m W
k N
k n m
m
N
[ ] [ ]
( )
=

=

0
1
(12.41)
Rspunsul filtrului la impulsul treapt u n [ ] este h n W u n
f N
kn
[ ] [ ] =

(12.42)
Aplicnd transformata z relaiei (12.42) se obine funcia de transfer a filtrului:
H z W u n z
k N
kn n
n
( ) ( ). =

=

0
(12.43)
innd cont de valorile lui u n [ ] i c suma este o serie geometric infinit, rezult:
H z
W z
N
k
( )
.
=


1
1
1
(12.44)
Fcnd prelucrri asupra funciei de transfer (12.44), obinem:
H z
W z
W z
W z
W z
k
N
z z
k
N
k
N
k
N
k
n
k
( )
.
.
.
.
.
. cos
. .
.
=

|
\

|
.
|
+


1
1
1
1
1
1 2
2
1
1
1
1
1 2
t
(12.45)
Considernd
H z
Y z V z
X z V z
Y z
V z
W z
k
k k
k k
k
k
N
k
( )
( ). ( )
( ). ( )
( )
( )
. = =

unde 1
1
(12.46)
rezult:

V z
X z k
N
z z
k
k
( )
( )
. cos
. .
.
=

|
\

|
.
|
+

1
1 2
2
1 2
t
(12.47)
Aplicnd transformata z invers relaiilor (12.46) i (12.47) se obin ecuaiile cu diferene finite:
Transformata Fourier discret 265

v n
k
N
v n v n x n
y n v n W v n
k k k
k k N
k
k
[ ] cos
. .
. [ ] [ ] [ ] ;
[ ] [ ] [ ];
=
|
\

|
.
| +
=
2
2
1 2
1
t
(12.48)
Secvena y n
k
[ ] reprezint spectrul semnalului x[n].Ecuaiile (12.48) pot fi
implementate prin schema filtrului numeric de ordinul doi din figura (12.5)




Fig.12.5. Structura filtrului care implementeaz algoritmul lui Goertzel


12.1.2.1. Implementarea algoritmului

Void GOERTZEL (double R[],double I[],int N,int K)
{
double vr1,vr2,vi1,vi2,temp,yfr,yfi;
double c,s,phi,wn;
static double REAL[K],IMAG[K],MAG[K];
int j,k;
for(k=1;k<=k;k++)
{
vr1=vr2=0;
vi1=vi2=0;
phi=2*pi*k/N;
c=cos(phi);
s=sin(phi);
for(j=1;j<=N;j++)
{
temp=vr1;
vr1=2*c*vr1-vr2+R[j];
vr2=temp;
temp=vi1;
X n [ ]
Y n [ ]
+ +
+
+
-
2 2 cos( / ) tk N
z
1
z
1
W
N
k
V n
k
[ ] 2
V n
k
[ ]
-
Metode numerice in electronic 266
vi1=2*c*vi1vi2+I[j];
vi2=temp;
}
yfr=c*vr1-vr2-s*vi1;
yfi=c*vi1-vi2+s*vr1;
REAL[k]=yfr;
IMAG[k]=yfi;
}
//Calculeaz magnitudinea semnalului de ieire
for(k=1;k<=K,k++)MAG[k]=sqrt(real[k]*REAL[k]+IMAG[k]*IMAG[k]);
AXE1(k,Mag);//reprezentarea grafic a magnitudinii
getche();
}


12.1.2.2. Erori de cuantizare n calculul transformatei Fourier discrete

Pentru transformata Fourier discret trebuie s calculm suma :
X k x n W n N
N
nk
n
N
[ ] [ ]. , ,... , = =
=

0 1 1
0
1
(12.49)
n care { x n [ ] }c C i se consider numerele reprezentate n virgul fix, n complement fa de
doi. Dac x n [ ] este prezentat pe B+1 bii i este utilizat acelai format pentru reprezentarea
coeficienilor W
N
nk
, dup fiecare nmulire efectuat exact ar trebui mrit formatul cu nc 8
bii. Din economie de memorie nu se procedeaz astfel, ci se face o rotunjire dup fiecare
inmulire la B+1 bii, ceea ce duce la o eroare echivalent cu un zgomot. Dac asociem cte o
surs de eroare pentru fiecare nmulire real i inem seama c numerele sunt complexe, rezult
urmtoarea valoare cuantizat a unui produs:
Q(x[n]W ) {x[n]}
p nk
N
e [k] {x[n]}
pnk
N
j{ {x[n]}
pnk
N
e [k] {x[n]}
pnk
N
e [k]}
N
nk
n,
n, n,
= + + +
+
Re cos Im sin Im cos
Re sin
2 2 2
2
1
3 4

(12.50)
iar eroarea corespunztoare este:
e k e k e k j e k e k e k je k
n n n n n n r n I
[ ] [ ] [ ] { [ ] [ ]} [ ] [ ]
, , , , , ,
= + + = +
1 2 3 4
(12.51)
Dac referitor la erorile de cuantizare rezultate din nmulirile reale, se fac ipotezele uzuale
pentru zgomotul de rotunjire :
-densitate de probabilitate uniform ntre

2
1) ( B
i 2
1 ( ) B
;
-erorile mai provin de la operaii diferite care sunt necorelate;
-erorile sunt necorelate cu semnalul de la intrare
rezult valorile medii:

Transformata Fourier discret 267

E e k E e k E e k
E e k E e k E e k E e k E e k E e k e k
E e k e k
n i n i
B
n i n
n n n n n n n
n n
B
B
{ [ ]} ; { [ ]} . ; { [ ]} ;
{| [ ]| } { [ ]} { [ ]} { [ ]} { [ ]} { [ ] [ ]}
{ [ ] [ ]} ,
, , ,
, , , , , ,
, ,
= = = =
= + + + + +
+ = =

0
1
12
2 0
2
1
3
2
2 2 2
2
1
2
2
2
3
2
4
2
1 2
3 4
2 2
o
o A


ultima expresie reprezentnd variana (dispersia) erorii dintr-un nod oarecare.
Eroarea total este caracterizat prin:

F k e k E F k
E F k E e k E e n e n E e k
N
n
n
N
n k
n
N
n R n I
n
N
n
N
n
N
n
N
[ ] [ ], { [ ]} ,
{| [ ]| } | [ ]| [ ] [ ] {| [ ]| }
, , ,
= =
=


`
)
= +


`
)
= =
=


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


Lucrndu-se n virgul fix, trebuie avut n vedere problema scalrii.
innd cont de relaia | [ ]| | [ ]| X k x n N
n
N
s s
=

0
1
se pot evita depirile prin scalarea semnalelor de
intrare cu 1/N.


12.2. APLICAII

1. Se consider semnalul EEG din figura 12.6 i eantioanele urmtoare :

119,128,126,131,131,126,136,128,128,129,117,125,125,125,129,122,
119,119,122,120,131,129,134,140,132,136,132,126,131,120,122,121,
131,129,128,134,123,129,131,126,131,126,130,133,128,134,128,127,
129,121,128,124,123,130,121,128,127,126,133,125,128,129,126,132,
123,127,131,124,131,128,131,134,127,134,129,128,133,125,132,130,
126,133,125,130,129,120,126,122,128,132,123,129,123,124,131,124,
130,125,124,133,126,131,131,128,133,126,129,131,124,130,127,130,
134,125,131,129,127,135,129,132,126,118,126,121,130,133,129,135

luate cu frecvena f=128Hz i msurate n V. Se cere analiza n frecven a semnalului EEG.

Metode numerice in electronic 268

Fig.12.6. Semnal EEG pentru un subiect masculin


Prin algoritmul decimrii n timp s-a obinut rezultatul din figura (12.7 ) iar cu algoritmul
Goertzel rezultatul din figura (12.8)


Fig.12.7.Modulul semnalului EEG n frecven normat prin algoritmul decimrii n timp.

Fig. 12.8. Modulul semnalului EEG n frecven normat prin algoritmul Goert



U V [ ]
U U /
0

t s [ ]
f f /
0
140
U U /
0

119
f f /
0
0.25
1
0.5
0
0.75
0.5
1
1
1
0
0.5 1
Transformata Fourier discret 269
2. S se determine transformata Fourier discret pentru impulsul treapt din figura(12.9).



Fig.12.9.Impulsul treapt.



Fig.12.10.Transformata Fourier a impulsului treapt

Prin analiza figurilor, transformatelor Fourier, a semnalelor se pot trage concluzii asupra
comportrii n frecven a semnalelor, ceea ce n medicin nseamn diagnosticarea unor
afeciuni, iar n tehnic realizarea unor sisteme cu diferite proprieti.













U n [ ]
32
16
0
250 500
1
0.5
0
100 200 500
n
300 400
Anexa 1 279
ANEXA 1


1. Programul pentru calculul valorii unui polinom ntr-un punct dat.
VALPOL
#include <conio.h>
#include <stdio.h>
#incude <math.h>
#define NrMax 10

/* Funcia ntoarce valoarea polinomului ntr-un punct dat */
double VALPOL(int grad,
double Coef[NrMax],
double point)

{int i;
double aux;
aux=Coef[grad];
for (i=grad-1; i>=0;i-- )
aux=Coef[i]+point*aux;
return aux;
}
int main(void)
{
int n,i;
double A[NrMax],pct;
clrscr();
printf( Dai gradul polinomului);
scanf( %d,&n);
printf( Dai coeficienii polinomului \n);
for (i=n;i>=0;i--)
{printf(A[%d]=,i );
scanf (%lf,&A[i]);
}
printf(Dai punctul de calcul);
scanf(%lf,&pct);
clrscr();
printf(Valoarea polinomului este
%6,5lf,VALPOL(n,A,pct));
getche();
return0;
}


Metode numerice n electronic 280
2. Programul pentru calculul valorii derivatei unui polinom ntr-un punct dat.
DERPOL
#include <conio.h>
#include <stdio.h>
#incude <math.h>
#define NrMax 10

/* Funcia ntoarce valoarea polinomului ntr-un punct dat */
double DERPOL(int grad,
double Coef[NrMax],
double point)

{int i;
double aux;
static double B[NrMax];
B[grad]=aux=Coef[grad];
for (i=grad-1; i>=0;i-- )
{B[i]=Coef[i]+point*auxB[i+1];
aux=B[i]+point*aux;
}
return aux;
}
int main(void)
{
int n,i;
double A[NrMax],pct;
clrscr();
printf( Dai gradul polinomului);
scanf( %d,&n);
printf( Dai coeficienii polinomului \n);
for (i=n;i>=0;i--)
{printf(A[%d]=,i );
scanf (%lf,&A[i]);
}
printf(Dai punctul de calcul);
scanf(%lf,&pct);
clrscr();
printf(Valoarea derivatei polinomului este
%6,5lf,DERPOL(n,A,pct));
getche();
return0;
}