Sunteți pe pagina 1din 142

5

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

Aceste metode mpart intervalul de integrare ntr-un numr n de subintervale de
lungime egal. Numrul n are influen asupra preciziei rezultatului integralei astfel:
cu ct n este mai mare, cu att precizia rezultatului este mai mare, deci cele dou
mrimi sunt direct proporionale. Numrul n este ales de proiectant.
5.1.1. METODA DREPTUNGHIULUI
Aceast metod are erori de calcul mari pentru funcii diferite de o constant. n
cazul cnd se dorete o evaluare grosier a unei integrale, se poate aplica aceast
metod, iar dac numrul subintervalelor pentru intervalul de integrare crete, eroarea

Metode numerice n electronic


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

I= f x x
a
b
( )d


(5.1)
unde
f x ( )
este o funcie continu pe [ ] a b ,
i a , b sunt finite.
I- reprezint aria haurat punctat din fig. 5.1.
Calculul numeric al acestei integrale se realizeaz prin divizarea
intervalului [ ] a b ,
n n subintervale de lungime egal cu

x
b a
n
x x h
i i+ i



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


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



0
1
0
1
( )
(5.4)
unde
x a h i
i
+
Formula (5.4) reprezint formula
de integrare a dreptunghiului.
Pentru funcia constant metoda
dreptunghiului are eroarea de
calcul nul deoarece aria format
de funcie, axa Ox i verticalele
n capetele intervalului este egal
cu integrala din funcie pe
intervalul dat. Aceast metod
nu are aplicaii n practic
datorit erorilor mari, pe care le
introduce.
5.1.1.1. Algoritmul 5.1. Metoda dreptunghiului
{ Variabile
ls: limita stng a intervalului de integrare, real;
ld: limita dreapt a intervalului de integrare, real;
94
Fig.5.1. Reprezentarea grafic a integralei
I
f x
i
( )
f x
i
( )
+1
a b
x
i
x
i+1
x
y
Integrarea numeric
n: numrul de subintervale, ntreg;
h: valoarea lungimii unui subinterval, real;
sum: valoarea integralei, real;
{
sum=0;
calculeaz h
ld ls
n


;
pentru i=0, , n-1 calculeaz sum =sum +h*
f i ( )
tiprete valoarea integralei sum;
}
}
5.1.1.2. Implementarea algoritmului. Metoda dreptunghiului
/* Funcia care implementeaz metoda de integrare a dreptunghiului.
Funcia ntoarce valoarea integralei.
*/
double DreptunghiF(double (*f)(double),
double ls,
double ld,
int nrpas)
{
int i;
double suma=0,h;
h=(ld-ls)/nrpas;
for(i=0;i<=nrpas-1;i++)suma+=h*f(ls+i*h);
return suma;
}
5.1.2. METODA TRAPEZULUI
Fie I f x x
a
b

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

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

+
+
( ) ( )
1
2
(5.5)
95
Metode numerice n electronic

[ ] [ ]
I
h
f x f x
h
f x f x ... x f x
i i n n
i
n
+ + + + +
+

2 2
2 2
1 0 1 1
0
1
( ) ( ) ( ) ( ) ( ) ( )
(5.6)
Aceast expresie prezint formula de integrare numeric prin metoda trapezului i are
eroare de trunchiere nul pentru funcii pn la gradul nti inclusiv.
Metoda de integrare a
trapezului este superioar din
punct de vedere al erorilor de
trunchiere fa de metoda
dreptunghiului, dar ca timp de
calcul este comparabil cu
aceasta, pentru un acelai
numr de pai de integrare.
Simplitatea ei o face
utilizabil n numeroase
cazuri, precizia ei depinznd
de numrul de subintervale
ales. Cu ct acest numr este
mai mare cu att precizia este
mai bun, dar timpul de calcul
al integralei crete. Aceast in-
tegral st la baza metodei lui
Richardson.
5.1.2.1. Eroarea de trunchiere pentru metoda trapezului
Vom calcula eroarea de trunchiere pentru I
i
(5.5). Pentru aceasta vom dezvolta funcia
f x ( )
n jurul punctelor
x
i
i
x
i +1
:

f x = x
x x
!
f x +
x-x
!
f x ...
i
i
i
i
i
( ) ( )
( )
( )
( )
( ) +

+
1 2
2

(5.7)

f(x) f x
x x
!
f x
x x
!
f x ...
i
i
i
i
i
+

+

+
+
+
+
+
+
( )
( )
( )
( )
( )
1
1
1
1
2
1
1 2

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

Fig.5.2. Reprezentarea grafic a metodei de
integrare
a trapezului
f x
i
( )
f x
i
( )
+1
a
x
i
x
i+1
b
x
y
Integrarea numeric

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


+ +
+
+
+ +
+
.

(5.9)
Prin integrarea acestei funcii (5.9) de la
x
i
la
x
i +1
se obine urmtorul rezultat:

f x x
f x f x
h
f x f x
h
f x
h
i i
x
x
i i i
i
i
( )
( ) ( ) ( ) ( ) ( )
d
+
+
+


+
+ + +
+

1 1 2 1 2
2 4 2
1
+
+


+

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

+



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



+
+
+ +
( ) ( ) ( ) ( )
1 2 1 3
4 12
.
(5.11)
Considerm c eroarea de trunchiere este de forma:
[ ]
e k h f x f x
T i i
i

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

rezult :
x x
x x x
x h h x
h
x
x
x
x
i i
i i
i
i
i
i
2
3
3
3 3
2 2
3 1
1
3 3 3
+
+



+ +
+
d
(5.13)
Aplicnd metoda trapezului aceleai funcii avem:

x x
x x
h e x h x h
h
e
i+ i
T
x
x
i i T
i
i
i
i
2 1
2 2
2 2
2
2 2
1
d
+
+ + + +
+

( )

(5.14)
Din relaiile (5.13) i (5.14) rezult
e h
T
i

3
6 /

(5.15)
97
Metode numerice n electronic
Aplicnd formula (5.12) pentru f x x ( )
2
rezult

e k h ( x x ) k h
T i i
i

+
2
1
3
2 2 2
(5.16)
Din formulele (5.16) i (5.15) rezult k=-
1
12
Eroarea de trunchiere pentru trapezul
( , , ( ), ( )) x x f x f x
i i i i + + 1 1
este
[ ]
e h f x f x
T i i
i

+
1
12
2
1
( ) ( )
(5.17)
iar pentru ntreaga integral pe intervalul [ ] a b ,
avem cu aproximaie eroarea de
trunchiere:
[ ]
e h f b f a
T
' '
( / ) ( ) ( ) 1 2
2
(5.18)
Aceast eroare reprezint aproximativ suma ariilor cuprinse ntre curb i coarda dus
prin punctele
( , ( )), ( , ( )) x f x x f x
i i i i + + 1 1
, i = 0,1,...,n-1
5.1.2.2. Eroarea de rotunjire pentru metoda trapezului
Formula de calcul a integralei numerice prin metoda trapezului este dat n
expresia (5.6). Construim graful de procedur a formulei de calcul considernd c
f x
i
( )
au erorile relative
i
, i = 0,1,...,n , nodurile n care se realizeaz operaiile
r
i
, i =1,2,...,n+3.
E ...
f x
f x f x
f x
f x f x
r
f x f x
f x f x f x
I

