Documente Academic
Documente Profesional
Documente Cultură
Carte MN - RUSU PDF
Carte MN - RUSU PDF
METODE NUMERICE
ALGORITMI N LIMBAJ C
2006
Cuprins
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
VII
VIII
Cuprins
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
IX
Cuprins
ANEXA 1 ......................................................................................................................... 279
BIBLIOGRAFIE ............................................................................................................. 281
XI
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.
______________________________
*) Bibliografie: [6],[7],[12],[21],[22]
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:
ex x x ,
(1.2)
pentru a reuni cele dou definiii ale erorii ntr-una singur s-a trecut la definirea erorii
absolute, astfel:
(1.3)
| ex | | x x | .
Dac se cunoate un minorant m i un majorant M al mrimii x atunci orice element
ex* al mulimii { | ex |, M m } se numete eroare absolut la limit.
Definiia 1.2. Numim eroare relativ raportul dintre eroarea absolut i valoarea
aproximativ absolut x |ex /x |
(1.4)
n cazul erorii relative se poate defini eroarea relativ la limit. Din aplicarea proprietilor
modulului rezult:
| x|| x | |x x| |e x| e*x
(1.5)
|x| e x |x| |x| e x
x*
Erori
sunt caracterizate de funcia de repartiie normal sau gaussian din expresia (1.7), a crei
reprezentare este dat n fig.1.1.
1
(1.7)
exp( 0.5.( / ) 2 ) ,
2
Calculul probabilitii ca eroarea de observaie a unui procedeu de msur s fie cuprins
ntre dou valori date x1 i x 2 se realizeaz ca o sumare pe intervalul dat a funciei de
repartiie, prezentat n expresia (1.8):
x2
P x1 e x2 ( )d (1.8)
x1
Multe numere nu pot fi reprezentate exact printr-un numr finit de cifre. Dintre aceste
numere
amintim: =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 ntrun sistem de numeraie, sunt reprezentate
cu un numr infinit de cifre n alt sistem de
Fig1.1.Funcia de repartiie gaussian
numeraie. Ca exemplu poate fi dat
-eroarea de observaie;-dispersia
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...
... ,
2 ! 4 ! 6!
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
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.
01
. | f | 1 ;
q f 2 ,
1 / 2 | f | 1 ;
1 / 16 | f | 1
q f 16 ,
(1.12)
Erori
(1.14)
0 gq 1
(1.15)
eq
q
g q 10 x-t
f q 10 x
10 x-t
10 1 10 x
10 10 - t 101 t
(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 :
| f q |10 x
pentru |g q| 1/ 2
| q|
(1.17)
x
x t
pentru |g q| 1/ 2
| f q |10 10
Dac | g q | 1 / 2 , eroarea absolut este |eq | (1 / 2) 10x t
(1.18)
i pentru | g q | 1 / 2 , eroarea absolut este | eq | (1 / 2) 10 x t
Deci n ambele cazuri | eq | (1 / 2) 10
x t
5 10 -t
q
10 1 10 x
10 1
(1.19)
(1.20)
(1.21)
Erori
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 a1b n a 2 b n-1 a 3b n-2 ... a m b n-m+1 ...
(1.22)
Considerm m cifre semnificative ale numrului:
-1
(1.23)
(1.24)
Dac c < (1 / 2)q atunci c = 0 i valoarea aproximativ prin rotunjire a lui q este
q = a1b n a2 b n-1 a3b n- 2 ... a mb n-m1
valoarea aproximativ a lui q este
(1.26) n
n-m+1
(1 / 2 ) b1 m ,
q
1 bn
(1.27)
(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).
ex y = x y - x y e y+ex ex y = e y+ex
(1.29)
ex y = x y - x y ex -e y ex y = ex -e y
nmulirea:
(1.30)
x y= x ex y+e y x y ex y e y x ex ey
Considernd ex e y 0 rezult:
exy xy-x y ex y e y x
exy ex y e y x
(1.31)
8
mprirea:
e y e2
x x ex
x ex
x+ex
1
2 ...
y
y
y
y+e y
y
y 1 e y /y
ey x e
xe y ex e y
x ex
1 x 2 2 .
y
y y y
y
y
ey ey
(1.32)
Rdcina ptrat:
x
x ex
x 1 ex / x
x 1 (1 / 2 )( ex / x )...
x-
1 ex / x
x = (1 / 2)( ex / x ) x
(1.33)
Propagarea erorilor relative prin operaiile realizate de calculator se deduce din formulele
de propagare a erorilor absolute .
Adunarea:
ex+y
ey
x
e
y
x
y
x+y
x
y
x y x y x x y y
x y
x y
x
y
y (1.34)
x
x y
x y
Scderea:
ex y
x
e
y ey
x
y
x-y
x
y
x y x y x x y y
x y
x y
x+y
x
y
x
y
x y
x y
nmulirea:
exy x e y y ex e y ex
xy
x y
xy
xy
xy
y
x
xy x y (1.36)
x-y
mprirea:
(1.35)
x / y x / y / ( x / y ) (1 / y ). ex ( x / y 2 ). e y / ( x / y ) ex / x e y / y x y
x / y x y
(1.37)
Rdcina ptrat:
x
x
(1 / 2 ). x ( ex / x ) / x (1 / 2).( ex / x ) (1 / 2). e x
(1 / 2) x
(1.38)
Erori
x
(1.39)
x
Se observ egalitatea expresiei erorii
(1.39) cu cea obinut la propagarea erorii
x
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
10
x
y
x
y r
xy
xy
(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: xy x y r
x- y
(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
x / y x y r (1.42)
1.5.
REGULI
PENTRU
CALCULELOR
MRIREA
PRECIZIEI
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.
Erori
11
1.6.
APLICAII
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 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 ri , 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.
ax02
bx0
eE x 0 x0 r1 a r2
b x 0 r3
r4
2
2
ax0 bx0 c
ax0 bx0
ax 02 bx 0
ax 02 bx 0 c
c
ax 02 bx 0 c
dx 0
r5 d x0 6
( 1)
dx
f
0
f
r7 ( 1) r8
dx0 f
Dac considerm c erorile lui a , b, c, d , f , x0 sunt obinute ca erori de rotunjire, atunci
f
toate erorile din expresie pot fi majorate cu 5 10 t , unde t este numrul de cifre al variabilelor
a , b, c, d , f , x0 admis de calculator. Ca urmare, expresia limitei erorii relative devine:
5ax 02 3bx 0
E 5 10 t
2
ax 0
bx 0 c
2dx 0
dx 0 f
12
Considernd c x 0 [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:
5a 3b 2d
E 5 10 t
5
f
c
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.
a u 4010
. t ; v 4010
. t
R:
a 0 u 510
. t ; v 2510
. t
14
A Rc h11 r Rc h11 r
0,05 0,05 0,510
. t 0,1
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.
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.
16
(2.3)
P0= P, P1= P1, iar Pi 1 este restul mpririi lui Pi 1 la Pi luat cu semn schimbat,
pentru 2 i m . Atunci numrul de rdcini ale ecuaiei P( x ) 0 este egal cu
diferena dintre numrul de schimbri de semn ale irurilor:
P0 ,P1 ,P2 , , Pm
(2.6)
P0 ,P1 ,P2 , ,Pm
(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.
Pi 1 ( x ) Pi ( x ). Qi ( x ) Pi 1 ( x ) ; i 1,2,..., m 1
(2.8)
Aplicnd algoritmul, obinem: P0 ( x ), P1 ( x ) Pm ( x ) =constant 0, deoarece P0 ( x ) i
P1 ( x ) sunt prime ntre ele. Pentru Pi ( x ) = 0 din relaia (2.8) se vede c este ndeplinit
17
}
Tiprete coeficienii restului cu semnul schimbat;
}
}
18
19
g
g 1
g k 1
g 1
gk
Pb Pb Pb
0 Pb 0 ; Pb 0 ,
se nlocuiesc cu elementele P g+j j = 0 , 1, ... , k-1 crora li se atribuie semnul
gk
sign Pbg+j
1 signP b
20
(2.10)
irul lungimilor intervalelor care se obin prin njumtire este:
b1 a1 (b a)/2 , b2 a2 (b a)/2 2 , ... , bn a n (b a)/2 n ,
bn an
2n
lim bn
(2.12)
lim a n
(2.13)
xm
(2.11)
21
22
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 ;
}
24
E ,
xm , x
m
x0 , x1
1-
(2.18)
avem
unde
x n-1 b
x n a ' ( ) x n-1 a
atunci
x n a x n-1 a
x n-1 a xn-2-a x n a 2 xn-2 a
x n a n x0 a
(2.20)
25
y
yx
y ( x)
yx
y ( x)
a
x0
x1 x3
x0
x2
x3
x1
26
y
y
y ( x)
y ( x)
yx
y=x
a
x2
x1
xo
x0 a
x1
'(x) 1
' ( x ) 1
sau cnd
(2.22)
| f ( x n )|
i atunci soluia ecuaiei este aproximat de xn , pentru suficient de mic.
27
28
Metodenumericenelectronic
if (iter<NMax) return 0;
else return 2;
}
(2.26) sau
(2.27)
Tan poate fi exprimat cu ajutorul
funciei x :
k = 1 / (1- tan( )) .
yx
y ( x)
B
x
kx
a
xn
xn xn
xn xn-1
a-x n
'
(2.28)
x n 1
'
a x n
unde x n a
xn 1
tan =
; xn-1 xn
1
1- '
(2.29)
29
Dac inem seama de formulele (2.30) , (2.29) i (2.25) putem exprima formula de
calcul a lui xn 1 astfel :
x n 1 x n k ( f ( x n ) x n )
(2.31)
Influenele lui k pentru cele patru cazuri ale valorilor derivatei sunt:
1. 0 < ' ( x ) <1. Din (2.28) rezult k 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 - , 0 , dei metoda n acest caz este divergent pentru un
k < 0 se poate obine o mbuntire a metodei;
4. ' x < 1. Rezult k 0, 1 / 2 , adic o micorare a pasului dar fr a ne
pronuna asupra convergenei irului n acest caz.
x n 1 xn
1 ' xn
xn xn
(2.32)
(2.34)
Condiia de convergen a irului, spre soluia ecuaiei, este dat de relaia g' x 1 .
Calculm derivata funciei g ( x )
'' x x x
'
g x
1 x
'
(2.35)
30
Metodenumericenelectronic
y= f (x)
y=x
y ( x)
x1
x
x0
x2 x1
x n+1 x n
f xn
f ' xn
x0
(2.36)
f '' x f x
'
(2.37)
31
32
Metodenumericenelectronic
/* 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;
}
P xn
P' x n
(2.38)
Pentru calculul valorii unui polinom ntr-un punct dat x0 , aplicm urmtorul
procedeu:
(2.39)
P( x ) ( x x0 )( bmx m1 bm1x m 2 ... b2 x b1 ) b0 , iar P( x0 ) b0
Pentru determinarea lui b0 , identificm coeficienii polinoamelor din (2.39) i rezult:
am bm
ai bi x0bi 1 ,
i m 1, m 2,...,2,1,0
33
c1 b1 x0c j 1
j m 1, m 2,...,2.,1
(2.40)
unde:
bm am
bi a i x0 bi 1
i m 1,...2,1,0
cm bm
ci bi x0 ci 1
i m 1,...2,1
(2.41)
34
Metodenumericenelectronic
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;
}
35
f a2 a2 a2 0
a1
a2
' x 1 .
Vom
calcula
soluia
ecuaiei
(2.42)
x-c
1!
x-c 2
2!
'' c...
(2.43)
c d ( c ) d ( d 2 / 2) "( c ) ,
36
Metodenumericenelectronic
2 c- c
(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 a1 respectiv a2 .
a2 b2 sb3 pb4
a1 R sb2 pb3
(2.48)
a0 S pb2
Din relaiile (2.48) se pot deduce relaiile recursive pentru calculul coeficienilor celor
dou polinoame n care s-a descompus polinomul iniial:
b2 a2 sb3 pb4
37
(2.49)
R a1 sb2 pb3
S a0 pb2
(2.50)
bn 2 an 2 sbn 1 p
bk ak sbk 1 pbk 2
k n 3, n 4,...,2,1,0
(2.51)
(2.53)
38
Metodenumericenelectronic
R( s, p) b1
s
s
R( s, p) b1
p
p
b0 b1
S ( s, p )
b1
s
s
s
S ( s, p) b0 b1
.s
p
p p
(2.55)
t n 1 1
t n 2 s.t n 1 bn 1
t k s.t k 1 p.t k 2 bk 1
(2.56)
k n 3, n 4,...,1,0
qn 1 0
qn 2 1
qk s. qk 1 p. qk 2 bk 2
k n 3, n 4,...,1,0.
(2.57)
S ( s0 , p 0 )
t 1 ( s0 , p 0 )
s
R ( s0 , p 0 )
q1 ( s0 , p 0 )
p
S ( s0 , p 0 )
t 0 ( s0 , p0 ) t 1 ( s0 , p0 ) s0 b1 ( s0 , p 0 )
s
S ( s0 , p 0 )
q 0 ( s0 , p 0 ) s0 q1 ( s0 , p 0 )
p
(2.58)
Se rezolv sistemul pentru soluia de start, iar din expresiile (2.54) se determin
soluiile sistemului pentru iteraia ntia s1 i p1 . Se continu procesul de iteraie pn
cnd | | sk 1 sk | i | pk 1 pk | unde este eroarea impus. Pentru aceste valori
ale soluiilor sistemului se consider S ( sk 1, pk 1 ) 0 i R( sk 1, pk 1 ) 0 . n aceste
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;
s, p :variaiile lui s i p;
s,p:coeficienii polinomului de gradul doi, reali;
R,S:coeficienii restului, reali;
R R
:derivatele pariale ale lui R n raport cu s i p, reale;
,
s p
S S
:derivatele pariale ale lui S n raport cu s i p, reale;
,
s p
s0 , p0 :soluiile de start pentru calculul lui s i p, reale;
ak
;
an
i:=n;
j:=-1;
repet
i:=i-2;
repet
j:=j+1;
bi1(s j ,p j ) a i1 s j
bi (s j ,p j ) a i s j .bi1 p j
pentru k: i 1 pn la 0
bk (s j ,p j ) a k s j .bk 1 p j .bk 2
t i1 1
t i s j . t i1 bi1
pentru k: i 1 pn la 0
t k s j . t k 1 p j . t k 2 bk 1
40
Metodenumericenelectronic
qi1 0
qi 1
pentru k: i 1 pn la 0 q k s j . q k 1 p j . q k 2 bk 2
R( s j , p j ) b1( s j , p j )
S ( s j , p j ) b0 ( s j , p j ) b1( s j , p j )s j
S ( s j , p j )
s
R( s j , p j )
p
S ( s j , p j )
s
S ( s j , p j )
p
t1( s j , p j )
q1( s j , p j )
t0 ( s j , p j ) t1( s j , p j )s j b1( s j , p j )
q 0 ( s j , p j ) s j q1( s j , p j )
rezolv sistemul
R( s j , p j )
R( s j , p j )
s j
p j R( s j , p j )
s
p
S ( s j , p j )
S ( s j , p j )
s j
p j S ( s j , p j )
s
p
s j 1 s j s j ;
p j 1 p j p j
pn cnd (| s j 1 s j | ) (| p j 1 p j | )
rezolv ecuaia x 2 s j 1 x p j 1 0
pn cnd (i-2<2)
Rezolv ecuaia de gradul 1 sau 2;
Tiprete soluiile;
}
}
41
42
Metodenumericenelectronic
43
44
Metodenumericenelectronic
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)
338.6260295
3
45
s
-
f1
f2
f3
f4
.
f ' ( s ) 3s 2 10568
s 0.05120153
.
f '' ( s ) 6s 10568
f ''' ( s ) 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 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 s1'' 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:
s1' 0.29426 ; s2' 0.05800
46
Metodenumericenelectronic
s1 0.409 ; s2 0.0943 ; s3 0.0251
Aproximaii succesive:
Newton-Raphson:
2. Se consider funcia de transfer a unui filtru analogic de tip Cebev dat sub forma:
H ( s)
0.04381
s 4 0.6192s 3 0.61401692s 2 0.20379268s 0.0491588
3. Se d ecuaia
ex 1 / x 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 0.0000000001 pentru toate
metodele. S se compare rezultatele.
3
REZOLVAREA NUMERIC A SISTEMELOR
DE ECUAII*
Fie funcia f : X Y , X Rn, Y Rn i f ( x ) 0 un sistem de ecuaii. Dup gradul 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.
a n1 x1 a n2 x2 ... a nn x n bn
(3.1)
AX=B
(3.2)
sau matriceal
unde:
a11 a12
a
a
A= 21 22
a n1 a n 2
x1
x2
X= x3
xn
(3.4)
... a1n
... a2n
... a nn
B=
b1
b2
b3
bn
(3.3)
(3.5)
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.
a 21 x1 a 22 x 2 b2
a 31 x1 a 32 x 2 a 33 x 3 b3
..........................................
a n1 x1 a n 2 x 2 a n 3 x 3 ...... a nn x n bn
(3.6)
x1
b1 i
a11
bi a ij x j
j 1
xi
a ii
i=1,2,3,n
x1
calculeaz
b1 ;
a11
pentru i=2 ,, n
i 1
bi a ij x j
calculeaz
xi
j 1
a ii
(3.7)
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;
}
a 22 x 2 a 21 x 2 ... a 2n x n b2
a 33 x 3 ... a 3n x n b3
.................................
a nn x n bn
(3.8)
xn
bn
a nn
bi a ij x j
i
xi
j i 1
a ii
i=n-1,n-2,,1
(3.9)
50
xn
bn ;
a nn
n
bi a ij x j
pentru i=n-1,, 1 calculeaz
xi
j i 1
a ii
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;
51
ak 1
, k=2,...,n
a11
(3.10)
33
3n
(3.11)
2
2
2
2
a x a x ... a x b
n2
n3
nn
Procedeul se continu cu aducerea pe locul lui a22 a celui mai mare termen din
coloana doi i se nmulete linia a doua cu :
mk 2
ak2
a 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 aii se nmulete aceast coloan cu :
mki
a ki
a 22
k=i+1,...,n
(3.13)
n x b n
ann
n
n
(3.14)
xn
bnn
a nn
x i b22
j i 1
a iii
a ij x j
(3.15)
52
pn cnd i>=n;
pentru i=1,,n execut
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,i]; }
GAUSS=d;
}
53
d:=d*A[i,i];
X[I]=X[I]-A[I,j]*X[j];
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;
}
l21 l22
l31 l32
ln1 ln2
0
l33
0
0
ln3 ln4
0 1 u12
0 0 1
0 0 0
1 0 0
55
0 1 an1 an2
l11 0
l21 l22
l31 l32
ln1 ln 2
l33
ln 3 ln 4
a1n
a2 n
a3n
ann
0 d1 b1
0 d2 b2
0 d3 b3
1 dn bn
(3.16)
(3.17)
di
j 1
a1 j
a11
k 1
; j 1,2,..., n ; d1
b1
; a11 0 ;
a11
i 1
1
lii
k 1
i 1
1
b1 lik d k
lii
k 1
(3.18)
(3.19)
(3.20)
aij x j
j i 1
uii
; i n 1, n 2,...,2,1;
(3.21)
56
pentru j=1 ,, n
{calculeaz
li1 ai1 ;
u1 j
a1 j
;
a11
b
d1 1 ; a11 0 ;
a11
}
dac ij atunci
{ calculeaz
lij aij
j 1
lik ukj ;
k 1
i 1
1
uij aij lik ukj ;
lii
k 1
di
i 1
1
b1 lik d k
lii
k 1
}
dac i<j atunci
{ calculeaz
uij
1
lii
i 1
k 1
}
}
calculeaz
{ xn dn ;
pentru i=n-1 ,, 1
di
calculeaz xi
aij x j
j i 1
uii
}
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[],
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;}
l ij u ji l jj ; i 1,2,..., n 1; j 1,2,..., n 1; i j ;
58
Algoritmul pentru metoda lui Cholesky este identic cu algoritmul Crout, dar
se ine cont c a ij a ji ; i, j 1,..., n
59
(3.22)
(matricea unitate)
(3.23)
(3.24)
C= E n E n 1 ...E 1 B
(3.25)
unde
a ij
k 1
a ij
k 1
a i , k 1
k 1
a k 1
k 1
a k 1,k 1
k
k 1
a k 1, j a k 1, j
k 1
k
ai, j aij
pentru j k-1
pentru j < k-1
1
bi bi
k 1
a i ,k 1 k 1
k
k 1
bi bi
bk 1
k 1
a k 1, k 1
pentru i k 1
k
k 1
bk 1 bk 1
pentru k = 2,3,... , n
(3.26)
60
A k, lin
A lin, lin
61
A[lin.lin];
B n
;
A n, n
B lin
A lin,lin
62
for
m*MAT[i][j];
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;
}
Hp
p 1
(3.27)
63
v p . v Tp
(3.28)
v Tp . . v p
(3.29)
(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
......................
iar hqr 1 2 vqp . vrp
n
0 0 0... hpp ... hpn
vip2
.......................
i p
0 0 0.... h ... h
np
nn
Notm vectorul
i (a1i , a2i ,..., aii ,... ani ) T
H p . Ap H p .[1 2 ... p ... n. ] [ H p1 H p 2 ... H p p ... H p n ]
(3.31)
(3.32)
(3.33)
p 1
i 1
i 1
i p
v p . v Tp . p
H p p I m 2. T
vp . vp
(3.34)
(3.35)
2
m
aip dac i p
aip . vip
vip2 i p
dac i p
(3.36)
i p
Se alege
v ip a ip dac i p
(3.37)
n acest caz rezul din expresia (3.36) v pp a pp s 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
m
s p sign(a pp ) aip2
(3.38)
i p
64
a 'pp s p
(3.39)
Elementele de sub diagonal se fac zero iar cele situate n dreapta coloanei p se
calculeaz astfel:
H p . j j
2
m
vip2
.( v Tp . j ). v p
(j>p)
(3.40)
i p
2
(3.41)
( ( H p . j ) j a ij m
. v ip . a ij . v ip dac i p (j>p)
v ip2 i p
i p
Matricea superior triunghiular este dat de R= An 1 iar matricea inferior
}
calculeaz Ak 1 Qk * Ak ;
65
bk 1 Qk * bk ;
Q ( K ) Qk * q ( 1) ;
}
rezolv sistenul Am * x bm ;
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;
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];
}
67
a2
0
c1
b2
a3
0
0
0
c2
b3
0
0
0
0
c3
0
0
...
0
...
0
...
0
... a n 1
...
0
x1 d 1
x2 d 2
x3 d 3
c n 1 x n-1 d n-1
bn x n d n
0
0
0
0
0
0
bn 1
an
(3.42)
p2 l2
0 p3
0 0
0 0
0 ...
0 ...
0
0
l3 ...
0 ... pn-1
0 ... 0
0 1
0 0
0 0 0
ln-1 0 0
pn ln 0
0
0
u1 0 0 ... 0
1 u2 0 ... 0
0 1 u3 ... 0
0
0
0
0
0 ... 1
0 ... 0
0 b1
0 a2
0 0
un-1 0
1 0
c1 0 0 ...
b2 c2 0 ...
0
0
0
0
a3 b3 c3 ...
0
0
0
0
cn-1
bn
(3.44)
i=2 ,3,...,n
i=1,2 ,3,...,n
l1 b1
li bi a i ui-1
(3.45)
i=2 ,3,...,n
i = 1,2,...,n
LUX=D
(3.46)
U X=Y
(3.47)
68
l1
a2
0
...
l2
...
a3
l3
...
... a n-1
l n-1
...
an
0 y1 d 1
0 y2 d 2
0 y3 d 3
0 y n-1 d n-1
ln y n d n
(3.48)
y1 l
d i a i y i-1
yi
, i=2 ,3,...n
ti
(3.49)
0 1
0 0
0 0
0 0
... 0
u2
... 0
u3
... 0
... 1 u n-1
... 0
0
0
un
x1 y1
x2 y2
x3 y3
x y
n-1 n-1
xn yn
(3.50)
x i y i si x i 1 ,
i=n-1,...,1
(3.51)
69
c1
;
l1
ci
li
d1
l1
d i a i y i-1
li
calculeaz xn = y n
pentru i= n-1 .... 1 calculeaz xi = yi - si xi+1 ;
tiparete soluiile xi 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] )
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;
}
71
Dintre metodele indirecte sau metodele iterative care rezolv un sistem de ecuaii
liniare amintim: metoda lui Jacobi, metoda Gauss-Seidel.
b1
a
a
a
0 12 x 2 13 x 3 ... 1n x n
a11
a11
a11
a11
b2
a 21
a 23
a 2n
x2
x1 0
x 3 ...
xn
a 22 a 22
a 22
a 22
-----------------------------bn a n 2
a
xn
(3.52)
0
x
1
a 21
x
2
unde X ; C= - a 22
xn
- a n1
a nn
a12
a11
0
a n2
a nn
a13
a11
a 23
a 22
a n3
a nn
-
(3.54)
a1n
b1
a11
a11
a2n
b2
... a 22 ; D= a 22
-
b
n
...
0
a nn
... -
(3.55)
(k)
C X
(0)
(C
k-1
k-2
(3.56)
...... C I)D
Seria matriceal geometric S=I+C 1 C 2+....+C K-1 ... este convergent atunci cnd
norma sau toate valorile proprii ale matricei C sunt subunitare i are suma S=(I-C) -1 .
72
j=1
j i
a ij
a ii
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;
: 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
n
calculeaz i
j=1
j i
a ij
a ii
dac 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
73
calculeaz xi k
bi
a i,i
pentru j= 1... n
calculeaz xi k xi k
i =i+1;
pn cnd i = n+1;
k = k+1;
pn cnd x i k x i k-1
k
scrie soluiile xi = x i
STOP
}}
a i,j
a i,i
x jk-1 ;
i = 1...n
i = 1... n
}
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,
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)
=(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;
}
x1[i]-
xi k
i-1 a
n a
bi
ij (k)
ij (k-1 )
xj
xj
a ii j=1 a ii
j=i+1 a ii
(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 .
75
calculeaz i
j=1
j i
a ij
a ii
dac 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 xi k
bi
a i,i
pentru j= 1... n
{
dac j < i atunci
calculeaz xi k xi k
ai,j
ai,i
k
xj ;
76
dac j > i atunci
calculeaz xi k xi k
}
i =i+1;
pn cnd i = n+1;
k = k+1;
pn cnd x i k x i k-1
k
scrie soluiile xi = x i
STOP
}
a i,j
a i,i
x jk-1 ;
i = 1...n
i = 1... n
}
}
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;
}
78
f1
f2
f
n
x ,x ,...,x 0
x ,x ,...,x 0
1
(3.60)
---------------
x ,x ,...,x 0
1
Dac cel puin una din funciile f 1 , f 2 , f 3 ... f n sunt neliniare n variabilele x1 ,x 2 ,...,x n
sistemul de ecuaii (3.59) sau (3.60) se numete sistem de ecuaii neliniare.
x1 ,x 2 ,...,x n
(3.61)
sistemului f i x1 ,x 2 ,...,x n = 0 pentru i = 1,2,...,n
fi
; i , j = 1,2,...,n sunt continue pe V i iacobianul
Dac f i ( x1 ,x 2 ,...,x n ) i
xj
f1
f1
f1
...
x
x2
x n
1
F( x ) = ----------------
fn
fn
f n
...
x1 x 2
x n
(3.62)
x k+1 x k F x k
f xk ,
k = 1,2,....
(3.63)
i = 1,2,...,n , k = 0,1,2,....
(3.64)
79
x j k+1 x j k = j,k
xn
x1 x 2
f2
f2
f2
...
x
x2
xn
1
f
n
n
n
...
x1 x 2 x n
X 1K f 1 x
X 2 K f 2 x
X nK f n x
(3.65)
x=x k
x=x k
(3.67)
xj
a) Matricea funcional F ( x) =
cu proprietatea ca 0
A0 ;
b) 0 f x 0 x k x 0 B0 ;
2 f i x
C , i,j = 1,2,...,n i x u( x 0 ,g ) ;
p =1 x j x p
n
c)
x k+1 x k F x k
f ( xk )
k = 0,1,2,...
k-1
h02
B0 .
80
{ Variabile
X : valorile soluiilor iterative , vector ;
X : valorile de modificare a soluiilor iterative , vector ;
X0 : soluia de start a sistemului , vector ;
det F : determinanatul matricei F(x) ;
{
k = 0;
Dac det F = det F( xk ) = 0 atunci scrie Alege alt soluie de start
STOP
altfel
{ repet
k = k+1;
calculeaz F ( xk-1 ) ;
{ rezolv sistemul liniar
f i ( x k-1 )
x j,k x j ,k-1 f i ( x k-1 ) i = 1,2,...,n
xj
j=1
calculeaz
x j,k x j,k-1 x j,k-1 ,
j = 1,2,...,n
}
pn cnd
x j,k x j,k-1 ,
j = 1,2,...,n
sau F(xk-1 ) = 0
}
Soluiile sistemului sunt
}
}
81
82
3.3. APLICAII
1. Se d circuitul electric din figura 3.1 ce are urmtoarele componente:
. k, R4 1k,
R1 2.4k, R2 3.6k, R3 15
. k, R6 2.7k, R7 12
. k, R8 3k,
R5 18
V
V
V
10
,
12
,
15
E1
E2
E3
E1
R5
R2
R3
R4
E2
R7
R6
E3
R8
Fig.3.1.Circuitelectriccusursedeccirezistoare
R1 I 1 R2 I 2 0 I 3 0 I 4 0 I 5 0 I 6 0 I 7 E1
0 I R I R I R I 0 I 0 I 0 I 0
2
2
3
3
4 4
5
6
7
1
0 I 1 0 I 2 R3 I 3 0 I 4 0 I 5 R6 I 6 R7 I 7 E 2
0 I 1 0 I 2 0 I 3 0 I 4 R5 I 5 R6 I 6 0 I 7 E 3
I I I 0 I I I 0 I 0
2
3
4
5
6
7
1
I1 I 2 0 I 3 I 4 0 I 5 0 I 6 0 I 7 0
0 I 0 I 0 I 0 I I I I 0
2
3
4
5
6
7
1
0 I 1 0 I 2 0 I 3 0 I 4 4,8 I 5 2,7 I 6 0 I 7 15
I I I 0 I I I 0 I 0
2
3
4
5
6
7
1
I1 I 2 0 I 3 I 4 0 I 5 0 I 6 0 I 7 0
0 I 0 I 0 I 0 I I I I 0
2
3
4
5
6
7
1
83
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 x1 0.4 x 2 x 3 0.7 x 4 3.2
0.23x1 5.4 x 2 15
. x 3 01
. x 4 2.7
13
. x1 0.34 x 2 6.2 x 3 0.3x 4 14
.
0.3x1 14
. x 2 0.34 x 3 2.8 x 4 2.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.
lim
f(x0 x) f(x0 )
x
(4.1)
f x0 x f x0
(4.3)
f x0 x f x0 x
2 x
D+ D 2
(4.4)
Derivarea numeric
85
f ' x0
f x0
f x0
2
h
(4.5)
h
h
f ' x0 f ' x0
2
2
f x0
h
f x0 h f x0 f x0 f x0 h
h2
f x0 h 2 f x0 f x0 h
(4.6)
h2
h
h
f '' x0 f '' x0
2
2
f ''' x0
h
''
y f ( x)
h
h
h
h
3
3
f x0 h 2 f x0 f x0 f x0 2 f x0 f x0 h
2
2
2
2
2
2
3
h
3
3
h
h
f xFig.4.1.GraficulderivateinpunctulQ
h 3 f x0 3 f x0 f x0 h
0 2
2
2
2
3
h
(4.7)
x-x0
x-x0 '
f ( x ) f ( x0 ) +
f x0
1!
2!
''
x0
3
x-x0
3!
f ''' ( )
(4.8)
86
unde
x , x0 . Substituim
x x0
h
2
n dezvoltarea lui
f ( x ) , (4.8).
h
h
h 2 ''
h3 '''
f x0 f x0 f ' x 0
f x0
f 1
2
2
8
48
h
unde 1 x0 ,x0 .
2
h
n dezvoltarea lui f ( x ) , (4.8)
Substituim x x 0
2
h
h
h 2 ''
h 3 '''
f x0 f x0 f ' x0
f x0
f 2
2
2
8
48
unde
(4.9)
(4.10)
h
h
f x0 f x0
'''
'''
h2 f 1 f 2
2
2
f ' x0
h
24
2
h
h
f x0 f x0
2
2
2 h
=
f '''
h
24
h
h
unde x0 ,x0 ,
2
2
(4.11)
Dac
h 2 '''
f
24
(4.12)
h
h
h2
der =
}
Derivata este der ;
}
f x0 0 .5h f x0 0 .5h
h
Derivarea numeric
87
f ( x ) ( x x0 )2 f ' ( x ) 2( x x0 ), f ' ( x0 ) 0 i
0 h12 a 0b h 22c
(4.16)
Deoarece h1, h2 > 0 i determinantul sistemului h1 h2 (h1 +h2 ) 0, sistemul
este unic determinat. Rezolvnd sistemul, se obin valorile necunoscutelor :
a
h22 h12
h1
h2
, b
, c
h1h2 (h1 h2 )
h2 h1 h2
h1 h1 h2
(4.17)
f ( x0 )
(4.18)
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 ( x0 )
( x x0 ) '
( x x0 )2 '
( x x0 )3 '
f ( x0 )
f ( x0 )
f ( )
1!
2!
3!
(4.19)
unde [x , x0 ] .
Substituim x x 0 h1 i rezult:
f ( x0 h1 ) f ( x0 )
unde 1 x0 -h1,x0 .
h1 '
h2
h3
f x0 1 f '' x0 1 f ''' 1
1!
2!
3!
f ( x0 h2 ) f ( x0 )
unde 2 x 0 ,x 0+h2 .
(4.20)
h2 '
h2
h3
f x0 2 f '' x0 2 f ''' 2
1!
2!
3!
(4.21)
Dac f ''' x M
h1h2
h2 f ''' 1 h1 f ''' 2
6 h1 h2
h1h2
h2 f ''' 1 h1 f ''' 2 (4.22)
6 h1 h2
(4.23)
atunci
h1h2
M
6
(4.24)
der =
Derivarea numeric
89
(4.29)
(4.30)
'
0 16h 4 a h 4 b 0c h 4 d 16h 4 e
(4.31)
Determinantul sistemului format de ecuaiile (4.27), (4.28), (4.29), (4.30), (4.31) este
= 144h10 0 pentru c h >0. Ca urmare sistemul dat este unic determinat i are
soluiile :
a = 12h9 , b = -96h9 , c = 0 , d = 96h9 , e = -12h9
(4.32)
Formula derivatei numerice prin cinci puncte a funciei f ( x ) este :
1
(4.33)
f ' ( x0 )
f x0 2h 8 f x0 h 8 f x0 h f x0 2h
12h
90
1
f x0 2 h 8 f x0 h 8 f x0 h f x0 2 h ;
12h
}
Derivata este der ;
}
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.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 h1 i h2 de punctul dat, valorile funciei. Aceste valori sunt date n tabelul
4.1
92
h1
A
B
C
D
E
F
G
H
I
J
K
L
h2
f1
f0
f2
0.7
2.3
40
60
0.1
27
50
65
70
150
200
250
275
300
400
450
0.2
40
77
68
0.2
0.2
0.2
0.01
0.3
0.3
0.2
0.01
0.2
0.2
0.25
0.1
0.3
0.3
0.2
0.1
130
190
220
250
0.2
0.2
0.3
0.3
380
440
170
240
295
300
430
470
Tabelul 4.1.
Derivata
0.223333
29.33333
92.53333
400.3333
86.66667
83.33333
38.33333
500.8922
100.4356
56.34012
2. Se consider funcia
f(x) 2 x 2 exp( x ) sin( 3 x 1.2)
f( 1 ) 15.628085
f 1 15.628085.
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.
*)Bibliografie: [6],[7],[15],[22]
94
I= f ( x )dx
(5.1)
ba
x i+1 x i h , i = 0,1,...,n-1.
n
(5.2)
ba
f ( xi )
n
(5.3)
i se nsumeaz
n 1
n 1
i 0
i= 0
si =h f ( xi )
(5.4)
unde x i a h 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.
y
f ( x i 1 )
f ( xi )
xi
x i 1
b x
Fig.5.1.ReprezentareagraficaintegraleiI
95
Integrarea numeric
sum=0;
calculeaz h
ld ls
n
I f ( x )dx
a
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
x i x i 1 x i
ba
h
n
, i=0,1,...,n-1
, x 0=a si x n =b
(5.5)
(5.6)
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
y
trapezului este superioar din
punct de vedere al erorilor de
trunchiere fa de metoda
dreptunghiului, dar ca timp de
f ( x i 1 )
(5.7)
(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 i , x i 1 ) .
Considernd x i 1 x i h putem scrie noua funcie astfel:
f ( x i+1 ) f ( x i )
f ( x i ) f ( x i 1 )
( x xi )
h f ( x i 1 )
2
2
f ( x i ) f ( x i 1 )
f ( x i 1 ) h 2
( x xi )2
h ( x xi )
f ( x i 1 ) ...
4
2
4
f ( x )=
f ( x )dx
xi
f ( x i 1 ) f ( x i )
f ( x i 1 ) f ( x i ) 2 f ( x i 1 ) 2
h
h
h
2
4
2
f ( x i+1 ) f ( x i ) 3 f ( x i 1 ) 3 f ( x i 1 ) 3
h
h
h ...
12
4
4
(5.9)
97
Integrarea numeric
f ( x i 1 ) f ( x i )
f ( x i 1 ) f ( x i ) 2 f ( x i 1 ) f ( x i ) 3
h
h
h ... (5.10)
2
4
12
f ( x i 1 ) f ( x i ) 2 f ( x i 1 ) f ( x i ) 3
h
h ...
4
12
(5.11)
(5.12)
x 2 dx
xi
x3
3
xi 1
xi
x i3 3 x i3
h3
x i2 h h 2 x i
3
3
(5.13)
2
x dx
xi
2
2
( x i+
h2
1 xi )
h eTi x i2 h x i h 2
eTi
2
2
(5.14)
(5.15)
(5.16)
1
12
Eroarea de trunchiere pentru trapezul ( x i , x i 1 , f ( x i ), f ( x i 1 )) este
1
eTi h 2 f ( x i 1 ) f ( x i )
(5.17)
12
iar pentru ntreaga integral pe intervalul a , b avem cu aproximaie eroarea de
trunchiere:
k=-
eT (1 / 2) h 2 f ' ( b) f ' ( a )
(5.18)
Aceast eroare reprezint aproximativ suma ariilor cuprinse ntre curb i coarda dus
prin punctele ( x i , f ( x i )), ( x i 1 , f ( x i 1 )) , i = 0,1,...,n-1
f ( x1 )
f ( x2 )
f ( x1 ) f ( x 2 )
2
r1 )
f ( x1 ) f ( x 2 )
f ( x1 ) f ( x 2 )
f ( x1 ) f ( x 2 ) f ( x 3 )
98
f ( x3 )
f ( x1 ) f ( x 2 ) ... f ( x n 2 )
r2 )... rn 3 )
f ( x1 ) f ( x 2 ) f ( x 3 )
f ( x1 ) f(x 2 ) ... f(x n 2 ) f ( x n 1 )
f ( x n1 )
2 f ( x1 ) 2 f ( x 2 ) ... 2( x n1 )
rn2 rn1 )
f ( x1 ) f ( x 2 ) ... f ( x n1 )
f ( x 0 ) 2 f ( x1 ) ... 2 f ( x n1 ) f ( x n )
n1
( 0
f ( x0 )
f (xn )
f ( x0 ) f ( x n )
n
rn )
f ( x 0 ) f ( x1 )
f ( x0 ) f ( x n )
f ( x 0 ) 2 f ( x1 ) ... 2 f ( x n 1 ) f ( x n )
rn 1 h rn 2 rn 1 h rn 2 rn
f ( x0 )
f ( xn )
(rn2 rn1 )
+rn-3
+ rn-4
f ( x0 ) f ( xn )
f ( x 0 ) 2 f ( x1 ) ... 2 f ( x n 1 ) f ( x n )
n-2
2 f ( xn2 )
f ( x0 ) 2 f ( x1 ) ... 2 f ( xn1 ) f ( xn )
...2
2 f ( x2 )
f ( x0 ) 2 f ( x1 ) ... 2 f ( xn1 ) f ( xn )
2 f ( x1 )
f ( x 0 ) 2 f ( x1 ) ... 2 f ( x n 1 ) f ( x n )
eI
I
(5.19)
h f ( x 0 ) f ( x n )
2
h f ( x0 )
n-1 h f ( x n 1 ) ( rn 1 rn 2 ) h f ( x1 ) f ( x 2 ) .... f ( x n 1 )
n 2 h f ( x n 2 ) rn 3 h f ( x1 ) f ( x 2 ) .... f ( x n 2 )
n 3 h f ( x n 3 ) rn 4 h f ( x1 ) f ( x 2 ) .... f ( x n 3 ) ....
2 h f ( x 2 ) 1 h f ( x1 ) r1 h [ f ( x1 ) f ( x 2 )]
(5.20)
99
Integrarea numeric
Fig.5.3.Grafuldeprocedurpentrumetodatrapezului
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 ) pentru i =
0, 1, 2,...., n , atunci rezult urmtoarea margine a erorii absolute:
e I 5 10 t [3 I h (
2 ( n 1) ( n 2 )
2
( n 3) ( n 4) ... 2 )]
5 10 t [ 3nh 5 h / 2 h ( n 2 3 n 8 ) / 2 ]
5 10 t h. ( n 2 9 n 3) / 2
e I 5 10 t h ( n 2 9 n 3) / 2
(5.21)
100
ld ls
n
calculeaz sum
f (ls ) f (ld )
h
2
eT=Ck2
(5.22)
I=Ih+Ch2
I=Ik+Ck2
(5.23)
101
Integrarea numeric
I h -I k
k 2 h2
I Ih
Ih Ik
(5.24)
k
1
h
expresie ce poart denumirea de formula lui Richardson i are o precizie mai mare
dect metoda trapezului.
ld ls
n
ld ls
calculeaz k
m
{ calculeaz h
;
;
f (l s ) f (ld )
h
2
f (l s ) f (ld )
calculeaz sumk
k
2
calculeaz sumh
pentru
i=1
pn
la
n-1
;
;
calculeaz
sumh
=sumh
+h* f (ls+i*h);
pentru i=1
f (ls+i*k);
calculeaz sum=sumh+(sumh-sumk)/((k/h)*(k/h)-1);
tiprete valoarea integralei sum;
}
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;
}
ba
m
, h
ba
n
(5.25)
(5.26)
I k h f ( x 0 ) 2 f ( x 2 ) 2 f ( x 4 )+2 f ( x 6 )+... 2 f ( x n 2 ) f ( x n )
(5.27)
Ih
I h
f ( x1 ) f ( x 2 )+f ( x 3 )+f ( x 4 )+... f ( x n 1 )
2
2
f ( xn )
1
1
1
1
f ( x0 ) 1
h
f ( x1 ) f ( x 2 )+ f ( x 3 )+ f ( x 4 )+... f ( x n 1 )
3
3
3
3
3
6
6
103
Integrarea numeric
2
2
2
1
1
h - f ( x 0 )- f ( x 2 )- f ( x 4 ) -... f ( x n 2 ) f ( x n )
3
3
3
3
3
h
f ( x 0 ) 4 f ( x1 ) 2 f ( x 2 )+4 f ( x 3 )+... 4 f ( x n 1 ) f ( x n )
3
(5.28)
Expresia reprezint formula de calcul numeric al integralei pentru metoda lui Simpson.
ld ls
n
calculeaz sum h.
f (ls ) f (ld )
3
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.29)
y =1. Substituia este dat de
formula:
1
1
(b a ) y (b a )
2
2
1
dx (b a )dy
2
(5.30)
(5.31)
I f ( x )dx
Ca urmare, integrala
se transform n integrala:
+1
1
+1
f 2 ( b a ) y 2 ( b a ) 2 ( b a )dy ( y )dy
(5.32)
105
Integrarea numeric
z a 0 a1 y
z ( y)
y0
y1
Fig.5.4.Reprezentareagraficafunciei z ( y ) iapunctelordedivizare
I ( y )dy
s dea
+1
+1
-1
-1
I= ( y )dy= (a 0 a1 y )dy
(5.34)
106
+1
(5.37)
( y y 0 )( y y1 )dy 0
(5.38)
y( y y 0 )( y y1 )dy 0
(5.39)
1
+1
(5.40)
sau
cu soluiile
y 0 y1 0
3
y 0 y1 0
1
1
y0
i
y1
3
3
(5.41)
(5.42)
+1
I = ( y ) dy = ( a 0 a1 y )dy k 0 (
-1
+1
-1
(a 0 a1 y)dy (a 0 y
a1 2
y )
2
+1
1
) k 1 (
2a 0
1
3
(5.43)
(5.44)
1
3
a1 ) k 1 (a 0
1
3
a 1 ) 2a 0
(5.45)
k 0 k1 0
k 0 1 , k1 0
(5.46)
cu soluiile:
(5.47)
Formula de calcul a integralei prin metoda cuadraturii gaussiene cnd utilizm dou
puncte de divizare este:
b
I f ( x ) dx
unde:
( y)dy (
( y)
1
3
) (
1
(b a ) f ( y )
2
1
3
(5.48)
(5.49)
107
Integrarea numeric
( y ) dy y 4 dy
( y ) dy
y5
5
y 4 dy (
1
3
2
5
) (
(5.51)
1
3
) eT
2
e
9 T
(5.52)
8
45
de unde rezult
1
135
Eroarea de trunchiere pentru formula cuadraturii gaussiene prin dou puncte este:
eT
1 ( IV )
( )
135
-11
(5.53)
n 1
i0
f ( x)dx (u)du k i ( yi )
(5.54)
(5.55)
108
2
(1 y i2 ) Pn ( y i )
(5.56)
y 2 n 1
(2n 1)
n 1
i 0
( y )dy y
2n
dy
1
1
2
2n 1
( y )dy y 2n dy k i yi 2n eT
(5.58)
(5.59)
n 1
2
k i yi2 n
2n 1 i 0
(5.60)
n 1
1 2
k i ui2 n
(2n)! 2n 1 i 0
(5.61)
(2n) ( )
n 1
k i ui2 n
(2n)! 2n 1 i 0
(5.62)
109
Integrarea numeric
0.652145145862564
0.347854854137454
0
0
0
0
110
0
0
/* n=5 */
{0.236926885056189,
0.568888888888889,
0.236926885056189
0,
0,
0,
0,
0,
/* n=6 */
{ 0.17132449237917,
0.467913934572691,
0.360761573048139,
0,
0,
0,
0.
0,
/* n=7 */
{0.12948496616887,
0.381830050505119,
0.381830050505119,
0.12948496616887,
0,
0,
0,
0,
/* n=8 */
{0.101228536290376,
0.313706645877887,
0.362684783378362,
0.222381034453374,
0,
0,
0,
0,
/* n=9 */
{ 0.08127438361574,
0.260610696402935
0.33023935500126
0.260610696402935,
0.08127438361574,
0,
0
0}
0.478628670499366
0.478628670499366,
0,
0,
0,
0,
0,
0}
0.360761573048139,
0.467913934572691,
0.17132449237917,
0,
0,
0,
0,
0}
0.279705391489277,
0.417959183673469,
0.279705391489277,
0,
0,
0,
0,
0}
0.222381034453374,
0.362684783378362,
0.313706645877887,
0.101228536290376,
0,
0,
0,
0},
0.180648160694857
0.312347077040003,
0.312347077040003,
0.180648160694857,
0,
0,
111
Integrarea numeric
0,
0,
/* n=10 */
{0.066671344308688,
0.219086362515982,
0.295524224714753,
0.269266719309996,
0.14945134915058,
0,
0,
0,
/* n=11 */
{0.055668567116,
0.186290210928,
0.26280454451,
0.26280454451,
0.186290210928,
0.055668567116,
0,
0,
/* n=12 */
{0.047175336387,
0.160078328542,
0.233492536538,
0.249147045813,
0.203167426723,
0.106939325995,
0,
0,
/* n=13 */
{0.040484004765,
0.13887351022,
0.207816047537,
0.232551553231,
0.207816047537
0.13887351022,
0.040484004765,
0,
0,
/* n=14 */
{0.035119460332,
0.121518570688,
0.185538397478,
0.215263853463,
0.205198463721,
0,
0},
0.14945134915058
0.269266719309996,
0.295524224714753,
0.219086362515982,
0.066671344308688,
0,
0,
0},
0.125580369465,
0.233193764592,
0.272925086778,
0.233193764592,
0.125580369465,
0,
0,
0},
0.106939325995,
0.203167426723,
0.249147045813,
0.233492536538,
0.160078328542,
0.047175336387,
0,
0},
0.092121499838,
0.178145980762,
0.226283180263
0.226283180263,
0.178145980762,
0.092121499838
0,
0},
0.08015808716,
0.157203167158,
0.205198463721,
0.215263853463,
0.185538397478,
112
0.157203167158,
0.08015808716,
0,
/* n=15 */
{0.030753241996,
0.107159220467,
0.166269205817,
0.198431485327,
0.198431485327,
0.166269205817,
0.107159220467,
0.030753241996,
/* n=16 */
{0.027152459412,
0.095158511682,
0.149595988817,
0.182603415045,
0.189450610455,
0.169156519395,
0.124628971256,
0.062253523939,
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,
0,
0,
0,
0,
0,
0,
/* n=3 */
{
0.7745966692,
-0.7745966692
0,
0,
0,
0,
0,
0.121518570688,
0.035119460332,
0},
0.070366047488,
0.139570677926,
0.186161000016,
0.202578241926,
0.186161000016,
0.139570677926,
0.070366047488,
0},
0.062253523939,
0.124628971256,
0.169156519395,
0.189450610455,
0.182603415045,
0.149595988817,
0.095158511682,
0.027152459412};
-0.5773502692,
0,
0,
0,
0,
0,
0,
0},
0,
0,
0,
0,
0,
0,
0,
113
Integrarea numeric
0,
/* n=4 */
{0.861136311594053,
-0.339981043584856,
0,
0,
0,
0,
0,
0,
/* n=5 */
{0.906179845938664,
0,
-0.906179845938664,
0,
0,
0,
0,
0,
/* n=6 */
{0.932469514203152,
0.238619186083197,
-0.661209386466265,
0,
0,
0,
0,
0,
/* n=7 */
{0.949107912342759,
0.405845151377397,
-0.405845151377397,
-0.949107912342759,
0,
0,
0,
0,
/* n=8 */
{0.96269856497336,
0.525532409916329,
-0.18343464249565,
-0.796666477413627,
0,
0,
0,
0},
0.339981043584856,
-0.861136311594053,
0,
0,
0,
0,
0,
0}
0.538469310105683,
-0.538469310105683,
0,
0,
0,
0,
0,
0},
0.661209386466265,
-0.238619186083197,
-0.932469514203152,
0,
0,
0,
0,
0},
0.741531185599394,
0,
-0.741531185599394,
0,
0,
0,
0,
0},
0.796666477413627,
0.18343464249565,
-0.525532409916329,
-0.96269856497336,
0,
0,
0,
114
0,
/* n=9 */
{0.968160239507626,
0.613371432700591,
0,
-0.613371432700591,
-0.968160239507626,
0,
0,
0,
/* n=10 */
{0.973906528517172,
0.679409568299024,
0.148874338981631,
-0.433395394129247,
-0.865063366688985,
0,
0,
0,
/* n=11 */
{0.978228658146,
0.730152005574,
0.269543155952,
-0.269543155952,
-0.730152005574,
-0.978228658146,
0,
0,
/* n=12 */
{0.981560634247,
0.769902671494,
0.367831498998,
-0.125233408511,
-0.587317954287,
-0.90411725637,
0,
0,
/* n=13 */
{0.984183054719,
0.801578090733,
0.448492751036,
0,
-0.448492751036,
-0.801578090733,
-0.984183054719,
0,
0},
0.836031107326636,
0.324253423403809,
-0.324253423403809,
-0.836031107326636,
0,
0,
0,
0},
0.865063366688985,
0.433395394129247,
-0.148874338981631,
-0.679409568299024,
-0.973906528517172,
0,
0,
0},
0.887062599768,
0.519096129207,
0,
-0.519096129207,
-0.887062599768,
0,
0,
0},
0.90411725637,
0.587317954287,
0.125233408511,
-0.367831498998,
-0.769902671494,
-0.981560634247,
0,
0},
0.917598399223,
0.64234933944,
0.230458315955,
-0.230458315955,
-0.64234933944,
-0.917598399223,
0,
0},
115
Integrarea numeric
/* n=14 */
{0.986283808697,
0.82720131507,
0.515248636358,
0.108054948707,
-0.319112368928,
-0.687292904812,
-0.928434883664,
0,
/* n=15 */
{0.98799251802,
0.84820658341,
0.570972172609,
0.201194093997,
-0.201194093997,
-0.570972172609,
-0.84820658341,
-0.98799251802,
/* n=16 */
{0.989400934992,
0.865631202388,
0.617876244403,
0.281603550779,
-0.095012509838,
-0.458016777657,
-0.755404408355,
-0.944575023075,
0.928434883664,
0.687292904812,
0.319112368928,
-0.108054948707,
-0.515248636358,
-0.82720131507,
-0.986283808697,
0},
0.937273392401,
0.72441773136,
0.394151347078,
0,
-0.394151347078,
-0.72441773136,
-0.937273392401,
0},
0.944575023075,
0.755404408355,
0.458016777657,
0.095012509838,
-0.281603550779,
-0.617876244403,
-0.865631202388,
-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;
}
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.
f ( x )dx
f ( x )dx
f ( x)dx
(5.63)
f ( x)dx
(5.64)
f ( x )dx k
A
lim
(5.65)
f ( x)dx k
atunci
(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)dx
(5.67)
unde este o constant pozitiv suficient de mic. n acest caz integrala improprie
f ( x ) dx f ( x ) dx
(5.68)
117
Integrarea numeric
f (c 0) lim f ( x )
f (c 0) lim f ( x )
x c
x c
x c
x c
(5.69)
f ( c ) f ( c 0) i f ( c ) f ( c 0) sau f ( c ) f ( c 0) .
b
(5.70)
unde
axc
pentru
f ( x)
f 1 ( x)
f (c 0) pentru
xc
pentru c x b
f ( x)
f 2 ( x)
f ( x c) pentru x c
ce
ce
(5.71)
f ( x)dx
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).
118
bd
f ( x,y)dx f ( x,y)dxdy
D
c
a
a c
(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.
Fig.5.5.Reprezentareagraficadreptunghiuluide
integrare
ba
,
n
d c
m
(5.73)
xi , yi , xi 1 , yi , xi 1 , yi 1 , xi , yi 1 ,
Pentru dreptunghiul dat care conine vrful x i , y i se calculeaz integrala IIJ aplicnd
formula trapezului.
y j 1
xi 1
I ij
dx
xi
xi 1
f ( x,y )dxdy
yj
xi
k
f ( x,y j ) f ( x,y j 1 ) dx
x
xi 1
k i 1
f ( x , y j )dx f ( x , y j 1 )dx
2x
xi
i
k h
f ( x i ,y j ) f ( x i ,y j 1 ) f ( x i 1 ,y j ) f ( x i 1 ,y j 1 )
4
Integrala pe ntreg dreptunghiul a , b, c, d este:
n1m1
I Iij
i 0 j 0
(5.74)
kh n1m1
f (xi,yj ) f (xi ,yj1) f (xi1,yj ) f (xi1,yj1)
4 i 0 j 0
(5.75)
Integrarea numeric
119
b a
n
calculeaz k
dc
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;
}
}
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;
}
xi 1 y j 1
I ij
f ( x,y ) dxdy
xi 1 y j 1
xi 1
xi 1
k
f ( x,y j 1 ) 4 f ( x,y j ) f ( x,y j 1 ) dx
3
kh
f ( x i 1 ,y j 1 ) f ( x i 1 ,y j 1 ) f ( x i 1 ,y j 1 ) f ( x i 1 ,y j 1 )
9
4 f ( x i ,y j 1 ) f ( x i ,y j 1 ) f ( x i 1 ,y j ) f ( x i 1 ,y j ) 16 f ( x i ,y i )
I Iij
i 0 j 0
( 5.76)
este dat de formula de cubatur a lui
kh n1m1
f (xi 1,y j 1) f (xi 1,y j 1) f (xi 1,y j 1) f (xi 1,y j 1)
9 i 0 j 0
4 f ( xi ,y j 1 ) f ( xi ,y j 1 ) f ( xi 1,y j ) f ( xi 1,y j ) 16 f ( xi ,y j )
(5.77)
Integrarea numeric
121
b a
;
n
dc
;
calculeaz k
m
{ calculeaz h
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;
}
}
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)
2
x3
.e x .(1 sin x 2 )
1 cos(1 x )
Numrul de
subintervale
10000
10000
5000 i 10000
10000
Grad pol Legendre
n=15
Valoarea integralei
1394.642843
1395.704297
1395.703984
1395.703984
1395.7031
x2 y2
. exp(1 x ). sin( x y 2)
1 2.x.y
Nr. Pct. Pe Ox
100
100
Nr. Pct. Pe Oy
100
100
Valoarea integralei
-24.730047
-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.
x0
y0
x1
y1
.
.
xk
yk
Tabelul 6.1.
xn
.
.
yn
Cunoatem valoarea funciei n n+1 puncte. Prin n+1 puncte se poate duce un polinom
de gradul n, unic determinat.
Fie polinomul:
Pn ( x) a n x n a n 1 x n 1 ... a1 x a 0
Conform tabelului 6.1 avem sistemul:
a n x 0 n a n 1 x 0 n 1 a1 x 0 a 0 y 0
n
n 1
a n x1 a n 1 x1 a1 x1 a 0 y1
a n x nn a n 1 x nn 1 a1 x n a 0 y n
________________________________
*) Bibliografie: [1],[6],[7],[15],[21],[22]
Acest sistem are n+1 ecuaii cu n+1 necunoscute, a 0 , a1 , a 2 ,..., a n 2 , a n 1 , a n .
Considerm sistemul omogen:
124
a n x 0 n a n 1 x 0 n 1 a1 x 0 a 0 0
a n x1 n a n 1 x1 n 1 a1 x1 a 0 0
a n x nn a n 1 x nn 1 a1 x n a 0 0
(6.3)
n ( x ) ( x x 0 )( x x1 )...( x x n 1 )
(6.5)
(6.6)
b0
Pn ( x0 )
P (x )
P (x )
, b1 n 1 ,...,bk n k ,...,
0 ( x0 )
1 ( x1 )
k ( xk )
bn
Pn ( x n )
n ( xn )
(6.7)
Ca urmare,
x x
n
Pn (x) Pn (xi )
i 0
i (x)
yi
i (xi ) i 0
n
j 0, j i
x x
n
yi
i 0
x xj
j 0, j i
xi x j
j 0, j i
Polinomul de gradul n care trece prin n+1 puncte date, numit i polinomul de
interpolare al lui Lagrange, are forma:
n
n
x xj
.
(6.8)
Pn x y i
x
i 0
j 0, j i i x j
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 x0 i x n .
Interpolarea
125
x xj
eT f x y i
i0
j 0, j i x i x j
F x
(6.9)
Construim funcia
G ( x ) ( x x 0 )( x x1 )...( x x n )
(6.10)
n 1
t F x G n1 t F n1 t G x ( n 1)! F x f n1 t G x
n 1
H ( n 1) 0 ( n 1)! F x f G x
sau
eT F x
n 1
( n 1)!
x0 xn
(6.12)
(6.13)
n 1
n 1
x xj
i0
j 0 ,j i
xi x j
yi zi unde zi
i pi yk z k , P( x ) pn
k0
(6.14)
126
-1
-1
xi
zj
j1
Considerm
ki
toate
valorile
xi ,
i=1,2,...
,n,
fr
erori
notm
cu
avem eroarea de rotunjire 0 =0, deoarece z0 iniializat este 1 i are eroarea zero.
0 0
i
i
i
2 31
41
0i 11i 21
i
i
i
32
42
0i
1i 12i 22
(6.15)
ni 1 1i, n 1 2i , n 1 3i , n 1 4i , n 1 ni 2
n expresia (6.15) lipsete termenul ii . Din (6.15) rezult:
n 1
ni 1 1 j 2 j 3 j 4 j
j 0
i j
(6.16)
i 4 n 1
(6.17)
i=0,1,2,...,n-1
Construim graful de procedur pentru expresia pi .
(6.18)
Interpolarea
127
zi
zi yi
pi
pi 1
pi
yi
pi
pi-1
n 1
y k zk
k0
z0 y0
60
p0
z1 y1
p
1 1 61
p1
p2
z n y n 1
p
n 1 n 2 6,n 1
pn 1
pn 1
1 1 e1 31
n 1 n 1 en 1 5, n 1
(6.19)
n 1
n 1
n 1
i 0
i 0
i 0
i 0
n 1| pn1| 4n 3 e zi yi pi 4n 3 e pi pi
n 1
| pi | npn 1
i rezult:
i0
n 1 2n 2n 1 en
expresie care reprezint eroarea de rotunjire pentru interpolarea lagranjian.
(6.20)
x x2
x x1
y2
x1 x 2
x 2 x1
2!
x x1 x x2
(6.21)
x1 x 2
(6.22)
128
i eroarea de rotunjire:
2 12 2e
(6.23)
x xj
xi x j
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.24)
n f x n 1 f x
(6.25)
c1 f 1 c 2 f 2 c1 f 1 c 2 f 2
(6.26)
n f x 1 C nk f x n k h
k
k 0
(6.27)
yi
yi
x0
y0
y0
x1
y1
x2
2 yi
3 yi
y1
2 y 0
3 y 0
y2
y 2
2 y1
x3
y3
y3
x4
y4
x5
y5
x6
y6
Tabelul 6.2
4 yi
5 yi
3 y1
4 y 0
5 y 0
2 y2
3 y 2
4 y1
5 y1
y 4
2 y3
3 y3
4 y 2
y5
2 y 4
6 y i
6 y 0
(6.28)
130
1. Diferena finit a puterii generalizate este:
x n nhx n 1
(6.29)
(6.30)
Fie funcia tabelat dat n tabelul (6.1), unde reeaua x 0 , x1, x2 , x3 ,..., x n este cu
pasul constant h.
Prin cele n+1 puncte trece un polinom de gradul n pe care l cutm sub forma
(6.31)
Pn ( x ) C0 C1( x x0 )[1] C2 ( x x0 )[2] ... Cn ( x x0 )[n ]
, i =1, 2, ...n
unde
( x x0 )[i ] ( x x0 )( x x1 )...( x xi 1 )
i coeficienii C0 , C1,..., Cn sunt necunoscute pe care le vom calcula. Se observ c
Pn ( x0 ) y0 C0
(6.32)
Calculm diferena finit de ordinul nti :
Pn ( x ) C1h 2C2 h( x x0 )[1] ... nCn h( x x0 )[ n 1]
(6.33)
Fcnd substituia x x0 rezult Pn ( x0 ) C11!h .
C1
Se poate calcula
Pn x 0
1! h
(6.34)
k
Pn x 0
k !h k
k Pn x 0 k y 0 , k=0, 1, 2, ... n.
(6.35)
y 0
2 y
n y
x x 0 1 20 x x 0 2 n0 x x 0 n
1! h
2!h
n !h
(6.36)
Interpolarea
131
calculeaz yj=yj+1-yj
1 1
prod prod * x p x0 i 1 * h * * ;
h i
sum=sum+y0*prod; }
valoarea interpolat este sum ;
} }.
132
y n 1
.
1! h
Continund calculele diferenelor finite n punctele xn 2 , xn 3 ,..., xn k , pentru rangul k
k y n k
(6.41)
k !h k
prod prod * x p x n i 1 * h *
1 1
* ;
h i
sum=sum+yn*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;
}
f x i , x i 1 , ..., x i k f x i 1 , x i ,..., x i k 1
x i k x i 1
(6.43)
134
Pn ( x ) y0 Pn ( x0 , x1 )( x x0 ) Pn ( x0 , x1, x2 )( x x0 )( x x1 )...
Pn ( x0 ,..., x n )( x x0 )( x x1 )...( x x n 1 )
(6.46)
calculeaz y j
y j 1 y j
x j i x j
}
valoarea interpolat este sum;
}
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;
}
Tabelul 6.3
y0
x1
y1
y 01
x2
y2
y02
y012
x3
y3
y03
y013
y0123
x4
y4
y04
y014
y0124
-----
----
----
----
----
xn
yn
y0 n
y01n
y012 n
y0 j
xj x
x j x0
y0
xj x
x x0
yj
x j x0
----------
j=1, 2, 3, ..., n
x x1
j=2, 3, ..., n
y0 j
x j x1
x j x1
- - - - - - - - - - - - - - - ---------------x x
x x n 1
y 012...n n
y 012...n 2 n 1
y 012...n 2 n
x n x n 1
x n x n 1
y 01 j
y 01
y0123...n
(6.47)
(6.48)
136
xp x j
x i 1 x j
yj
x p x i 1
x j x i 1
}
valoarea interpolat este yn ;
}
x
y
x1
x2
x3
y1
y2
y3
-------
xn
yn
Interpolarea
137
dac
(6.50)
x [xi , xi 1 ] , i =1,2,...,(n-1)
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 xi , i =1,2,...,n. Gradul de netezire
al funciei este m. Restriciile funciei sunt polinoamele:
Si(x)=Aixm + Bixm-1 + Cixm-2 + Eixm-3 + ... +Ri
(6.51)
dac, x [xi , xi 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 Si(x) pe intervalul [xi , xi 1 ] este o funcie liniar i trece
prin punctele ( xi , Di ) i ( xi 1, Di 1 ) unde,
Rezult ecuaia liniar:
S i( m1) ( x )
Di 1 ( x x i ) Di ( x i 1 x )
hi
(6.52)
Si
( m 3)
Si(x)
Di 1 ( x x i ) 2 Di ( x i 1 x ) 2
C1i
2 hi
( x)
Di 1 ( x xi ) 3 Di ( xi 1 x) 3
C1i x C 2i
6hi
...Cm1,i
(n 1)!hi
(m 3)! (m 4)!
Si ( x )
(6.53)
(6.54)
(6.55)
n!hi
( m 2 )! ( m 3)!
Pentru ntreg intervalul [a, b] rezult un sistem liniar punnd condiia ca Si(xi)=yi ,
i=1,2,..,n i continuitatea celor (m-1) ecuaii n toate punctele xi . n extremele x1 i
x2 se scrie polinomul lui Lagrange, l derivm pn la m-1 i aflm corespunztor
valorile derivatelor n x1 i xn . Rezult necunoscutele:
Di , Di+1 , C1i ,..., Cm-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 Si polinoame de gradul 3.
n acest caz:
Si(x)=Aix3 + Bix2 + Cix + Ei
(6.57)
138
S i ( x)
Di 1 ( x xi ) Di ( xi 1 x)
hi
S i( x)
Di 1 ( x xi ) 2 Di ( xi 1 x) 2
C1i
2hi
Si (x)
Di 1 ( x x i ) 3 Di ( x i 1 x ) 3
C1i x C2i
6 hi
(6.58)
Din S ( x i ) y i i S ( x i 1 ) y i 1 rezult:
C1i
y i 1 y i Di 1 Di
hi
6
hi
C2 i
x i 1 y i x i y i 1 Di x i1 Di1 x i
hi
6
hi
Di 1 x i2 Di x i21 y i 1 y i Di 1 Di
hi
2hi
6
hi
Ei
x i31 Di x i3 D i 1 y i x i 1 y i 1 x i Di x i 1 D i 1 x i
hi
6 hi
6
hi
(6.59)
(6.60)
6
hi
hi 1
(6.61)
y 2 y1 y 3 y 2 y 3 y1
x 2 x1 x 3 x 2
x 3 x1
(6.62)
respectiv
y n
y n 1 y n 2 y n y n 1 y n y n 2
x n 1 x n 2 x n x n 1 x n x n 2
(6.63)
Interpolarea
139
y2 y1
y1
2h1 D1 h1 D2 6
h
y 4 y3 y3 y 2
........................................................................................
yi1 yi yi yi1
.........................................................................................
yn y n1 y n1 yn2
y n y n1
(6.64)
y 2 y1 y 3 y 2 y 3 y1
;
x 2 x1
x3 x 2
x 3 x1
140
calculeaz derxn
y n 1 y n 2
y y n 1 y n y n 2
n
;
x n 1 x n 2
x n x n 1
x n x n2
derx1 )
2.h1.D1 h1.D2 0.D3 0.Dn 6( h
1
y3 y2 y2 y1
)
0.D1 h1.D2 2(h1 h2 )D2 h2 D3 0.D4 0.Dn 6(
h2
hi 1
y n y n 1
)
0.D1 0.D2 0.D3 hn 1Dn 1 2.hn 1.Dn 6(derxn h
n 1
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;
142
x
y
x1 a
x2
x3
y1
y2
y3
-------
x 2n b
y 2n
H ( x ) a i i
a i2 0
cu
(6.65)
i0
i0
2 ( x a )
ba
sin
i 0
j 0
j i
sin
I n f ( xi )
x xj
2
xi x j
(6.67)
2
Se observ o analogie ntre polinomul de interpolare al lui Lagrange i polinomul
de interpolare a funciilor periodice (6.67).
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
;
ba
sum=0;
pentru i=0,1,...,n
{prod=1;
pentru j=0,1,...,n dac ji atunci
calculeaz
prod prod
sin T ( x x j )
sin T ( x i x j )
calculeaz
sum=sum+yiprod;
}
valoarea interpolat este sum
}
}
144
}
return sum;
}
(6.68)
a11
a12 a13
0
... a1( n 1)
a10
a( n 2 )0 a( n 2 )1 a( n 2 )2 0
0
0
. ..
0
0
0
...
a( n 1)0 a( n 1)1 0
0
0
0
0
0
...
a n0
(6.69)
( n 1)( n 2)
ecuaii.
2
Aceste ecuaii le putem obine numai din punctele date x i , y i , f ( x i , y i ) care trebuie
( n 1)( n 2)
.
2
Ca urmare, punctele n care se cunoate funcia este necesar s se dea sub form
triunghiular:
( x0 , y0 )
( x 0 , y1 )
x 0 , y 2 ... x 0 , y n
( x1 , y 0 )
x1 , y1
x1 , y 2 ... 0
(x , y )
0
0
...
x n1 , y1
n 1 0
(x , y )
0
0
0
...
n 0
(6.70)
Interpolarea
145
a11 ( x x 0 ) 1 ( y y 0 ) 1 a 02 ( y y 0 ) 2 ... a 0 n ( y y 0 ) n
(6.71)
(6.72)
ixi yj j f ( x 0 , y 0 )
h i k j i! j !
Pn ( x , y )
i i j j f ( x 0 , y 0 )
x y
hi k j i! j !
i, j 0
i jn
i
j
( x x 0 ) ( y y 0 )
(6.73)
x xk
i xk
f ( xi , y j ) x
i 0 j 0
k0
ki
y yk
.
j yk
k0
k j
(6.74)
146
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.
e y y y f x
1
1
1
1
1
e y y y f x
2
2
2
2
2
em y m y m y m f x m
(7.1)
*)
e = yi yi
i=1
(7.2)
149
Metode de optimizare
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:
m
e yi y i
(7.2a)
i=1
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.
m
i=1
E yi yi
(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.
x1
x2
x3
x4
y1
y2
y3
y4
..
..
xm
ym
E axi b y i
(7.5)
i=1
(7.6)
m
E
2axi b y i xi 0
a i=1
150
Metode n electronic
m
m
m b+ x i a= y i
i=1 i=1
m
m
m
x i b+ x i2 a= x i y i
i=1 i=1 i=1
(7.7)
i=1
i=1
i=1
i=1
x i2 y i x i x i y i
m
m x i y i x i
yi
i=1
x i2
xi
i=1
m
i=1
i=1
i=1
2
m
m x i2 x i
i=1
i=1
m
(7.8)
(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).
151
Metode de optimizare
calculeaz
a=
calculeaz b =
m s xy -s x s y
m s xx -s x s x
s xx s y -s x s xy
m s xx -s x s x
;
;
}
Funcia este y = ax +b;
}
(7.11)
152
Metode n electronic
m
(7.12)
(7.13)
m
m
ma 0 x i a1 x i2 a 2 x ik a k x in a n y i
i=1
i=1
i=1
i=1
m
m
m
m
m
x i a 0 x i2 a1 x i3 a 2 x ik+1 a k x in+1 a n x i y i
i=1
i=1
i=1
i=1
i=1
m
m
m
m
m
x p a x p+1 a x p+2 a x p+k a x p+n a x p y
i
i
i
i
k
0
i i
1
2
i=1
i=1
i=1
i=1 i
n
i=1
_____________________________________________________
m
m
m
m
m
x n a x n+1 a x n+2 a x n+k a x 2 n a x n y
i
i
i
i
k
0
i i
1
2
i=1
i=1
i=1 i n
i=1
i=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]+ yk *pow(xk, i-1);
pentru j = 1,....,n+1
pentru k = 1. ... m calculeaz A[i,j] = A[i,j]+ pow(xk, i+j-2);
}
Metoda_Rez_Sist.(n+1,A,B,Sol); (*se rezolv sistemul*)
}
coeficienii polinomului sunt Sol;
}
153
Metode de optimizare
1
ax+b
(7.15)
care aproximeaz cel mai bine funcia numeric. Pentru comoditatea calculului se
inverseaz funcia hiperbolic i se construiete funcia eroare:
154
Metode n electronic
m 1
E ax i b
i=1 y i
(7.16)
m
mb+ xi a=
i=1 i=1 yi
m
m
m
x b+ x 2 a= xi
i
i
i=1 i=1 i=1 yi
(7.17)
xi
i=1
i=1
m x
1
i
m
yi
i=1 y i
2
x i m x i2
i=1
i=1
m
1 m 2 m xi m
xi xi
i=1 y i i=1
i=1 y i i=1
m
i=1
x i2
m
xi
i=1
(7.18)
(7.19)
1
;
yi
xi
;
yi
155
Metode de optimizare
}
calculeaz a =
calculeaz
b=
Funcia este y
s x s y -m s xy
m s xx -s x s x
s xx s y -s xy s x
m s xx -s x s x
1
;
ax+b
156
Metode n electronic
(7.21)
E ln a+xi ln b ln y i
(7.22)
i=1
s fie minim.
Prin derivarea parial a funciei E n raport cu a i b se obine urmtorul
sistem:
m
m
m ln a+ xi ln b= ln y i
i=1
i=1
(7.23)
m
m
m
2
xi ln a+ xi ln b= xi ln y i
i=1
i=1
i=1
Soluiile sistemului obinut (7.23) sunt:
m
m
m
ln y x 2 x ln y x
i
i
i
i i
i=1
i=1
i=1
a exp
2
m
m
m x i x i
i=1
i=1
m
m
m
m x i ln y i x i ln y i
i=1
i=1
i=1
b exp
m
m
2
m x i x i
i=1
i=1
(7.24)
(7.25)
157
Metode de optimizare
sln y s xx -s x s x ln y
;
m s xx -s x s x
ms x ln y -s x ln y
calculeaz b = exp
;
m s xx -s x s x
calculeaz a = exp
158
Metode n electronic
m
E ln a+b ln xi ln y i
(7.27)
i=1
m
m
m ln a+b ln xi = ln y i
i=1
i=1
m
2
m
m
ln x ln a+b ln x = ln x ln y
i
i
i
i
i=1
i=1
i=1
m
m 2
m
ln y i ln x i ln x i ln x i ln y i
i=1
i=1
i=1
i=1
a exp
2
m
m
m ln 2 x i ln x i
i=1
i=1
b
m
m
m ln y i ln x i ln x i ln y i
i=1
i=1
i=1
m
m
m ln 2 x i ln x i
i=1
i=1
(7.28)
(7.29)
(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.
159
Metode de optimizare
calculeaz
sln y sln
a = exp
b=
m sln
x ln x -sln x
x ln
sln
x -sln x sln
m s ln x ln y -s ln x s ln y
m s ln x ln x -s ln x s ln x
x ln y
x
E y i a-b cos x i
I=1
s fie minim.
(7.32)
160
Metode n electronic
m
m
ma+ cos x i b= y i
i=1
i=1
m
m
m
(7.33)
= 2 f =
m m
m
m
2
y i cos x i cos x i y i cos x i
i=1 i=1
i=1
i=1
m
m
m cos 2 x i cos x i
i=1
i=1
m
m
m
m y i cos x i cos x i y i
i=1
i=1
i=1
2
T
m
m
m cos 2 x i cos x i
i=1
i=1
(7.34)
(7.35)
161
Metode de optimizare
a=
calculeaz
b=
s y scos
s y cos x
2 x -scos x
m scos
2 x -scos x
scos x
m s y cos x -scos x s y
m scos
2 x -scos x
scos x
}
Funcia este f a+b cos x ;
}
162
Metode n electronic
z2n
z1n
z3n
z4n
znm
yn
z14
z24
z34
z44
zm4
z13
z23
z33
z43
zm3
z12
z22
z32
z42
zm2
z11
z21
z31
z41
zm1
y4
y3
y2
y1
O
x1
x2
x
x3
x4
xm
E zij Ax i By j C
i=1 j=1
(7.37)
m
m
mnC+ x i nA+ y j mB= z ij
i=1
j=1
i=1 j=1
m
m
m m
m n
x i nC+ x i nA+ x i y j B= x i z ij
i=1 j=1
i=1 j=1
i=1
i=1
n
m n
m n
y j mC+ x i y j A+ y 2j mB= y j z ij
j=1
i=1 j=1
j=1
i=1 j=1
(7.38)
Utiliznd una dintre metodele numerice de rezolvare a sistemelor liniare din capitolul
3 se determin A, B, C, deci planul cutat.
Metode de optimizare
{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;
sx : sumele argumentelor de pe Ox, real;
sy: suma parial a argumentelor de pe Oy, real;
sxx: suma parial a ptratelor argumentelor x, real;
sxy: suma parial a produselor argumentelor, real;
syy: suma parial a ptratelor argumentelor y, real;
sz,sxz,syz: sume pariale ale termenilor liberi ai sistemului;
i: contor, ntreg;
{
sx= 0; sy = 0; sxy = 0; sxx = 0; syy = 0; sxz=0; syz=0 ;sz=0;
pentru i = 1,..., m
pentru j=1,..,m
calculeaz sx= sx+xi;
calculeaz sxx = sxx+xi*xi;
calculeaz sy = sy+ yi;
calculeaz syy = syy + yi * yi;
calculeaz sxy= sxy+ xi*yi;
calculeaz sz=sz+zij; calculeaz sxz=sxz+xi*zij;
calculeaz syz=syz+yj*zij;
}
{ METODA (n,m, sx; sy; sxy; sxx; syy, SOL ); // rezolv sistemul
}
Planul este z = Ax + By + C
}
163
164
Metode n electronic
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;
}
165
Metode de optimizare
2
x1 x1 x 2 x1 x n
J
2
2
2
F ( x) F ( x) F ( x )
...
x x x x
x n2
2
n
n 1
(7.42)
166
Metode n electronic
Metoda drumului aleator, una dintre metodele des utilizate, const n modificarea
vectorului de poziie pentru noul punct astfel:
(7.43)
X k 1 X k r
unde r este vectorul unitate care are direcia aleatoare, X k este vectorul de poziie al
punctului anterior i 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 pn ce valoarea lui devine mai
mic dect o eroare de calcul dat, er > 0.
Metode de optimizare
167
168
Metode n electronic
ncepe un nou ciclu lund ca punct iniial minimul obinut. La fiecare iteraie se
determin un nou punct funcie de precedentul asfel:
X k 1 X k pas E k
(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< sau numrul de iteraii
depete un numr maxim dat. reprezint eroarea de calcul a punctului de minim.
Metode de optimizare
{
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
169
170
Metode n electronic
1
1.44
2
1.728
3
2.0736
4
2.4883
5
2.9859
6
3.5831
7
4.2998
Tabelul 7.2.
8
9
5.1597
6.191
2.Se d funcia:
z x 2 y 2 2x 4 y 3
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)
cu condiia iniial:
y( x 0 ) y 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 0, y 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 0, y 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 0, y 0 )
y f ( x 0 , y 0 )( x x 0 ) y 0
(8.3)
Dac considerm punctul de coordonate ( y1 , x1 ) pe tangent i pasul de cretere al lui
x1 fa de x 0 , h avem
x1 x 0 h i y1 f(x 0 ,y 0 )h y0
(8.4)
deci un nou punct cunoscut ( x1 , y1 ), 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
( x1 , y1 ) i determinarea unui alt punct pe tangenta la curb n punctul
( x1 , y1 ) cu x 2 x1 h i y 2 corespunztor. Continund n acest mod se obine o
succesiune de segmente de dreapt care aproximeaz curba soluie a ecuaiei
difereniale.
__________________________
*)
172
Metode numerice n electronic
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.
j+1
j
y m
y ''m
y m
j
2
x-x
x-x
m
m
x-x m j+1
2!
j!
j+1!
(8.5)
j+1
j
y m j+1
y
h 2 ''
y m m h j
h
2
j!
j+1!
(8.6)
fx fy f
x
y
dx
f
f
unde
i
fx
fy
x
y
Pentru x x m rezult:
y ''m f x f y f
Pentru j = 2 rezult:
y m+1 y m hy 'm
sau
y ''' 3
h 2 ''
ym
h
2
6
(8.8)
(8.9)
(8.10)
(8.11)
y m+1 y m h f+ f x f f y
2
cu eroarea de trunchiere
eT
y '''
6
h3 ,
173
(8.12)
xm x
(8.13)
Punnd m = 0 n ecuaia (8.12) se obine pentru x1 x 0 h valoarea soluiei y1
deci punctul ( x1, y1 ). Pentru m = 1 rezult punctul ( x 2 , y 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 m1 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:
y '''m f xx 2 f f xy f 2 f yy f x f y f f y2
(8.14)
(8.16)
(8.17)
(8.18)
(8.19)
174
x m < < x m1
unde
ym
x m1
xm
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]);
}
zm
1
'
f x m ,y m f x m+h,y m hy m
2
(8.23)
176
xm
x m1
MR este:
x x
(8.24)
(8.25)
unde
f x m ,y m .
Aceast formul (8.25) reprezint formula de calcul a soluiilor numerice pentru o
ecuaie diferenial ordinar de ordinul nti.
y 'm
1
x - x m 2 f xx 0 ,0 2 x - x m y-y m f xy 0 ,0 y-y m 2 f yy 0 ,0
2
0 x ,x m i 0 y ,y m
unde
(8.26)
'
x x m h iar y y m h y m
Dac notm
unde
rezult:
y 'm f(x m ,y m )
(8.27)
1 2
h f xx 0 ,y 0 2 ff xy 0 ,y 0 f 2 f yy 0 ,0 (8.28)
2
177
(8.29)
3
h
h
y m+1 y m h f+ f x ff y
f xy 0 ,y 0 2 ff xy (0 , 0 ) f 2 f yy 0 ,0
2
4
unde
0 x m ,x m+1 i 0 y m ,y m+1
y m+1 y m h f 0.5h f x ff y
(8.30)
(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:
y ''' ( ) 1
(8.32)
eT h 3
f xy (0 , 0 ) 2 ff xy (0 , 0 ) f 2 f yy (0 , 0 )
(8.33)
178
P x p x m , y p y m f x m , y m
2
2
(8.36)
(8.37)
z m f x m , y m f x m , y m
2
2
Se scrie ecuaia dreptei care trece prin M de pant z m i o intersectm cu dreapta
y x m 1 x m h
y y m f x m , y m f x m , y m x x m
2
2
Prin intersecia cu dreapta x x m1 x m h rezult ordonata:
h
h
y m 1 y m h f x m , y m f x m , y m
2
2
(8.38)
(8.39)
179
P
x
xm
x m2
x m1
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 h2, deci este o
metod Runge-Kutta de ordinul doi.
xm+h/2
180
unde
(8.42)
(8.43)
Dac comparm aceast formul (8.44) cu formula lui Taylor (8.30) rezult:
a1 a 2 1 ;
a 2 b1 a 2 b2
1
;
2
(8.45)
181
Deoarece avem trei ecuaii cu patru necunoscute, alegem n mod arbitrar una din ele i
exprimm pe celelalte funcie de aceasta. Lum a 2 w i rezult
a1 1 w , b1 b2
1
2w
(8.46)
h
h
y m1 y m h 1 w f x m , y m wf x m
, ym
f x m , y m O h 3
2
w
2
w
(8.47)
1
se obine metoda lui Euler mbuntit, iar pentru w 1 se
2
(8.48)
y m1 y m
unde
h
k 2k 2 2k 3 k 4
6 1
(8.49)
k1 f ( xm , ym )
h
h
k 2 =f x m , y m k 1
2
2
(8.50)
h
h
k 3=f x m , y m k 2
2
2
k 4 =f x m h, y m hk 3
(8.51)
182
h
k1 2k 2 2k 3 k 4 ;
6
}
Soluiile numerice ale ecuaiei sunt x[ i ], y[ i ] , i=1,2,...n;
}
}
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 0 h valoarea exact a soluiei este y m , cu
metoda clasic de ordinul unu rezult:
(8.52)
y m y mh kh 2
unde y m h arat c y m s-a calculat cu pasul h. Se repet calculul pentru pasul h/2 i
avem
h2
y m y m(h/ 2 ) k
4
(8.53)
4 h/ 2
h
y m y m
3
(8.54)
8 h/ 2
y
y mh
7 m
(8.55)
Metoda Runge - Kutta de ordinul patru are o eroare de trunchiere care poate fi
estimat cu relaia:
eT kh 5
32 h/ 2
y
y mh
31 m
(8.56)
184
x m1 , y m1
y y( x)
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 m , y m ) dup care se duce coarda FR paralel cu tangenta ET prin punctul
0
F ( x m1 , y m1 ) i intersecteaz dreapta x x m1 n punctul P( x m+1 ,y m+
1 ) obinndu-se
0
dac se
prima valoare prezis la estimarea zero. Se poate mbunti valoarea y m+1
0
consider panta n punctul ( x m+1 ,y m+
1 ) i se face media cu panta n ( x m ,y m ). Prin
n punctul ( x m+1 ,y m+
1 ) unde y m+1 este estimarea de ordinul 1. Continund acest
1
k
procedeu se poate estima valoarea lui y m+
1 pn la o valoare k, pn cnd
y mk1 y m0 1
(8.58)
(8.59)
1
0
f x m ,y m f x m+1 ,y m+
1
2
Punctul de abscis x m1 pe aceast coard are ordonata
zm
1
y m+
1 ym
h
0
f x m ,y m f x m+1 ,y m+
1
2
k
y m+
1 ym
h
k-1
f x m ,y m f x m+1 ,y m+
1
2
(8.60)
(8.61)
(8.62)
k
k-1
Dac
y m+
(8.63)
1 -y m+1 < unde > 0,
orict de mic, iteraiile se opresc. Relaia (8.63) este satisfcut cnd metoda
predictor-corector este convergent.
185
y mk1 y mk11
y mk12
y
2 y m1
f
k-1 k
este evaluat n x x m1 i y y m+
unde
1 ,y m+1 .
y
f
Dac
este mrginit de M >0 astfel ca:
y
(8.65)
f
M
y
(8.66)
k
k-1
y m+
1 -y m+1
rezult
(8.64)
M h k-1
k-2
y m+1 y m+1 .
2
(8.67)
h M k-2
k-3
y m+1 y m+
1
2
(8.68)
Analog
k-1
k-2
y m+
1 y m+1
k
k-1
y m+
1 -y m+1
sau
h M
k-2
k-3
y m+
1 y m+1 .
(8.69)
k
k-1
y m+
1 -y m+1
h M
k-1
1
0
y m+
1 y m+1
2
M
(8.70)
(8.71)
atunci metoda este convergent. Viteza de convergen este cu att mai mare cu ct h
este mai mic.
unde
Considernd
x xm
(8.72)
x x m1 x m h rezult:
y x m+1 y x m h y 1 x m
unde
Pentru
y '' x m
xm
h 2 ''
h 3 '''
y xm
y
2
6
(8.73)
h 2 ''
h 3 '''
y xm
y 2
2
6
(8.74)
x m+1
x x m1 x m h rezult:
y x m-1 y x m h y 1 x m
186
unde
x m-1 2 x m
Scznd din expresiile (8.67) i (8.68) rezult:
y x m+1 y x m-1 2h y 1 x m
tiind c
y ''' 1 y ''' 2
2
y '''
h 3 '''
y
3
(8.75)
eT
h 3 '''
y
3
(8.76)
Formula (8.61) este analoag formulei de la integrarea prin metoda trapezului unde am
determinat eroarea
eTc
h 3 '''
y h
12
(8.77)
y m y m0
h 2 '''
y
3
(8.78)
h 2 '''
y h
12
(8.79)
y m y mk
y mk y m0
Considernd y
se obine:
'''
h 3 '''
y h 4 y '''
12
sau
eTc
h 3 ''' 1 0
y y m y mk
12
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.
187
k = 1;
repet
calculeaz
k = k+1;
pn cnd
k
k-1
yi y i
e
}
k
Soluiile numerice ale ecuaiei sunt x[ i ], y i , i=0,1,2,...n;
}
}
188
4h
y k+1 y k-3 2 y 'k-2 y 'k-1 2 y 'k
3
y k+1
h
y k-1 y 'k-1 4 y 'k y 'k+1
3
(8.81)
0
calculeaz y i+
1 y i-3
j = 1;
repet
189
calculeaz
'
h
j
j-1
yi+1 yi-1 yi-'1 yi' yi+1 ;
3
j = j+1;
pn cnd
j j-1
y i+1 y i+1 e 0 ;
i = i +1;
pn cnd i = n;
}
valorile unice ale soluiei sunt yi , i = 1, 2, . .., n
}
}
190
d y1
d y2
d y n-2
dy
y1 ,
y2 ,
y3 , ,
y n-1 .
dx
dx
dx
dx
(8.85)
Se observ c
yk
dk y
dx k
k
y
n
n-1
y f x , y , y ' , y '' , , y
(8.86)
sau
dy n-1
f x , y , y1 , y 2 , , y n-1
dx
(8.87)
(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:
191
y ( i 1) y ( i ) 1 k ( n 2 ) 2k ( n 2 ) 2k ( n 2 ) k ( n 2 )
n2
2
3
4
n2
6 1
1
y1( i 1) y1( i ) k1(1) 2k 2(1) 2k 3(1) k 4(1)
6
( i 1)
1
y ( i ) k1 2k 2 2k3 k 4
y
6
(8.89)
unde
k ( n 1) hf x , y , y ( i ) , y ( i ) ,..., y ( i )
i
i 1
m
2
1
(1)
( n 1)
k 2( n 1) hf x i h , y i( i ) k1 , y1( i ) k1 ,..., y n( i ) k1
2
2
2
2
k (1)
k ( n 1)
k
h
( n 1)
hf x i , y i 2 , y1( i ) 2 ,..., y n( i ) 2
k 3
2
2
2
2
( n 1)
hf x i h, y i k3 , y1( i ) k3(1) , y 2( i ) k 3( 2 ) ,..., y m( i ) k 3( n 1)
k 4
k1( n 2 ) hy n( i)1
n-1
i
n- 2
k1
h y n
k 2
1
n-1
k n- 2 h y i k 2
3
n1
n- 2
i
n-1
h y nk 4
1 k3
(8.90)
(8.91)
dy y
1
dx
(8.93)
192
Relaiile de calcul (8.90) i (8.91) devin:
y1i+1 y1i
yi+1 yi
1 1
k 2 k 21 2 k 31 k 41
6 1
1
k 2k 2 2k 3 k 4
6 1
(8.94)
unde
k1' hf ( x i , y i , y1i )
'
k1 i k11
h
h
f
x
+
,
y
+
, y1+
2
i
i 2
2
2
'
x i+ h , y i + k 2 , y1i+ k 2
k
h
f
2
2
2
'
i
1
k 4 hf ( x i h, y i k3 , y1 k 3 )
(8.95)
k1 hy1i
k h y i k1
1
k h y i k 2
1
k 4 h( y1i k3 )
(8.96)
1
k1 k 2 k 3
6
i = 0,1,2,. .., n
unde
y i+1 y i 1 k 2k k k
1 2 3 4
1
1
6
k1 h f x i , y i , y1 i
h
h i i k1
k 2 h f x i+ , y i y1 , y1
2
2
2
h
h i h
i k
k 3 h f x i+ , y i y1 k1 , y1 2
2
2
4
2
i
i
k 4 h f x i+h , y i h y1 k 2 , y1 k3
(8.97)
193
Vom considera ecuaiile difereniale cu derivate pariale de ordinul doi de dou
variabile ce au forma general:
2u
2u
2u
u
u
a x , y
d x , y
e x , y
f x , y u=0
b
x
,
y
c
x
,
y
2
2
x
x y
y
x
y
(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 u1 ( x , y ) i
u 2 ( x , y ) sunt dou soluii ale ecuaiei, atunci i combinaia liniar
c1 u1 c2 u 2
(8.99)
este tot o soluie a ecuaiei unde c1 i c2 sunt constante. Aceste tipuri de ecuaii se
clasific dup semnul valorii determinantului ataat formulei (8.98).
a (x ,y )
b (x ,y )
b (x ,y )
c (x ,y )
(8.100)
x2
h2
2 u u x,y+h 2u x,y u x, y-h
y2
k2
u x+h ,y+h u x,y+h u x+h ,y u x, y
2u
hk
x y
u u x+h ,y u x, y
h
x
u u x,y+k u x, y
k
y
Ecuaia (8.98) scris cu ajutorul diferenelor finite devine
(8.101)
194
[k au x+h , y k 2 au x-h , y
2
(8.102)
Pentru cazul egalitii valorilor pailor h = k n ecuaia obinut (8.102 ) rezult:
u x , y
1
2a+2 c+2 b+h d+h e+h 2 f
(8.103)
h du x+h , y h e u x , y+h ]
1
2a1 2c1 2b1 hd1 he1 h 2 f1
a1u( 2,1) c1 1,2 c1 2b1u 2,2 2b1u1,2 2b1u( 2,1) d1u( 2,1) eu(11,2)
(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 se rezolv tipuri de ecuaii eliptice,
hiperbolice sau parabolice.
Pentru a ( x , y ) 1, b( x , y ) 0, c( x , y ) 1, d ( x , y ) 0, e( x , y ) 0, f ( x , y ) 0 rezult o
particularizare a ecuaiei (8.98) obinndu-se ecuaia lui Laplace.
0
(8.105)
x2 y2
Aplicnd relaiile 8.101, ecuaia lui Laplace se scrie funcie de diferenele finite astfel:
u x , y
1
u x+h , y u x-h , y u x , y+h u x , y-h
4
(8.106)
195
Considerm reeaua din fig.8.6 i notm cu u11, u12, u13, u21, u22, u23, u31, u32, u33
y
u (x, 0,4)=0
0,4
0,3
u (0, y)=0 0,2
u11
u12
u13
u21
u22
u23
u31
u32
u33
u (0,4, y)=0
0,1
0
0,1
0,2
0,3
0,4
u (x,0)=1
Fig.8.6 Reeaua domeniului funciei i condiiile la limit pentru ecuaia lui Laplace.
u11 4 0 u12 0 0 0 0 0 0 0 1
u 1 u 0 u 0 u 0 0 0 0 1
13
22
12 4 11
1
u13 0 u12 0 0 0 u23 0 0 0 1
4
1
u21 u11 0 0 0 u22 0 u31 0 0 0
4
1
u31 0 0 0 u21 0 0 0 u32 0 0
4
1
u32 0 0 0 0 u22 0 u31 0 u33 0
4
u 1 0 0 0 0 0 u 0 u 0 0
23
32
33 4
(8.107)
196
1
( u( lsx ( i 1)h, lsy jh ) u( lsx ( i 1)h, lsy jh )
4
u( x ih, lsy ( i 1)h ) u( lsx ih, lsy ( j 1)h )
u( x i , y j )
}
construiete sistemul iterativ i -l rezolv cu metoda Iacobi sau
Gauss-Seidel
tiprete uij 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,
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;
}
0
(8.108)
a2 t x2
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:
u 2u
0
(8.109)
t x2
Pentru rezolvarea ecuaiei se aplic metoda diferenelor finite pe reeaua prezentat n
figura (8.7) cu paii h
l
pe axa Ox i k h 2 pe axa Ot. =1/6 reprezint
n
constanta pentru care eroarea este minim dac rezolvarea se face cu metoda
diferenelor finite.
198
k
h
0
ui 1, j 2. ui , j ui 1, j
(8.110)
h2
. h
Din ecuaia (8.110) se deduce formula de calcul a valorilor funciei n punctele reelei:
2
uij 1
1
(ui 1, j 4ui , j ui 1, j )
6
(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 ui 0 f (lsx i * h) ;
calculeaz k=(1/6)*h;
pentru j=1 pn la nrt
{
calculeaz u0 j s(lst j * k ) ;
calculeaz ulj z(lst j * k ) ;
}
pentru i=1 pn la nrx
199
a
0
t2
x2
(8.112)
200
a2
(8.113)
(8.114)
l
;
nrx
h
calculeaz k ;
a
calculeaz h=
201
202
8.4. APLICAIE
Se consider un circuit R,L n serie alimentat de o surs de curent alternativ
f =50Hz, prezentat n fig.(8.8).
e 10 cos(100 t ) V,
di
Ri e
dt
Rezultatele obinute prin metoda lui Euller modificat sunt prezentate n tabelul (8.1)
t[s]
0.0000
0.00100
0.00200
0.00300
0.00400
0.00500
0.00600
0.00700
0.00800
0.00900
0.001000
Tabelul 8.1
i[A]
0.00000
0.48770
0.65941
0.63249
0.447665
0.24065
- 0.03564
-0.31683
-0.57124
-0.77188
-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.
spea II
integrale
liniare
spea I
spea II
x f ( x ) S ( x , y ) ( y )dy
a
(9.1)
205
k ( x ) f ( x ) S ( x , y ) k-1 (y)dy
(9.3)
k ( x ) ( x ) k ( x ) S ( x , y ) k-1 (y)dy
Dac S x , y M oricare ar fi
(9.4)
x , y a , b a , b atunci
(9.5)
i f i S ( x , y ) ( y )dy f i h A j S ( x i , y j ) ( y j )
j= 0
sau
i f i Cij j
(9.7)
i = 0,1,...,n
j= 0
i = 0,1,2,...,n
(9.8)
j= 0
(9.9)
206
i k 0 ;
k = 1;
repet
{ calculeaz fi = f( xi );
pentru j = 1... n
{calculeaz sum = sum + * Ai *S(xi ,yj )*
k +1
calculeaz i
}
k = k+1;
k +1
pn cnd i
k -1
xi ;
fi sum ;
k
i ;
i = i + 1;
pn cnd i = n;
tiprete soluia i( k 1) i=1 pn la n;
}
207
( x ) f ( x ) S ( x , y ) ( y )dy .
(9.10)
( x ) x-h f ( x ) f ( x h )
S ( s, y ) ( y ) d y
x-h
(9.11)
208
(9.12)
i- 2
1
f i f i-1 (1 Ci,i-1 ) i-1 Cij j
1 Cii
j= 0
(9.13)
f C10 f 0
1
f1 f 0 (1 C10 ) 0 1
1 C11
1 C11
(9.14)
Aceast valoare este utilizat ca valoare de start pentru ecuaia de recuren (9.13 ) .
f 1 C10 f 0
;
1-C11
i = 1;
repet
pentru j = 0 la i -2
{calculeaz sum = sum + Cij j ;
calculeaza i
1
f f i-1 ( 1 Ci,i-1 ) i-1 sum ;
1 Cii i
}
i = i + 1;
pn cnd i = n;
Valorile funciei soluie sunt i pentru i = 1 , ... , n;
209
9.3. APLICAIE
S se rezolve ecuaia integral de tip Fredholm
1
( x ) x 0.05 x 0.025 01
. ( x 2 y 2 ) ydy
2
10
VECTORI I VALORI PROPRII*
Se consider o matrice ptrat
MR
M Rn n de ordinul n
a11
a 21
a n1
a12
a 22
a n2
... a1n
... a 2 n
-
... a nn
(10.1)
i un vector
X =[ x1 , x 2 , x3 ,..., x n ]
(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
(10.3)
un vector coliniar cu el . Ca urmare A X X
sau scris matriceal :
T
a11
a 21
a n1
... a1n x1
x1
... a 2 n x 2
x2
--
- --
... a nn x n
xn
a12
a 22
a n2
a
a
...
22
21
a n1
a n2
a1n x1
a 2n x 2
0
- --
... a nn x n
(10.4)
(10.5)
Sistemul obinut (10.5) este un sistem omogen care admite ntotdeauna soluia banal
x1 x 2 x3 x n 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]
211
a 21
P
a n1
a12
a1n
a 2n
-
... a nn
...
a 22 ....
a n2
(10.6)
x12
x 22
-x n2
... x1n
... x 2n
... --
... x nn
(10.8)
...
0
0
2
A
(10.9)
... n
0
0
AT A
(adic transpusa este egal cu matricea ) .
(10.12)
212
Teorema 2: Valorile proprii ale unei matrice simetrice A M Rnn sunt reale .
Corolar 1: Dac A M Rn n este simetric, atunci exist o transformare similar
P A P-1 = unde P M Rn n este o matrice ortogonal i M n n este diagonal .
AT A 1
(10.13)
213
A M n n este o matrice
tr A = a ii
(10.14)
i=1
Prin definiie spectrul radial S(A) al unei matrice A M n n este dat de este valoarea
| i | unde i este valoarea absolut maxim dintre valorile proprii .
i li a ij
i=1,2,..., n
j=1
j i
(10.15)
j c j a ij
i=1
i j
j = 1,2, ... ,n
(10.16)
Li z , z-a ii li i
i = 1,2, ... ,n
(10.17)
j=1,2,...,n
(10.18)
214
A k Y 1k (1 x1 2 2 x 2 ... n n x n ) 1k 1 x1
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 (1 x1 2 2
1
k 1
k 1
1
k 1
x 2 ... n n
1
k 1
x n ) 1k 11 x1 (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 1 X 1 X
(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.
{Variabile
n,k:rangul matricei,contor, ntregi;
A:matrice;
y:vector;
p:vectorul produs;
: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*/
}
}
215
216
p( ) ci i
cu
i0
cn 1
(10.25)
ci A i X 0 0 cu condiiile cn 1 ; A 0 I
(10.27)
i 0
i
Notm
A X 0 X i unde componentele lui X i sunt calculate iterativ din X 0
astfel:
X 1 AX 0 ; X 2 AX 1 ; ....,X i AX i 1 ;
(10.28)
i au formulele de calcul:
n
k 1
k 1
k 1
(10.29)
Rezult sistemul:
n 1
x ki c k x ni ; i 1...n.
(10.30)
k 0
x 02 x12 x 22 ...x n1,2 c2 x n 2
x 0 n x1n x 2 n ...x n 1,n cn x nn
(10.31)
217
218
B(k) E 2W (k) (W (k) ) T unde(W (k) ) T ( 0 ,..,0 ,wk(k)1 ,..,Wn(k) ); (W (k) ) T W (k) 1
(10.32)
Matricea B este o matrice simetric i ortogonal. Detaliat matricea se prezint ca n
expresia (10.33).
(k)
B(k)
0
0
0
0
...
1 0 0 ...
0
0
0
0
...
0 1 0 ...
(k) 2
(k)
(k)
(k)
(k)
(k)
(k)
0 0 0 ... 1 2(wk 1 ) 2.wk 1.wk 2 2.wk 1.wk 3 ... 2 wk 1.wn
(k)
(k)
(k) 2
(k)
(k)
(k)
0 0 0 ... 2.wk 2 .wk 1 1 2.(wk 2 ) 2.wk 2 .wk 3... 2wk 2 .wn
0 0 0 ... 2.w(k) .w(k)
2wk(k)3.wk(k) 2 1 2.(wk(k)3 )2 ... 2wk(k)3.wn(k)
k 3
k 1
k=1,2,,n-2.
(10.33)
Din produsul A
. B , punnd condiia ca matricea pe linia k i coloana k s aib
numai primii doi termeni rezult formulele de calcul ale elementelor wi(k) ; i k,..,n. Se
ine seama c suma ptratelor elementelor unei linii a unei matrice A este invariant la
transformarea similar ortogonal (B (k) )T A B (k) . n aceste condiii, se obin
urmtoarele formule de calcul:
pentru k1,2,,n-2
( k 1)
(k )
219
sum
j k 1
a
.sign(a k,k 1 )
1
( 1 k,k 1
);
2
sum
wk(k)1
a ki .sign(a k,k 1 )
wi(k)
ti
s
2.wk(k)1. sum
(10.34)
; i k 2,...,n;
a ij .w(k)
j , i k 1,...,n;
j k 1
n
wi(k).t i ;
i k 1
ri t i s.wi(k) ; i k 1,...,n;
k a kk ;
(1)
0
0 ... 0
w2 0
(1)
(2)
0
0 ... 0
w3 w3
(1)
(2)
(n 2 )
W (W ,W ,...,W
)
(1)
(2)
3
w4 0 ... 0
w 4 w4
( 1 )
(2)
wn(3 ) wn(4 ) ... wn(n 2 )
wn wn
(10.35)
(10.36)
... n
f1 ( ) 1 ;
f 2 ( ) ( 2 ) f1 ( ) 12 ;
f i ( ) ( i ) f i1 ( ) i21 f i2 ( ), i 3,...n.
(10.37)
220
Numrul de variaii de semn ale irului lui turm d numrul de valori proprii reale ale
matricei tridiagonale. Se calculeaz :
L max{|1| |1|,| i 1| |1| | i| i 2 ,3,...n 1,
| n 1| | n|}
(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 i , S i ) n care este situat soluia
i se pornete cu I i L ; S i l pentru toate soluile. Se aplic metoda biseciei
pn cnd |S i I i| , fiind eroarea dat.
Vectorii proprii ai matricei tridiagonale se calculeaz prin rezolvarea sistemului
n 2
A .V V unde ia valorile calculate.
v1(j) 1;
v 2(j)
v k(j)1
( 1 1 );
j 1,...,n ; k 2 ,...,n 1;
(10.39)
rezult:
(10.42)
(10.43)
(10.44)
v (j) v (j)
0
2 2
(j) (j) 2 0 . 0 0
v n2 v n2
(j)
(j) (j)
wn 1
v n 1 v n 1
(j)
(j) (j)
wn
vn vn
(j)
... 0 wn 1
wn(j)
1
(j)
v2
0 .
v n(j)1
(j)
vn
(10.45)
v i(j)
v i(j)
(10.46)
221
{Variabile
n:ordinul matricei, ntreg;
A:matrice simetric;
V:vectorul ;
X:vectorii proprii;
W:matrice cu coloane vectori;
i,j,k:contori, ntregi;
:vectorul valorilor proprii;
: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;
:eroare de calcul, real;
{
pentru k=1,, n-2
n
wi(k) 0,
calculeaz
pentru i 1,...,k ;
(k)
w k 1
pentru i=k+2, , l
{
calculeaz
calculeaz
wi(k)
a ki .sign(a k,k 1 )
(k)
2.w k 1 . sum
t i a ij .w (k)
,
j
j k 1
calculeaz
wi(k) .t i ;
i k 1
calculeaz
ri t i s.wi(k) ;
}
calculeaz
a k a kk ;
calculeaz
}
calculeaz n1 a n 1,n 1 ;
222
f 1(l) l a1 ;
f 2 (l) (l a2 ).f 1(l) b12 ;
f i (l) (l ai ).f i 1(l) bi21.f i 2 (l);
|bn 1| |a n| )
pentru i=1 , , n
{
I i L;
S i L;
}
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 li , i=1, , n;
pentru j=1, , n
{
calculeaz
(j)
v1 1;
(j)
v2
(j)
1
(l a1 );
b1 1
v k 1
1
j
(j)
((l a k ).v k bk 1 .v k 1 );
bk i
}
pentru k=n-2, ,1
pentru j=1, , n
{
calculeaz
n
(j)
suma wi(k) .v i
i k 1
( j)
i
v i( j ) v
}
}
}
}
2. suma. wi( k ) ;
223
224
);
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++)
225
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; a1 1 ;
1;
a 2 a1 2 ; b2 2 a1 12 ;
1; a 3 a 2 3 ; b3 3 a 2 b2 22 ; c3 3b2 22 a1 ;
1; a 4 a 3 4 ; b4 4 a 3 b3 32 ; c4 4 b3 c3 32 a 2 ; d 4 4 c3 32 b2 ;
(10.47)
226
{Variabile
n:ordinul matricei, ntreg;
A:matricea simetric;
: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
Cij 0;
C11 1 ;
C22 2 . 1 12 ;
pentru i=3 , , n
calculeaz Cii i . Ci 1, i 1 i21 . Ci 2, i 2 ;
pentru i=2 , , n
calculeaz C i1 Ci 1,1 i ;
pentru i=3 , , n
calculeaz Ci 2 i . Ci 1,1 Ci 1, 2 i21 ;
pentru j=3 , , n
pentru i=j+1, , n
calculeaz
C ij i . C i 1, j 1 C i 1, j i21 . C i 2, j 2 ;
coeficienii polinomului caracteristic sunt
i Cn ,n i ; i 1,2,..., n;
}
}
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++)
228
}
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;
229
10.3.5.METODA LR (LEFT-RIGHT)
Aceast metod se bazeaz pe descompunerea matricei A1 n dou matrice una
inferior trunghiular cu elementele diagonalei principale egale cu unitatea L1 i una
superior trunghiular R1 .
A1 L1 .R1 ;
(10.48)
Se formeaz o nou matrice din matricele triunghiulare obinute:
A2 R1 .L1
(10.49)
Matricea A2 se descompune iari n dou matrice inferior i superior triunghiulare
L2 i respectiv R2 :
A2 L2 .R2
(10.50)
Se formeaz o nou matrice A2
A2 R2 .L2
(10.51)
Procedeul este iterativ i se obine irul:
A1 ,A2 ,...,An
(10.52)
Din ecuaia (10.48) rezult:
(10.53)
L1 A1 .R11 i R1 L11 .A1
innd cont de relaiile (10.53) avem:
A2 R1 .A1 .R11 sau A2 L11 .A1 .L1
(10.54)
(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:
230
L Li
(10.56)
i 1
R Ri
(10.57)
i 1
a i1
; i 2,3,...,n; a11 0;
a11
l ij
(10.58)
i 1
l ik rkj ; i j;
k 1
i 1
1
(a ij l ik rkj ); rii 0; i j;
rii
k 1
a ij rij
rik .l kj ;
k j 1
a ij rij ; i j ;j n ;
a ij
i j; j n;
(10.59)
rik .l kj ; i j ;
k i
Valorile proprii ale matricei A1 sunt elementele diagonale ale matricei Rn1 dac se
ndeplinete condiia
|a ii(n) a ii(n 1 )| ; i 1,2 ,...,n ;
(10.60)
unde este eroarea de calcul.
231
a ij bij ;
pentru i=1, , n
pentru j=1, , n
{dac i>j atunci rij 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 ik . rkj ;
calculeaz rij a ij sum ;
}
dac rii 0 atunci
stop problema este nerezolvabil;
pentru j=i+1, , n
{
sum=0;
pentru k=1, , i-1
calculeaz sum sum l jk rki ;
calculeaz l ji
l ii 1 ;
a ji sum
rii
232
233
234
10.4. APLICAII
1. Se consider matricea:
1 2 3 5
1 2 4 3
A=
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 5 3 28 2 50 261
Rdcinile polinomului sunt determinate cu metoda lui Bairstow i se obin
urmtoarele valori caracteristice:
1 7.225565; 2 3.680183; 3,4 2.952874 i1046774
.
;
2. Se d matricea simetric:
235
2
A=
3
2
3
2
3
2
4
4
5
3
i vectorii proprii:
x1 ( 1000
. ,2.011,2.573,0.924 ) ; x 2 ( 1000
. ,1016
. , 1719
. , 1797
.
);
x 3 ( 1,000,1626
. ,0.914 , 0128
. ); x 4 ( 1000
. ,3.720,9.950,5.602 );
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.
( x ) t x 1e t dt
(11.1)
( n 1) n!
(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 C (mulimea
numerelor complexe) . Funcia gamma satisface urmtoarea relaie de recuren:
( z 1) z ( z )
(11.3)
Dac funcia gamma este cunoscut pentru Re(z)>1, ea poate fi calculat i pentru
Re(z)<1 cu ajutorul expresiei :
(1 z )
( z ) sin z
(1 z ) sin z
(11.4)
( z 1) z r
1
(z )
2
1
(z r )
2
c
c
c
2 c0 1 2 k (11.5)
z 1 z 2
zk
|| 2 10 10 .
Funcii speciale
237
1
( x 1) i de (11.5).
x
238
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];
}
}
240
n!
k!(n k)!
0k n ;
(11.7)
Funcii speciale
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;
}
}
241
242
B( z,w ) B( w,z ) t z 1 (1 t ) w1 dt
0
(11.9)
B( z,w )
( z ) ( w )
( z w)
(11.10)
Funcii speciale
}
243
244
x 2 y xy ' (x 2 2 )y 0
(11.11)
unde 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 r C k x k , x C
(11.12)
k 0
2k
( 1) k
x
k 0 k!( k 1 ) 2
y(x)
(11.13)
Notaia y a funciei este nlocuit cu notaia J consacrat pentru funciile lui Bessel de
spea nti. Astfel, funcia
x
J (x)
2
k
1 2
x
4
k 0 k!(
(11.14)
k 1)
2) pentru N, J
originea n O.
Dac nu este ntreg se poate obine o nou soluie a ecuaiei Bessel ca o combinaie
de funcii Bessel J . Astfel, funcia
Y ( x )
J ( x ) cos n J ( x )
sin n
(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 ntreg. Pentru 0 x se fac
aproximrile:
1
x
;
( 1) 2
2
Y0 ( x ) ln x;
J ( x )
Y ( x )
Pentru x v se fac aproximrile:
( x ) x
;
2
(11.16)
Funcii speciale
245
1
1
cos x
2
4
2
1
1
sin x
Y
2
4
x
(11.17)
3
3
2
9
3
3
6
2
3
3
1
3
1
3
0.4473
0.7748
3
(11.18)
2n
J ( x ) J n 1 ( x )
x n
(11.19)
2n
Yn1 ( x )
Y ( x ) Yn 1 ( x )
x n
Pentru 0< x< 8 se aproximeaz J 0 ( x ) i J 1 ( x ) prin funcii raionale n x .
Aceste aproximaii pentru Y0 ( x ) i Y1 ( x ) sunt:
2
2
1
i
Y0 ( x ) J 0 ( x ) ln x
Y1 ( x ) J1 ( x ) ln x
x
Pentru 8<x< se utilizeaz aproximaiile (n=0,1):
2 8
8
Jn (x)
Pn cos X n Qn sin X n
x
x
x
J n 1 ( x )
Yn ( x )
2 8
8
Pn sin X n Qn cos X n
x
x x
(11.20)
unde
Xn x
2n 1
;
4
8
1 ;
x
Calculul funciilor Bessel ntregi ncepe cu calculul funciilor J 0 ,J 1 ,Y0 ,Y1 , dup care
se aplic formulele de recuren.
1
x
1
x
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-6y*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;
}
Funcii speciale
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;
}
247
248
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)));
250
11.6. APLICAII
n tabelul (11.1) sunt prezentate valorile funciilor J 0,Y0 ,J 1 ,Y1 pentru diferite
valori ale argumentului x .
Tabelul 11.1
x
0
0.1
0,2
0.5
0.9
1.0
1.2
1.5
1.9
2.0
2.4
3.0
3.5
4.0
4.5
5.0
5.5
6.0
6.5
7.0
7.5
Jo
1.00000
0.99750
0.99002
0,93847
0.80752
0.76520
0.67113
0.51183
0.28182
0.22389
0.00251
-0.26005
-0.38013
-0.39715
-0.32054
-0,17760
-0.00684
0.15065
0.26009
0.30008
0.26634
J1
0.00000
0.04995
0.09963
0.24420
0.41654
0.45426
0.52163
0.59930
0.65179
0.65487
0.62454
0.45084
0.20216
-0.10903
-0.43292
-0.70237
-0.84045
-0.77852
-0.48785
-0.01631
0.49928
Yo
-1.144e+308
-1.53424
-1.08111
-0.44452
0.00563
0.08826
0.22808
0.38245
0.49682
0.51038
0.51041
0.37685
0.18902
-0.01694
-0,19471
-0.30852
-0.33948
-0.28819
-0.17324
-0.02595
0.11731
Y1
-1.245+340
-6.38575
-3.22188
-1.36457
-0.84590
-0.78121
-0.67897
-0.55633
-0.40188
-0.36152
-0.18943
0.08754
0.30063
0.45621
0.52224
0.48350
0.34680
0.14059
-0.09077
-0.29687
-0.43262
Funcii speciale
8.0
8.5
9.0
251
0.17165
0.04194
-0.09033
0.23382
0.27226
0.24460
0.22352
0.27021
0.24994
-0.15806
-0.02617
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
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 . Semnalele n timp discret sunt
reprezentate matematic prin secvene de numere notate astfel:
{x[nT ]}, n [ N 1 , N 2 ]
{x[n]}, n [ N 1 , N 2 ]
(12.1)
n [ N 1 , N 2 ]
x[ n],
[ n]
(12.2)
2. Secvena treapt unitate, prezentat n figura (12.2) i definit prin relaia (12.3).
1,
u[ n]
0
pentru n 0;
pentru n 0 ;
(12.3)
k 0
k 0
[ k ] sau u[n] [n k ]
(12.4)
Legtura invers, ntre secvena impuls i secvena treapt, este dat de relaia cu diferene finite
(12.5):
[n] u[n] u[n 1]
(12.5)
_____________________
*)Bibliografie: [5],[16],[24]
253
Fig.12.1.Impulsulunitate
Fig.12.2.Impulsultreaptunitate
pentru n 0;
(12.6)
x[n] A.cos( 0 n ), n 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 0 [0, 2 ] sau 0 [ , ] .
Periodicitatea n timp discret este definit prin relaia:
x[ n] x[n N ] n Z
(12.8)
unde N este ntreg. Testnd condiia de periodicitate, trebuie s avem:
(12.9)
x[n] Ae j 0n Ae j 0 ( n N )
deci
0 N 2 k
(12.10)
Din relaia (12.10) rezult c numai pentru anumite valori ale pulsaiei, N i k sunt ntregi.
Pulsaiile din intervalul [0,2] sunt date de setul de valori:
2 k
, k 0,1,2,..., N ;
0k
(12.11)
N
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)
254
(12.13)
2. Invariana n timp, care implic conservarea translaiei semnalului la trecerea prin
sistem. Dac x1[n] x[n n0 ] , atunci rspunsul este:
(12.14)
y1 [n] y[n n 0 ]
3. Cauzalitatea presupune un rspuns neanticipativ la orice secven de intrare.
Rspunsul la n n 0 depinde numai de intrrile la n n 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.
F {x[n]} X ( e j ) x[n]e jn
n
(12.15)
unde X (e j ) 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 ( e j )| pentru R
(12.16)
Aceast condiie se poate simplifica astfel:
255
| X ( e j )| | x[n]e jn | | x[ n]|.| e jn |
(12.17)
(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:
j
j
lim | X ( e ) X M ( e )| 0
X M ( e j ) x[n]e jn
unde
n M
(12.19)
Dac x[n] este absolut sumabil, convergena seriei (12.15) este asigurat pentru orice . 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]|2
(12.20)
j
j 2
lim | x( e ) X M ( e )| d 0
1
2
j
jn
X ( e )e d
(12.21)
sau
(12.23)
j )
j )
X [k ]
n0
x[n]. WNnk
, k 0,1, ... , N 1, WN e
2
N
(12.24)
256
WNkN 1 ; WN
N
2
WN2 e j 1; WNnk W Nn ;
(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:
(12.26)
n k 1n1 k 2 n 2 mod N ;
k k 3 k 1 k 4 k 2 (mod N )
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 Re X [ k ] Re X [n k ], Im X [ k ] Im X [ N k }
(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:
N
X [ k1 k 2 ]
2
Pentru k 2 0 rezult:
N
1
2
n .k
x[2n1 ].W N1 1
n1 0
2
N
N
1
k2 2
2
k
WN .WN .
x[2. n1
n1 0
nk
1].W N1 1 .
(12.28)
(12.29)
unde X [ k1 ] i X [ k 1 ] reprezint cele dou DTFT de ordinul doi. Pentru a pune n eviden
simetria circular par a acestor transformate:
X ' [k1 ] X '* [
N
N
k1 ] ; X '' [k1 ] X ''* [ k1 ]
2
2
(12.30)
i evalund avem:
X[
N
k1 ] X ' [k1 ] WN k1 . X '' [k1 ]
2
(12.31)
257
(12.32)
Se utilizeaz primele dou relaii pentru eantioanele de ordin 0,,N/4, lund k1 =0,,N/4,
apoi eantioanele N/4,,N/2, lund k1 =0,,N/4. Rezult fluturele de calcul cu structura din
figura 12.3.
Structuri mai simple se obin pentru k1 =0,N/4,N/8.
Pentru evaluarea complexitii calculului aritmetic trebuie avut n vedere c ntr-un etaj exist
un fluture de tipul k1 =0 caracterizat prin dou adunri, un fluture de tipul
k1 =N/4 care nu necesit operaii, un fluture de tipul k1 =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:
0
Re X [k1 ]
Re X [k1 ]
TFD
N /2
Im X [k1 ]
Re X [k1 ]
-1
-1
Re X * [k1 ]
cos( )
Re X [ N / 2 k1 ]
sin( )
sin( )
TFD
N /2
-1
Re X * [k1 ]
cos( )
-1
Im X [ N / 2 k1 ]
258
(12.33)
(12.34)
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);*/
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
n2 , n1 0,1,..., 1 , n2 0,1;
2
2
N
k 2 k1 k 2 , k1 0,1,..., 1 , k 2 0,1;
2
nn
(12.35)
deci
N
2
X [ 2 k 1 k 2 ] x[n1
n1 0 n2 0
( 2 k1 k 2 )( n1 n2 )
N
2
n2 ].WN
2
(12.36)
X [2 k1 ]
N
1
2
{x[n1 ] x[n1
n1 0
261
N
N
nk
]}W N1 1 TFD N {x[n1 ] x[n1 ]}
2
2
2
(12.37)
N
1
2
N
N
n
nk
X [ 2 k1 1] {x[n1 ] x[ n1 ]}W N1 W N1 1 TFD N {( x[ n1 ] x[n1 ])Wnn1 }
2
2
n1 0
2
(12.38)
-1
b
( a b)WN1
262
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++)
264
X [ k ] x[n]WN k ( N n )
(12.40)
n0
y k [ n] x[ m]WN k ( n m)
(12.41)
m 0
(12.42)
H k ( z ) WN kn u(n). z n
(12.43)
n0
innd cont de valorile lui u[n] i c suma este o serie geometric infinit, rezult:
H ( z)
(12.44)
1 WN k . z 1
1
1 WN k . z 1
1 WNk . z 1
1 WNk . z 1
1 Wnk . z 1
(12.45)
2. . k 1
2
1 2.cos
.z z
N
Considernd
H k ( z)
Yk ( z ).V k ( z )
X k ( z ).V k ( z )
unde
Yk ( z )
1 WNk . z 1
Vk ( z)
(12.46)
rezult:
Vk ( z )
X k ( z)
1
2
.
. k 1
2
1 2.cos
. z z
N
(12.47)
Aplicnd transformata z invers relaiilor (12.46) i (12.47) se obin ecuaiile cu diferene finite:
265
2. . k
v k [n] 2 cos
. v [n 1] v k [n 2] x[n] ;
N k
y k [ n]
(12.48)
Vk [n]
z 1
X [n ]
Y [n ]
+
WNk
z 1
2 cos( 2k / N )
V k [ n 2]
266
X [ k ] x[n].WNnk
n 0,1,..., N 1
(12.49)
n0
(12.50)
iar eroarea corespunztoare este:
en [ k ] en ,1[ k ] en ,2 [ k ] j{en ,3 [ k ] en ,4 [ k ]} en ,r [ k ] jen , I [ k ]
(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 ( B 1) i 2 ( B 1) ;
-erorile mai provin de la operaii diferite care sunt necorelate;
-erorile sunt necorelate cu semnalul de la intrare
rezult valorile medii:
267
1 2 B
.2
n2,i ; E{en [k ]} 0 ;
12
E{| en [k ]| 2 } E{en2,1 [k ]} E{en2,2 [k ]} E{en2,3 [k ]} E{en2,4 [k ]} 2 E{en,1 [k ]en,2 [k ]}
E{en,i [k ]} 0 ; E{en2,i [k ]}
E{en,3 [k ]en,4 [k ]}
1 2 B
2
B2 ,
3
N 1
en [ k ], E {F[ k ]} 0 ,
n0
N 1
N 1
E {| F[ k ]|2 } E | en ,k [ k ]|2 E en2, R [ n]
n0
n0
N 1
N 1
n0
n0
N 2 N
2
3
innd cont de relaia | X [ k ]| | x[n]| N se pot evita depirile prin scalarea semnalelor de
n0
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.
268
U [V ]
140
t [s]
119
0.25
0.5
0.75
Prin algoritmul decimrii n timp s-a obinut rezultatul din figura (12.7 ) iar cu algoritmul
Goertzel rezultatul din figura (12.8)
U / U0
1
f / f0
0
0.5
U / U0
1
f / f0
0
0.5
Fig. 12.8. Modulul semnalului EEG n frecven normat prin algoritmul Goert
269
0.5
n
0
100
200
300
400
500
Fig.12.9.Impulsul treapt.
U [n ]
32
16
0
250
Fig.12.10.Transformata Fourier a impulsului treapt
500
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.
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;
}
280