+
+
+
+
+
+ +
+ ((( (((
( )
( ) ( )
( )
( ) ( )
)
( ) ( )
( ) ( ) ( )

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

3
3
1 2 3
2 3
1 2 2
1 2 2 1

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



( )
( ) ( ) ( )
)
( ) ( ) ( )
( ) ) ) ( )
)
+
+ + +
+ +
+ + +
+ + + +
+

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

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

0
0
0 1 0
0
0 1 1
2 2
f x
f x f x
f x
f x f x
r
f x f x
f x f x ... f x f x
n
n
n
n
n
n n
+ + + + + +
+
+ + + +
+
+ + + +

r r r r r
f x f x
f x f x ... f x f x
n h n n h n n
n
n n
1 2 1 2
0
0 1 1
2 2

( ) ( )
( ) ( ) ( ) ( )
+
+ + + +
+
+ + + +
+


0
f x
f x f x ... f x f x
f x
f x f x ... f x f x
n n
n
n
n n
( )
( ) ( ) ( ) ( )
( )
( ) ( ) ( ) ( )
0
0 1 1 0 1 1
2 2 2 2
98
Integrarea numeric
+ +
+ +
+ + + +
+
+ + + +
+

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

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

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


+
+ + + +

1
2
2 2
1
0 1 1
f x
f x f x ... f x f x
n n
( )
( ) ( ) ( ) ( )
(5.19)
innd cont c eroarea relativ este
I
I
e
I
, unde e
I
este eroarea absolut, putem
calcula eroarea absolut:
[ ]
e r r
h f x f x
h f x
I n
n
+ + +
+
+

+
+ +
(
( ) ( )
( )
n 1 h n 2
) I
0
0
0
2 2
[ ]
+ + + + + + +

n-1
h f x r r h f x f x .... f x
n n n n
( ) ( ) ( ) ( ) ( )
1 1 2 1 2 1
[ ]
+ + + + + +

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

[ ]
+ + + + + + +

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


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

(5.20)
99
Metode numerice n electronic
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 h n n
n n
I
t
+ + + + + + +
+ + + + + + +

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



+ + +

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

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

e h n n
I
t
+

5 10 9 3 2
2
( ) /
(5.21)
Se observ c eroarea de rotunjire depinde proporional de valoarea lui n ( numrul de
puncte ale diviziunii ). Cnd n crete, eroarea de rotunjire se mrete datorit creterii
numrului de operaii de calcul.
5.1.2.3. Algoritmul 5.2. Metoda trapezului
{ Variabile
ls: limita stng a intervalului de integrare, real;
100
Fig.5.3. Graful de procedur pentru metoda
trapezului
Integrarea numeric
ld: limita dreapt a intervalului de integrare, real;
n: numrul de subintervale, ntreg;
h: valoarea lungimii unui subinterval, real;
sum: valoarea integralei, real;

{
calculeaz h
ld ls
n


;
calculeaz sum
f l f l
h
s d

( ) ( )
2
;
pentru i=1 pn la n-1 calculeaz sum =sum +h*
f
(ls+i*h);
tiprete valoarea integralei sum;
}
5.1.2.4. Implementarea algoritmului 5.2
/* Funcia care implementeaz metoda de integrare a trapezului.
Funcia ntoarce valoarea integralei
*/
double TrapezF(double (*f)(double),
double ls,
double ld,
int nrpas)
{
int i;
double suma,h;
h=(ld-ls)/nrpas;
suma=0.5*h*(f(ls)+f(ld));
for(i=1;i<=nrpas-1;i++)suma+=h*f(ls+i*h);
return suma;
}
5.1.3. METODA LUI RICHARDSON
Aceast metod d o precizie mai bun de calcul a integralei numerice dect
metoda trapezului i s-a obinut prin modificarea metodei trapezului.
Se pleac de la eroarea de trunchiere a metodei trapezului (5.18), e
T
=
Ch
2
pentru diviziunea h = (b-a)/n.
Pentru o alt diviziune k = (b-a)/m se obine eroarea de trunchiere

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

101
Metode numerice n electronic
I=I
k
+Ck
2

(5.23)
Prin scdere se calculeaz C=
I -I
k h
h k
2 2

i nlocuind n formula integralei I rezult:



I I
I I
k
h
h
h k
+

_
,

2
1

(5.24)
expresie ce poart denumirea de formula lui Richardson i are o precizie mai mare
dect metoda trapezului.
5.1.3.1. Algoritmul 5.3. Metoda lui Richardson
{ Variabile
ls: limita stng a intervalului de integrare, real;
ld: limita dreapt a intervalului de integrare, real;
n: numrul de subintervale, ntreg;
m: numrul de subintervale, ntreg;
h: valoarea lungimii unui subinterval cu diviziunea n, real;
k: valoarea lungimii unui subinterval cu diviziunea m, real;
sumh: valoarea integralei cu diviziunea h, real;
sumk: valoarea integralei cu diviziunea k, real;
sum: valoarea integralei, real;
{ calculeaz h
ld ls
n


;
calculeaz k
ld ls
m


;
calculeaz sumh
f l f l
h
s d

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

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

5.1.3.2. Implementarea algoritmului 5.3
102
Integrarea numeric
/* Funcia care implementeaz metoda de integrare a lui Richardson.
Funcia ntoarce valoarea integralei
*/
double RichardsonF(double (*f)(double),
double ls,
double ld,
int nrpash,
int nrpask)
{
int i;
double suma,sumah,sumak,h,k;
h=(ld-ls)/nrpash;
k=(ld-ls)/nrpask;
sumah=0.5*h*(f(ls)+f(ld));
sumak=0.5*k*(f(ls)+f(ld));
for(i=1;i<=nrpash-1;i++)sumah+=h*f(ls+i*h);
for(i=1;i<=nrpask-1;i++)sumak+=k*f(ls+i*k);
suma=sumah+(sumah-sumak)/(((k*k)/(h*h)-1));
return suma;
}
5.1.4. METODA LUI SIMPSON
Metoda lui Simpson utilizeaz tot procedeul mpririi intervalului de integrare n
subintervale egale, dar aproximarea este aici fcut cu aria de sub o parabol, pentru
dou intervale adiacente. Parabola trece prin trei puncte consecutive ale diviziunii.
Formula de calcul a metodei lui Simpson se poate deduce mult mai uor
utiliznd formula lui Richardson. Aceast formul se utilizeaz pentru dou diviziuni
ntre care avem relaiile:
k h 2 , k
b a
m


, h
b a
n


(5.25)
Scriem formula metodei trapezului pentru fiecare diviziune n parte:
[ ]
I
h
f x f x f x + f x +... f x f x
h n n
+ + + +

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

[ ]
I h f x f x f x + f x +... f x f x
k n n
+ + + +

( ) ( ) ( ) ( ) ( ) ( )
0 2 4 6 2
2 2 2 2
(5.27)
Aplicm formula lui Richardson (5.23):
103
Metode numerice n electronic
I h
f x
f x f x +f x +f x +... f x
f x
n
n
+ + + +

1
]
1
+

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

1
]
1
+

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

+

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


[ ]
I
h
f x f x f x + f x +... f x f x
n n
+ + + +

3
4 2 4 4
0 1 2 3 1
( ) ( ) ( ) ( ) ( ) ( )
(5.28)
Expresia reprezint formula de calcul numeric al integralei pentru metoda lui
Simpson.
5.1.4.1. Algoritmul 5.4. Metoda lui Simpson
{ Variabile
ls: limita stng a intervalului de integrare, real;
ld: limita dreapt a intervalului de integrare, real;
n: numrul de subintervale, ntreg;
h: valoarea lungimii unui subinterval, real;
suma: valoarea integralei, real;
{ Variabile
ls: limita stng a intervalului de integrare, real;
ld: limita dreapt a intervalului de integrare, real;
n: numrul de subintervale, ntreg;
h: valoarea lungimii unui subinterval, real;
suma: valoarea integralei, real;
{
calculeaz h
ld ls
n


;
calculeaz sum h
f l f l
s d

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

104
Integrarea numeric
5.1.4.2. Implementarea algoritmului 5.4
/* Funcia care implementeaz metoda de integrare a lui Simpson.
Funcia ntoarce valoarea integralei. */
double SimpsonF(double (*f)(double),
double ls,
double ld,
int nrpas)
{
int i;
double suma,h;
h=(ld-ls)/nrpas;
suma=h*(f(ls)+f(ld))/3.0;
for(i=0;i<=nrpas-1;i++)suma+=2*(1+i%2)*h*f(ls+i*h)/3.0;
return suma }
5.2. INTEGRAREA FUNCIILOR DE O SINGUR
VARIABIL CU METODE CU DIVIZAREA
VARIABIL
Dintre aceste metode se prezint metoda cuadraturii lui Gauss. Aceast metod
determin punctele de divizare ale intervalului de integrare astfel ca eroarea de calcul
a integralei s fie minim.
5.2.1. METODA CUADRATURII GAUSSIENE CU DOU PUNCTE
Aceast metod reduce orice interval de integrare [ ] a b ,
la intervalul [-1,1]
cu ajutorul formulei de substituie:
y
x b a
b a

2 ( )

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

( )d
se transform n integrala:
105
Metode numerice n electronic
I f b a y b a b a y y y
+ +
+ +

1
]
1



1
2
1
2
1
2
1
1
1
1
( ) ( ) ( ) ( ) d d
(5.32)
Formula de calcul a integralei o demonstrm pentru cazul a dou puncte n intervalul
de integrare, puncte ce le determinm astfel ca integrala I y y

( )d
1
1
s dea
eroarea zero pn la un polinom de gradul trei inclusiv. Alegerea punctelor de divizare
a intervalului [-1,1] se face astfel ca ntre ariile S
1
, S
2
, S
3
s avem relaia
S
1
=S
2
+S
3

(5.33)
pn la o funcie ( y) de gradul trei.
Integrala prin metoda cuadraturii o calculm cu formula:
I=k
0
(y
0
)+k
1
(y
1
)
unde
y
0
i
y
1
sunt punctele de divizare a intervalului, iar k
0
, k
1
sunt nite ponderi,
toate necunoscute pe care le vom determina.
Calculm valoarea exact a integralei I y y

( )d
1
1
innd cont de formula (5.33)

I= y y= a a y y
-
+
-
+

1
1
0 1
1
1

+ ( ) ( ) d d
(5.34)
106
Fig.5.4. Reprezentarea grafic a funciei
z y ( )
i a punctelor
de divizare
z y ( )
y
0
y
1
y
z a a y +
0 1
z
Integrarea numeric
unde
z a a y +
0 1
reprezint ecuaia dreptei care trece prin punctele
( , ( )) y y
0 0


i
( , ( )) y y
1 1

.
Considerm funcia
( ) y
de gradul trei, pentru care integrala se calculeaz cu
eroarea zero:
( ) y =b +b y+b y +b y
0 1 2
2
3
3

(5.35)
Aceast funcie o putem scrie i sub forma urmtoare:

( ) ( )( ) ) y a +a y+ y-y y-y y = (
0 0 1 0 1 1
+

(5.36)
punnd n eviden trecerea curbei
( ) u
prin punctele
( , ( )) y y
0 0

i
( , ( )) y y
1
1
ale dreptei
z a a y +
0 1
.
Egalitatea (5.34) se scrie sub forma:
[ ] ( ) ( )( a a y y a a y y y y-y y y
0 1
1
1
0 1 0 1 1
+ + + +


d )( ) d
0
1
+1

(5.37)
i, pentru ca aceast egalitate s fie satisfcut pentru orice

0
i

1
, trebuie ca

( )( ) y y y y y
+

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

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

[ ]
[ ]
y y y y y y y
y y y y y y y y
+
+
2
0 1 0 1
1
1
3
0 1
2
0 1
1
1
0
0
+ +
+ +

'

( )
( )
d
d
(5.40)
sau

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

'

(5.41)
cu soluiile y
0
1
3
i y
1
1
3

(5.42)
Pentru calculul ponderilor k
0
, k
1
utilizm egalitatea
107
Metode numerice n electronic

I = ( d = d
-1
+1
-1
+1


+ + y y a a y y k k ) ( ) ( ) ( )
0 1 0 1
1
3
1
3

(5.43)
( ) ( ) a a y y a y
a
y a
+
+
0 1 0
1
2
1
1
0
1
1
2
2 + +

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

k k
k k
0 1
0 1
2
0
+

'

(5.46)
cu soluiile:
k k
0 1
1 0 ,

(5.47)
Formula de calcul a integralei prin metoda cuadraturii gaussiene cnd utilizm
dou puncte de divizare este:

I f x x y dy +

+

( ) ( ) ( ) ( ) d
a
b

1
3
1
3
1
1
(5.48)
unde: ( ) ( ) ( ) y b a f y
1
2

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

Integrala dintr-un polinom pn la gradul trei are eroarea de trunchiere nul. Pentru
polinoame de grad mai mare ca trei este:
e k
T

(IV)
( ) , -1<< 1
(5.50)
Pentru determinarea lui k lum ( ) y y
4
( ) y y y y
y
d d

+

4
5
1
1
1
1
1
1
5
2
5

(5.51)
108
Integrarea numeric
( ) ( ) ( ) y y y y e e
T T
d d
2
9
+ + +

+

4
1
1
1
1
1
3
1
3

(5.52)
Din egalitile (5.51) i (5.52) rezult:
e
T

8
45
Aplicnd formula (5.55) pentru ( ) y y
4
unde
( )
( )
IV
y 24 avem:
8
45
24 k de unde rezult k
1
135
Eroarea de trunchiere pentru formula cuadraturii gaussiene prin dou puncte este:

e
T

1
135

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

5.2.2. Metoda cuadraturii gaussiene cu mai multe puncte de divizare
n acest caz
f x x u u k y
i i
( ) ( ) ( ) d d
i 0
n 1
a
b



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

1
2 1 1
1 2
(5.55)
iar ponderile sunt date de formula:

k
y P y
i
i n i

1
]
1
2
1
2
2
( ) ( )
(5.56)
Pentru polinoamele lui Legendre pn la gradul 16 sunt date rdcinile i ponderile n
funcia de implementare a metodei.
n cazul a n puncte de divizare a intervalului de integrare [-1,1] eroarea de
trunchiere este zero pentru toate integralele polinoamelor de grad mai mic dect 2n-1,
inclusiv 2n-1.
109
Metode numerice n electronic
5.2.2.1. Eroarea de trunchiere pentru formula cuadraturii
gaussiene cu
mai multe puncte de divizare
Considerm un polinom de gradul 2n pentru care integrala gaussian are
eroarea de trunchiere: e k
T
( n)

2
( ) , -1<< 1
(5.57)
Calculm integrala pentru ( ) y y
n

2

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

+
+

+

2
2 1
1
1
1
1
1
1
2 1
2
2 1

(5.58)

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

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

2
2 1
0
1
2

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

_
,

1
2
2
2 1
2
0
1
( )

(5.61)
iar eroarea de trunchiere
e
n ! n
k u
T i i
n
i
n

_
,


(2n)
( )
( ) 2
2
2 1
2
0
1
(5.62)
5.2.2.2. Algoritmul 5.5. Metoda cuadraturii a lui Gauss
{ Variabile
ls: limita stng a intervalului de integrare, real;
ld: limita dreapt a intervalului de integrare, real;
n: gradul polinomului lui Legendre;
A[n, i]:matricea ponderilor, reali;
U[n, i]:matricea soluiilor polinoamelor lui Legendre, reale;
110
Integrarea numeric
sum: valoarea integralei, real;
{ Construiete matricea A[n, i];
Construiete matricea Y[n, i];
suma=0;
pentru i=1 pn la n calculeaz
sum=sum+A[n,i]*(1/2)*(ld-ls)*f((1/2)*(ld-
ls)*Y[n,i]+(1/2)(ls+ld));
tiprete valoarea integralei sum;
}
}
5.2.2.3. Implementarea algoritmului 5.5
/* Funcia care implementeaz metoda cuadraturii lui Gauss
pentru integrarea funciilor reale de variabil real
*/
double CuadraturaGauss(double (*f)(double),

double ls,
double
ld,
int
ord_pol)
{
static double A[17][17]=

{

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

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

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

/* n=3 */
{ 5.0/9.0,8.0/9.0,5.0/9.0,0,0,0,0,0,0,0,0,0,0,0,0,0},
/* n=4 */
{0.34785485413745 4 0.652145145862564
0.652145145862564 0.347854854137454
0 0
0 0
0 0
111
Metode numerice n electronic
0 0
0 0
0 0}
/* n=5 */
{ 0.236926885056189, 0.478628670499366
0.568888888888889, 0.478628670499366,
0.236926885056189 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0}
/* n=6 */
{ 0.17132449237917, 0.360761573048139,
0.467913934572691, 0.467913934572691,
0.360761573048139,
0.17132449237917,
0, 0,
0, 0,
0, 0,
0. 0,
0, 0}
/* n=7 */
{
0.12948496616887,
0.279705391489277,
0.381830050505119, 0.417959183673469,
0.381830050505119, 0.279705391489277,
0.12948496616887,
0,
0, 0,
0, 0,
0, 0,
0, 0}
/* n=8 */
{ 0.101228536290376, 0.222381034453374,
0.313706645877887, 0.362684783378362,
0.362684783378362,
0.313706645877887,
0.222381034453374,
0.101228536290376,
0, 0,
0, 0,
0, 0,
0, 0},
/* n=9 */
{ 0.180648160694857
112
Integrarea numeric
0.08127438361574,
0.260610696402935 0.312347077040003,
0.33023935500126 0.312347077040003,
0.260610696402935, 0.180648160694857,
0.08127438361574, 0,
0, 0,
0, 0,
0, 0},
/* n=10 */
{
0.066671344308688,
0.14945134915058
0.219086362515982,
0.269266719309996,
0.295524224714753, 0.295524224714753,
0.269266719309996,
0.219086362515982,
0.14945134915058, 0.066671344308688,
0, 0,
0, 0,
0, 0},
/* n=11 */
{ 0.055668567116, 0.125580369465,
0.186290210928, 0.233193764592,
0.26280454451, 0.272925086778,
0.26280454451, 0.233193764592,
0.186290210928, 0.125580369465,
0.055668567116, 0,
0, 0,
0, 0},
/* n=12 */
{ 0.047175336387,
0.106939325995,
0.160078328542,
0.203167426723,
0.233492536538, 0.249147045813,
0.249147045813, 0.233492536538,
0.203167426723,
0.160078328542,
0.106939325995, 0.047175336387,
0, 0,
0, 0},
/* n=13 */
113
Metode numerice n electronic
{ 0.040484004765,
0.092121499838,
0.13887351022, 0.178145980762,
0.207816047537,
0.226283180263
0.232551553231, 0.226283180263,
0.207816047537 0.178145980762,
0.13887351022, 0.092121499838
0.040484004765, 0,
0, 0},
0,
/* n=14 */
{ 0.035119460332, 0.08015808716,
0.121518570688,
0.157203167158,
0.185538397478,
0.205198463721,
0.215263853463,
0.215263853463,
0.205198463721,
0.185538397478,
0.157203167158, 0.121518570688,
0.08015808716, 0.035119460332,
0, 0},
/* n=15 */
{ 0.030753241996, 0.070366047488,
0.107159220467,
0.139570677926,
0.166269205817, 0.186161000016,
0.198431485327, 0.202578241926,
0.198431485327, 0.186161000016,
0.166269205817, 0.139570677926,
0.107159220467, 0.070366047488,
0.030753241996, 0},
/* n=16 */
{ 0.027152459412, 0.062253523939,
114
Integrarea numeric
0.095158511682,
0.124628971256,
0.149595988817, 0.169156519395,
0.182603415045,
0.189450610455,
0.189450610455,
0.182603415045,
0.169156519395, 0.149595988817,
0.124628971256, 0.095158511682,
0.062253523939, 0.027152459412};
static double U[17][17]=
{
/* n=0 */
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
/* n=1 */
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
/* n=2 */
{ 0.5773502692, -0.5773502692,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0},
/* n=3 */
{ 0.7745966692, 0,
-0.7745966692 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0},
/* n=4 */
{
0.861136311594053,
0.339981043584856,
-0.339981043584856, -
0.861136311594053,
115
Metode numerice n electronic
0, 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0}
/* n=5 */
{
0.906179845938664,

0.538469310105683,
0, -0.538469310105683,
-0.906179845938664, 0,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0},
/* n=6 */
{ 0.932469514203152,
0.661209386466265,
0.238619186083197, -
0.238619186083197,
-0.661209386466265,
-
0.932469514203152,
0, 0,
0, 0,
0, 0,
0, 0,
0, 0},
/* n=7 */
{
0.949107912342759,
0.741531185599394,
0.405845151377397,
0,
-0.405845151377397, -0.741531185599394,
-0.949107912342759, 0,
0, 0,
0, 0,
0, 0,
0, 0},
/* n=8 */
{ 0.96269856497336,
0.796666477413627,
0.525532409916329, 0.18343464249565,
-0.18343464249565,
-
0.525532409916329,
116
Integrarea numeric
-0.796666477413627, -
0.96269856497336,
0, 0,
0, 0,
0, 0,
0, 0},
/* n=9 */
{
0.968160239507626,
0.836031107326636,
0.613371432700591,

0.324253423403809,
0,
-
0.324253423403809,
-0.613371432700591, -0.836031107326636,
-0.968160239507626, 0,
0, 0,
0, 0,
0, 0},
/* n=10 */
{ 0.973906528517172, 0.865063366688985,
0.679409568299024,
0.433395394129247,
0.148874338981631,
-0.148874338981631,
-0.433395394129247, -0.679409568299024,
-0.865063366688985, -0.973906528517172,
0, 0,
0, 0,
0, 0},
/* n=11 */
{
0.978228658146,
0.887062599768,
0.730152005574, 0.519096129207,
0.269543155952, 0,
-0.269543155952, -0.519096129207,
-0.730152005574, -0.887062599768,
-0.978228658146, 0,
0, 0,
0, 0},
/* n=12 */
{ 0.981560634247, 0.90411725637,
0.769902671494, 0.587317954287,
0.367831498998, 0.125233408511,
-0.125233408511, -0.367831498998,
117
Metode numerice n electronic
-0.587317954287, -0.769902671494,
-0.90411725637, -0.981560634247,
0, 0,
0, 0},
/* n=13 */
{ 0.984183054719, 0.917598399223,
0.801578090733, 0.64234933944,
0.448492751036, 0.230458315955,
0,
-
0.230458315955,
-0.448492751036, -0.64234933944,
-0.801578090733, -0.917598399223,
-0.984183054719, 0,
0, 0},
/* n=14 */
{ 0.986283808697, 0.928434883664,
0.82720131507, 0.687292904812,
0.515248636358, 0.319112368928,
0.108054948707, -0.108054948707,
-0.319112368928, -
0.515248636358,
-0.687292904812, -0.82720131507,
-0.928434883664, -0.986283808697,
0, 0},
/* n=15 */
{ 0.98799251802, 0.937273392401,
0.84820658341, 0.72441773136,
0.570972172609,
0.394151347078,
0.201194093997, 0,
-0.201194093997, -0.394151347078,
-0.570972172609, -0.72441773136,
-0.84820658341, -0.937273392401,
-0.98799251802, 0},
/* n=16 */
{ 0.989400934992,
0.944575023075,
0.865631202388, 0.755404408355,
0.617876244403, 0.458016777657,
0.281603550779, 0.095012509838,
-0.095012509838, -0.281603550779,
-0.458016777657, -0.617876244403,
-0.755404408355, -0.865631202388,
-0.944575023075, -0.989400934992}};
118
Integrarea numeric
int i;
double suma=0;
for(i=1;i<=ord_pol;i++)
suma+=0.5*(ld-ls)*A[ord_pol][i-1]*f(0.5*(ld-ls)*
U[ord_pol][i-1]+0.5*(ls+ld));
return suma;
}
5.3. COMPARAREA METODELOR DE INTEGRARE

NUMERIC A FUNCIILOR DE O SINGUR
VARIABIL
Dintre toate metodele de integrare numeric, metoda cuadraturii gaussiene
este cea mai precis, realiznd aceeai precizie ca i metoda lui Simpson cu un numr
dublu de puncte de divizare i ca metoda trapezului cu un numr de patru ori mai
mare de puncte de divizare.
Pentru aceeai precizie de calcul a integralei numerice, eficiena crete sau
timpul de calcul al calculatorului scade dup cum utilizm n ordine metoda
trapezului, metoda lui Simpson i metoda cuadraturii gaussiene.
5.4. CALCULUL NUMERIC AL INTEGRALELOR
IMPROPRII
Definiia 5.1: Se numete integral improprie, integrala pentru care cel puin una
dintre limitele de integrare este infinit i funcia este continu pe intervalul de
integrare sau funcia are puncte de discontinuitate de spea nti sau a doua i limitele
de integrare sunt finite.
Integralele improprii de forma


f x x ( )d

, f x x
a
( )d
+

, f x x
a
( )d


(5.63)
pot fi aduse la forma
f x x
a
( )d
+

(5.64)
Ca atare, se va studia integrala improprie de aceast form.
Dac funcia de integrat definit pe intervalul [ ] a,
este integrabil pe acest
interval i exist limita:
119
Metode numerice n electronic

lim ( )
A
a
A
f x x k

d
(5.65)
atunci
f x x k
a
+
( )d


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

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

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

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

f c f x
x c
x c
( ) l i m( )

<
0
i
f c f x
x c
x c
( ) l i m( ) +

>
0
(5.69)
iar
f c f c ( ) ( ) 0
sau
f c f c ( ) ( ) 0
i
f c f c ( ) ( ) +0
sau
f c f c ( ) ( ) +0
.
n cazul acestor funcii:
f x x f x x f x x
c
b
a
c
a
b
( ) ( ) ( ) d d d +
1 2

(5.70)
unde

f x
f x a x c
f c x c
1
0
( )
( )
( )

< <

'

p e n t r u
p e n t r u

120
Integrarea numeric

f x
f x c x b
f x c x c
2
( )
( )
( )

< <
+

'

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

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

+


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

< >


1 1
0
de valoare foarte mic, care reprezint i eroarea de calcul a integralei. Integrala (5.71)
poate fi rezolvat cu una dintre metodele studiate n paragraful 5.1. (metoda
dreptunghiului, metoda trapezului, metoda lui Richardson, metoda lui Simpson sau
metoda cuadraturii).
5.5. CALCULUL NUMERIC AL INTEGRALELOR
DUBLE
Pentru simplitate vom considera domeniul de integrare al funciei de dou
variabile un dreptunghi (Fig. 5.5)
f x,y x f x,y x y
c
d
a
b
D
( ) ( ) d d d


121
a b i
c
j
y
d
x
Fig.5.5. Reprezentarea grafic a
dreptunghiului de
integrare
Metode numerice n electronic



5.5.1. FORMULA DE CUBATUR A TRAPEZULUI
Se mpart n subintervale de lungimi egale intervalele [ ] a b ,
i [ ] c d ,
h
b a
n


, k
d c
m



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

'


+
+ +
+
d d d d ( ) ( ) ( )
1
1 1
2
1

+

1
]
1
1

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

[ ]


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

[ ]
I I
kh
f x ,y f x ,y f x ,y f x ,y
ij i j i j i j i j
j
m
i
n
j
m
i
n
+ + +
+ + + +


4
1 1 1 1
0
1
0
1
0
1
0
1
( ) ( ) ( ) ( )
(5.75)
expresie cunoscut sub numele de formula de cubatur a trapezului.
5.5.1.1. Algoritmul 5.6. Metoda cubaturii trapezului
{Variabile
a: limita stng a intervalului de integrare pe axa Ox, real;
b: limita dreapt a intervalului de integrare pe axa Ox, real;
c: limita stng a intervalului de integrare pe axa Oy, real;
d: limita dreapt a intervalului de integrare pe axa Oy, real;
n: numrul de subintervale pe axa Ox, ntreg;
m: numrul de subintervale pe axa Oy, ntreg;
h: valoarea lungimii unui subinterval cu diviziunea n, real;
k: valoarea lungimii unui subinterval cu diviziunea m, real;
sum: valoarea integralei, real;
122
Integrarea numeric
{
calculeaz h
b a
n


;
calculeaz k
d c
m


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

sum=sum+((h*k)/4)*(f(a+i*h,c+j*k)+f(a+i*h,c+(j+1)*k) +
+f(a+(i+1)h,c+j*k)+f(a+(i+1)h,(j+1)*k))
tiprete valoarea integralei sum;
}
}
5.5.1.2. Implementarea algoritmului 5.6
/* Funcia care implementeaz metoda de cubatur a trapezului */
/* Funcia ntoarce integrala unei funcii de dou variabile */
double CubaturaTrapez( double (*f)(double,double),
double sx,
double dx,
double sy,
double dy,
int nx,
int ny)
{double suma=0,h,k;
int i,j;
h=(dx-sx)/nx;
k=(dy-sy)/ny;
for(i=0;i<=nx-1;i++)
for(j=0;j<=ny-1;j++)
suma+=0.25*h*k*( f(sx+i*h,sy+j*k)+f(sx+i*h,sy+(j+1)*k)+
f(sx+(i+1)*h,sy+j*k)+f(sx+(i+1)*h,sy+
(j+1)*k));
return suma;
}
5.5.2. FORMULA LUI SIMPSON DE CUBATUR
Pentru acelai dreptunghi [ ] a b c d , , ,
reprezentat n fig. 5.5 vom aplica
formula lui Simpson de integrare. Vom considera dreptunghiul de integrare cu
123
Metode numerice n electronic
vrfurile [ ]
x y
i i
,
, [ ] x y
i i +1
, , [ ] x y
i i + + 1 1
, , [ ] x y
i i
,
+1
i cu punctul central
[ ]
x y
i i
,
[ ]
I f x,y x y
k
f x,y f x,y f x,y x
ij j j j
x
x
y
y
x
x
i
i
j
j
i
i
+ +
+

+

( ) ( ) ( ) ( ) d d d
3
4
1 1
1
1
1
1
1
1
{
+ + + +
+ + + +
kh
f x ,y f x ,y f x ,y f x ,y
i j i j i j i j
9
1 1 1 1 1 1 1 1
( ) ( ) ( ) ( )

[ ]}
+ + + + +
+ +
4 16
1 1 1 1
f x ,y f x ,y f x ,y f x ,y f x ,y
i j i j i j i j i i
( ) ( ) ( ) ( ) ( )

( 5
.76)
Integrala pe ntreg dreptunghiul [ ] a b c d , , ,
este dat de formula de
cubatur a lui Simpson:
{
I I
kh
f x ,y f x ,y f x ,y f x ,y
ij i j i j i j i j
j
m
i
n
j
m
i
n
+ + + +
+ + + +


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

[ ] }
+ + + + +
+ +
4 16
1 1 1 1
f x ,y f x ,y f x ,y f x ,y f x ,y
i j i j i j i j i j
( ) ( ) ( ) ( ) ( )

(5.77)
5.5.2.1. Algoritmul 5.7. Metoda lui Simpson de cubatur
{ Variabile
a: limita stng a intervalului de integrare pe axa Ox, real;
b: limita dreapt a intervalului de integrare pe axa Ox, real;
c: limita stng a intervalului de integrare pe axa Oy, real;
d: limita dreapt a intervalului de integrare pe axa Oy, real;
n: numrul de subintervale pe axa Ox, ntreg;
m: numrul de subintervale pe axa Oy, ntreg;
h: valoarea lungimii unui subinterval cu diviziunea n, real;
k: valoarea lungimii unui subinterval cu diviziunea m, real;
sum: valoarea integralei, real;
{ calculeaz h
b a
n


;
calculeaz k
d c
m


;
sum=0; i=1;
repet
j=1;
repet
sum=sum+((h*k)/9)*(f(a+(i-1)*h,c+(j-1)*k)+f(a+(i+1)*h,c+(j-1)*k) +
+f(a+(i-1)h,c+(j+1)*k)+4*(f(a+ih,(j+1)*k))+
124
Integrarea numeric
+f(a+i*h,c+(j-1)*k)+f(a+(i-1)*h,c+j*k)+f(a+(i+1)*h,j*k)+
+ 16*f(a+i*h,c+j*k))
j=j+2;
pn cnd j>m-1;
i=i+2;
pn cnd i>n-1;
tiprete valoarea integralei sum;
}
}
5.5.2.2. Implementarea algoritmului 5.7
/* Funcia care implementeaz metoda lui Simpson de cubatur.
Funcia ntoarce valoarea integralei duble.*/
double CubaturaSimpson( double (*f)(double,double),

double sx,

double dx,

double sy,

double dy,
int
nx,
int
ny)
{
double suma=0,h,k;
int i,j;
h=(dx-sx)/nx;
k=(dy-sy)/ny;
for(i=1;i<=nx-1;i+=2)
for(j=1;j<=ny-1;j+=2)
suma+=h*k*( f(sx+(i-1)*h,sy+(j-1)*k)+f(sx+(i+1)*h,sy+(j-
1)*k)+
f(sx+(i-1)*h,sy+(j+1)*k)+f(sx+(i+1)*h,sy+(j+1)*k)+
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;
}
125
Metode numerice n electronic
5.6. APLICAII
1.Se d funcia f x
x
x
.e . x
x
( )
cos( )
( sin )
+ +
+
3
2
1 1
1
2

pentru care se cere integrala de la 0 la 3.
Valoarea integralei este dat n tabelul 5.1
Tabelul 5.1.
Metoda Numrul de
subintervale
Valoarea integralei
Dreptunghiului 10000 1394.642843
Trapezului 10000 1395.704297
Richardson 5000 i 10000 1395.703984
Simpson 10000 1395.703984
Cuadratura Gauss Grad pol Legendre
n=15
1395.7031
2. Se consider funcia de dou variabile:
f x,y
x y
.x.y
. x . x y ( ) exp( ) sin( )
+
+
+ + +
2 2
1 2
1 2
Se cere valoarea integralei din funcia dat pe domeniul x [0,2];
y
[0,2].
Valoarea integralei este dat n tabelul 5.2.
Tabelul 5.2
Metoda Nr. Pct. Pe Ox Nr. Pct. Pe Oy Valoarea integralei
Cubatura trapezului 100 100 -24.730047
Cubatura Simpson 100 100 -24.733155
126
Integrarea numeric
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
127
Metode numerice n electronic
funcie liniar sau cu o funcie polinomial de un anumit grad poate da valori
foarte apropiate de valorile funciei.
6.1. INTERPOLAREA POLINOMIAL

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

.
x
k
. x
n
y
y
0
y
1

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

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


(6.1)
Conform tabelului 6.1 avem sistemul:

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

+ + + +

'


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

.
Considerm sistemul omogen:

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

+ + + +

'


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

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

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

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




(6.5)
Formm polinomul
P x
n
( )
sub forma:

P x b x b x b b x
n k k n n
( ) ( ) ( ) ... ... ( ) + + + + +
0 0 1 1


(6.6)
Trebuie s determinm coeficienii
b b b
n 0 1
, ,...,
.
) (
) (
,...,
) (
) (
,...,
) (
) (
,
) (
) (
1 1
1
1
0 0
0
0
n n
n n
n
k k
k n
k
n n
x
x P
b
x
x P
b
x
x P
b
x
x P
b


(6.7)
Ca urmare,

( )
( )

n
i
n
i j j
j i
j
n
i
i
n
i j j
j i
n
i j j
j
i
n
i
i i
i
i n n
x x
x x
y
x x
x x
y
x
x
x P x P
0 , 0 0
, 0
, 0
0
) (
) (
) ( ) (
Polinomul de gradul n care trece prin n+1 puncte date, numit i polinomul de
interpolare al lui Lagrange, are forma:

( )


n
i j j j i
j
n
i
i n
x x
x x
y x P
, 0 0
.
(6.8)
Expresia polinomului lui Lagrange este funcie de coordonatele punctelor
cunoscute i de variabila x . Cu ajutorul formulei determinate (6.8) a
polinomului, care aproximeaz o funcie, se poate calcula valoarea funciei n
orice punct necunoscut cuprins ntre
x
0
i
x
n
.
6.1.1. EROAREA DE TRUNCHIERE N INTERPOLAREA
129
Metode numerice n electronic
LAGRANJIAN
Eroarea de trunchiere este dat de diferena dintre funcia
f x ( )
de
interpolat i polinomul de interpolare al lui Lagrange.
( ) ( ) e f x y
x x
x x
F x
T i
i
n
j
i j j j i
n




0 0,

(6.9)
Construim funcia
G x x x x x x x
n
( ) ( )( )...( )
0 1
(6.10)
Cu funciile
F x ( )
, (6.9) i
G x ( )
, (6.10) formm urmtoarea funcie :

H t F x G t F t G x ( ) ( ) ( ) ( ) ( )

(6.11)
care are proprietile :
1.
H x
j
( ) 0
pentru j = 0, . . . ,n, deoarece nlocuind
x x
j

n formula
(6.9) rezult
F x
j
( ) 0
; j = 0, 2, . . . ,n i
G x
j
( ) 0
; j=0, 2, . . . ,n;
2.
H x ( ) 0
Pe baza teoremei valorii medii rezult c exist n+2 puncte

0 1 2 1
, , ,...,
n+
pentru care derivata H'(t)=0,
H H H H H
n n
' ' ' ' '
( ), ( ), ( ), ..., ( ), ( )
0 1 2 1 +

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

1
0 unde
x x
n 0
< <

Din (6.11) rezult:

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


(6.12)
sau

( )
( )
( )
( ) e F x
f
n
G x
T
n

+
+1
1

( )!
x x
n 0
< <

(6.13)
formul ce reprezint eroarea de trunchiere pentru interpolarea lagranjian.
6.1.2 EROAREA DE ROTUNJIRE N INTERPOLAREA
LAGRANJIAN
Considerm polinomul lui Lagrange dat de relaia (6.8) pe care o scriem sub
forma:
P x y z
i i
i
n
( )

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

0
1
i p y z
i k k
k
i

0
,
P x p
n
( )

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

x
i

x
j

x
-
-
:
.

4
1
-1
1
-1
z
j 1

z
j
Fig.6.1. Graful de procedur a expresiei z.

Considerm toate valorile
x
i
, i=1,2,... ,n, fr erori i notm cu

k
i
k n i n , ... ; , ,... 0 1 01 1 , erorile termenilor produsului. n aceste
condiii pentru
z
0
avem eroarea de rotunjire

0
=0, deoarece
z
0
iniializat
este 1 i are eroarea zero.

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

+ + +

+ + +
+ +


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

( )

n
i
j j j j
j
i j
n

+ +

1 1 2 3 4
0
1
(6.16)
131

2
Metode numerice n electronic
Dac considerm

kj
t

10
unde t este mantisa calculatorului i notm cu

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


z
i

i

e
i
y
i

1
1
.
+
p
i-1

p
i

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

0
1
Se consider eroarea iniial n punctul
p
i
nul, erorile de rotunjire n nodurile
5,6 le notm cu

5 6
01 1
i i
i n , , , ,..,
i notm cu

i
i n , , ,... 01 1
erorile
termenilor sumei.
( )

0 0 0 50
0 0
0
60
+ + + e
z y
p
( )
1 1 1 31
1 1
1
1
1
2
61
+ + + + e
z y
p
p
p
(6.19)
( )

n n n n
n n
n
n
n
n
n
e
z y
p
p
p

+ + + +
1 1 1 5 1
1
1
1
2
1
6 1 , ,
tim c ( )
i
n 4 1
pentru i=0,1,..,n-1 i considerm c
e e
i
<
pentru
i=0.1.,n-1. n aceste condiii avem :

kj
<

( )
[ ]
( )
[ ]

n n i i
i
n
i
i
n
i
i
n
i
i
n
p n e z y p n e p p

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

1
0
1
i rezult:
132
z y
p
i i
i

p
p
i
i
1
Integrarea numeric
( )
n
n n en

+
1
2 2 1

(6.20)
expresie care reprezint eroarea de rotunjire pentru interpolarea lagranjian.
6.1.3. PARTICULARIZRI ALE POLINOMULUI LUI LAGRANGE
Dac considerm dou puncte, interpolarea devine liniar
y y
x x
x x
y
x x
x x

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

( )
( ) ( )
e
f
x x x x
T


2
1 2
!
x x
1 2
< <

(6.22)
i eroarea de rotunjire:

2
12 2 + e (6.23)
unde

i e sunt date n paragraful 6.1.2.


Pentru trei puncte, interpolarea devine ptratic.
6.1.4. ALGORITMUL 6.1. POLINOMUL LUI LAGRANGE
{Variabile
n : numrul de puncte cunoscute, ntreg ;
x : abscisele punctelor cunoscute, vector ;
y : ordonatele punctelor cunoscute, vector ;
x
: punctul n care se calculeaz interpolarea, real ;
i,j : contori, ntregi ;
sum : variabil ce reine suma, real ;
prod : variabil ce reine produsul, real ;
{ sum=0;
pentru i=0..n
{ prod=1;
pentru j=0..n dac
j i
atunci
calculeaz
prod prod
x x
x x
j
i j

;
sum sum y prod
i
+ ;
}
Valoarea interpolat este sum;
}.
6.1.5. IMPLEMENTAREA ALGORITMULUI 6.1
133
Metode numerice n electronic
/* Funcia care implementeaz metoda lui Lagrange de interpolare
Funcia ntoarce valoarea interpolat */
double Lagrange(int n,
double x[],
double y[],
double point)
{
int i,j;
double sum=0,prod;
for(i=0;i<=n;i++)
{
prod=1;
for(j=0;j<=n;j++)if(j!=i)prod*=(point-x[j])/(x[i]-x[j]);
sum+=y[i]*prod;
}
return sum;
}
6.2. POLINOMUL DE INTERPOLARE DE SPEA
NTI AL LUI NEWTON

Acest polinom de interpolare se exprim funcie de diferenele finite. Fie
[ ] f a b : ,
R i reeaua
x x x x
n 1 2 3
, , ,...,
cu pasul constant h.
Definiia 6.1. Se numete diferen finit de ordinul nti expresia :

( ) ( ) ( ) f x f x h f x +

(6.24)
unde h este pasul constant, iar diferena finit de ordinul n expresia :

( ) ( )
( )

n n
f x f x
1

(6.25)
Diferenele finite au urmtoarele proprieti :
1. Operatorul diferen finit este liniar :
( ) c f c f c f c f
1 1 2 2 1 1 2 2
+ +

(6.26)
2. Diferena finit de ordinul n se calculeaz cu formula :
( ) ( ) ( ) ( )

n
k
n
k
k
n
f x C f x n k h +

1
0

(6.27)
3. Diferenele finite mai pot fi obinute i cu ajutorul tabelului 6.2
Tabelul
6.2

x
i

y
i

y
i

2
y
i

3
y
i

4
y
i

5
y
i

6
y
i
134
Integrarea numeric

x
0

y
0

y
0

x
1

y
1

y
1

2
0
y

3
0
y

x
2

y
2

y
2

2
1
y

3
1
y

4
0
y

5
0
y

x
3

y
3

y
3

2
2
y

3
2
y

4
1
y

5
1
y

6
0
y

x
4

y
4

y
4

2
3
y

3
3
y

4
2
y

x
5

y
5

y
5

2
4
y

x
6

y
6
Definiia 6.2. Se numete putere generalizat de ordinul n a lui x expresia:
[ ]
( )( ) ( ) ( )
x x x h x h x n h
n
2 1 ...
(6.28)
Pentru h=0 puterea generalizat coincide cu puterea obinuit.
1. Diferena finit a puterii generalizate este:
[ ] [ ]
x nhx
n n

1

(6.29)
2. Diferena finit de ordinul k a puterii generalizate este:
[ ]
( )( ) ( )
[ ]

k n n k
x n n n n k x +

1 2 1 ...
(6.30)
Fie funcia tabelat dat n tabelul (6.1), unde reeaua
x x x x x
n 0 1 2 3
, , , ,... ,

este cu pasul constant h.
Prin cele n+1 puncte trece un polinom de gradul n pe care l cutm sub forma
P x C C x x C x x C x x
n n
n
( ) ( ) ( ) ... ( )
[ ] [ ] [ ]
+ + + +
0 1 0
1
2 0
2
0

(6.31)
unde ( ) ( )( )... ( )
[ ]
x x x x x x x x
i
i

0 0 1 1
, i =1, 2, ...n
i coeficienii
C C C
n 0 1
, ,...,
sunt necunoscute pe care le vom calcula. Se
observ c
P x y C
n
( )
0 0 0

(6.32)
Calculm diferena finit de ordinul nti :
P x C h C h x x nC h x x
n n
n
( ) ( ) ... ( )
[ ] [ ]
+ + +

1 2 0
1
0
1
2
(6.33)
Fcnd substituia
x x
0
rezult
P x C h
n
( ) !
0 1
1
.
135
Metode numerice n electronic
Se poate calcula
( )
C
P x
h
n
1
0
1!



(6.34)
Se continu calculul diferenelor finite n punctul
x
0
i se observ c :

( )
( )
C
P x
k h
k
k
n
k


0
!
, ( )
k
n
k
P x y
0 0
, k=0, 1, 2, ... n.
(6.35)
innd cont de formulele de calcul ale coeficienilor, polinomul lui Newton de
interpolare de spea nti poate fi scris astfel:

( ) ( )
[ ]
( )
[ ]
( )
[ ]
P x y
y
h
x x
y
h
x x
y
n h
x x
n
n
n
n
0 0
0
0
1
2
0
2
0
2
0
0
1!
2
+ + + +

! !

(6.36)
Deoarece n calculul coeficienilor s-au utilizat diferenele finite la
dreapta (tabelul 6.2), polinomul poart denumirea de polinom a lui Newton de
interpolare de spea nti.
6.2.1. ALGORITMUL 6.2. NEWTON 1
{Variabile
n:numrul de puncte cunoscute, ntreg;
h:pasul constant ntre abscisele cunoscute, real;
y:ordonatele punctelor, vector;
xp:abscisa punctului n care se face interpolarea;
x
0
:abscisa primului punct cunoscut, real ;
sum:variabila ce reine sumele pariale, real;
prod:variabila ce reine produsele, real;
i, j:contoare, ntregi;
{ sum=y
0
;
prod=1 ;
pentru i=1...n
{pentru j=0...n-i
calculeaz y
j
=y
j+1
-y
j
( ) ( ) ( ) ;
1
*
1
* * 1 *
0
i h
h i x x prod prod
p
+
sum=sum+y
0
*prod; }
valoarea interpolat este sum ;
} }.
6.2.2. IMPLEMENTAREA ALGORITMULUI 6.2
/* Funcia care implementeaz metoda de interpolare a lui Newton
de spea ntia.
Funcia ntoarce valoarea interpolat
136
Integrarea numeric
*/
double Newton1(int n,
double vi,
double pas,
double y[],
double point)
{
double sum=y[0],prod=1;
int i,j;
for(i=1;i<=n;i++)
{
for(j=0;j<=n-i;j++)y[j]=y[j+1]-y[j];
prod*=(point-(vi+(i-1)*pas))/(i*pas);
sum+=y[0]*prod;
}
return sum;
}

6.3. POLINOMUL DE INTERPOLARE DE SPEA A
DOUA AL LUI NEWTON
Pentru funcia dat n tabelul 6.1 se caut un polinom de gradul n care trece
prin cele n+1 puncte, sub forma:

P x C C x x C x x x x C x x x x x x
n n n n n n n
( ) ( ) ( )( ) ... ( )( )...( ) + + + +
0 1 2 1 1 1

(6.37)
Polinomul mai poate fi scris i funcie de puterea generalizat astfel

P x C C x x C x x C x x C x x
n n n n n
n
( ) ( ) ( ) ( ) ... ( )
[ ] [ ] [3] [ ]
+ + + + +
0 1
1
2 1
2
3 2 1

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

1 2 1
1
3 2
2
1
1
1 2 3
(6.40)

h C y x P
n n n
! 1 ) (
1 1 1


pentru
x x
n

1
i rezult C
y
h
n
1
1
1!

.

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

( )
C
y
k h
k
k
n k
k

!

(6.41) Substituind
k n 012 , , ,..,
n formula (6.41) se obin coeficienii
polinomului. innd cont de formula (6.41) polinomul de gradul n (6.38) poate fi
scris sub forma :
137
Metode numerice n electronic
( ) ( )
[ ]
( )
[ ]
( )
[ ] n
n
n
n
n
n
n
n n
x x
h n
y
x x
h
y
x x
h
y
y x P
1
0
2
1
2
2
2
1
1
! ! 2 ! 1

+ +

+



(6.42)
Acest polinom este numit polinomul lui Newton de interpolare de spea a doua
deoarece s-au utilizat diferenele finite la stnga (tabelul 6.2). Dac punctul de
aproximare a funciei se gsete n apropierea lui
x
n
, se recomand utilizarea
metodei se spea a doua deoarece d erori mai mici.
6.3.1. ALGORITMUL 6.3. NEWTON 2
{Variabile
n:numrul de puncte cunoscute, ntreg;
h:pasul constant ntre abscisele cunoscute, real;
y:ordonatele punctelor, vector;
xp:abscisa punctului n care se face interpolarea;
x
n
:abscisa maxim a punctelor cunoscute, real ;
sum:variabila ce reine sumele pariale, real;
prod:variabila ce reine produsele, real;
i, j:contoare, ntregi;
{ sum=y
n
;
prod=1 ;
pentru i=1...n
{pentru j=n...i
calculeaz y
j
=y
j
-y
j-1
( ) ( ) ( )
prod prod x x i h
h i
p n
* * * * ; 1
1 1
sum=sum+y
n
*prod;
}
valoarea interpolat este sum ;
}
}.
6.3.2. IMPLEMENTAREA ALGORITMULUI 6.4
/* Funcia care implementeaz metoda de interpolare a lui Newton
de spea a doua.
Funcia ntoarce valoarea interpolat
*/
double Newton2(int n,
double vi,
double pas,
double y[],
double point)
{
double sum,prod,vf;
138
Integrarea numeric
int i,j;
vf=vi+n*pas;
sum=y[n];prod=1;
for(i=1;i<=n;i++)
{
for(j=n;j>=i;j--)y[j]=y[j]-y[j-1];
prod*=(point-(vf-(i-1)*pas))/(i*pas);
sum+=y[n]*prod;
}
return sum;
}
6.4. POLINOMUL LUI NEWTON DE INTERPOLARE CU
DIFERENE DIVIZATE
Fie funcia
f x ( )
dat sub forma celei prezentate n tabelul (6.1) unde
reeaua
x x x x
n 0 1 2
, , ,...,
din domeniul de definiie al funciei nu are pas
constant.
Definiia 6.3. Se numete diferen divizat de ordinul k+i a funciei
f
expresia :

( )
( ) ( )
f x x x x
f x x x f x x x
x x
i i i i k
i i i k i i i k
i k i
+ +
+ + +
+

1 1
1 1 1
1
, , , ... ,
, , ... , , , ...,

(6.43)
Se determin polinomul de gradul n, de forma :

P x C C x x C x x x x C x x x x x x
n n n
( ) ( ) ( )( ) ... ( )( )...( ) + + + +
0 1 0 2 0 1 0 1 1

(6.44)
cunoscnd n+1 puncte
( , ) x y
i i
, i=0, ...,n , care verific polinomul.
Se observ c
P x y C
n
( )
0 0 0

.
Calculm diferena divizat de ordinul nti pentru polinomul
P x
n
( )
i se face
x x
1

P x x C
n
( , )
0 1 1

.
Calculnd n continuare, se determin diferena divizat de ordinul k i lund
pe
x x
k

se obine valoarea coeficientului


C
k
:
C P x x x x
k n k
( , , ,..., )
0 1 2
, k=0, 1, ...,n.
(6.45)
innd cont de formula (6.45), polinomul (6.44) se scrie sub forma:

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

0 0 1 0 0 1 2 0 1
0 0 1 1

(6.46) unde fiecare diferen divizat se calculeaz cu ajutorul formulei (6.43).
139
Metode numerice n electronic
Polinomul obinut (6.46) poart numele de polinomul lui Newton de interpolare
cu diferene divizate.
6.4.1. ALGORITMUL 6.4. NEWTON 3
{Variabile
n : numrul de puncte date ale funciei, ntreg ;
x : abscisele punctelor date, vector ;
y : ordonatele punctelor date, vector ;
x : punctul n care se interpoleaz funcia, real ;
i,j : contoare, ntregi ;
sum : variabil ce reine sumele pariale, real ;
prod : variabil ce reine produsele pariale, real ;
{ sum=y
0
;
prod=1;
pentru i=1...n
pentru j=0...n-i calculeaz
y
y y
x x
j
j j
j i j

+
+
1
;
prod= prod*( x -x
i-1
);
sum=sum+y
0
*prod;
}
valoarea interpolat este sum;
}
6.4.2. IMPLEMENTAREA ALGORITMULUI 6.4
/* Funcia care implementeaz metoda de interpolare a lui Newton
cu diferene divizate.
Funcia ntoarce valorea interpolat.
*/
double NewtonDD(int n,
double x[],
double y[],
double point)
{
int i,j;
double sum,prod;
sum=y[0];prod=1;
for(i=1;i<=n;i++)
{
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;
140
Integrarea numeric
}
return sum;
}
6.5. METODA LUI AITKEN DE INTERPOLARE
Metoda lui Aitken de interpolare d acelai rezultat ca i metoda lui
Lagrange de interpolare doar c prin aceast metod nu se determin un
polinom, ci se realizeaz mai multe interpolri liniare. Cu fiecare interpolare,
numrul punctelor rmase se micoreaz cu o unitate, iar funcia ce trece prin
dou puncte de la etapa curent crete n grad, astfel c n final, dac sunt date
n+1 puncte, se obine o funcie de gradul n.
Considerm funcia dat n tabelul 6.1
Tabelul
6.3
x
y

x
0

y
0

x
1

y
1

y
01

x
2

y
2

y
02

y
012

x
3

y
3

y
03

y
013

y
0123

x
4

y
4

y
04

y
014

y
0124
----
----- ---- ---- ---- ---- ----

x
n

y
n

y
n 0

y
n 01

y
n 012
----
y
n 0123 ...

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

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

j
j j
j
j
y
x x
x x
y
x x
x x
y
0
1
1
01
1
01

j=2, 3, ..., n
(6.47)
- - - - - - - - - - - - - - - ----------------
( ) ( ) ( ) n n
n n
n
n n
n n
n
n
y
x x
x x
y
x x
x x
y
2 ... 012
1
1
1 2 ... 012
1
... 012


(6.48)
Valoarea interpolat a funciei tabelate n punctul x este y
012...n
.
6.5.1. ALGORITMUL 6.5. METODA LUI AITKEN
{Variabile
n : numrul de puncte date ale funciei, ntreg ;
141
Metode numerice n electronic
x :abscisele punctelor date, vector ;
y : ordonatele punctelor date, vector ;
xp: punctul n care se interpoleaz funcia, real ;
i,j : contoare, ntregi ;
{
pentru i=1...n
pentru j=i...n
calculeaz

y y
x x
x x
y
x x
x x
j i
p j
i j
j
p i
j i

1
1
1
1
;
}
valoarea interpolat este y
n
;
}
6.5.2. IMPLEMENTAREA ALGORITMULUI 6.5
/* Funcia care implementeaz metoda lui Aitken de interpolare
Funcia ntoarce valoarea interpolat */
double Aitken(int n,
double x[],
double y[],
double point)
{
int i,j;
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
y[j]=y[i-1]*(point-x[j])/(x[i-1]-x[j])+y[j]*(point-x[i-1])/(x[j]-x[i-1]);
return y[n];
}
6.6. INTERPOLAREA CU FUNCII SPLINE
Cuvntul splin provine din englez i nseamn o rigl elastic de care dac
se aga greuti poate fi fcut s treac prin diferite puncte dorite, cuprinse
ntre capetele riglei.
Considerm dat o funcie tabelat, reprezentat n tabelul 6.4.
Tabelul 6.4
x

x
1

x
2

x
3
----

x
n

y

y
1

y
2

y
3
----
y
n
142
Integrarea numeric
Considerm
x a
1

i
x b
n

,
[ , ] a b
fiind intervalul de definiie a funciei
f
, iar abscisele x
1
,x
2
,...,x
n
o diviziune a intervalului de definiie. Valorile
funciei sunt

y f x
i i
( )
,
i n 1 2 , ,...,

(6.49)
Definiia 6.4. Se numete funcie spline de ordinul n relativ la diviziunea
a intervalului
[ , ] a b
o funcie S:
[ , ] a b
R de clas C
m-1
[ , ] a b
ale crei
restricii S
i
(x) pe fiecare interval
[ , ] x x
i i +1
al diviziunii sunt polinoame de
ordinul m, adic:
S x P x
i m
i
( ) ( ) , dac
x x x
i i

+
[ , ]
1
, i =1,2,...,(n-1)
(6.50)
Funcia S(x) este neted pe poriuni deoarece are primele (m-1) derivate continue
pe
[ , ] a b
, iar derivata de ordinul m este discontinu n
x
i
, i =1,2,...,n. Gradul
de netezire al funciei este m. Restriciile funciei sunt polinoamele:
S
i
(x)=A
i
x
m
+ B
i
x
m-1
+ C
i
x
m-2
+ E
i
x
m-3
+ ... +R
i
(6.51)
dac,
x x x
i i

+
[ , ]
1
, i =1,2,...,(n-1)
Aceste funcii sunt derivabile pn la (m-1) i sunt continue mpreun cu
derivatele. Derivata de ordinul (m-1) a lui S
i
(x) pe intervalul
[ , ] x x
i i +1
este o
funcie liniar i trece prin punctele
( , ) x D
i i
i
( , ) x D
i i + + 1 1
unde,
D S x
i i
m

( )
( )
1
i =1,2,...,n.
Rezult ecuaia liniar:
S x
D x x D x x
h
i
m i i i i
i
( )
( )
( ) ( )
+ +

+
1 1 1

(6.52)
unde h
i
=x
i+1
-x
i
, i =1,2,...,(n-1)
Integrnd de m-1 ori relaia (6.52) se obine:
S x
D x x D x x
h
C
i
m i i i i
i
i
( )
( )
( ) ( )
+ +


+
2 1
2
1
2
1
2

(6.53)
i i
i
i i i i
m
i
C x C
h
x x D x x D
x S
2 1
3
1
3
1
) 3 (
6
) ( ) (
) ( + +
+

+ +


(6.54)

+

+ +
+

+

S x
D x x x x D
n h
C x
m
C x
m
C
i
i i
m m
i
m
i
i
i
m
i
m
m i
( )
( ) ( ) ( )
( )! ( )! ( )!
...
,
1
1 2
1
1
1
3
2
4
1
1
1 3 4

(6.55) S x
D x x x x D
n h
i
i i
m m
i
m
i
i
( )
( ) ( ) ( )
!

+
+
+

1
1
1
1
1
C x
m
C x
m
C x C
i
m
i
m
m i m i
1
2
2
3
2 1
2 3

+ + +
( )! ( )!
..
, ,
(6.56)
143
Metode numerice n electronic
Pentru ntreg intervalul
[ , ] a b
rezult un sistem liniar punnd condiia ca
S
i
(x
i
)=y
i
, i=1,2,..,n i continuitatea celor (m-1) ecuaii n toate punctele x
i
. n
extremele
x
1
i
x
2
se scrie polinomul lui Lagrange, l derivm pn la m-1 i
aflm corespunztor valorile derivatelor n
x
1
i
x
n
. Rezult necunoscutele:
D
i
, D
i+1
, C
1i
,..., C
m-1,i
pentru fiecare interval. n acest caz sunt n+(m-1)+ (n-
1) necunoscute i n+(m-1)+(n-1) ecuaii. Sistemul fiind liniar se rezolv cu una
din metodele de la capitolul 3.
Algoritmul i programul s-au realizat pentru restriciile S
i
polinoame de gradul
3.
n acest caz:
S
i
(x)=A
i
x
3
+ B
i
x
2
+ C
i
x + E
i
(6.57)
i
i i i i
i
h
x x D x x D
x S
) ( ) (
) (
1 1
+

+ +
i
i
i i i i
i
C
h
x x D x x D
x S
1
2
1
2
1
2
) ( ) (
) ( +


+ +
S x
D x x D x x
h
C x C
i
i i i i
i
i i
( )
( ) ( )


+ +
+ + 1
3
1
3
1 2
6

(6.58) Din
S x y
i i
( )
i
S x y
i i
( )
+ +

1 1
rezult:

C
y y
h
D D
h
i
i i
i
i i
i 1
1 1
6


+ +

C
x y x y
h
D x D x
h
i
i i i i
i
i i i i
i 2
1 1 1 1
6


+ + + +
Din identificarea relaiilor (6.57) i (6.58) rezult :

i
i i
i
h
D D
A
6
1

+
;
B
D x D x
h
i
i i i i
i


+ + 1 1
2

(6.59)
C
D x D x
h
y y
h
D D
h
i
i i i i
i
i i
i
i i
i


+ + + + 1
2
1
2
1 1
2 6
E
x D x D
h
y x y x
h
D x D x
h
i
i i i i
i
i i i i
i
i i i i
i


+ + + + + + 1
3 3
1 1 1 1 1
6 6
(6.60)
Din continuitatea primei derivate n punctul
x
i
, S x S x
i i i i

1
' '
( ) ( ) rezult:

h D h h D h D
y y
h
y y
h
i i i i i i i
i i
i
i i
i
+
+

+ + +

_
,

1 1 1 1
1 1
1
2 6 ( )
(6.61)
Considernd derivatele de ordinul nti n punctele
x
1
i
x
2
egale cu:
144
Integrarea numeric


y
y y
x x
y y
x x
y y
x x
1
2 1
2 1
3 2
3 2
3 1
3 1
(6.62)
respectiv


y
y y
x x
y y
x x
y y
x x
n
n n
n n
n n
n n
n n
n n
1 2
1 2
1
1
2
2

(6.63)
rezult sistemul tridiagonal n D
i

i n 1 2 3 , , ,...,

2 6
2 6
2 6
1 1 1 2
2 1
1
1
1 1 1 2 2 2 3
4 3
3
3 2
3
1 1 1 1
1 1
h D h D
y y
h
y
h D h h D h D
y y
h
y y
h
.......... .......... .......... .......... .......... .......... .......... .......... ........
h D h h D h D
y y
h
y y
h
.......... .......... .......... .......... .......... ..........
i i i i i i i
i i
i
i i
i
+

_
,

+ + +

_
,

+ + +

_
,

+
+ +
( )
( )
.......... .......... .........
h D h h D h D
y y
h
y y
h
h D h D y
y y
h
n n n n n n n
n n
n
n n
n
n n n n n
n n
i

+ + +

_
,

_
,

'

2 2 2 1 1 1
1
1
1 2
1
1 1 1
1
2 6
2 6
( )

(6.64)
unde y
1
i y
n
sunt date de expresiile (6.62), respectiv (6.63) .
Din sistemul (6.64) rezult valorile lui D
i
, i =1,2,...,n. Din (6.59) rezult
coeficienii restriciilor pe fiecare interval, restricii care aproximeaz funcia
dat. Dac se d x n care trebuie calculat funcia, se stabilete intervalul n
care se gsete x i se calculeaz valoarea restriciei funciei pe acest interval n
punctul x .
6.6.1. ALGORITMUL 6.6. FUNCII SPLINE
{ Variabile
n : numrul de puncte date ale funciei, ntreg ;
x :abscisele punctelor date, vector ;
y : ordonatele punctelor date, vector ;
xp: punctul n care se interpoleaz funcia, real ;
A,B,C: vectorii elementelor diagonale ale sistemului tridiagonal;
TL:vectorul termenilor liberi al sistemului tridiagonal;
145
Metode numerice n electronic
h:vectorul pailor punctelor pe abscis;
S:vectorul soluiilor sistemului tridiagonal;
derx1:derivata n punctul x1, real;
derx2:derivata n punctul x2, real;
num:variabila ce d numrul intervalului n care se gsete xp,
ntreg;
valint:variabil ce reine valoarea polinomului de gradul trei n
punctul
xp, real;
i,j : contoare, ntregi;
{ pentru i = 1 pn la n-1
calculeaz
h x x
i i i

+1
;
calculeaz
derx
y y
x x
y y
x x
y y
x x
1
2 1
2 1
3 2
3 2
3 1
3 1

;
calculeaz
derxn
y y
x x
y y
x x
y y
x x
n n
n n
n n
n n
n n
n n

1 2
1 2
1
1
2
2
;
construiete sistemul tridiagonal
2 0 0 6 1
0 2 0 0 6
1 1 1 2 3
2 1
1
1 1 2 1 2 2 2 3 4
3 2
2
2 1
1
. h. D h . D . D . D (
y y
h
d e r x)
. D h . D ( h h ) D h D . D . D (
y y
h
y y
h
)
n
n
i
+ + + +

+ + + + + + +


+ + + + +

'

0 0 0 2 6
1 2 3 1 1 1
1
1
. D . D . D h D . h . D ( d e r x n
y y
h
)
n n n n
n n
n
Rezolv sistemul conform algoritmului (3.8) din capitolul 3.
Calculeaz S=Tridiagonal(A,B.C.TL);
/* Se caut intervalul care conine punctul de interpolare*/
i =1
repet
i=i+1;
pn cnd xp<x[i];
Cu formulele (6.59) calculeaz valorile
A B C E
i i i i
, , ,
pentru i
gsit;
calculeaz val A xp B xp C xp E
s s s s
int . . . ; + + +
3 2
tiprete valint
146
Integrarea numeric
}
6.6.2. IMPLEMENTAREA ALGORITMULUI 6.6
/* Funcia care implementeaz interpolarea prin funcii spline
cubice
Funcia ntoarce
1 dac se gsete valoarea ;
0 dac sistemul tridiagonal nu se poate rezolva;
2 dac valoarea de interpolat nu se afl n interval;
*/
int SPLINE(int ord,
double xi[],
double yi[],
double point,
double *valoare
)
{
static double
a[NrMax],b[NrMax],c[NrMax],d[NrMax],der2[NrMax];
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 */
147
Metode numerice n electronic
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;
while (point<xi[loc]) loc++;
*valoare=a[loc]*pow(point,3)+b[loc]*pow(point,2)+c[loc]*point+d[loc];
return 1;
}
6.7. INTERPOLAREA FUNCIILOR PERIODICE
Se consider funcia periodic
f a b :[ , ]
R cu proprietatea c
f a f b ( ) ( )
unde T b a este perioada funciei.
Experimental s-au obinut n valori ale funciei pe perioada
[ , ] a b
prezentate
n tabelul 6.5 i se cere o valoare a funciei
f
ntr-un punct
x a b
p
[ , ]
, dar
x x
p i

,
i n 1 2 , ,...,
.
Tabelul 6.5
x

x a
1


x
2

x
3
----
x b
n 2


y

y
1

y
2

y
3
----
y
n 2
Pentru determinarea acestei valori se determin un polinom de interpolare a
funciei periodice.
Definiia 6.5. Se numete sistem fundamental de funcii periodice irul de funcii

, i=0,1,2,...,n definite pe
[ , ] a b
, dac: sunt continue, liniar independente pe
[ , ] a b
,
( ) ( ) a b
pentru orice i =1,2,...,n , iar funcia
148
Integrarea numeric
H x a
i i
i
n
( )


0
cu a
i
i
n
2
0
0 >


(6.65)
are cel mult n rdcini pe
[ , ] a b
.
Se face transformarea t
x a
b a

2( )
pentru a transforma intervalul
[ , ] a b

n intervalul [0,2]. n acest caz se consider sistemul de funcii periodice
fundamental pe
[ , ] a b
.
1 , cos x, sin x, cos 2x, sin 2x, ... , cos nx, sin nx
(6.66)
Propoziia 1: Fie funcia periodic f: [0,2]R i punctele (
x f x
i i
, ( )
),
i=0,1,...,n unde [ ] x o
i
,2
,
x x
i j

. Atunci polinomul de interpolare a funciei


date este:

n
i
n
i j
j j i
j
i n
x x
x x
x f I
0 0
2
s i n
2
s i n
) ( (6.67)
Se observ o analogie ntre polinomul de interpolare al lui Lagrange i
polinomul de interpolare a funciilor periodice (6.67).
6.7.1. ALGORITMUL 6.7. FUNCII PERIODICE
{Variabile
a : limita stng a intervalului, real ;
b : limita dreapt a intervalului, real ;
n : numrul de valori cunoscute ale funciei, ntreg ;
x : abscisele punctelor cunoscute, vector ;
y : ordonatele punctelor cunoscute, vector ;
x : punctul de interpolare a funciei, real;
i,j : contoare, ntregi ;
sum : variabil pentru a reine sumele, real;
prod : variabil pentru a reine produsele, real ;
{ T
b a

;
sum=0;
pentru i=0,1,...,n
{prod=1;
pentru j=0,1,...,n dac j i atunci
calculeaz
[ ]
[ ]
prod prod
T x x
T x x
j
i j



sin ( )
sin ( )
;
calculeaz sum=sum+y
i
prod;
}
valoarea interpolat este sum
149
Metode numerice n electronic
}
}
6.7.2. IMPLEMENTAREA ALGORITMULUI 6.7
/* Funcia care implementeaz metoda de interpolare a funciilor
periodice.
Funcia ntoarce valoarea interpolat */
double IFPer(int n,
double x[],
double y[],
double T,
double point)
{
int i,j;
double sum=0,prod;
for(i=0;i<=n;i++)
{
prod=1;
for(j=0;j<=n;j++)
if(j!=i)prod*=sin( pi*(point-x[j])/T )/sin (pi*(x[i]-x[j])/T);
sum+=y[i]*prod;
}
return sum;
}
6.8. INTERPOLAREA FUNCIILOR DE MAI MULTE
VARIABILE
Vom considera o funcie de dou variabile:
f
: ER unde ER
2
de forma
f g x y ( , )
. Se consider urmtoarele puncte cunoscute
)) , ( , , (
j i j i
y x f y x

pentru
i n 01 2 , , ,...,
i
j n 01 , ,...,
.
Se pune problema determinrii unui polinom de gradul n care s satisfac
condiiile
P x y f x y
n i i i i
( , ) ( , )
cu
i j n , , , ,..., 01 2
. Fie polinomul de grad
n n dou variabile:
P x y a a x a y a xy a xy
n n
n
( , ) .. + + + + +
00 10 01 11 1

(6.68)
Coeficienii polinomului pot fi pui sub form matriceal astfel:
150
Integrarea numeric

a a a a a a
a a a a a
a a a
a a
a
n n
n
n n n
n n
n
0 0 0 1 0 2 0 3 0 1 0
1 0 1 1 1 2 1 3 1 1
2 0 2 1 2 2
1 0 1 1
0
0
0 0 0
0 0 0 0
0 0 0 0 0
...
...
. ..
...
...
( )
( )
( ) ( ) ( )
( ) ( )

_
,

(6.69)
Pentru determinarea acestor coeficieni avem nevoie de
( )( ) n n + + 1 2
2

ecuaii. Aceste ecuaii le putem obine numai din punctele date
( ) x y f x y
i i i i
, , ( , )
care trebuie s fie tot n numr de
( )( ) n n + + 1 2
2
.
Ca urmare, punctele n care se cunoate funcia este necesar s se dea sub form
triunghiular:

( ) ( )
( ) ( )
( )
( , ) ( , ) , ... ,
( , ) , , ...
( , ) , ...
( , ) ...
x y x y x y x y
x y x y x y
x y x y
x y
n
n n
n
0 0 0 1 0 2 0
1 0 1 1 1 2
1 0 1 1
0
0
0 0
0 0 0

_
,


(6.70)
n acest caz punctele nu sunt aezate pe o curb de gradul n ceea ce conduce la
un determinant 0 , deci la o determinare unic a coeficienilor polinomului
(6.68). Se caut un polinom de gradul n sub forma:

151
Metode numerice n electronic

[ ] [ ] [ ]
P x y a a x x a y y a x x
n
( , ) ( ) ( ) ( ) + + + +
00 10 0
1
01 0
1
20 0
2


[ ] [ ] [ ] [ ] n
n
y y a y y a y y x x a ) ( ... ) ( ) ( ) (
0 0
2
0 02
1
0
1
0 11
+ + + +
(6.71)
Aplicm diferenele finite pentru funciile de dou variabile:


x y
i j
x y
i j
n ij
i j
i j i j
f x y P x y a h k i j
+ +
( , ) ( , ) ! !
0 0 0 0
(6.72)
innd cont de formula (6.72) n expresia (6.71) rezult:

a
f x y
h k i j
ij
x y
i j
i j
i j

+
( , )
! !
0 0
Introducnd coeficienii calculai n expresia polinomului (6.71) rezult
polinomul de interpolare pentru funcii de dou variabile:

[ ] [ ]
P x y
f x y
h k i j
x x y y
n
x y
i j
i j
i j
i j n
n
i j
i j
( , )
( , )
! !
( ) ( )
,

+

0 0
0
0 0 (6.73)
Formula se poate extinde la funcii multidimensionale, dar trebuie s fim ateni
la modul de selecie a punctelor n care se alege funcia pentru a putea fi posibil
calculul coeficienilor polinomului de interpolare.
n aplicaii se utilizeaz des pentru interpolarea funciilor de dou variabile,
polinomul lui Lagrange extins. Considerm (n+1)(m+1) puncte distincte n care
este dat funcia
f x y i n j n
i j
( , ), , ,..., ; , ,..., . 01 01
Se caut polinomul
P x y ( , )
de grad cel mult n n x i m n
y
astfel ca:
. ,..., 2 , 1 , 0 ; ,..., 1 , 0 ), , ( ) , ( m j n i y x f y x P
j i j i

Polinomul lui Lagrange
pentru dou variabile are forma:

L x y f x y
x x
x x
y y
y y
i j
k
i k
k
j k k
k j
m
k
k i
n
j
m
i
n
( , ) ( , )



0 0 0 0
. (6.74)
Pentru acest polinom sunt prezentate n continuare algoritmul i implementarea
algoritmului n limbaj C.
6.8.1. ALGORITMUL 6.8. FUNCII DE DOU VARIABILE
{Variabile
n,m:intregi,numrul de puncte pe Ox i Oy ;
x:vectorul coordonatelor punctelor pe Ox;
y:vectorul coordonatelor punctelor pe y;
z:matricea valorilor funciei;
152
Integrarea numeric
pcx:coordonata pe Ox a punctului de interpolare;
pcy:coordonata pe Oy a punctului de interpolare;
i,j,k:intregi,contori;
prodx,prody:produse pariale;
valoare:sume pariale;
{
valoare=0;
pentru i=0 la n
{
prodx=1;
pentru k=0 la n dac k i
calculeaz prodx=(pcx-x[k])/(x[i]-x[k]);
pentru j=0 la m
{
prody=1;
pentru k=0 la m dac k j
calculeaz prody=(pcy-y[k])/(y[j]-y[k]);
calculeaz valoare=z(i,j)*prodx*prody;
}
}
funcia n punctul de interpolare este valoare;
}
6.8.2. IMPLEMENTAREA ALGORITMULUI 6.8
double Lagrange2(int n, int m,
double x[],
double y[],
double z[][NMAX],
double pcx,
double pcy
)
{
int i,j,k;
double prodx,prody,valoare;
valoare=0;
for(i=0;i<=n;i++)
{
prodx=1;
for(k=0;k<=n;k++)if(k!=i)
prodx*=(pcx-x[k])/(x[i]-x[k]);
for(j=0;j<=m;j++)
{
prody=1;
for(k=0;k<=m;k++)
153
Metode numerice n electronic
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 /
;
154
Integrarea numeric
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.
155
Metode numerice n electronic
7.1. METODA CELOR MAI MICI PTRATE
Presupunem c avem o funcie definit printr-un tabel de
valori. Dac tabelul este obinut n urma unor msurtori
fizice, atunci elementele lui pot avea erori. Elementele care
difer mult de celelalte pot fi eliminate. Problema care se
pune este s determinm funcia analitic care aproximeaz
cel mai bine datele din tabel sau curba care trece prin
punctele tabelului.
Considerm c funcia tabelat poate fi aproximat cu
funcia: ( ) y f x
. Deoarece funcia tabelat este cunoscut
numai n anumite puncte, n numr de m, n aceste puncte
avem urmtoarele erori:
( )
( )
( )
e y y y f x
e y y y f x
e y y y f x
m m m m m
1 1 1 1 1
2 2 2 2 2



'


(7.1)
care ar putea fi calculate dac am cunoate funcia ( ) y f x
.
Pentru determinarea funciei, vom anticipa nti o funcie
care s se asemene foarte mult cu curba realizat cu
punctele tabelului. Aceast funcie poate fi: liniar,
hiperbolic, logaritmic, exponenial geometric,
trigonometric etc.
Al doilea pas este determinarea funciei din condiiile ca
suma abaterilor:
________________
*)
Bibliografie: [7], [14],[15],[20]
e =
( )
y y
i i
i=
m

1

(7.2)
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:
156
Integrarea numeric
e y y
i
i
i=
m

1

(7.2a)
Inconvenientul n cazul formulei (7.2a) l prezint funcia
valoare absolut care nu are derivat n punctele n care se
anuleaz funcia. Pentru eliminarea acestor inconveniente s-
a trecut la suma ptratelor erorilor, pe care o notm cu E.

( ) E y y
i i
i=
m

1
2

(7.3)
Metoda de optimizare a primit denumirea de metoda celor
mai mici ptrate, conform formulei (7.3) pentru c
determin funcia ( ) y f x
pentru eroarea maxim i mai
poart denumirea i de regresie deoarece problema este de
deducere a funciei cunoscnd valorile ei ntr-un anumit
numr de puncte.
7.1.1. REGRESIA LINIAR
Se consider funcia tabelat:
Tabelul
7.1
x x
1
x
2
x
3
x
4
.. x
m
y
y
1
y
2
y
3
y
4
.. y
m

unde m reprezint numrul de msurtori sau de valori ale
funciei. Se cere s se determine funcia liniar de forma
general

y ax b +

(7.4)
care s aproximeze cel mai bine funcia tabelat (tabelul
7.1) asfel ca eroarea:
( )
2
1

+
m
i=
i i
y b ax E
(7.5)
s fie minim. Necunoscutele a i b se determin din
condiia de minim a lui E care se realizeaz pentru anularea
derivatelor pariale n raport cu a i b ale lui E:
157
Metode numerice n electronic

( ) ( )
( ) ( )

'

+
+

0 2
0 1 2
1
1
i
m
i =
i i
m
i =
i i
x y b a x
a
E
y b a x
a
E


(7.6)
Rezult sistemul n necunoscutele a i b :

m b + x a = y
x b + x a = x y
i
i =
m
i
i =
m
i
i =
m
i
i =
m
i i
i =
m

_
,

_
,

_
,

'



1 1
1
2
1 1
(7.7)
Soluiile sistemului liniar (7.7) n a i b sunt:

b
x y x x y
m x x
i
i=
m
i
i=
m
i
i=
m
i i
i=
m
i
i=
m
i
i=
m

_
,



2
1 1 1 1
2
1 1
2
(7.8)

a
m x y x y
m x x
i i
i=
m
i
i=
m
i
i=
m
i
i=
m
i
i=
m

_
,



1 1 1
2
1 1
2
(7.9)
158
Integrarea numeric
Numitorii expresiilor lui a i b se anuleaz numai dac
x
i

sunt identice, caz exclus.
nlocuind valorile lui a i b n ecuaia (7.4) avem funcia
liniar care aproximeaz cel mai bine funcia tabelat dat
(7.1).
7.1.1.1. Algoritm 7.1. Regresia liniar
{Variabile
x:abscisele funciei,vector;
y:ordonatele funciei,vector;
m: numrul experienelor, ntreg;
sx: variabila pentru suma absciselor, real;
sy: variabila pentru suma ordonatelor, real;
sxx:variabila pentru sumele de forma x
2
, real;
sxy: variabila pentru sumele de forma xy, real;
a:coeficientul lui x, real;
b: termenul liber, real;
i: contor, ntreg;
{
s
x
= 0; s
y
= 0; s
xy
= 0; s
xx
= 0;
pentru i = 1... m
{
calculeaz s
x
= s
x
+x
i
;
calculeaz s
y
= s
y
+y
i
;
calculeaz s
xy
= s
xy
+x
i
*y
i
;
calculeaz s
xx
= s
xx
+x
i
*x
i
;
}
calculeaz a =
m s -s s
m s -s s
;
xy x y
xx x x


calculeaz b =
s s -s s
m s -s s
xx y x xy
xx x x


;
}
Funcia este y = ax +b;
}
7.1.1.2. Implementarea algoritmului 7.1
/*Funcia ce implementeaz regresia liniar */
159
Metode numerice n electronic
void RegLin(int nrp,
double x[],
double y[],
double *coef1,
double *coef2)
{
double sx=0,sy=0,sxx=0,sxy=0;
int i;
for (i=1;i<=nrp;i++)
{
sx+=x[i];
sy+=y[i];
sxy+=x[i]*y[i];
sxx+=x[i]*x[i];
}
*coef1=(nrp*sxy-sx*sy)/(nrp*sxx-sx*sx);
*coef2=(sy*sxx-sx*sxy)/(nrp*sxx-sx*sx);
}
7.1.2. REGRESIA POLINOMIAL
Dac regresia liniar nu este satisfctoare se caut o
funcie polinom de un anumit grad (2, 3, 4n).
Fie funcia dat n tabelul (7.1). Considerm c
reprezentarea grafic a acestei funcii se aseamn foarte
mult cu curba unui polinom de gradul n de forma:
y a x a x ...... a x a
n
n
n
n
+ + + +

1
1
1 0

(7.10)
Notm cu
y
i
expresia:

y
i
= a x a x ... a x a
n i
n
n- i
n-
i
+ + + +
1
1
1 0

(7.11)
Se minimizeaz funcia int:
E =
( )
y a x -a x ... a x a
i n i
n
n- i
n-
i
i=
m

1
1
1 0
1
2

(7.12)
unde m reprezint numrul de valori ale funciei tabelate.
Necunoscutele sunt: a
n
, a
n-1
,..., a
0
.
(7.13)
Se deriveaz n raport cu necunoscutele (7.13) i se obine
sistemul:
160
Integrarea numeric
ma x a x a x a x a y
x a x a x a x a x
i
i =
m
i
i =
m
i
k
i=
m
k i
n
i=
m
n i
i
i=
m
i
i =
m
i
i=
m
i
k+
i =
m
k i
n+
i=
m
0
1
1
2
1
2
1 1
1
0
2
1
1
3
1
2
1
1
1
1
+

_
,
+

_
,
+ +

_
,
+ +

_
,

_
,
+

_
,
+

_
,
+ +

_
,
+ +

_
,
+

_
,
+

_
,
+ +

_
,
+ +

_
,


a x y
x a x a x a x a x a x y
__ ___ __ __ _ _ __ __ ___ __ __ ___ __ __ _ __ ___ __ ___
n i i
i
p
i =
m
i
p +
i=
m
i
p +
i=
m
i
p+k
i =
m
k i
p+n
i=
m
n i
p
i
1
0
1
1
1
2
1
2
1 1

__ __ __ __ __ _ __
x a x a x a x a x a x y
i
n
i=
m
i
n+
i=
m
i
n+
i=
m
i
n +k
i =
m
k i
n
i=
m
n i
n
i
1
0
1
1
1
2
1
2
1
2
1

_
,
+

_
,
+

_
,
+ +

_
,
+ +

_
,

'



(7.14)
Sistemul obinut este un sistem liniar n necunoscutele a
0
,
a
1
, a
2
.,..., a
n
i se rezolv cu una dintre metodele
cunoscute n capitolul 3.
7.1.2.1. Algoritmul 7.2.Metoda polinomial
{Variabile
X: abscisele funciei, vector;
Y: ordonatele funciei, vector;
m: numrul de puncte cunoscute ale funciei,
ntreg;
n: gradul polinomului, ntreg;
{
pentru i = 1. ... n+1
{
B[i] = 0;
pentru j = 1,....,n+1 A[i] = 0
}
pentru i = 1. ... n+1
{
pentru k = 1. ... m calculeaz B[i] = B[i]+ y
k
*pow(x
k
, i-1);
pentru j = 1,....,n+1
pentru k = 1. ... m calculeaz A[i,j] = A[i,j]+
pow(x
k
, i+j-2);
}
161
Metode numerice n electronic
Metoda_Rez_Sist.(n+1,A,B,Sol); (*se
rezolv sistemul*)
}
coeficienii polinomului sunt Sol;
}
7.1.2.2. Implementarea algoritmului 7.2
/* Funcia ntoarce:
0 dac gradul polinomului este mai mare ca
numrul de puncte
1 n caz de succes
*/
int RegPol(int nrp,
double xx[],
double yy[],
int grdp,
double coef[])
{
static double mat[NrMax][NrMax],b[NrMax];
int i,j,k,putere;
if (nrp<=grdp) return 0;
for(i=1;i<=grdp+1;i++)
for(j=1;j<=grdp+1;j++)
{
mat[i][j]=0;
putere=i+j-2;
for(k=1;k<=nrp;k++)mat[i][j]
+=pow(xx[k],putere);
}
for(i=1;i<=grdp+1;i++)
{
b[i]=0;
putere=i-1;
for(k=1;k<=nrp;k++)b[i]=b[i]
+yy[k]*pow(xx[k],putere);
}
GAUSS(grdp+1,mat,b,coef);
return 1;
}
7.1.3. REGRESIA HIPERBOLIC
162
Integrarea numeric
Fie funcia numeric dat n tabelul 7.1. Reprezentarea
grafic prin puncte a acestei funcii se aseamn foarte bine
cu o funcie hiperbolic. Se pune problema determinrii
funciei hiperbolice
y
ax+b

1

(7.15)
care aproximeaz cel mai bine funcia numeric. Pentru
comoditatea calculului se inverseaz funcia hiperbolic i
se construiete funcia eroare:
E
y
ax b
i
i
i=
m

_
,

1
1
2

(7.16)
Prin derivare n raport cu a i dup aceea cu b se obine
sistemul liniar:

mb+ x a=
y
x b+ x a=
x
y
i
i=
m
i
i=
m
i
i=
m
i
i=
m
i
i
i=
m
1 1
1
2
1 1
1

_
,

_
,

_
,

'


(7.17)
Soluiile sistemului (7.17) sunt:
a
x
y
m
x
y
x m x
i
i=
m
i i=
m
i
i i=
m
i
i=
m
i
i=
m

_
,



1 1 1
1
2
2
1
1

(7.18)
b
y
x
x
y
x
m x x
i=
m
i
i
i=
m
i
i
i
i=
m
i=
m
i
i=
m
i
i=
m

_
,



1
2
1 1 1
2
1 1
2
1

(7.19)
nlocuim valorile lui a i b n funcia hiperbolic (7.15) i se
obine funcia care aproximeaz cel mai bine funcia
numeric din tabelul 7.1.
7.1.3.1. Algoritm 7.3. Regresia hiperbolic
163
Metode numerice n electronic
{Variabile
x:abscisele funciei numerice, real;
y:ordonatele funciei numerice, real;
m: numrul experienelor, ntreg;
s
x:
variabila ce conine sumele absciselor, real;
s
y
: variabila ce conine suma inverselor
ordonatelor, real;
s
xx
:variabila ce conine ptratul absciselor, real;
s
xy
: variabila ce conine suma raportului dintre
abscise i ordonate, real;
a,b:coeficienii funciei hiperbolice, real;
i: contor, ntreg;
{
s
x
= 0; s
y
= 0; s
xy
= 0; s
xx
= 0;
pentru i = 1... m
{
calculeaz s
x
= s
x
+x
i
;
calculeaz s
y
= s
y
+
1
y
i
;
calculeaz s
xy
= s
xy
+
x
y
i
i
;
calculeaz s
xx
= s
xx
+x
i
*x
i
;
}
calculeaz a =
s s -m s
m s -s s
;
x y xy
xx x x


calculeaz b =


s s -s s
m s -s s
;
xx y xy x
xx x x
Funcia este y
ax+b

1
;
}
7.1.3.2. Implementarea algoritmului 7.3
/* Regresia hiperbolic */
Programul principal poate fi realizat
de ctre cititor ca un exerciiu. n continuare este
dat funcia:
/* Funcia ce implementeaz regresia hiperbolic
*/
164
Integrarea numeric
void RegHip(int nrp,
double *x,
double *y,
double *coef1,
double *coef2)
{
double sx=0,sy=0,sxx=0,sxy=0;
int i;
for (i=1;i<=nrp;i++)
{
sx+=x[i];
sy+=1/y[i];
sxy+=x[i]/y[i];
sxx+=x[i]*x[i];
}
*coef1=(nrp*sxy-sx*sy)/(nrp*sxx-sx*sx);
*coef2=(sy*sxx-sx*sxy)/(nrp*sxx-sx*sx);
}
7.1.4. REGRESIA EXPONENIAL
Se constat c funcia numeric din tabelul 7.1
reprezentat grafic, se aseamn foarte mult cu o
exponenial. Considerm funcia exponenial de forma
general:
y=a b
x

(7.20)
n care a i b sunt constante pozitive.
Pentru un calcul comod al constantelor a i b se
logaritmeaz funcia (7.20)

y a x b + ln ln

(7.21)
i se determin constantele asfel ca eroarea:
( )
2
1
ln ln ln


m
i=
i i
y b a+x E
(7.22)
s fie minim.
Prin derivarea parial a funciei E n raport cu a i b
se obine urmtorul sistem:
165
Metode numerice n electronic

'

,
_

,
_

,
_



m
i=
i i
m
i=
i
m
i=
i
m
i=
i
m
i=
i
y x b= x a+ x
y b= x a+ m
1 1
2
1
1 1
ln ln ln
ln ln ln

(7.23)
Soluiile sistemului obinut (7.23) sunt:
a
y x x y x
m x x
i
i=
m
i i i
i=
m
i
i=
m
i
i=
m
i
i=
m

1
]
1
1

_
,

1
]
1
1

'



exp
ln ln
1
2
1 1
2
1 1
2

(7.24)
b
m x y x y
m x x
i i i i
i=
m
i=
m
i=
m
i
i=
m
i
i=
m

1
]
1

_
,

1
]
1
1

'



exp
ln ln
1 1 1
2
1 1
2

(7.25)
7.1.4.1. Algoritm 7.4. Regresia exponenial
{Variabile
x:abscisele funciei numerice, real;
y:ordonatele funciei numerice, real;
m: numrul absciselor funciei, ntreg;
s
x:
variabil a sumei absciselor, real;
s
xx
: variabil a sumei ptratelor absciselor, real;
s
ln y
: variabil a sumei logaritmilor din ordonate,
real;
s
xln y
:variabil a sumei absciselor nmulite cu
logaritmul ordonatelor,
real;
{
s
x
= 0; s
ln y
= 0; s
xln y
= 0; s
xx
= 0;
pentru i = 1... m
{
166
Integrarea numeric
calculeaz s
x
= s
x
+x
i
;
calculeaz s
xx
= s
xx
+x
i
*x
i
;
calculeaz s
lny
= s
lny
+ln y
i
;
calculeaz s
xln y
= s
xln y
+ x
i
ln y
i
;
}
calculeaz a =exp
ln ln
s s -s s
m s -s s
;
y xx x x y
xx x x

'


calculeaz b =
exp
ln ln
ms -s
m s -s s

x y x y
xx x x

'

;
Funcia este y = ab
x
;
}
7.1.4.2. Implementarea algoritmului 7.4
/* (Regresia exponenial )*/
/*Funcia ce implementeaz regresia exponenial
*/
void RegExp(int nrp,
double x[],
double y[],
double *coef1,
double *coef2)
{
double sx=0,sy=0,sxx=0,sxy=0;
int i;
for (i=1;i<=nrp;i++)
{
sx+=x[i];
sy+=log(y[i]);
sxy+=x[i]*log(y[i]);
sxx+=x[i]*x[i];
}
*coef2=exp((nrp*sxy-sx*sy)/(nrp*sxx-sx*sx));
*coef1=exp((sy*sxx-sx*sxy)/(nrp*sxx-sx*sx));
}
7.1.5. REGRESIA GEOMETRIC
Dac funcia numeric din tabelul 7.1 se aseamn cu o
funcie de tip geometric, vom cuta s determinm funcia
de forma:
167
Metode numerice n electronic
y ax
b

(7.26)
care s aproximeze cel mai bine funcia numeric.
Se logaritmeaz cel mai bine funcia (7.26) i se construiete
funcia:
( )
2
1
ln ln ln


m
i=
i i
y x a+b E
(7.27)
Se calculeaz valorile lui a i b asfel ca funcia E s fie
minim. Prin derivarea parial n raport cu a i b a
expresiei E i egalarea derivatelor cu zero se obine
urmtorul sistem n necunoscutele a i b:

( )

'

,
_

,
_



m
i=
i i
m
i=
i
m
i=
i
m
i=
i
m
i=
i
y x = x a+b x
y = x a+b m
1
2
1 1
1 1
ln ln ln ln ln
ln ln ln
(7.28)
Rezolvnd sistemul se obin urmtoarele valori pentru a i
b:
( ) ( ) ( ) ( ) ( )
( ) ( )
a
y x x x y
m x x
i
i=
m
i
i=
m
i
i=
m
i i
i=
m
i
i=
m
i
i=
m

_
,

_
,

_
,

_
,

_
,

_
,



exp
ln ln ln ln ln
ln ln
1
2
1 1 1
2
1 1
2

(7.29)
( ) ( ) ( ) ( )
( ) ( )
b
m y x x y
m x x
i
i=
m
i i
i=
m
i
i=
m
i
i=
m
i
i=
m

_
,

_
,

_
,

_
,

_
,



ln ln ln ln
ln ln
1 1 1
2
1 1
2

(7.30)
Cu aceste valori funcia y ax
b
aproximeaz cel mai bine
funcia tabelat (7.1) care se aseamn cel mai bine cu o
funcie de tip geometric.
7.1.5.1. Algoritmul 7.5. Regresia geometric
{ Variabile
168
Integrarea numeric
x:abscisele funciei numerice, vector;
y:ordonatele funciei numerice, vector;
m: numrul de abscise, ntreg;
s
lnx:
variabil a sumei logaritmilor absciselor, real;
s
ln y
: variabil a sumei logaritmilor ordonatelor,
real;
s
lnxlny
: variabil sumei produsului logaritmilor
absciselor i a
logaritmilor ordonatelor, real;
s
lnxlnx:
variabila sumei ptratelor logaritmilor
absciselor, real;
a,b: coeficienii, real;
i: contor, ntreg;
{
s
lnx
= 0; s
ln y
= 0; s
lnxlny
= 0; s
lnxlnx
= 0;
pentru i = 1... m
{
calculeaz s
lnx
= s
lnx
+ln(x
i
);
calculeaz s
lnxlnx
= s
lnxlnx
+ln(x
i
)*ln(x
i
);
calculeaz s
lny
= s
lny
+ln y
i
;
calculeaz s
lnxlny
=s
lnxlny
+ln(x
i
)* ln(y
i
);
}
calculeaz a =exp
ln ln ln ln ln ln
ln ln ln ln
s s -s s
m s -s s
;
y x x x x y
x x x x

'

calculeaz b =
x x x x
y x y x
s -s s m
s -s s m
ln ln ln ln
ln ln ln ln


;

Funcia este y = ax
b
;
}
7.1.5.2. Implementarea algoritmului 7.5
/*Funcia ce implementeaz regresia geometric */
void RegGeo(int nrp,
double x[],
double y[],
double *coef1,
double *coef2)
{
double sx=0,sy=0,sxx=0,sxy=0;
int i;
169
Metode numerice n electronic
for (i=1;i<=nrp;i++)
{
sx+=log(x[i]);
sy+=log(y[i]);
sxy+=log(x[i])*log(y[i]);
sxx+=log(x[i])*log(x[i]);
}
*coef2=(nrp*sxy-sx*sy)/(nrp*sxx-sx*sx);
*coef1=exp((sy*sxx-sx*sxy)/(nrp*sxx-sx*sx));
}
7.1.6. REGRESIA TRIGONOMETRIC
Se consider funcia numeric dat n tabelul 7.1 i
funcia trigonometric de forma:

y a b x + cos

(7.31)
care aproximeaz cel mai bine funcia numeric.
Se determin constantele a i b asfel ca funcia de a i b
( ) E y a-b x
i i
I=
m
cos
2
1

(7.32)
s fie minim.
Prin egalarea cu zero a derivatelor pariale n raport cu a i
b ale funciei E se obine urmtorul sistem n
necunoscutele a i b :

ma+ x b= y
x a+ x b= y x
i
i=
m
i
i=
m
i
i=
m
i
i=
m
i i
i=
m
cos
cos cos cos


1 1
1
2
1 1

_
,

_
,

_
,

'

(7.33)
Soluiile sistemului (7.32) sunt:

a
y x x y x
m x x
i
i=
m
i
i=
m
i
i=
m
i i
i=
m
i
i=
m
i
i=
m

_
,

_
,

_
,

_
,

_
,

_
,



1
2
1 1 1
2
1 1
2
cos cos cos
cos cos



(7.34)
170
Integrarea numeric

b
m y x x y
m x x
i i
i=
m
i
i=
m
i
i=
m
i
i=
m
i
i=
m

_
,

_
,

_
,

_
,

_
,



cos cos
cos cos


1 1 1
2
1 1
2
(7.35)


= 2 =
2


f
T
unde
f
-frecvena,

- pulsaia, iar T
-perioada.

se stabilete funcie de periodicitatea funciei


numerice date.
7.1.6.1. Algoritmul 7.6. Regresia trigonometric
{ Variabile
x:abscisele funciei numerice, vector;
y:ordonatele funciei numerice, vector;
m: numrul absciselor funciei numerice, ntreg;
: pulsaia, real;
s
y
: suma ordonatelor funciei numerice, real;
s
cos 2x
: suma ptratelor cosinusurilor din abscise,
real;
s
cos x:
suma cosinusurilor din abscise, real;
s
ycosx
:suma produsului ordonatelor cu cosinusul
absciselor
corespunztoare, real;
a,b: coeficienii funciei, real;
i: contor, ntreg;
{
s
y
= 0; s
cos 2x
= 0; s
cos x
= 0; s
ycos x
= 0;
pentru i = 1... m
{
calculeaz s
y
= s
y
+ y
i
;
calculeaz s
cos 2x
= s
cos 2x
+ ( )
cos x
i
*
( )
cos x
i
;
calculeaz s
cos x
= s
cos x
+ ( )
cos x
i
;
calculeaz s
ycos x
= s
ycos x
+ y
i* ( )
cos x
i
;
}
calculeaz a =
s s -s s
m s -s s
;
y x x y x
x x x


cos cos cos
cos cos cos
2
2

171
Metode numerice n electronic
calculeaz b =
m s -s s
m s -s s
;
y x x y
x x x


cos cos
cos cos cos 2

}
Funcia este
( ) f a+b x cos
;
}
7.1.6.2. Implementarea algoritmului 7.6
void reg_trig( int n,
double x[],
double y[],
double ,w
double *coef1,
double *coef2)
{
int i;
double sx=0,sy=0,sxx=0,sxy=0;
for(i=1;i<=n;i++)
{
sx+=cos(w*x[i]);
sy+=y[i];
sxy+=y[i]*cos(w*x[i]);
sxx+= cos(w*x[i])*cos(w*x[i]);
}
*coef1=(sy*sxx-sx*sxy)/(n*sxx-sx*sx);
*coef2=(n*sxy-sx*sy)/(n*sxx-sx*sx);
}
7.1.7. REGRESIA MULTIPL
Aceast regresie se refer la funciile de mai multe
variabile. Considernd o funcie numeric de n variabile
y f x x x
n
( , , .... , )
1 2
i un tip de funcie analitic de n variabile
care se aseamn cu cea numeric, se pune problema
determinrii funciei analitice asfel ca ea s aproximeze cel
mai bine funcia numeric. Aceast funcie se determin
prin minimizarea sumei ptratelor erorilor n punctele
funciei numerice.
Pentru exemplificare considerm funcia de dou variabile
numeric (
x y z , ,
) unde
z g x y ( , )
. Suprafaa punctelor z
se poate asemna cu un plan, hiperboloid de rotaie,
elipsoid de rotaie, cilindru, con etc.
Vom considera funcia numeric dat n figura 7.1
172
Integrarea numeric
O
y
n
y
4
y
3
y
2
y
1
y
x
4
x
3
x
2
x
1 x
m
z
1n
z
2n z
3n
z
4n
z
14
z
m1
z
m2
z
m3
z
m4
z
nm
z
13
z
12
z
11
z
24
z
23
z
22
z
21
z
34
z
33
z
32
z
31
z
44
z
43
z
42
z
41
x
Fig.7.1.Reprezentarea funciei multiple.
Considerm c punctele
z z z
n 1 2
, ,...,
se afl aproximativ pe
un plan:

C By Ax z + +

(7.36)
Se pune problema determinrii acestui plan, adic a
valorilor constantelor A, B, C astfel ca planul s aproximeze
cel mai bine funcia numeric dat n tabelul 7.2. Se
construiete funcia sumelor ptratelor erorilor n punctele
reelei:

( )
E z Ax By C
ij i j
j=
n
i=
m

1 1
2

(7.37)
Prin egalarea derivatelor pariale ale funciei E n raport cu
necunoscutele A, B, C, rezult un sistem liniar funcie de
aceste necunoscute:
173
Metode numerice n electronic

mnC+ x nA+ y mB= z
x nC+ x nA+ x y B= x z
y mC+ x y A+ y mB= y
i
i=
m
j
j=
m
ij
j=
n
i=
m
i
i=
m
i
i=
m
i
j=
m
i=
m
j i
j=
n
i=
m
ij
j
j=
n
i
j=
n
i=
m
j j
j=
n
j
j=
n
i=
m
1 1 1 1
1
2
1 1 1 1 1
1 1 1
2
1 1 1


_
,

_
,

_
,

_
,

_
,

_
,

_
,

_
,
z
ij

'

(7.38)
Utiliznd una dintre metodele numerice de rezolvare a
sistemelor liniare din capitolul 3 se determin A, B, C, deci
planul cutat.
7.1.7.1. Algoritmul 7.7. Regresia multipl
{Variabile
x: argumentele pe axa Ox a funciei numerice,
vector;
y: argumentele pe axa Oy a funciei numerice,
vector;
z: valorile funciei numerice, matrice;
m: numrul de argumente pe Ox, ntreg ;
n: numrul de argumente pe Oy, ntreg;
s
x :
sumele argumentelor de pe Ox, real;
s
y
: suma parial a argumentelor de pe Oy, real;
s
xx
: suma parial a ptratelor argumentelor x,
real;
s
xy
: suma parial a produselor argumentelor, real;
s
yy
: suma parial a ptratelor argumentelor y,
real;
s
z
,s
xz
,s
yz
: sume pariale ale termenilor liberi ai
sistemului;
i: contor, ntreg;
{
s
x
= 0; s
y
= 0; s
xy
= 0; s
xx
= 0; s
yy
= 0; s
xz
=0;
s
yz
=0 ;s
z
=0;
pentru i = 1,..., m
pentru j=1,..,m
calculeaz s
x
= s
x
+x
i
;
calculeaz s
xx
= s
xx
+x
i
*x
i
;
calculeaz s
y
= s
y
+ y
i
;
174
Integrarea numeric
calculeaz s
yy
= s
yy
+ y
i
* y
i
;
calculeaz s
xy
= s
xy
+ x
i
*y
i
;
calculeaz s
z
=s
z
+z
ij
; calculeaz
s
xz
=s
xz
+x
i
*z
ij
;
calculeaz s
yz
=s
yz
+y
j
*z
ij
;
}
{ METODA (n,m, s
x
; s
y
; s
xy
; s
xx
; s
yy
, SOL ); //
rezolv sistemul
}
Planul este z = Ax + By + C
}
7.1.7.2. Implementarea algoritmului 7.7
/* Funcia ntoarce -1 n caz de eroare 0 altfel */
int reg_mul( int m, /* pe Ox */
int n, /* pe Oy */
double x[],
double y[],
double z[][NMAX],
double *coef1,
double *coef2,
double *coef3)
{
int i,j;
double mat[4][4], tl[4],det,det1,det2,det3;
for(i=1;i<=3;i++)
{
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];
175
Metode numerice n electronic
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;
}
7.2. OPTIMIZAREA NELINIAR FR RESTRICII
n cadrul acestui paragraf vor fi studiate dou metode
pentru aflarea minimului unei funcii de n variabile n lipsa
relaiilor de restricie. In general, problemele de minimizare
176
Integrarea numeric
sunt cu relaii de restricie, dar aceste probleme pot fi
reduse la probleme de optimizare fr restricii ntr-o serie
de aplicaii.
n condiiile n care nu sunt restricii, funcia int
F X F x x x
n
( ) ( , , ..., )
1 2

(7.39)
care are derivatele pariale continue, are un minim local
ntr-un punct X
k
dac este ndeplinit inegalitatea:
F X F X
k
( ) ( )
(7.40)
pentru orice vector X din vecintatea lui X
k
.
Din analiza matematic cunoatem condiia necesar pentru
ca o funcie
F X ( )
s aib un minim ntr-un punct X din
domeniul de definiie al funciei:
-existena i rezolvabilitatea sistemului



F(x)
x
, i , ,...,n;
i
0 12

(7.41)
-matricea

1
1
1
1
1
1
]
1


2
2
2
2
1
2
1
2
2 1
2
2
1
2

) (
...

) (

) (

) (
...

) (


) (
n
n n
n
x
x F
x x
x F
x x
x F
x x
x F
x x
x F
x
x F
J


(7.42)
s fie pozitiv definit.
Dintre metodele de optimizare neliniar fr restricii
amintim: metode aleatoare de cutare, metode de cutare
unidirecional i metode de gradient.
Metodele aleatoare de cutare au la baz o schimbare
aleatoare a componentelor vectorului X, pentru care se
177
Metode numerice n electronic
calculeaz valoarea funciei F(X) i se compar cu valoarea
precedent a funciei.
Metodele de cutare unidimensional constau n
modificarea succesiv a componentelor vectorului i
compararea valorilor funciei n punctele respective.
Metodele de gradient efectueaz modificarea
simultan a componentelor vectorului X, n aa fel nct s
rezulte o evoluie a funciei F(X) opus gradientului.
Aceste metode se bazeaz pe generarea aleatoare a unor
numere ntr-un domeniu prestabilit.
7.2.1. METODE ALEATOARE DE CUTARE
Procesul este iterativ i pentru fiecare etap se
genereaz o succesiune de numere aleatoare avnd o
densitate de probabilitate uniform n domeniul de variaie
admis, cu care se modific componentele vectorului.
Metoda drumului aleator, una dintre metodele des utilizate,
const n modificarea vectorului de poziie pentru noul
punct astfel:
r X X
k k
+
+

1

(7.43)
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.
7.2.1.1. Algoritmul 7.8. Metoda drumului aleator
{ Variabile
X:vectorul de poziie al punctului curent;
alfa:scalarul, real;
er:eroarea de calcul, real;
sol:souia optimizrii, real;
i:contor, ntreg;
minim:minimul dintre valorile funciilor, real;
valcurent:valoarea minim curent a funciei,
real;
178
Integrarea numeric
xcurent[2];valoarea anterioar i curent a
abscisei punctului, real;
maxiter:numrul maxim de iteraii, ntreg;
{
maxiter=1000;
atta timp ct ( alfa0>eps )
{contor=0
minim=F(x0[0],x0[1]);
calculeaz
xcurent[0]=x0[0]+alfa0*r;
xcurent[1]=x0[1]+alfa0*r;
val_curenta=F(xcurent[0],xcurent[1]);
ii+1;
}atta timp ct ((contor<=maxiter) i
(valcurenta>minim) );
dac (valcurenta<minim)
{
minim=valcurenta;
x0[0]=xcurent[0];
x0[1]=xcurent[1];
}
dac (contor>maxiter)alfa0-=0.001;
}
sol[0]=x0[0];
sol[1]=x0[1];
stop
}
7.2.1.2. Implementarea algoritmului 7.8
int cutare_aleatoare( double (*f)( double,
double),
double x0[],
double gama0,
double eps,
double rez[])
{
double minim,val_curenta,x_curent[2];
int contor,maxiter;
maxiter=1000;
while( gama0>eps )
{ contor=0
minim=f(x0[0],x0[1]);
do{
179
Metode numerice n electronic
x_curent[0]=x0[0]+gama0*rand(101)/100*pow(-
1,rand(101) % 2);
x_curent[1]=x0[1]+gama0*rand(101)/100*pow(-
1,rand(101) % 2);
val_curenta=f(x_curent[0],x_curent[1]);
contor++;
}while ((contor<=maxiter) &&
(val_curenta>minim) );
if (val_curenta< -1e10) return 1;
if(val_curenta<minim)
{ minim=val_curenta;
x0[0]=x_curent[0];
x0[1]=x_curent[1];
}
if (contor>maxiter)gama0-=0.001;
}
rez[0]=x0[0];
rez[1]=x0[1];
return 0;
}
7.2.2. METODA CUTRII UNIDIMENSIONALE
Aceast metod determin minimul unei funcii
F X ( )

prin modificarea componentelor vectorului X pe rnd,
ncepnd cu prima component. Se modific prima
component atta timp ct se obine o valoare mai mic a
funciei n punctul curent dect n cel precedent. Cnd
aceast condiie nu mai este ndeplinit se trece la
urmtoarea component a vectorului X i se procedeaz la
fel pn se baleiaz toate componentele vectorului
considernd, n acest caz, c s-a realizat un ciclu. Se poate
ncepe un nou ciclu lund ca punct iniial minimul obinut. La
fiecare iteraie se determin un nou punct funcie de
precedentul asfel:
X X pas E
k k k +
+
1

(7.44)
unde E
k
reprezint vectorul E
k
=(0,0, ,1,,0), cifra 1
fiind pe locul k, k=0,1,,n, iar pas reprezint pasul cu care
se modific componentele. Dup un ciclu ncheiat se trece la
un nou ciclu cu vectorul iniial cel pentru care s-a obinut
minimul n ciclul ncheiat (precedent), lund un nou pas mai
mic, obinut din pasul precedent nmulit cu o raie
180
Integrarea numeric
subunitar. Se continu iteraia pn cnd pas< sau
numrul de iteraii depete un numr maxim dat.
reprezint eroarea de calcul a punctului de minim.
7.2.2.1. Algoritmul 7.9. Metoda cutrii unidimensionale
{Variabile
X:vectorul coordonetelor punctelor;
pas:pasul de modificare al cooronatelor, real;
E: maticea unitate de ordinul n ce are pe
orizontal vectorii E
k
;
k:contor, ntreg;
minimcurent:minimul obinut pn la pasul
respectiv, real;
Maxiter:numrul maxim de iteraii, ntreg;
t:valoare subunitar cu care se multiplic pasul,
real;
p:valoarea iniial a pasului, real;
{Maxiter=1000;
t=0.1;
repet
pas=p;
minimcurent=F(X[0],X[1]);
pentru k=1 pn la n calculeaz
X[1]=X[0]+pas* E
k
;
valcurent=minimcurent;
p=p*t;
pn cnd pas< er;
}
minimul este valcurent;
}
7.2.2.2. Implementarea algoritmului 7.9
int cutare_unidimensional( double (*f)( double,
double),
double x0[],
double pas,
double eps,
double rez[])
{
double min_prec,min_curent,min_ant;
181
Metode numerice n electronic
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
182
Integrarea numeric
1.Se dau datele experimentale din tabelul 7.2:

Tabelul 7.2.
x
1 2 3 4 5 6 7 8 9
y
1.4
4
1.72
8
2.07
36
2.48
83
2.98
59
3.58
31
4.29
98
5.15
97
6.19
1
Analiznd rezultatele vedem c funcia are evoluia unei
funcii exponeniale. Se aplic programul pentru regresia
exponenial i se obine funcia:
y . ( . )
x
12 12
2.Se d funcia:
z x y x y + +
2 2
2 4 3
S se determine minimul funciei cu metoda drumului
aleator, lund punctul de start (15,34) i = 0.000001 i cu
metoda cutrii unidimensionale lund punctul se start
(10,10) i = 0.001.
Cu metoda drumului aleator s-a obinut minimul n punctul
(0.99518, 1,99978), iar minimul funciei z
min
=-1.99977.
Aplicnd metoda cutrii unidimensionale s-a obinut
minimul n punctul (1, 2), iar minimul funciei z
min
=-2.
183
Metode numerice n electronic
8
REZOLVAREA NUMERIC A ECUAIILOR
I SISTEMELOR DIFERENIALE*
n acest capitol sunt prezentate metodele de rezolvare a
ecuaiilor difereniale ordinare, a ecuaiilor cu derivate
pariale i a sistemelor de ecuaii difereniale.
8.1. REZOLVAREA NUMERIC A ECUAIILOR
DIFERENIALE ORDINARE DE ORDINUL NTI
Se consider ecuaiile de tipul:
y f x y
'
( , )
(8.1)
cu condiia iniial:
184
Integrarea numeric

y x y ( )
0 0


(8.2)
Ecuaia diferenial (8.1) definete o curb n planul
xOy
. n fiecare punct al curbei se d valoarea derivatei
funcie de x i
y
. Ecuaia este satisfcut de o familie de
curbe, iar condiia (8.2) d curba din familie care trece
printr-un anumit punct din plan (
x y
0 0 ,

). Soluia analitic a
ecuaiei (8.1) este o expresie a lui
y
funcie de x . Metodele
numerice ne ajut s determinm puncte ale soluiei
ecuaiei date.
O soluie numeric a ecuaiei se poate obine plecnd din
punctul dat (
x y
0 0 ,

), tiind c dac nlocuim valorile date, n
ecuaia diferenial (8.1) se poate obine panta curbei
cutate n acest punct. Dup calculul pantei curbei n
punctul
x
0
se avanseaz cu un pas mic pe tangenta n
punctul (
x y
0 0 ,

)
y f x y x x y + ( , )( )
0 0 0 0

(8.3)
Dac considerm punctul de coordonate (
y , x
1 1
) pe tangent
i pasul de cretere al lui
x
1
fa de
x
0
, h avem
x x h
1 0
+
i
y f(x ,y )h y
1 0 0 0
+
(8.4)
deci un nou punct cunoscut (
x y
1 1
,
), foarte aproape de curba
soluiei cutate cu ct h
este mai mic, (fig. 8.1). Procedeul de calcul se repet cu
calculul pantei la curb n punctul (
x y
1 1
,
) i
determinarea unui alt punct pe tangenta la curb n punctul
(
x y
1 1
,
) cu
x x h
2 1
+
i
y
2
corespunztor. Continund n
acest mod se obine o succesiune de segmente de dreapt
care aproximeaz curba soluie a ecuaiei difereniale.
__________________________
*)
Bibliografie :[6], [7], [9], [12], [17]
Aproximarea curbei soluie cu segmente de dreapt poate
da erori i succesiunea de segmente de dreapt poate s se
deprteze considerabil de curba soluiei. Aceast problem
reprezint problema stabilitii procesului de rezolvare a
ecuaiei difereniale 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:
185
Metode numerice n electronic
a) Metode directe n care soluia nu se itereaz i se
folosete numai o informaie asupra curbei ntr-un punct.
Astfel de metode constau n rezolvarea ecuaiilor prin serii
Taylor, care ns nu sunt practice. Metode practice Runge-
Kutta pretind un mare numr de evaluri ale funciilor,iar
eroarea este dificil de evaluat.
b) Metode indirecte n care se poate estima punctul
urmtor de pe curb folosind mai puine estimri ale
funciei, dar care necesit iteraii pentru a ajunge la o
valoare suficient de precis. Aceste metode sunt denumite
predictor-corector i prin aplicarea lor se poate obine o
estimare a erorii.
8.1.1. METODA SERIILOR LUI TAYLOR
Aceast metod asigur soluia oricrei ecuaii
difereniale, dar are o aplicabilitate redus din cauza
dificultilor de rezolvare. Totui, aceast metod servete
pentru compararea cu metodele practice pentru a le stabili
ordinul metodei.
Dezvoltm pe
y(x)
n vecintatea lui
x x
m

,
( ) ( ) ( )
( )
( )
( )
( )
( )
( ) y x y y x-x
y
!
x-x
y
j!
x-x
y
j+ !
x-x
m m
'
m
m
''
m
m
j
m
j m
j+
m
j+
+ + + + +
2 1
2
1
1



(8.5)
unde y
m
j ( )
este derivata de ordinul j a lui
y x ( )
n punctul
x x
m

, iar
x x
m
< <
Utilznd relaia
x x h
m
+
obinem:

( )
( )
( )
( )
y y hy
h
y
y
j!
h
y
j+ !
h
m+ m m
'
m
'' m
j
j m
j+
j+
1
2
1
1
2 1
+ + + + +

(8.6)
Ultimul termen al relaiei (8.6) reprezint eroarea de
trunchiere. Aproximaia va fi cu att mai bun cu ct j este
mai mare.
( ) y f x ,y
m
'
m m

(8.7)
Derivnd funcia ) , (
'
y x f y obinem:

( ) ( )
f f f
x
y
y
x,y f
x
x,y f
y
y x
''
+

d
d
(8.8)
186
Integrarea numeric
unde
x
f
f
x

i
y
f
f
y


(8.9)
Pentru
x x
m

rezult:
y f f f
m
''
x y
+
(8.10)
Pentru j = 2 rezult:

( )
y y hy
h
y
y
h
m+ m m
'
m
''
'''
1
2
3
2 6
+ + +


(8.11)
sau

( )
y y h f+
h
f f f
m+ m x y 1
2
+ +

1
]
1

(8.12)
cu eroarea de trunchiere

( )
e
y
h
T
'''


6
3
,
x x
m
< <

(8.13)
Punnd m = 0 n ecuaia (8.12) se obine pentru
x x h
1 0
+

valoarea soluiei
y
1
deci punctul (
x y
1 1 ,

). Pentru m = 1
rezult punctul (
x y
2 2 ,

). Continund, se obin punctele
soluiei ecuaiei difereniale, cu erorile de trunchiere
corespunztoare, care se mresc n timp. Aceast metod
este direct deoarece pentru calculul lui
y
m+1
sunt necesare
numai valorile lui
y
m
i
x
m
. Pentru o eroare mai mic
trebuie s mrim ordinul termenilor utilizai n dezvoltarea
Taylor. Dac dorim y
m
'''
acesta are expresia:
2 2
2
y y x yy xy xx
'''
m
f f f f f f f f f y + + + +

(8.14)
unde s-a notat:
2
2
x
f
f
xx

,
y x
f
f
xy

2
i
2
2
y
f
f
yy

Complexitatea acestor derivate face practic inutilizabil


aceast metod.
8.1.2. METODELE RUNGE-KUTTA
Metodele Runge-Kutta se caracterizeaz prin urmtoarele
proprieti:
187
Metode numerice n electronic
1. Sunt metode directe, deci pentru calculul lui
y
m+1
sunt
necesare informaiile de la punctul precedent
x
m
i
y
m .
2. Sunt echivalente cu seriile Taylor pn la termenii
h
p
,
unde p este diferit pentru metode diferite i se numete
ordinul metodei.
3. Nu necesit evaluarea nici unei derivate a funciei
f
, ci
numai valoarea funciei. Proprietatea a treia a metodelor
Runge-Kutta le recomand pentru utilizarea lor practic. Se
pune problema evalurii funciei soluie a ecuaiei
difereniale (8.1) n mai multe puncte. Geometric, problema
const n determinarea punctului (
x y
m m + + 1 1 , ) cunoscnd
punctul (
x y
m m
,
) i c
x x h
m m +
+
1
. n punctul (
x y
m m
,
) se
duce tangenta la curb deoarece tim panta curbei n acest
punct.
y y y x x
m m m
+
'
( )
(8.15)
unde ( ) y f x ,y
m
'
m m

(8.16)
i
x x h
m m +
+
1

(8.17) nlocuind n (8.15) relaiile (8.16) i (8.17) rezult:
x x h
m m +
+
1

(8.18)
iar eroarea este dat de segmentul e.
Dac n dezvoltarea lui Taylor lum j = 1 rezult:
( )
2
1
2
h
y
hy y y
''
'
m m m

+ +
+

(8.19)
unde
x
m
<

<
x
m+1

(8.20)
188
Integrarea numeric

y
m

x
m

x
m+1
Fig.8.1.Determinarea grafic a soluiei ecuaiei difereniale.
Comparnd relaiile (8.19) i (8.20) rezult eroarea de
trunchiere pentru metoda aplicat:

( )
e
y
h
T
''


2
2

(8.21)
Formula (8.19) reprezint metoda lui Euler de rezolvare a
ecuaiilor difereniale de ordinul nti. Metoda este veche,
are eroare de trunchiere relativ mare i eroarea de rotunjire
sau trunchiere se mrete odat cu mrirea lui x .
8.1.2.1. Algoritm 8.1. Metoda lui Euler
{Variabile
x
0
: abscisa punctului de start, real;
y
0
: ordonata punctului de start, real;
h: pasul ntre abscisele punctelor de calcul ale
soluiei, real;
y: ordonatele soluiei numerice, vector;
x: abscisele soluiei numerice, vector;
n: numrul de puncte n care se calculez soluia,
intreg;

{
x[0]= x
o
; y[0]= y
0
; h=const;
pentru i = 1,2,...n
calculeaz x[i]= x
0
+i*h;
calculez
y[i+1]= y[i]+ h*f( x[i-1],y[i-1]);
189
Metode numerice n electronic
Soluiile numerice sunt x[i]; y[i]; i=0,1,2,...n;
}
}
8.1.2.2. Implementarea algoritmului 8.1
/* Funcia care implementeaz algoritmul de
rezolvare a ecuaiilor
difereniale ordinare prin metoda Euler.
*/
void EULERED( double(*f)(double x, double y),
double x0,
double y0,
double pas,
int nrp,
double sol[])
{
int i;
sol[0]=y0;
for(i=1;i<=nrp;i++)
sol[i]=sol[i-1]+pas*f(x0+(i-1)*pas,sol[i-1]);
}
8.1.3. METODELE RUNGE-KUTTA DE ORDINUL DOI
Aceste metode se numesc de ordinul doi deoarece sunt
echivalente cu dezvoltarea n serie Taylor pn la termenii
de ordinul doi.
8.1.3.1. Metoda lui Euler mbuntit
Aceast metod face parte din acest grup de metode i
utilizeaz media pantelor din punctele (
x y
m m
,
) i (
x y
m m + + 1 1
,
) unde
x x h
m m +
+
1
iar y y hy
m m m
'
+
+
1
ordonat obinut din
ecuaia tangentei n punctul M la curb cu panta
y f x y
m m m
'
( , ) . Grafic metoda este prezentat n figura 8.2. n
190
Integrarea numeric
acest punct H de coordonate ( x y hy
m m m
'
+
+
1
, ) se calculeaz
panta la curb care este:
( )
'
m m m
m+ hy +h,y x f y + 1
'

(8.22)
Se face media dintre panta n punctul M (dreapta ML
1
)i
panta n punctul H (dreapta HL
2
)i o notm cu
( ) ( ) ( ) z f x ,y f x +h,y hy
m m m m m m
'
+ +
1
2

(8.23)


y

x
m

x
m+1
Fig.8.2.Calculul grafic al soluiei prin metoda lui Euler
mbuntit.
Dreapta de pant z
m
este HT. Cu acest pant z
m
se
traseaz coarda prin M i se intersecteaz cu dreapta
x x
m

+1
rezultnd punctul R, de coordonate (
x , y
m m+ +1 1
) al
doilea punct de pe curba soluie, primul fiind considerat (
x , y
m m
). Ecuaia coardei MR este:
( )
( ) ( )
( ) y y . f x ,y f x +h,y hy x x
m m m m m m
'
m
+ + + 0 5
(8.24)
Punctul R, care reprezint soluia numeric a ecuaiei
difereniale, are ordonata:
( ) ( ) ( ) y y . h f x ,y f x +h,y hy
m+ m m m m m m
'
1
05 + + +
(8.25)
unde ( ) y f x ,y
m
'
m m
.
191
H
Metode numerice n electronic
Aceast formul (8.25) reprezint formula de calcul a
soluiilor numerice pentru o ecuaie diferenial ordinar de
ordinul nti.
8.1.3.1.1. Precizia metodei lui Euler mbuntit
Se dezvolt n serie Taylor funcia de dou variabile
f x y ( , )
:

( ) ( )
( ) ( ) ( ) ( ) ( ) ( ) ( )
[ ]
f x y f x y x x f x y y y f x y
x - x f , x - x y-y f , y-y f ,
m m m x m m m y m m
m xx m m xy m yy
( , ) ( , ) ( , ) ( , ) + + +
+ + +
1
2
2
2
0 0 0 0
2
0 0


(8.26)
unde [ ]

0
x ,x
m
i [ ]

0
y ,y
m
Dac notm
x x h
m
+
iar y y h y
m m
'
+
unde y f(x ,y )
m
'
m m

(8.27)
rezult:
( )
( ) ( ) ( )
[ ]
f x +h,y hy f+hf hff h f ,y ff ,y f f ,
m m m
'
x y xx xy yy
+ + + + +
1
2
2
2
0 0 0 0
2
0 0

(8.28)
unde
f f x y
m m
( , )
, ( ) ( ) f
f
x
x ,y , f
f
y
x ,y
x m m y m m

(8.29)
nlocuind acest rezultat n (8.23) i (8.24) rezult:
( ) ( ) ( )
[ ]
y y h f+
h
f ff
h
f ,y ff f f ,
m+ m x y xy xy yy 1
3
0 0 0 0
2
0 0
2 4
2 + +

1
]
1
+ + + ( , )
(8.30)
unde [ ]

0 1
x ,x
m m+
i [ ]

0 1
y ,y
m m+
( )
[ ]
y y h f . h f ff
m+ m x y 1
05 + + +
(8.31)
reprezint formula de calcul din dezvoltarea Taylor de
ordinul doi care este echivalent cu formula de calcul a lui
Runge-Kutta (8.25) i are eroarea de trunchiere:
[ ]
e h
y
f ff f f
T xy xy yy
+ +

'

3
0 0 0 0
2
0 0
6
1
4
2
'''
( )
( , ) ( , ) ( , )


(8.32)
Dac presupunem c
f f f
xy xx yy
, ,
i y
'''
sunt mai mici
dect o constant rezult:
192
Integrarea numeric
e k h
T

3

(8.33)
8.1.3.1.2. Algoritmul 8.2. Metoda lui Euler mbuntit
{
x
0
: abscisa punctului prin care trece graficul
soluiei, real;
y
0
: ordonata punctului prin care trece graficul
soluiei, real;
h: pasul ntre abscisele punctelor de calcul
ale soluiei, real;
y: ordonatele solutiei numerice, vector;
x: abscisele solutiei numerice, vector;
n: numrul de puncte n care se calculez soluia,
ntreg;

{
x[0]= x
o
; y[0]= y
0
; h=const;
pentru i = 1,...n
{
calculeaz x[i]= x[i -1]+i*h;
calculez
y[i]= y[i-1]+ 0.5*h*(f[ x[i-1],y[i-1])+ f( x[i-1]+h,
y[i-1]+h*f(x[i-1],y[i-
1])));
}
Soluiile numerice sunt x[i], y[i] , i=0,1,2,...n;
}
}
8.1.3.1.3. Implementarea algoritmului 8.2
/* Funcia care implementeaz algoritmul de
rezolvare a ecuaiilor
difereniale ordinare prin metoda Euler
mbuntit.
*/
void EULERIED( double(*f)(double x, double y),
double x0,
double y0,
double pas,
int nrp,
193
Metode numerice n electronic
double sol[])
{
int i;
sol[0]=y0;
for(i=1;i<=nrp;i++)
sol[i]=sol[i-1]+0.5*pas*( f(x0+(i-1)*pas,
sol[i-1])+f(x0+i*pas,sol[i-1]+pas*f(x0+(i-
1)*pas,sol[i-1])));
}
8.1.3.2. Metoda lui Euler modificat
n cadrul acestei metode nu se mediaz pantele, ci se
evalueaz panta ntr-un punct care reprezint media a dou
puncte. Considerm curba din figura 8.3 n care se d
punctul iniial prin care s treac curba soluie a ecuaiei
difereniale i dorim s determinm cel de al doilea punct al
soluiei. Prin punctul (
x y
m m
,
) dat, cunoscut sau determinat,
se duce tangenta MH i se determin pe aceast tangent
punctul H de coordonate (
x
m+1
,
y
m+1
)
Tangenta MH are ecuaia
y y f x y x x
m m m m
+ ( , )( )

(8.34)
Prin intersecia cu dreapta
x x h
m
+
rezult coordonatele
punctului H
(
x x h
m m +
+
1
,
y y hf x y
m m m m +
+
1
( , )

(8.35)
prezentat n figura (8.3).
Metoda face media coordonatelor punctelor M i H i
determin punctul
( ) P x x
h
y y
h
f x y
p m p m m m
+ +

_
,

2 2
, ,

(8.36)
Se calculeaz panta soluiei y n acest punct P i rezult:
( ) z f x
h
y
h
f x y
m m m m m
+ +

_
,

2 2
, ,

(8.37)
Se scrie ecuaia dreptei care trece prin M de pant
z
m
i o
intersectm cu dreapta
y x x h
m m
+
+1
Dreapta MN are ecuaia:
194
Integrarea numeric
( ) ( ) y y f x
h
y
h
f x y x x
m m m m m m
+ + +

_
,


2 2
, ,

(8.38)
Prin intersecia cu dreapta
x x x h
m m
+
+1
rezult ordonata:
( ) y y h f x
h
y
h
f x y
m m m m m m +
+ + +

_
,

1
2 2
, ,
(8.39)
care reprezint formula de calcul a ordonatelor soluiei
ecuaiei difereniale.

y

x

x
m+1
x
m+2
x
m
Fig.8.3.Calculul grafic al soluiei ecuaiei difereniale prin metoda lui
Euler modificat.
Aceast metod d aceleai soluii ca i metoda lui Taylor
pn la h
2
, deci este o metod Runge-Kutta de ordinul doi.
8.1.3.2.1. Algoritmul 8.3. Metoda lui Euler modificat
{Variabile
x
0
: abscisa punctului prin care trece graficul
soluiei, real;
y
0
: ordonata punctului prin care trece graficul
soluiei, real;
h: pasul ntre abscisele punctelor de calcul ale
soluiei, real
y: ordonatele soluiei numerice, vector;
x: abscisele soluiei numerice, vector;
n: numrul de puncte ale soluiei, ntreg;

195
P
xm+h/2
Metode numerice n electronic
{
x[0]= x
o
; y[0]= y
0
;
pentru i = 1,...n
{
calculeaz x[i]= x[i -1]+i*h;
calculez
y[ i ]= y[i-1]+ h*f( x[i-1]+0.5*h, y[ i-
1]+0.5*h*f(x[i-1],y[i-1])) ;
}
Soluiile numerice ale ecuaiei sunt x[ i ], y[ i ] ,
i=0,...n;
}
}
8.1.3.2.2. Implementarea algoritmului 8.3
/* Funcia care implementeaz algoritmul de
rezolvare a ecuaiilor
difereniale ordinare prin metoda Euler
modificat.
*/
void EULERMED( double(*f)(double x, double y),
double x0,
double y0,
double pas,
int nrp,
double sol[])
{
int i;
sol[0]=y0;
for(i=1;i<=nrp;i++)
sol[i]=sol[i-1]+pas*f(x0+(i-1)*pas+0.5*pas,sol[i-
1]
+0.5*pas*f(x0+(i-1)*pas,sol[i-
1]));
}
8.1.3.3. Asemnri ntre metodele Euler mbuntit i
modificat
Ambele metode au formula de calcul a ordonatelor
soluiilor ecuaiei difereniale
196
Integrarea numeric

y y h u
m m +
+
1

(8.40)
unde u este panta z
m
sau v
m
care poate fi scris astfel:
u a f x y a f x b h y b h y
m m m m m
+ + +
1 2 1 2
( , ) ( , )
'

(8.41)
unde y f x y
m m m
'
( , )
Pentru valorile a a
1 2
1
2
i b
1
= b
2
=1 avem panta z
m
, n
cazul aplicrii metodei
Euler mbuntit, iar pentru valorile:
a a
1 2
0 1 ,
i
b b
1 2
1 2 / avem panta v
m
, n cazul aplicrii metodei Euler
modificat.
Dezvoltm n serie Taylor funcia
f x y ( , )
n jurul
punctului (
x y
m m
,
), dezvoltare prezentat n expresia (8.26)
unde O h ( )
2
este restul i facem substituiile:

x x b h
m
+
1
i
y y b hf
m
+
2
n aceast expresie:
f(x b h, y b hf) f b hf b hff O(h )
m m x y
+ + + + +
1 2 1 2
2

(8.42)
Expresia lui u conform formulei (8.41) devine:
u a f a f a b hf a b hff O h
x y
+ + + +
1 2 2 1 2 2
2
( )

(8.43)
nlocuind n formula (8.40) de calcul a valorilor funciei
soluie a ecuaiei difereniale rezult:
[ ] ( )
y y h a a f h a b f a b ff O h
m m x y +
+ + + + +
1 1 2 2 1 2 2
2
( ) ( )
(8.44)
Dac comparm aceast formul (8.44) cu formula lui Taylor
(8.30) rezult:
a a
1 2
1 +
; a b a b
2 1 2 2
1
2
;
(8.45)
Deoarece avem trei ecuaii cu patru necunoscute, alegem n
mod arbitrar una din ele i exprimm pe celelalte funcie de
aceasta. Lum
a w
2

i rezult

a w
1
1
, b b
w
1 2
1
2

(8.46)
Formula de calcul (8.44) devine:
197
Metode numerice n electronic

( ) ( ) ( )
( )
y y h w f x y wf x
h
w
y
h
w
f x y O h
m m m m m m m m +
+ + + +

_
,

1
]
1
+
1
3
1
2 2
, , ,

(8.47)
Expresia (8.47) reprezint formula de calcul a metodei
Runge-Kutta de ordinul doi general. Pentru w
1
2
se
obine metoda lui Euler mbuntit, iar pentru w 1 se
obine metoda lui Euler modificat. Eroarea de trunchiere
este:
e k h
T

3

(8.48)
n mod analog se pot dezvolta metodele Runge-Kutta de
ordinul trei i patru.
8.1.4. METODA RUNGE-KUTTA DE ORDINUL PATRU
Formula de calcul numeric a soluiei ecuaiei difereniale
(8.1) este dat de expresia (8.49)
x x h
m m +
+
1
[ ] y y
h
k k k k
m m +
+ + + +
1 1 2 3 4
6
2 2
(8.49)
unde
k f x y
m m 1
( , )
k =f x
h
, y
h
k
m m 2 1
2 2
+ +

_
,

(8.50)
k =f x
h
, y
h
k
m m 3 2
2 2
+ +

_
,

( ) k =f x h, y hk
m m 4 3
+ +
Eroarea de trunchiere a metodei este:
e k h
T

5

(8.51)
8.1.4.1. Algoritmul 8.4. Metoda Runge-Kutta de ordinul 4
198
Integrarea numeric
{ Variabile
x
0
:abscisa punctului prin care trece soluia, real;
y
0
: ordonata punctului prin care trece soluia,
real;
h : pasul ntre abscisele punctelor de calcul ale
soluiei, real;
y : ordonatele soluiei numerice, vector;
x : abscisele soluiei numerice, vector;
n : numrul de puncte n care se calculeaz
soluia, ntreg;
{
x[0]= x
o
; y[0]= y
0
;
pentru i = 1,,n
{
calculeaz x[ i-1 ]=x
0
+i*h;
calculez
k
1
= f(x[ i-1 ], y[ i-1 ]);
calculeaz
k
2
= f(x[ i-1 ]+0.5*h, y[ i-1 ]+
0.5*h*k
1
);
calculeaz
k
3
= f(x[ i-1 ]+0.5*h, y[ i-1 ]+
0.5*h*k
2
);
calculeaz
k
4
= f(x[ i-1 ]+h, y[ i-1 ]+ h*k
4
);
calculeaz
y [ ] ( )
4 3 2 1
2 2
6
1 ] [ k k k k
h
i y i + + + + ;
}
Soluiile numerice ale ecuaiei sunt x[ i ], y[ i ] ,
i=1,2,...n;
}
}
8.1.4.2. Implementarea algoritmului 8.4
/* Funcia care implementeaz algoritmul de
rezolvare a ecuaiilor
difereniale ordinare prin metoda Runge-Kutta
de ordinul 4.
*/
void RK4( double(*f)(double x, double y),
double x0,
double y0,
199
Metode numerice n electronic
double pas,
int nrp,
double sol[])
{
int i;
double k1,k2,k3,k4;
sol[0]=x0;
for(i=1;i<=nrp;i++)
{
k1=f(x0+(i-1)*pas,sol[i-1]);
k2=f(x0+(i-1)*pas+0.5*pas,sol[i-1]+0.5*pas*k1);
k3=f(x0+(i-1)*pas+0.5*pas,sol[i-1]+0.5*pas*k2);
k4=f(x0+i*pas,sol[i-1]+pas*k3);
sol[i]=sol[i-1]+pas*(k1+2*k2+2*k3+k4)/6.0;
}
}
Concluzie: Putem spune despre metodele Runge-Kutta c
sunt metode cu vitez de calcul mare, deoarece calculul unui
punct curent de pe curba soluiei se face numai cu valorile
calculate la punctul precedent. Precizia metodelor depinde
de eroarea de trunchiere.
Dac considerm c n punctul
x x h +
0
valoarea exact a
soluiei este
y
m
, cu metoda clasic de ordinul unu rezult:
( )
y y kh
m m
h
+
2

(8.52)
unde
( )
y
m
h
arat c
y
m
s-a calculat cu pasul h. Se repet
calculul pentru pasul h/2 i avem
y y k
h
m m
( h/ )
+

_
,

2
2
4

(8.53)
Din egalitatea relaiilor (8.52) i (8.53) rezult:
y y - h
m
( h )
m
h/

2 2
3
4
iar eroarea de trunchiere devine:
( ) ( )
( )
e kh y y
T m
h/
m
h

2 2
4
3

(8.54)
Aplicnd metodele Runge - Kutta de ordinul doi rezult:
( ) ( )
( ) e kh y y
T m
h/
m
h

3 2
8
7

(8.55)
200
Integrarea numeric
Metoda Runge - Kutta de ordinul patru are o eroare de
trunchiere care poate fi estimat cu relaia:
( ) ( )
( ) e kh y y
T m
h/
m
h

5 2
32
31
(8.56)
dedus prin acelai procedeu ca i la metoda Runge - Kutta
de ordinul nti.
n anumite condiii metodele Runge - Kutta pot da
rezultate foarte imprecise chiar dac erorile de trunchiere i
rotunjire sunt mici. Aceasta se datoreaz faptului c erorile
de trunchiere sau rotunjire pot crete odat cu x. Acest
fenomen, care apare referitor la devierea mare a soluiei a
primit denumirea de instabilitate parial, autorul fiind
Mayers D.F. n acest caz instabilitatea depinde de ecuaia
diferenial, algoritm i dimensiunea intervalului.
8.1.5. METODE PREDICTOR-CORECTOR
Aceste metode prezic o valoare pentru soluie la pasul
m+1 ,
y
m+1
, apoi se utilizeaz o formul pentru corecia ei.
Formula de corecie se poate utiliza de mai multe ori pentru
recorectri. Acest proces de iteraie poate fi fcut eficient
dac se alege dimensiunea intervalului pentru un numr
minim de iteraii.
Considerm formula predictor- corector de ordinul doi:

( )
( ) y y hf x ,y
m+ m- m m 1
0
1
2 +
(8.57)
n care indicele (0) arat prima estimare a lui
y
m+1
.
Deoarece este necesar s se cunoasc un punct anterior
lui x
0
se utilizeaz pentru pornirea metodei, metoda Runge-
Kutta de ordinul doi.
201
Metode numerice n electronic

y

x

x y
m m + + 1 1
,

y y x ( )
Fig. 8.4 Determinarea grafic a soluiei prin metoda predictor - corector
Punctul prezis de prima estimare se calculeaz astfel: se
duce tangenta ET, n punctul
E x y
m m
( , )
dup care se duce
coarda FR paralel cu tangenta ET prin punctul
F x y
m m
( , )
1 1
i intersecteaz dreapta
x x
m

+1
n punctul P(
x ,y
m+ m+ 1 1
0
) obinndu-se prima valoare prezis la estimarea
zero. Se poate mbunti valoarea y
m+1
0
dac se consider
panta n punctul ( x ,y
m+ m+ 1 1
0
) i se face media cu panta n (
x ,y
m m
). Prin punctul ( x ,y
m m
) ducem o coard cu aceast
pant care intersecteaz dreapta
x x
m

+1
n punctul (
( )
x ,y
m+ m+ 1 1
1
) unde
( )
y
m+1
1
este estimarea de ordinul 1.
Continund acest procedeu se poate estima valoarea lui
( )
y
m+
k
1
pn la o valoare k, pn cnd
[ ]
y y
m
k
m + +
<
1 1
0

(8.58)
unde este o eroare impus.
Cu panta
f x y
m m
( , )
din punctul E se duce coarda prin F
y y f x y x x
m m m m
+
1 1
( , )( )

(8.59)
Punctul de abscis
x
m+1
pe aceast coard are ordonata
( )
y y hf x y
m+ m m m 1
0
1
2 +

( , ) care reprezint prima


estimare a soluiei.
Ducem prin E coarda de pant

( )
( )
( ) ( )
z f x ,y f x ,y
m m m m+ m+
+
1
2
1 1
0

(8.60)
202
Integrarea numeric
Punctul de abscis
x
m+1
pe aceast coard are ordonata
( )
( )
( )
( )
[ ]
y y
h
f x ,y f x ,y
m+ m m m m+ m+ 1
1
1 1
0
2
+ +
(8.61)
Procednd n mod analog pentru a k-a estimare avem
( )
( )
( )
( )
[ ]
y y
h
f x ,y f x ,y
m+
k
m m m m+ m+
k-
1 1 1
1
2
+ +
(8.62)
Dac
( )
y
m+
k
1
( )
-y
m+
k-
1
1
< unde > 0,
(8.63)
orict de mic, iteraiile se opresc. Relaia (8.63) este
satisfcut cnd metoda predictor-corector este
convergent.
( )
y
m+
k
1
-
( )
y
m+
k-
1
1
=
h
2
[
( )
( )
( )
( ) ] f x ,y f x ,y
m+ m+
k-
m+ m+
k-
1 1
1
1 1
2

(8.64)
Aplicnd teorema valorii medii obinem
[ ] [ ] [ ]
( ) y y
h f
y
y y
m
k
m
k
m
k
m
k
+ +


1 1
1
1
1
1
2
2


(8.65)
unde

f
y
este evaluat n
x x
m

+1
i
( ) ( )
[ ]
y y ,y
m+
k-
m+
k

1
1
1 .
Dac

f
y
este mrginit de M >0 astfel ca:

f
y
M

(8.66)
rezult
( )
y
m+
k
1
( )
-y
m+
k-
1
1

M h
2
( ) ( )
y y
m+
k-
m+
k-
1
1
1
2

.
(8.67)
Analog
( ) ( )
y y
m+
k-
m+
k-
1
1
1
2

h M
2
( ) ( )
y y
m+
k-
m+
k-
1
2
1
3

(8.68)
sau
( )
y
m+
k
1
( )
-y
m+
k-
1
1

h M
2
2

_
,

( ) ( )
y y
m+
k-
m+
k-
1
2
1
3
.
(8.69)
Continund calculul prin acest procedeu se ajunge la
rezultatul:
203
Metode numerice n electronic

( )
y
m+
k
1
( )
-y
m+
k-
1
1

h
k-
M
2
1

_
,

( ) ( )
y y
m+ m+ 1
1
1
0

(8.70)
Dac dimensiunea intervalului h este bine aleas adic
h
M
<
2
(8.71)
atunci metoda este convergent. Viteza de convergen este
cu att mai mare cu ct h este mai mic.
8.1.5.1. Eroarea de trunchiere a metodei predictor-corector
Pentru determinarea erorii de trunchiere se dezvolt n
serie Taylor funcia
y x ( )
n jurul punctului
x x
m


( )
( ) ( ) ( )
( )
( ) ( ) ( ) y x y x y x x-x
y x
x-x x-x y
m m m
''
m
m m
'''
+ + +
1
2 3
2
1
6

(8.72)
unde
x x
m

Considernd
x x x h
m m
+
+1
rezult:

( ) ( ) ( ) ( ) ( ) y x y x h y x
h
y x
h
y
m+ m m
''
m
'''
1
1
2 3
1
2 6
+ + +

(8.73)
unde
x x
m m+

1 1
Pentru
x x x h
m m

1
rezult:

( ) ( ) ( ) ( ) ( ) y x y x h y x
h
y x
h
y
m- m m
''
m
'''
1
1
2 3
2
2 6
+

(8.74)
unde
x x
m- m 1 2

Scznd din expresiile (8.67) i (8.68) rezult:

( ) ( ) ( ) ( ) y x y x h y x
h
y
m+ m- m
'''
1 1
1
3
2
3
+ +
(8.75)
tiind c

( ) ( )
( )
y y
y
''' '''
'''

1 2
2
+

unde
x x
m- m+ 1 1

Comparnd (8.69) cu (8.57) rezult c eroarea metodei
predictor- corector este :

[ ]
( ) e
h
y
T
p
'''

3
3

unde
x x
m- m+ 1 1

(8.76)
204
Integrarea numeric
Formula (8.61) este analoag formulei de la integrarea prin
metoda trapezului unde am determinat eroarea

( )
e
T
c
( )

h
y h
'''
3
12
unde
x h x
m- m+ 1 1

(8.77)
Calculm valoarea adevrat y
m
n punctul
m

( )
( ) y y
h
y
m m
'''
+
0
2
3


(8.78)
iar dup (8.71) avem

( )
( )
y y
h
y h
m m
k '''

2
12

(8.79)
Scznd relaiile (8.72) i (8.73) rezult:

( ) ( )
( )
( )
[ ]
y y
h
y h y
m
k
m
''' '''
+
0
3
12
4
Considernd y
'''
aproximativ constant pentru
x x x
m- m+ 1 1

se obine:
5
12
3
h
y
'''

( ) ( )
y y
m
k
m

0
sau
( )
e
T
c

( ) ( )
[ ]

h
y y y
'''
m m
k
3
0
12
1
5

(8.80)
Convergena metodei este mai rapid cu ct h este mai
mic. Numrul de iteraii nu trebuie s fie mare. Exist
dovezi care arat c cel mai eficient numr de iteraii pentru
metoda predictor-corector este doi.
8.1.5.2. Algoritm 8.5. Metoda predictor-corector
{Variabile
x
0
:abscisa punctului prin care trece soluia, real;
y
0
: ordonata punctului prin care trece soluia,
real;
h : pasul ntre abscisele punctelor de calcul ale
soluiei, real;
y : ordonatele soluiei numerice, vector;
x : abscisele soluiei numerice, vector;
205
Metode numerice n electronic
n : numrul de puncte n care se calculeaz
soluia, ntreg;
er : eroarea de calcul, real;
{
x[0]= x
o
; y[0]= y
0
;
pentru i = 0,1,2,...,n
{
( )
[ ] [ ] ( ) y y *h*f x i- ,y i-
i i-
0
1
2 1 1 +
k = 1;
repet
calculeaz


( )
[ ] [ ] ( )
( )
[ ] [ ]
y y . * f x i- ,y i- f x ,y
i
k
i- i i
k-
+ +
1
1
05 1 1
k = k+1;
pn cnd

( ) ( )
y y e
i
k
i
k-
<
1
}
Soluiile numerice ale ecuaiei sunt x[ i ], y
( )
[ ]
k
i
,
i=0,1,2,...n;
}
}
8.1.5.3. Implementarea algoritmului 8.5
/* Funcia care implemeneteaz rezolvarea
ecuaiilor difereniale prin
metoda predictor-corector 1.
*/
void PRED_COR( double(*f)(double x, double y),
double x0,
double y0,
double pas,
double eps,
int nrp,
double sol[])
{
int i;
double prec;
/* start */
206
Integrarea numeric
sol[0]=y0;
sol[1]=sol[0]+0.5*pas*(f(x0,sol[0])
+f(x0+pas,sol[0]+
pas*f(x0+pas,sol[0])));
for(i=2;i<=nrp;i++)
{
sol[i]=sol[i-2]+2*pas*f(x0+(i-1)*pas,sol[i-1]);
do
{
prec=sol[i];
sol[i]=sol[i-1]+0.5*pas*( f(x0+(i-1)*pas,sol[i-
1]+f(x0+i*pas,prec));
}
while( fabs(sol[i]-prec)>eps );
}
}
8.1.6. METODA MILNE
Aceast metod folosete o pereche de formule de
precizare i corectare, utilizeaz o integrare dup metoda lui
Simpson.
( )
( )
y y
h
y y y
y y
h
y y y
k+ k- k-
'
k-
'
k
'
k+ k- k-
'
k
'
k+
'
1 3 2 1
1 1 1 1
4
3
2 2
3
4
+

_
,

+
+

_
,

+ +

(8.81)
Pentru aplicarea metodei din start trebuie cunoscute patru
valori
y y y y
k k k k ,
, ,
1 2 3 care se obin cu o metod direct.
Corecia soluiei se face pn cnd diferena dintre dou
valori consecutive ale soluiei ntr-un punct devine mai mic
dect o eroare impus.
8.1.6.1. Algoritmul 8.7. Metoda lui Milne
{Variabile
x
0
:abscisa punctului iniial al soluiei, real;
y
0
: ordonata punctului iniial al soluiei, real;
h : pasul dintre punctele soluiei, real;
n : numrul de puncte n care se calculeaz
soluia, ntreg;
{x[0]= x
o
; y[0]= y
0
;
207
Metode numerice n electronic
pentru k = 1, . .. 3
{ calculeaz ( ) ( )
[ ]
y y
h
f x ,y f x h,y hy
k k- m m m m m
'
+

_
,
+ + +
1
2
;
i = 3;
repet
calculeaz
( )
( ) y y
h
y y y
i+ i- i-
'
i-
'
i
'
1
0
3 2 1
4
3
2 2 +

_
,
+ ;
j = 1;
repet
calculeaz
( ) ( )
y y
h
y y y
i+
j
i- i-
'
i
'
i+
j-
'
1 1 1 1
1
3
+

_
,
+ +

_
,

_
,
;
j = j+1;
pn cnd
( ) ( )
y y e
i+
j
i+
j-
1 1
1
0 < >
;

i = i +1;
pn cnd i = n;
}
valorile unice ale soluiei sunt y
i
, i = 1, 2, . ..,
n
}
}
8.1.6.2. Implementarea algoritmului 8.7
/* Funcia care implementeaz metoda de
rezolvare a ecuaiilor
difereniale ordinare prin metoda Milne
*/
void MILNE( double(*f)(double x, double y),
double x0,
double y0,
double pas,
double eps,
int nrp,
double sol[])
{
int i;
double prec;
/* start */
208
Integrarea numeric
sol[0]=y0;
for(i=1;i<=3;i++)
sol[i]=sol[i-1]+0.5*pas*( f(x0+(i-1)*pas,sol[i-1])
+f(x0+i*pas,sol[i-1]+pas*f(x0+(i-1)*pas,sol[i-
1])));
for(i=4;i<=nrp;i++)
{
sol[i]=sol[i-4]+4*pas*( 2*f(x0+(i-3)*pas,sol[i-3])
-f(x0+(i-2)*pas,sol[i-2])+2*f(x0+(i-
1)*pas,sol[i-1]))/3;
do
{
prec=sol[i];
sol[i]=sol[i-2]+pas*( f(x0+(i-3)*pas,sol[i-
3])
+4*f(x0+(i-2)*pas,sol[i-2])
+f(x0+i*pas,sol[i]))/3;
}
while( fabs(sol[i]-prec)>eps );
}
}
8.2. INTEGRAREA NUMERIC A SISTEMELOR
DE
ECUAII DIFERENIALE DE ORDINUL NTI
I A
ECUAIILOR DIFERENIALE DE ORDINUL
DOI
Ecuaiile de ordin superior cu condiii iniiale se refer la
un sistem de ecuaii difereniale de ordinul nti.
Considerm ecuaia diferenial de ordinul n de forma:
( )
( ) F x , y , y , y , , y
' '' n
0
(8.82)
cu condiiile iniiale:

x x
0
, y y y y y y
n n


0 0
1 1
, ' ' ,.....,
( ) ( )

.
(8.83)
Aceast ecuaie diferenial poate fi scris sub forma
unui sistem de ecuaii difereniale de ordinul nti cu n
funcii necunoscute.
209
Metode numerice n electronic
Pe lng funcia cutat
y
(soluia ecuaiei) mai
introducem (n-1) necunoscute auxiliare:
y y y
n- 1 2 1
, , . ... ,
(8.84)
legate de
y
prin ecuaiile:

d
d
d
d
d
d
d
d
y
x
y ,
y
x
y ,
y
x
y , ,
y
x
y
n-
n-

1
1
2
2
3
2
1
. (8.85)
Se observ c
( )
y
y
x
y
k
k
k
k

d
d

(8.86)
Ecuaia (8.82) o putem scrie sub forma

( ) ( )
( )
( )
y f x , y , y , y , , y
y
dx
f x , y , y , y , , y
n ' '' n-
n-
n-

1
1
1 2 1
sau
d
(8.87)
Ecuaiile (8.87 ) i (8.85 ) formeaz un sistem de n ecuaii
difereniale de ordinul nti cu n funcii necunoscute. Dintre
ecuaiile sistemului numai ultima are o form mai general,
celelalte fiind mai speciale.
Condiiile iniiale ale sistemului vor fi:
pentru
x x
0
, rezult
( ) ( )
( )
y y y , y y y , , y y y
' '' '' n- n-
n-

0
1
10 0 20
1
0
1
1 0


(8.88)
Pentru fiecare ecuaie se poate aplica una dintre metodele
studiate pentru ecuaiile difereniale de ordinul nti. Dac
aplicm metoda Runge - Kutta de ordinul patru se pleac de
la ultima ecuaie (8.89) spre prima din (8.88).
Pentru i = 0,1,2,. .., p rezult:
210
Integrarea numeric

( )
( )
y y k k k k
y y k k k k
y y k
n
i
n
i n n n n
n
i
n
i n n n n
i i


+
+ + + +
+ + + +

+
1
1
1 1
1
2
1
3
1
4
1
2
1
2 1
2
2
2
3
2
4
2
1
1
1 1
1
6
2 2
1
6
2 2
1
6
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( )
( ) ( )
( )
( )
( ) ( ) ( ) ( )
( ) ( )
1
2
1
3
1
4
1
1
1 2 3 4
2 2
1
6
2 2
+ + +
+ + + +

'

+
k k k
y y k k k k
i i

(8.89)
unde


( )
k hf x y y y y
k hf x
h
y
k
y
k
y
k
k hf x
h
y
k
y
k
y
k
n
i i
i i
m
i
n
i i
i i
n
i
n
n
i i
i
n
i
n
1
1
1 2
2
1 1
1
1
1
1
1
3
1 2
1
2
1
2
1
2 2 2 2
2 2 2 2
( ) ( ) ( ) ( )
( ) ( ) ( )
( )
( )
( )
( ) ( )
( )
( )
( )
, , , ,...,
, , ,...,
, , ,...,

+ + + +

_
,

+ + + +
( )

_
,

+ + + + +

'


k hf x h y k y k y k y k
n
i i
i i
m
i n
4
1
3 1 3
1
2 3
2
3
1 ( ) ( ) ( ) ( ) ( ) ( ) ( )
, , , ,...,
(8.90)
( ) ( )
( )
( ) ( )
( )
( ) ( ) ( )
( )
k hy
k h y
k
k h y
k
k h y k
n
n
i
n-
n-
i
n-
n-
n-
i
n-
n-
n-
i n-
1
2
1
2
2
1
1
1
3
2
1
2
1
4
2
1 3
1
2
2
( ) ( )

_
,

_
,

'


(8.91)
211
Metode numerice n electronic
Analog se calculeaz i celelalte valori ale lui k i dup
nlocuire n y
i +1
se obine formula de recuren pentru
calculul soluiilor numerice ale ecuaiei difereniale.
Cazul general de tratare a problemei este foarte laborios,
dar pentru cazul unei ecuaii difereniale de ordinul doi sau
trei, calculele se simplific mult. Pentru o ecuaie de ordinul
doi
( )
y f x, y, y
'' '

,
(8.92)
rezolvat cu metoda Runge - Kutta de ordinul patru, rezult
sistemul de ecuaii de ordinul trei:
d y
d x
d y
d x
1

'

f x y y
y
( , , )
1
1

(8.93)
corespunztor lui (8.84) i (8.85).
Relaiile de calcul (8.90) i (8.91) devin:
( ) ( )
( )
( )
y y k k k k
y y k k k k
i+ i
i+ i
1
1
1 1
1
2
1
3
1
4
1
1 1 2 3 4
1
6
2 2
1
6
2 2
+ + + +
+ + + +

(8.94)
unde
212
Integrarea numeric

( )
k hf x y y
k h f x +
h
, y +
k
, y +
k

k h f x +
h
, y +
k
, y +
k

k hf x h y k y k
i i
i
'
i i
i
'
i i
i
i i
i
1 1
2
1
1
1
1
3
2
1
2
1
4 3 1 3
1
2 2 2
2 2 2
'
'
( , , )
( , , )

_
,

_
,

+ + +

'


(8.95)
k h y
k h y
k
k h y
k
k h y k
i
i
i
i
1 1
2 1
1
3 1
2
4 1 3
2
2

_
,

_
,

'

( )

(8.96)
nlocuind (8.95 ) n (8.94 ) rezult formulele de calcul:
( )
y y k k k
i+ i 1 1 2 3
1
6
+ + + i = 0,1,2,. .., n
unde
213
Metode numerice n electronic

( ) ( )
( )
( )
( )
( ) ( )
( ) ( )
( ) ( )
y y k k k k
k h f x , y , y
k h f x +
h
, y
h
y , y
k
k h f x +
h
, y
h
y
h
k , y
k
k h f x +h , y h y
h
k , y k
i+ i
i i
i
i i
i i
i i
i i
i i
i i
1
1
1 1 2 3 4
1 1
2 1 1
1
3 1 1 1
2
4 1 2 1 3
1
6
2
2 2 2
2 2 4 2
2
+ + + +

+ +

_
,

+ + +

_
,

+ + +

_
,

'

(8.97)
8.3. REZOLVAREA NUMERIC A ECUAIILOR
DIFERENIALE CU DERIVATE PARIALE
Vom considera ecuaiile difereniale cu derivate pariale
de ordinul doi de dou variabile ce au forma general:

( ) ( ) ( ) ( ) ( ) ( ) a x , y
u
x
b x , y
u
x y
c x , y
u
y
d x , y
u
x
e x , y
u
y
f x , y u=

2
2
2 2
2
2 0 + + + + +
(8
.98)
unde
a x y b x y c x y d x y e x y f x y ( , ), ( , ), ( , ), ( , ), ( , ), ( , )

sunt funcii date ntr-un domeniu plan D. Funcia
necunoscut
u x y ( , )
i derivatele pariale apar n ecuaie la
puterea nti. Ecuaia are proprietatea c dac
u x y
1
( , )
i
u x y
2
( , )
sunt dou soluii ale ecuaiei, atunci i combinaia
liniar

c u c u
1 1 2 2
+

(8.99)
este tot o soluie a ecuaiei unde c
1
i c
2
sunt constante.
Aceste tipuri de ecuaii se clasific dup semnul valorii
determinantului ataat formulei (8.98).

a (x ,y ) b (x ,y )
b (x ,y ) c (x ,y )

(8.100)
214
Integrarea numeric
1. Dac > 0 ecuaia se numete de tip eliptic
2. Dac < 0 ecuaia se numete de tip hiperbolic
3. Dac 0 ecuaia se numete de tip parabolic
8.3.1. METODA DIFERENELOR FINITE
Aceast metod const n acoperirea domeniului D i o
frontier a lui C, cu o reea de drepte paralele cu axele de
coordonate. Paii reelei sunt constani, de valoare h pentru
axa Ox i de valoare k pentru axa
Oy .
Nodurile reelei se
mpart i ele n dou categorii: una n care punctele au toate
vecinele n interiorul lui D i a doua pentru care cel puin
unul dintre vecinele lui este exterior domeniului D i aceasta
formeaz frontiera C
1
a reelei. Se aproximeaz derivatele
pariale de ordinul unu i doi din ecuaia (8.98) cu
diferenele finite corespunztoare:
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( )
( ) ( )

2
2 2
2
2 2
2
2
2
u
x
u x+y , y u x+y u x-h , y
h

u
y
u x,y+h u x,y u x, y-h
k

u
x y
u x+h ,y+h u x,y+h u x+h ,y u x, y
h k

u
x
u x+h ,y u x, y
h

u
y
u x,y+k u x, y
k


(8.101)
Ecuaia (8.98) scris cu ajutorul diferenelor finite devine

( ) ( ) ( )
( ) ( ) ( ) ( ) ( )
( ) ( )
u x , y
k a+ h c+ hkb+hk d+kh e+k h f
[k au x+h , y k au x-h , y
h cu x , y+k k cu x , y-k khbu x+h , y+k khbu x , y+k kh bu x+h , y
k hdu x+h , y kh eu x , y+h ]
+ +
+ + + +
+ +
1
2 2 2
2 2 2
2 2 2 2 2 2
2 2
2 2
2 2
(8.
102)
Pentru cazul egalitii valorilor pailor h = k n ecuaia
obinut (8.102 ) rezult:
215
Metode numerice n electronic

( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( )
u x , y
a+ c+ b+h d+h e +h f
[a u x+h , y au x-h , y c u x , y+h
c u x , y-h b u x+h , y+h b u x , y+h b x+h , y
h du x+h , y h e u x , y+h ]
+ + +
+ + +
+ +
1
2 2 2
2 2 2
2


(8.103)
Dac se consider reeaua prezentat n figura 8.1 i se ine
seama de condiiile la limit, atunci pentru nodul (1,1) se
obine ecuaia:

( ) ( ) ( )
[ ]
u
a c b hd he h f
a u c c b u b u b u d u eu
( , )
( , ) , , , ( , ) ( , ) ( , )
11
1
2 2 2
21 1 2 2 2 2 2 1 2 2 21 21 11 2
1 1 1 1 1
2
1
1 1 1 1 1 1 1

+ + + + +

+ + + + +
(8.104)
unde am considerat h=k=1 pentru reeaua din figura 8.5.
Procednd la nlocuiri n fiecare punct al domeniului D se
obine un sistem din care calculm valorile funciei soluie a
ecuaiei (8.98). Funcie de semnul lui se rezolv tipuri de
ecuaii eliptice, hiperbolice sau parabolice.
Pentru
a x y b x y c x y d x y e x y f x y ( , ) , ( , ) , ( , ) , ( , ) , ( , ) , ( , ) 1 0 1 0 0 0

rezult o particularizare a ecuaiei (8.98) obinndu-se
ecuaia lui Laplace.
Fig 8.5 Reeaua domeniului funciei soluie i condiiile la limit
8.3.1.1. Ecuaia lui Laplace

2
2
2
2
0
u
x
u
y
+

(8.105)
216
Integrarea numeric
Aplicnd relaiile 8.101, ecuaia lui Laplace se scrie funcie
de diferenele finite astfel:
( ) ( ) ( ) ( ) ( )
[ ]
u x , y u x+h , y u x-h , y u x , y+h u x , y-h + + +
1
4
(8.106)
Considerm reeaua din fig.8.6 i notm cu u
11
, u
12
, u
13
, u
21
,
u
22
, u
23
, u
31
, u
32
, u
33


0 0,1 0,2
0,3 0,4 x
0,1
0,2
0,3
0,4
y
u (x,0)=1
u (x, 0,4)=0
u (0, y)=0 u (0,4, y)=0
u
11 u
12 u
13
u
21
u
22
u
23
u
31
u
32
u
33

Fig.8.6 Reeaua domeniului funciei i condiiile la limit
pentru ecuaia lui Laplace.
valorile funciei n punctele 1, 2, 3, 4, 5, 6, 7, 8, 9. Se obine
sistemul (8.107) care este un sistem iterativ de tip Jacobi
(Capitolul 3).
Prin rezolvarea recursiv a sistemului, rezult valorile
funciei soluie a ecuaiei difereniale cu derivate pariale
Laplace n punctele reelei. Reeaua se poate realiza cu un
pas mai mic ceea ce duce la un sistem cu multe ecuaii i
necunoscute, determinnd valorile funciei soluie n
punctele mai fine ale reelei.
217
Metode numerice n electronic

( )
( )
( )
( )
( )
u u
u u u u
u u u
u u u u
u u u u u
u u u
11 12
12 11 13 22
13 12 23
21 11 22 31
22 12 21 23 32
23 13 22
1
4
0 0 0 0 0 0 0 0 1
1
4
0 0 0 0 0 0 1
1
4
0 0 0 0 0 0 0 1
1
4
0 0 0 0 0 0 0
1
4
0 0 0 0 0
1
4
0 0 0 0 0
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + +
+ + + + + + +
( )
( )
( )
( )
( )
0 0
1
4
0 0 0 0 0 0 0 0
1
4
0 0 0 0 0 0 0
1
4
0 0 0 0 0 0 0
1
4
0 0 0 0 0 0 0 0
33
31 21 32
32 22 31 33
32 22 31 33
33 23 32
+ +
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + + +

'

u
u u u
u u u u
u u u u
u u u

(8.107)
8.3.1.1.1. Algoritmul 8.8. Ecuaia Laplace
{ Variabile
lsx:limita stng a domeniului pe Ox, real;
ldx:limita dreapt a domeniului pe axa Ox, real;
lsy:limita stng a domeniului pe axa Oy, real;
ldy:limita dreapt a domeniului pe axa Oy, real;
nrx:numrul de subintervale pe Ox, ntreg;
nry:numrul de subintervale pe Oy, ntreg;
h:pasul pe Ox, real;
k:pasul pe Oy, real;
{calculeaz h=(ldx-lsx)/nrx;
k=h;
pentru i=0 pn la nrx
{
u lsx ih ( , ) + 0 1
;
u lsx ih ldy ( , ) + 0
218
Integrarea numeric
}
pentru j=1 pn la nrt
u lsy jk ( , ) 0 0 +
;
u ldx lsy jk ( , ) + 0
;
}
pentru i=1 pn la nrx
pentru j=1 pn la nrt
{
calculeaz
u x y u lsx i h lsy jh u lsx i h lsy jh
u x ih lsy i h u lsx ih lsy j h
i j
( , ) ( ( ( ) , ) ( ( ) , )
( , ( ) ) ( , ( ) )
+ + + + + +
+ + + + + + +
1
4
1 1
1 1
}
construiete sistemul iterativ i -l rezolv cu
metoda Iacobi sau
Gauss-Seidel
tiprete
u
ij pentru i=0 pn la nrx
j=0 pn la nrt;
}
8.3.1.1.2. Implementarea algoritmului 8.8
/*
Funcia care implementeaz metoda de
rezolvare a ecuaiilor
difereniale de tip eliptic
*/
void ELIPTIC( int ord,
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;
219
Metode numerice n electronic
mat[i-1][j]=mat[i+1][j]=mat[i]
[j+1]=mat[i][j-1]=0.25;
}
else mat[i][j]=0;
}
}
i=20;
}
8.3.1.2. Ecuaii difereniale cu derivate pariale de tip
parabolic
Vom considera ecuaia cldurii ntr-o bar de lungime l ce
reprezint o ecuaie cu derivate pariale de tip parabolic:
1
0
2
2
2
a
u
t
u
x





(8.108)
u(x,t) reprezint temperatura funcie de coordonata
punctului i timp. Prin schimbarea de variabil t=
a
2
t
'

ecuaia (8.108) se pote scrie:




u
t
u
x

2
2
0
(8.109)
Pentru rezolvarea ecuaiei se aplic metoda diferenelor
finite pe reeaua prezentat n figura (8.7) cu paii h
l
n
pe
axa Ox i k h
2
pe axa Ot. =1/6 reprezint constanta
pentru care eroarea este minim dac rezolvarea se face cu
metoda diferenelor finite.
220
Integrarea numeric
t
x
h
k
0
Fig.8.7.Reeaua domeniului pe care se integreaz ecuaia diferenial cu
derivate
pariale de tip parabolic.
Presupunem date condiia iniial
u(x, ) f(x 0 )
i condiiile la
limit:

u( ,t) s(t), u( ,t) z(t) 0 1
.
Ecuaia (8.109), scris cu diferene finite, devine:
u u
h
u u u
h
i j i j i j i j i j , , , , ,
.
.
+ +

+
1
2
1 1
2
2


(8.110)
Din ecuaia (8.110) se deduce formula de calcul a valorilor
funciei n punctele reelei:
u u u u
ij i j i j i j + +
+ +
1 1 1
1
6
4 ( )
, , ,

(8.111)
Pentru calculul valorilor funciei se ine seama de condiiile
iniiale i de cele la limit.
8.3.1.2.1. Algoritmul 8.9. Ecuaii cu derivate pariale de tip parabolic
{Variabile
lsx:limita stng a domeniului pe Ox, real;
ldx:limita dreapt a domeniului pe axa Ox,
real;
lst:limita stng a domeniului pe axa Ot,
real;
ldt:limita dreapt a domeniului pe axa Ot,
real;
nrx:numrul de subintervale pe Ox, ntreg;
nrt:numrul de subintervale pe Ot, ntreg;
h:pasul pe Ox, real;
221
Metode numerice n electronic
k:pasul pe Ot, real;
{pentru i=0 pn la nrx
calculeaz
u f lsx i h
i 0
+ ( * )
;
calculeaz k=(1/6)*h;
pentru j=1 pn la nrt
{
calculeaz
u s lst j k
j 0
+ ( * )
;
calculeaz
u z lst j k
lj
+ ( * )
;
}
pentru i=1 pn la nrx
pentru j=1 pn la nrt
calculeaz
u u u u
ij i j i j i j
+ +
+
1
6
4
1 1 1 1 1
( )
, , ,
;
tiprete
u
ij pentru i=0 pn la nrx
j=0 pn la nrt;
}
8.3.1.2.2. Implementarea algoritmului 8.9
/* Funcia care implementeaz metoda de
rezolvare a ecuaiilor
difereniale
cu derivate pariale de tip parabolic.
*/
void Parabolica( double (*F)(double),
double (*S)(double),
double (*Z)(double),
double lims,
double limd,
int nrx,
int nry,
double sol[][NMax]
)
{
int i,j;
double h,k;
h=(limd-lims)/nrx;
k=h*h/6;
for(i=0;i<=nrx;i++)sol[i][0]=f(lims+i*h); /*pe
orizontala de jos */
for(j=1;j<=nry;j++)
{
222
Integrarea numeric
sol[0][j]=s(j*k); /* verticala stanga */
sol[nrx][j]=z(j*k); /*verticala dreapta */
}
for(j=1;j<=nry;j++)
for(i=1;i<=nrx-1;i++)
sol[i][j]=(sol[i-1][j-1]+4*sol[i][j-1]+sol[i+1][j-
1])/6;
}
8.3.1.3. Ecuaiile cu derivate pariale de tip hiperbolic
O ecuaie de acest tip este ecuaia oscilaiilor libere ale
unei bare omogene finite:

2
2
2
2
2
0
u
t
a
u
x

(8.112)
care are condiiile la iniiale:
u x f x ( , ) ( ) 0

u (x, ) g(x), x l
t
'
0 0 i condiiile la limit:
u t s t u t z t t ( , ) ( ), ( , ) ( ), 0 1 0
. Se poate lua acelai domeniu
de integrare dat n figura 8.7. Ecuaia cu derivate pariale
(8.112) poate fi transcris cu ajutorul diferenelor finite,
aplicate pe o reea dreptunghiular de pas hl/n pe axa Ox
i de pas k ntreg oarecare astfel:
u u u
k
a
u u u
h
i,j i,j i,j i ,j i,j i ,j + +
+

+
1 1
2
2
1 1
2
2 2

(8.113)
Dac se alege h = ka, ecuaia (8.113) se simplific la forma:
u u u u
i j i j i j i j , , , , + +
+
1 1 1 1 .
(8.114)
Cu ajutorul formulei de calcul (8.114) se obin valorile
funciei u(x,t) n punctele domeniului dat astfel ca funcia s
verifice ecuaia (8.112).
8.3.1.3.1. Algoritmul 8.10. Ecuaii cu derivate pariale de tip
hiperbolic
{Variabile
lsx:limita stng a domeniului pe Ox, real;
223
Metode numerice n electronic
ldx:limita dreapt a domeniului pe axa Ox, real;
lst:limita stng a domeniului pe axa Ot, real;
ldt:limita dreapt a domeniului pe axa Ot, real;
nrx:numrul de subintervale pe Ox, ntreg;
nrt:numrul de subintervale pe Ot, ntreg;
h:pasul pe Ox, real;
k:pasul pe Ot, real;
{
calculeaz h=
l
nrx
;
calculeaz k
h
a
;
pentru i=0 pn la nrx
{
calculeaz u f lsx i h
i 0
+ ( * ) ;
calculeaz
u k g lsx i h u
i i ,
* ( * )

+ +
1 0
}
pentru j=1 pn la nrt
{
calculeaz
u s lst j k
j 0
+ ( * )
;
calculeaz
u z lst j k
lj
+ ( * )
;
}
pentru i=1 pn la nrx
pentru j=1 pn la nrt

calculeaz
u u u u
ij i j i j i j
+ +
+ +
( )
, , , 1 1 2 1 1 ;
pentru i=0 pn la nrx

pentru j=0 pn la nrt tiprete
u
ij
}
8.3.1.3.2. Implementarea algoritmului 8.10
/*
Funcia care implementeaz metoda de
rezolvare a ecuaiilor
difereniale cu derivate pariale de tip hiperbolic
*/
void Hiperbolica( double (*F)(double),
double (*S)(double),
double (*Z)(double),
224
Integrarea numeric
double lims,
double limd,
int nrx,
int nry,
double a,
double sol[][NMax]
)
{
int i,j,k1;
double h,k;
h=(limd-lims)/nrx;
k=k1;
for(i=0;i<=nrx;i++)sol[i][0]=f(lims+i*h); /*pe
orizontala de jos */
for(j=1;j<=nry;j++)
{
sol[0][j]=s(j*k); /* verticala stnga
*/
sol[nrx][j]=z(j*k); /*verticala
dreapta */
}
for(i=1;i<=nrx-1;i++)
sol[i][1]=sol[i+1][0]+sol[i-1][0]-sol[i]
[0]+k*g(lims+i*h);
for(j=2;j<=nry;j++)
for(i=1;i<=nrx-1;i++)
sol[i][j]=(sol[i+1][j-1]-sol[i][j-2]+sol[i-1][j-1]);
}
8.4. APLICAIE
Se consider un circuit R,L n serie alimentat de o surs
de curent alternativ
e t 10 100 cos( )
V,
f
=50Hz, prezentat n
fig.(8.8).
225
Metode numerice n electronic
Fig.8.8. Circuitul R,L
Cunoscnd R=10, L=10mH i c la t=0 i=0, s se calculeze
valorile curentului la t=0.001; 0.002; 0.003; 0.004; 0.005;
0.006; 0.007; 0.008; 0.009; 0.01s.
Se aplic circuitului electric legea a doua a lui Kirchhoff i se
obine ecuaia diferenial
L
i
Ri e
d
dt
+
Rezultatele obinute prin metoda lui Euller modificat sunt
prezentate n tabelul (8.1)
Tabelul 8.1
t[s] i[A]
0.0000 0.00000
0.00100 0.48770
0.00200 0.65941
0.00300 0.63249
0.00400 0.447665
0.00500 0.24065
0.00600 - 0.03564
0.00700 -0.31683
0.00800 -0.57124
0.00900 -0.77188
0.001000 -0.89808

226
Integrarea numeric
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.
227
Metode numerice n electronic
n ambele cazuri, dac funcia necunoscut este numai
sub integral, spunem c ecuaiile sunt de spea ntia, iar
dac funcia necunoscut este i n afara integralei, spunem
c ecuaiile sunt de spea a doua.
Ecuatii
integrale
liniare
de tip Fr edholm
spea I
spea II
de tip Vo lterra
spea I
spea II

'

'

'

9.1. INTEGRAREA ECUAIEI FREDHOLM


NEOMOGEN DE SPEA A DOUA PRIN
METODA APROXIMAIILOR SUCCESIVE
Se consider ecuaia:
( ) x f x S x y y y
a
b
+

( ) ( , ) ( )d
(9.1)
unde f i S sunt funcii date ,

este funcia necunoscut


pe care o determinm i un parametru numeric suficient
de mic, astfel c pentru nceput poate fi aproximat
soluia :

1
( ) ( ) x f x
(9.2)
Se obine formula de recuren
_______________________
*Bibliografie [12], [17], [18], [22]

k
a
b
k-
x f x S x y y ( ) ( ) ( , ) +
1
(y)d
(9.3)
Pentru convergena irului de soluii aproximative se scad
funciile (9.1) i (9.3) obinndu-se eroarea :

k k
a
b
k-
x x x S x y y ( ) ( ) ( ) ( , )
1
(y)d
(9.4)
Dac
( ) S x, y M
oricare ar fi
( ) [ ] [ ] { }
x , y a , b a , b
atunci
( ) S x y y y S b-a E
a
b
k- k-
( , ) ( )


1 1
d
(9.5)
228
Integrarea numeric
unde E
k
este maximul lui
( )
k
x
din
[ , ] a b
.
Convergena irului de soluii este satisfcut dac
( )
M b-a <1 .
(9.6)
Utiliznd pentru integrare o metod de cuadratur
cunoscut se obine din ecuaia (9.3) ecuaia :



i i
a
b
i j
j=
n
i j j
i i ij j
j=
n
f S x y y y f h A S x y y
f C i = , ,...,n
+ +
+

( , ) ( ) ( , ) ( ) d
sau
0
0
01

(9.7)
care reprezint un sistem n necunoscutele
i
. Sistemul se
poate rezolva iterativ aplicnd formula de iteraie:
( ) ( )
f l C
i
k
i ij j
k-
j=
n
+

1
0
i = 0,1,2,...,n
(9.8)
Procesul de iteraie se continu pn cnd
( ) ( )

i
k
i
k+
<
1

(9.9)
unde >0 reprezint eroarea de calcul .
9.1.1. ALGORITMUL 9.1. METODA LUI FREDHOLM

{Variabile
l : constanta ecuaiei ;
x : vectorul punctelor de pe 0x, real ;
y : vectorul punctelor de pe 0y, real ;
M : matricea punctelor format de vectorul x i y ;
C
ij
: valorile funciei cunoscute S(x,y) n punctele
matricei M reale
nmulit cu ponderile din metoda
cuadraturii, real ;
a : limita stng de integrare, real ;
b : limita dreapt de integrare, real ;

0
: valooarea iniial a funciei soluie, real ;
f
i
: valorile funciei cunoscute n variabilele
vectorului x, real ;
sum : suma parial, real ;
: eroarea, real ;
229
Metode numerice n electronic
n : numrul de puncte n care se calculeaz
soluia, ntreg ;
{
0
= ;
i = 1;
repet
( )

i
k

0
;
k = 1;
repet
{ calculeaz f
i
= f( x
i
);
pentru j = 1... n
{calculeaz sum = sum + * A
i
*S(x
i
,y
j
)*
( )
( )
k-1
i
x ;
calculeaz
( )

i
k+1
i
f sum + ;
}
k = k+1;
pn cnd
( ) ( )

i
k+1
i
k
<
;
i = i + 1;
pn cnd i = n;
tiprete soluia
i
k ( +1)
i=1 pn la n;
}
9.1.2. IMPLEMENTAREA ALGORITMULUI 9.1. METODA LUI
FREDHOLM
{void Fredholm(double (*f)(double),
double (*S)(double,double),
double lims,
double limd,
int np,
double lam,
double sola[]
)
{
double h,sum;
int i,j,sem,cont;
int niter=10000;
double eps=1e-15;
static double mat[NMax][NMax];
static double tl[NMax];
static double solp[NMax];
h=(limd-lims)/np;
230
Integrarea numeric
for (i=1;i<=np+1;i++)
{
tl[i]=f(lims+(i-1)*h);
sola[i]=0;
for(j=1;j<=np+1;j++)
}
if ( (j==1)||(j==np+1) ) mat[i]
[j]=0.5*lam*h*S(lims+(i-1)*h,lims+
(j-1)*h);
else mat[i][j]=lam*h*S(lims+(i-1)*h,lims+(j-1)*h);
}}
cont=0;
do
{
sem=1;
for(i=1;i<=np+1;i++)solp[i]=sola[i];
for(i=1;i<=np+1;i++)
{
sum=0;
for(j=1;j<=np+1;j++)if(j!=i)sum+=mat[i]
[j]*solp[j];
sola[i]=(tl[i]+sum)/(1-mat[i][i]);
}
for(i=1;i<=np+1;i++) if(fabs(sola[i]-
solp[i])>eps)sem=0;
cont++;
}
while ((sem==0)&&(cont<niter))
}
}


9.2. INTEGRAREA ECUAIEI DE TIP VOLTERRA
NEOMOGEN DE SPEA A DOUA PRIN METODA
APROXIMAIILOR SUCCESIVE
Fie ecuaia
( ) ( ) ( , ) ( ) x f x S x y y y
a
x
+

d .
(9.10)
Diferena finit pentru ecuaia (9.10) este dat de relaia :
231
Metode numerice n electronic
( ) +

( ) ( ) ( ) ( , ) ( ) d x x-h f x f x h S s y y y
x-h
x

(9.11)
Aplicnd o formul de cuadratur pentru integral pe
intervalul h rezult :

i i- i i- ij j
j=
i
f f C +
1 1
0

(9.12)
Din aceast relaie prin explicitarea lui
j
i
se obine

i
ii
i i- i,i- i- ij j
j=
i-
C
f f C C

+ + +

1
]
1
1
1
1
1 1 1
0
2
( )
(9.13)
Din ecuaia iniial (9.10) rezult c ( ) ( ) a f a deci f
0 0
.
Ca urmare, din ultima relaie (9.13 ) rezult :
[ ]

1
11
1 0 10 0
1 10 0
11
1
1
1
1

+
+
C
f f C
f C f
C
( )
(9.14)
Aceast valoare este utilizat ca valoare de start pentru
ecuaia de recuren (9.13 ) .
9.2.1. ALGORITM 9.2. METODA LUI VOLTERRA

{Variabile
n : numrul de puncte n care se calculeaz
soluia , ntreg ;
x : vectorul punctelor de pe 0x , real ;
y : vectorul punctelor de pe 0y , real ;
M : matricea punctelor format de vectorul x i
y ;
C
ij
: valorile funciei cunoscute S(x , y) n
punctele n care se
calculeaz prin metoda cuadraturii mulit
cu ponderile, real ;
f
i
: valorile funciei f(x
i
) , real ;
h :intervalul de integrare , real ;

i
:valoarile funciei soluie , real ;
: eroarea de calcul , real ;
sum : suma parial , real ;
{
sum = 0 ;
232
Integrarea numeric
calculeaz f
1
, f
0
;
calculeaz
1
1 10 0
11
1

+ f C f
-C
;
i = 1;
repet
pentru j = 0 la i -2
{calculeaz sum = sum + C
ij

j ;
calculeaza
[ ]

i
ii
i i- i,i- i-
C
f f ( C ) sum

+ + +
1
1
1
1 1 1
;
}
i = i + 1;
pn cnd i = n;
Valorile funciei soluie sunt

i
pentru i =
1 , ... , n;
}
9.2.2. IMPLEMENTAREA ALGORITMULUI 9.2
{void Volterra(double (*f)(double),
double (*S)(double,double),
double lambda,
double lims,
double h,
int np,
double sola[]
)
{
int i,j;
double sum;
sola[0]=f(lims);
sola[1]=(f(lims+h)
+0.5*f(lims)*S(lims,lims)*lambda)
/(10.5*S(lims+h,lims+h)*lambda );
for(i=2;i<=np;i++)
{
sum=0;
for(j=0;j<=i-2;j+
+)sum+=sola[j]*S(lims+i*h,lims+j*h)*lambda;
sum=sum-0.5*sola[0]*S(lims,lims)*lambda;
sola[i]=(f(lims+i*h)-f(lims+(i-1)*h)
+(1+S(lims+i*h,lims+
233
Metode numerice n electronic
(i-1)*h))*lambda*sola(i1)+sum)/
(10.5*lambda*S(lims+i*h,lims+i*h));
}
9.3. APLICAIE

S se rezolve ecuaia integral de tip Fredholm
( ) ( ) d x x . x . . x y y y + +

0 05 0 025 01
2 2 2
0
1
pentru care lims=0,limd=1,lambda=0.1, nr=5.
Rezultatele obinute sunt :
. . , . . , . . ,
. . . . ., . . .


( ) ( ) ( )
( ) ( ) )
0 0 0 001038 0 2 0 201042 0 4 0 401055
0 6 0 601076 08 0801106 10 1001145

(

Aceste rezultate sunt valorile funciei soluiei n punctele
de diviziune ale intervalului
[0 1].
234

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