Documente Academic
Documente Profesional
Documente Cultură
2. ERORI
2.1. INTRODUCERE
1 0.9
ex 0.1 sau e x 10 %.
1
2. Fie x 0.0004 şi x * 0.0003, valorile adevărată şi aproximativă ale unei
mărimi. Erorile absolută şi relativă sunt:
E x 0.0004 0.0003 0.0001,
0.0004 0.0003
ex 0.25 sau e x 25% .
0.0004
Din cele două exemple, se observă diferenţele între valorile celor două tipuri
erori. De asemenea, se observă că eroarea relativă furnizează o imagine mai
clară asupra preciziei valorii aproximative.
Exemplu de calcul
Exemplu de calcul
Exemplu de calcul
Exemplu de calcul
R1 0.31415 101 .
b) scăderea
E x y x y ( x * y * ) E x E y ; (2.3.4)
c) înmulţirea
E xy xy x * y * ( x * E x )( y * E y ) x * y * x * E y y * E x (2.3.5)
(s-a neglijat produsul E x E y , deoarece este mult mai mic în raport cu restul
termenilor);
d) împărţirea
14
x x* x* E x x* y E x x E y y E x x E y
* * * *
Ex * * * (2.3.6)
y
y y y E y y *2
y y Ey
*
y*
2
2
(s-a considerat y * y * E y ).
În cazul relaţiilor (2.3.5) şi (2.3.6), pentru calcul erorilor absolute se va
considera semnul egal.
b) scãderea
E x y x* E x y* E y x* y*
e x y = = ex ey ;
x* y * x* y * x* x* y * y * x* y * x* y *
(2.3.8)
c) înmulţirea:
E xy Ex Ey
e xy = = + ex + e y ; (2.3.9)
x* y * x* y*
d) împărţirea:
Ex / y Ex E y
e x/y = ex e y . (2.3.10)
x* / y * x* y*
x* y* x* y*
e x y e x ey 5 10 s ;
x* y * x* y * * y* * y*
x x
x* y* x* y*
e x y e x ey 5 10 s ;
x* y * x* y * * y* * y*
x x
Ex E y
e xy = e x e y 10 10 s 101 s ;
x* y*
Ex E y
e x/y = e x e y 10 10 s 101 s ,
x * y *
În cazul anumitor date tehnice, valorile unor mărimi sunt prezentate sub
forma:
x x * 100%, (2.4.2)
unde marimea
x
. (2.4.3)
x*
este eroarea relativă limită a lui x.
Exemplu de calcul
y y
y=f(x) y=f(x)
o x o x
rădăcinile rădăcinile
ecuaţiei f(x)=0 ecuaţiei f(x)=0
x ( k ) 1 ;
(4.1.2)
f ( x (k ) 2 ,
unde 1 şi 2 sunt numere pozitive foarte mici.
Cele două condiţii (4.1.2) nu sunt echivalente, după cum se observă din
figura 4.1.2. Astfel, dacă modulul pantei funcţiei y f (x) , în punctul x (k ) , este
mic (fig.4.1.2.a), atunci f ( x (k ) ) este suficient de mic, iar valoarea x (k )
este mare. În figura 4.1.2.b, avem f ( x (k ) ) mare şi x (k ) mic.
În practică se folosesc fie ambele condiţii (4.1.2), fie numai una dintre ele, în
funcţie de problema de rezolvat.
După cum s-a arătat mai înainte, în domeniul [a, b] trebuie să existe o soluţie
unică . De aceea, la determinarea soluţiilor reale ale ecuaţiei f ( x) 0 se
parcurg două etape, şi anume:
a) separarea rădăcinilor ecuaţiei (4.1.1);
b) determinarea aproximativă a rădăcinilor, folosind o metodă numerică
adecvată.
3
x (x) 2
f ( x ( k ) ) f ( x ( k 1) ) f ( x ( k 1) ) f ( x ( k 1) )
1! 2!
( k 1)
(4.3.8)
(x)
f ( k 1) ( x ( k 1) ) 0
(k 1)!
Dacă se reţin primii doi termeni din relaţia (4.3.8), se obţine:
x
f ( x ( k 1) ) f ( x ( k 1) ) 0 ,
1!
de unde rezultă:
( k 1) f ( x ( k 1)
x (k )
x , k 1, 2, (4.3.9)
f ( x ( k 1) )
x ( k ) x ( k 1) . (4.3.10)
Dacă din dezvoltarea în serie (4.3.8) se reţin primii trei termeni, se obţine
formula de iterare de ordinul trei. Pentru aceasta, relaţia
4
x
f ( x ( k 1) ) x f ( x ( k 1) ) f ( x ( k 1) ) 0 ,
2
f ( x ( k 1) )
unde termenul x , din interiorul parantezei mari, se înlocuieşte cu ,
f ( x ( k 1) )
adică cu eroarea din formula de iterare de ordinul doi. În acest caz, se obţine:
y f ( x ( k 1) )
( k 1)
f ( x ( k 1) ) .
xx
Pentru y 0 rezultă x x (k ) , astfel că se obţine relaţia:
( k 1) f ( x ( k 1) )
x (k )
x ,
f ( x ( k 1) )
y A( x (0) , y (0) )
y f ( x)
B ( x (1) , y (1) )
a b
o x ( 2) x (1 ) x (0) x
Fig. 4.3.3. Ilustrarea metodei Newton-Raphson
y f (x )
a x ( 2) x (1) b
o x
a2 b2
a1 b1
Fig. 4.3.5. Ilustrarea metodei bisecţiei
Dreapta g (x) intersectează axa absciselor în punctul x (1) (v. fig. 4.3.6).
Pentru aflarea lui x (1) este necesară determinarea constantelor a1 şi a 2 . Folosind
relaţia (4.3.15) şi condiţiile 4.3.16), rezultă:
f (b) f (a) bf (a) af (b)
a1 , a2 . (4.3.17)
ba ba
y
B(b, f (b))
a x (1) x ( 2)
o b x
A(a, f (a))
Fig. 4.3.6. Ilustrarea metodei coardei
7
a1 f (b1 ) b1 f (a1 )
x (1) . (4.3.19)
f (b1 ) f (a1 )
a2 f (b2 ) b2 f (a2 )
x ( 2) .
f (b2 ) f (a2 )
La etapa k avem:
ak f (bk ) bk f (ak )
x (k ) . (4.3.20)
f (bk ) f (ak )
5.1. INTRODUCERE
f1 ( x1 , x2 ,..., xn ) 0;
f ( x , x ,..., x ) 0;
2 1 2 n
(5.2.1)
. . . . . . . . . . . . .
f n ( x1 , x2 ,..., xn ) 0.
W ( x ( 0 ) ) x f ( x ( 0 ) ) , (5.2.7)
T
unde x (0) x1(0) , x 2(0) , , x n(0) .
Dacă funcţiile f1 , f 2 , , f n , împreună cu derivatele parţiale
f i
, (i, j ) 1, n , sunt continue pe vecinătatea V X şi det W ( x (0) ) ( 0) 0,
x j x V
x ( k ) x ( k 1) , (5.2.11)
x W 1 ( x ) f ( x ( o ) ) . (5.4.7)
unde
1 / N , k 0, N 1 .
Deci, pentru determinarea soluţiei sistemului de ecuaţii neliniare (5.2.1), se
împarte intervalul [0, 1] în N subintervale egale, , şi se integrează numeric
pornind de la soluţia iniţială x ( 0) .
În cazul metodei Kani, precizia de calcul a soluţiei este cu atât mai mare cu
cât mărimea subintervalelor este mai mică.
De regulă, metoda Kani se foloseşte atunci când nu sunt suficiente date
pentru a preciza o aproximaţie iniţială. Astfel, după obţinerea unei soluţii
aproximative cu metoda Kani, se introduce această soluţie, ca aproximaţie
iniţială, în metoda Newton-Raphson sau în metoda gradientului şi se obţine o
soluţie cu precizia dorită de utilizator.
1
6. REZOLVAREA SISTEMELOR
DE ECUAŢII LINIARE
6.1. INTRODUCERE
Rezolvarea sistemelor de ecuaţii liniare este una dintre cele mai frecvente
aplicaţii în calculul numeric. Metodele de rezolvare a acestor sisteme se pot
grupa în două categorii, şi anume: metode exacte şi metode iterative.
Metodele exacte se utilizează, de regulă, în cazul sistemelor cu număr mic de
ecuaţii, deoarece soluţia este afectată de erorile de rotunjire, erori ce se propagă
de la o operaţie la alta.
În cazul sistemelor cu număr mare de ecuaţii se folosesc metodele iterative,
cu ajutorul cărora se poate controla eroarea soluţiei obţinute faţă de soluţia
exactă.
Să considerăm n ecuaţii liniare, dependente de n variabile. Aceste n ecuaţii
formează un sistem de n ecuaţii liniare. Un sistem de n valori, corespunzătoare
celor n variabile, este o soluţie a acestui sistem de ecuaţii, dacă înlocuind
variabilele cu aceste valori, toate cele n ecuaţii sunt satisfăcute simultan.
Până la rezolvarea propriu-zisă a unui sistem de ecuaţii liniare, este bine să
se facă un studiu privind existenţă şi unicitatea soluţiei. De altfel, nu are sens să
se caute o soluţie a sistemului de ecuaţii liniare dacă aceasta nu există.
În acest sens, în cazul sistemelor de ecuaţii liniare pot apare mai multe
situaţii, şi anume:
a) Sistemul are soluţie unică.
Fie sistemul de ecuaţii liniare
2 x + 3 y = 6;
(6.1.1)
3 x − 2 y = 6,
a cărui reprezentare geometrică este dată în figura 6.1.1. Cele două drepte, ale
sistemului de ecuaţii liniare (6.1.1), se intersectează în punctul A, punct ale cărui
coordonate reprezintă soluţia sistemului.
b) Sistemul nu are soluţie.
Fie sistemul de ecuaţii liniare
x + y = 2;
(6.1.2)
x + y = 3.5,
2
a cărui reprezentare geometrică este prezentată în figura 6.1.2. Cele două drepte
ale sistemului de ecuaţii liniare (6.1.2) sunt paralele, astfel că sistemul nu are
soluţie.
y
y
3 x+ y=2
3
2 2x + 3y = 6 3x − 2 y = 6 2
x + y = 3.5
1 1
A
0 1 2 3 4 5 x 0 1 2 3 4 5 x
−1 −1
−2 −2
−3 −3
0 1 2 3 4 5 x 0 1 2 3 4 5 x
−1 −1
−2 −2
−3 −3
X = A −1 b (6.2.4)
Sistemul are o soluţie unică pentru orice vector b . Dacă matricea A este
singulară, sistemul va avea soluţie numai pentru anumite valori speciale ale
vectorului b şi o astfel de soluţie nu este unică.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
(6.2.7)
0 + ai 2 x2 + ... + aij x j + ... + ain xn = bi ;
(1) (1) (1) (1)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
0 + a n 2 x2 + ... + a nj x j + ... + a nn xn = bn ,
(1) (1) (1) (1)
aik( k −1)
mi = , i = k + 1, n . (6.2.8)
a k( kk−1)
unde: i = k + 1, n , j = k , n .
de unde rezultă:
a) ai1 = li1 1 + li 2 0 + li3 0 = li1 , i = 1,3 , (6.2.17)
c) a 22 = l 21 t12 + l 22 1 l 22 = a 22 − l 21 t12
a 23 = l 21 t13 + l 22 t 23 t 23 = (a 23 − l 21 t13 ) / l 22 (6.2.19)
a32 = l31 t12 + l32 1 l32 = a32 − l31 t12
a33 = l31 t13 + l32 t 23 + l33 1 l33 = a33 − l31 t13 − l32 t 23
b1 = l11 c1 c1 = b1 / l11
b2 = l 21 c1 + l 22 c 2 c 2 = (b2 − l 21 c1 ) / l 22 (6.2.20)
b3 = l31 c1 + l32 c 2 + l33 c3 c3 = (b3 − l31 c1 − l32 c 2 ) / l33
X ( k +1) − X ( k ) , (6.3.9)
( X ( k +1) = (D − T) −1 S X ( k ) + (D − T) −1 b . (6.3.13)
7. DIFERENŢE FINITE
7.1. INTRODUCERE
2 f ( x) (f ( x)) f ( x h) f ( x)
(7.2.2)
f ( x 2h) 2 f ( x h) f ( x )
i3 y i 3 yi 3
i4 yi 4
Expresia:
f ( x) f ( x) f ( x h) , (7.3.1)
2 f ( x) (f ( x)) f ( x) f ( x h)
(7.3.2)
f ( x ) 2 f ( x h) f ( x 2h)
În cazul în care funcţia este dată numeric, diferenţele finite regresive sunt:
y i yi yi 1 ;
2 yi yi 2 yi 1 yi 2 ;
(7.3.5)
n
n yi (1) k C nk yi ( nk )
k 0
Tabelul 7.3.1
4
Nr. y y 2 y 3 y 4 y
nod
i4 yi 4
i3 y i 3 y i 3
i2 yi 2 yi 2 2 yi 2
i 1 yi 1 yi 1 2 yi 1 3 yi 1
i yi y i 2 yi 3 yi 4 yi
Tabelul 7.3.2
y 2 3 4
1
2 1
3 2 n
4 3 n+1 2n-2
4 n+2 2n-1 3n-5
2n 3n-4
3n-3
n-2 n-3 2n-5 3n-8 4n-12
n-1 n-2 2n-4 3n-7 4n-11
n n-1 2n-3 3n-6 4n-10
Numărul
diferenţelor
n-1 n-2 n-3 n-4
finite regresive
(pe coloană)
f ( x) f ( x h) f ( x h) (7.4.1)
Diferenţa finită centrală de ordinul doi este:
2 f ( x) (f ( x)) f ( x h) f ( x h)
(7.4.2)
f ( x 2h) 2 f ( x ) f ( x 2h)
8. APROXIMAREA FUNCŢIILOR
8.1. INTRODUCERE
- polinom trigonometric:
2
T ( x) = a0 + a1 cos x + a2 cos 2 x + + an cos nx +
(8.2.3)
+ b1 sin x + b2 sin 2 x + + bn sin nx,
E ( x) = a0 + a1e x + a 2 e 2 x + + a n e nx +
(8.2.4)
−x −2 x − nx
+ b1e + b2 e + + an e ,
Z ( x) = a 0 + a1e xi + a 2 e 2 xi + + a n e nxi +
(8.2.5)
+ b1e − xi + b2 e −2 xi + + a n e −nxi ,
yi+1 B
y M
yi A
o
xi x xi+1 x
Fig. 8.2.1. Imaginea interpolării liniare
3
Pentru a determina valoarea y , într-un punct x ( xi x xi +1 ), vom
considera ecuaţia dreptei ce trece prin cele două puncte A şi B, şi anume:
y − yi
y = y i + i +1 ( x − xi ) . (8.2.9)
xi +1 − xi
Pentru x = x , rezultă:
yi +1 − yi
y = yi + ( x − xi ) .
xi +1 − xi
unde x ( xi −1 , xi +1 ) .
y
C (x i+1, yi+1)
A(xi-1, yi-1)
M
B(x i , yi)
o
x x
Fig. 8.2.2. Imaginea interpolării pătratice
4
Pentru determinarea coeficienţilor a0 , a1 şi a 2 , se înlocuieşte x, din relaţia
(8.2.11), succesiv cu xi −1 , x i , xi +1 şi se obţin ecuaţiile:
y i −1 = a 0 + a1 xi −1 + a 2 xi2−1 ; (8.2.12)
yi = a0 + a1 xi + a 2 xi2 ; (8.2.13)
y i +1 = a 0 + a1 xi +1 + a 2 xi2+1 . (8.2.14)
Pn ( xi ) = yi , i = 0, n (8.2.15)
y0 2 y0
N nd ( x) = y0 + ( x − x0 ) + ( x − x0 )( x − x1 ) +
1!h 2!h 2
(8.2.23)
n y0
+ ( x − x0 )( x − x1 ) ( x − xn−1 )
n!h n
Pentru întocmirea programului de calcul se face o schimbare de notaţie, şi
anume y1 = y0 . În acest caz, polinomul (8.2.23) devine:
y1 2 y1
N nd ( x) = y1 + ( x − x1 ) + ( x − x1 )( x − x 2 ) +
1!h 2!h 2
n−1 y1
+ n −1
( x − x1 )( x − x 2 ) ( x − x n−1 ) = (8.2.23’)
(n − 1)!h
n −1 k ( x − xi )
= y1 + k y1
k =1 i =1 ih
Astfel:
- pentru x = xn , b0 = yn ;
- pentru x = xn−1 , b0 + b1 ( xn−1 − xn ) = y n−1 ;
- pentru x = xn−2 , b0 + b1 ( xn−2 − xn ) + b2 ( xn−2 − xn )( xn−2 − xn−1 ) = yn−2 ;
…………………………………………………………………
b + b ( x − xn ) + b2 ( xo − xn )( x0 − xn−1 ) +
- pentru x = x0 , 0 1 0 . (8.2.27)
+ bn ( x0 − xn )( x0 − xn−1 ) ( x0 − x1 ) = yn
b0 = yn ;
y − y n−1 y n
b1 = n = ; (8.2.28)
h h
y − 2 yn−1 + yn−2 2 yn n yn
b2 = n 2
= 2
; …; bn = n
.
2!h 2!h n!h
După înlocuiri în relaţia (8.2.25), se obţine:
y n 2 yn
N ns ( x) = yn + ( x − xn ) + ( x − xn )( x − xn−1 ) +
1!h 2!h 2
(8.2.29)
yn
n
+ ( x − xn )( x − xn−1 ) ( x − x1 )
n!h n
Polinomul Newton de interpolare stânga se recomandă a fi folosit pentru valori
ale lui x apropiate de nodul xn, în această zonă eroarea fiind mai mică.
G2dn ( x) = c0 + c1 ( x − x0 ) + c2 ( x − x0 )( x − x1 ) + c3 ( x − x0 )( x − x1 )( x − x−1 ) +
+ c4 ( x − x0 )( x − x1 )( x − x−1 )( x − x2 ) +
+ c2 n−1 ( x − x0 )( x − x1 )( x − x−1 )( x − x2 ) ( x − x−n+1 ) +
+ c2 n ( x − x0 )( x − x1 )( x − x−1 )( x − x2 ) ( x − x−n+1 )( x − xn )
(8.2.31)
sau
G2dn ( x) = c0 + c1 ( x − x0 ) + c 2 ( x − x0 )( x − x1 ) + c3 ( x − x −1 )( x − x0 )( x − x1 ) +
+ c 4 ( x − x −1 )( x − x0 )( x − x1 )( x − x 2 ) +
+ c 2 n−1 ( x − x−n+1 )( x − x −n+ 2 ) ( x − x−1 )( x − x0 )( x − x1 ) ( x − xn−1 ) +
+ c 2 n ( x − x −n+1 )( x − x−n+ 2 ) ( x − x −1 )( x − x0 )( x − x1 ) ( x − x n ) +
(8.2.32)
Pentru determinarea constantelor c0 , c1 , , c2n se pun condiţiile de
interpolare:
G2dn ( xi ) = yi , i = − n, n .
Astfel:
- pentru x = x0 , c0 = y0 ;
- pentru x = x1 , c0 + c1h = y1 ;
- pentru x = x−1 , c0 − c1h + c 2 2h 2 = y −1 ;
- pentru x = x2 , c0 + c1 2h + c2 2h 2 + c3 6h 3 = y 2 ;
……………………………………………………
Folosind relaţiile anterioare, se obţin coeficienţii c0 , c1 , , c2n , după cum
urmează:
c0 = y 0 ;
y − y 0 y 0
c1 = 1 = ; (8.2.33)
h h
y1 − 2 y0 + y −1 2 y −1 2 n−1 y −n+1 2 n y −n
c2 = = ; …; c2 n−1 = ; c2n = .
2!h 2 2!h 2 (2n − 1)!h 2 n−1 (2n)!h 2 n
După înlocuiri în relaţia (8.2.32), se obţine:
8
y 0 2 y −1
G2dn ( x) = y0 + ( x − x0 ) + ( x − x0 )( x − x1 ) +
1!h 2!h 2
3 y −1 4 y −2
+ ( x − x−1 )( x − x0 )( x − x1 ) + ( x − x−1 )( x − x0 )( x − x1 )( x − x2 ) +
3!h 3 4!h 4
2 n−1 y −n+1
+ ( x − x−n+1 )( x − x−n+ 2 ) ( x − x−1 )( x − x1 )( x − x2 ) ( x − xn−1 ) +
(2n − 1)!h 2 n−1
2 n y −n
+ ( x − x−n+1 )( x − x−n+ 2 ) ( x − x−1 )( x − x1 )( x − x2 ) ( x − xn−1 )( x − xn )
(2n)!h 2 n
(8.2.34)
Dacă se face schimbarea de variabilă t = ( x − x0 ) / h , rezultă:
t t (t − 1) 2 t (t 2 − 1) 3
G2dn ( x0 + th) = y 0 + y 0 + y −1 + y −1 +
1! 2! 3!
t (t 2 − 1)(t − 2) 4 t (t 2 − 1)(t 2 − 2 2 ) 5
+ y −2 + y −2 + +
4! 5!
(8.2.35)
t (t 2 − 1)(t 2 − 2 2 ) (t 2 − (n − 1) 2 ) 2 n−1
+ y −n+1 +
(2n − 1)!
t (t 2 − 1)(t 2 − 2 2 ) (t 2 − (n − 1) 2 )(t − n) 2n
+ y −n
(2n)!
G2sn ( x) = c0 + c1 ( x − x0 ) + c 2 ( x − x −1 )( x − x0 ) + c3 ( x − x −1 )( x − x0 )( x − x1 ) +
+ c 4 ( x − x −2 )( x − x −1 )( x − x0 )( x − x1 ) +
+ c 2 n−1 ( x − x−n+1 )( x − x −n+ 2 ) ( x − x−1 )( x − x0 )( x − x1 ) ( x − xn−1 ) +
+ c 2 n ( x − x −n )( x − x−n+1 ) ( x − x −1 )( x − x0 )( x − x1 ) ( x − x n−1 )
(8.2.36)
Pentru determinarea constantelor c0 , c1 , , c2n , se pun condiţiile de
interpolare:
G2sn ( xi ) = yi , i = − n, n
Astfel:
- pentru x = x0 , c0 = y0 ;
- pentru x = x−1 , c0 − c1h = y −1 ;
9
- pentru x = x1 , c0 + c1h + c 2 2h 2 = y1 ;
- pentru x = x−2 , c0 − c1 2h + c2 2h 2 − c3 6h 3 = y −2 ;
……………………………………………………
Folosind relaţiile anterioare, se obţine:
c0 = y 0 ;
y − y −1 y −1
c1 = 0 = ;
h h
y1 − 2 y0 + y −1 2 y −1 2 n−1 y −n 2 n y −n
c2 = = ; …; c2 n−1 = ; c2n = .
2!h 2 2!h 2 (2n − 1)!h 2 n−1 (2n)!h 2 n
După înlocuiri în relaţia (8.2.36), se obţine:
y −1 2 y −1
G2n ( x) = y 0 +
s
( x − x0 ) + ( x − x −1 )( x − x0 ) +
1!h 2!h 2
3 y −2 4 y −2
+ ( x − x −1 )( x − x0 )( x − x1 ) + ( x − x −2 )( x − x −1 )( x − x0 )( x − x1 ) +
3!h 3 4!h 4
2 n−1 y −n
+ 2 n −1
( x − x −n+1 )( x − x −n+ 2 ) ( x − x −1 )( x − x1 )( x − x 2 ) ( x − x n−1 ) +
(2n − 1)!h
2 n y −n
+ ( x − x −n )( x − x −n+ 2 ) ( x − x −1 )( x − x1 )( x − x 2 ) ( x − x n−1 )
(2n)!h 2 n
(8.2.37)
Dacă se face schimbarea de variabilă t = ( x − x0 ) / h , rezultă:
t t (t + 1) 2 t (t 2 − 1) 3
G2sn ( x0 + th) = y 0 + y −1 + y −1 + y −2 +
1! 2! 3!
t (t 2 − 1)(t + 2) 4 t (t 2 − 1)(t 2 − 2 2 ) 5
+ y −2 + y −3 + +
4! 5!
(8.2.38)
t (t 2 − 1)(t 2 − 2 2 ) (t 2 − (n − 1) 2 ) 2 n−1
+ y −n +
(2n − 1)!
t (t 2 − 1)(t 2 − 2 2 ) (t 2 − (n − 1) 2 )(t + n) 2 n
+ y −n
(2n)!
Ln ( x) = yi , i = 0, n . (8.2.40)
bk ( x) = Ak ( x − x0 )( x − x1 ) ( x − xk −1 )( x − xk +1 ) ( x − xn ) . (8.2.42)
wn ( x) = ( x − x1 ) ( x − xk −1 )( x − xk +1 ) ( x − xn ) +
+ ( x − x0 )( x − x2 ) ( x − xk −1 )( x − xk +1 ) ( x − xn ) + (8.2.46)
+ ( x − x0 )( x − x1 ) ( x − xk −1 )( x − xk +1 ) ( x − xn ) − 1
wn ( x) = ( xk − x0 )( xk − x1 ) ( xk − xk −1 )( xk − xk +1 ) ( xk − xn ) , (8.2.47)
n w ( x)
Ln ( x) = yk ( x − x n)w ( x . (8.2.48)
k =0 k n k)
Regresie liniara - exemplu rezolvat:
În urma testării acuităţii vizuale a unui grup de persoane de diferite vârste, care au permis de
conducere auto, a rezultat ca distanţele medii până la care văd suficient de bine şoferii din anumite
grupuri de vârstă sunt următoarele:
700
600
500
distanta
400
300
200
100
0
0 10 20 30 40 50 60 70 80 90
varsta
Folosind regresia liniară, să se determine distanţa medie până la care văd şoferii cu vârsta medie de
50 ani.
-------------------------
În cazul regresiei liniare, ecuaţia dreptei care trece printre puncte este de forma:
distanţa = a0 + a1∙vârsta,
∑ 𝑥𝑖 = 20 + 40 + 60 + 70 + 80 = 270
2
⇒ (∑ 𝑥𝑖 ) = 72900
∑ 𝑥𝑖 𝑦𝑖 = (20 ⋅ 590) + (40 ⋅ 460) + (60 ⋅ 365) + (70 ⋅ 390) + (80 ⋅ 350) = 107400
a0 = 639,784
a1 = −3,866
Prin urmare, acuitatea vizuala a soferilor cu varsta de 50 ani se află în jurul valorii de:
700
600
500
distanta (y)
400
300
y = -3.8664 x + 639.78
200
R² = 0.8957
100
0
0 20 40 60 80 100
varsta (x)
Toate aceste calcule pot fi făcute folosind diverse programe de calcul. De exemplu, graficul anterior
a fost facut în Excel, care are capacitatea de a identifica ecuatia de regresie şi de a o afişa pe grafic.
163
8.3. APROXIMAREA FUNCŢIILOR
PRIN METODA CELOR MAI MICI PĂTRATE
8.3.1. INTRODUCERE
În cazul aproximării funcţiilor numerice prin polinoame de interpolare,
graficul funcţiei de aproximare trece prin toate punctele impuse. Deoarece valorile
numerice ( xi , yi ) , de cele mai multe ori, reprezintă rezultatele unor experienţe
fizice, aceste valori conţin erori inerente. Erorile inerente din datele iniţiale pot
conduce la obţinerea unor funcţii analitice care nu redau cu fidelitate fenomenul
în cauză.
Fie de exemplu un set de valori obţinute experimental, a cărui reprezentare
grafică (curba punctată) este prezentată în figura 8.3.1. Din figura 8.3.1, se
observă că punctele A şi B nu se supun aceleiaşi reguli ca şi celelalte puncte. De
aceea, funcţia analitică al cărei grafic ar trece prin toate punctele considerate ar
conduce la mari variaţii ale valorilor derivatei de ordinul întâi, valori calculate în
nodurile respective. Deoarece astfel de variaţii nu sunt caracteristice fenomenelor
tehnice, se procedează la obţinerea unei funcţii analitice al cărei grafic nu trece
obligatoriu prin toate punctele considerate (curba continuă din figura 8.3.1), dar
care urmăreşte redarea cât mai fidelă a fenomenului.
3 3
2 2
1 1
0 0
-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3
-1 -1
-2 -2
-3 -3
Fig. 8.3.2 Fig. 8.3.3
3 3
2 2
1 1
0 0
-3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3
-1 -1
-2 -2
-3 -3
1.2
1
5
0.8
4
0.6 3
0.4 2
0.2 1
0 0
0 1 2 3 0 2 4 6 8
-1
Fig. 8.3.6 Fig. 8.3.7
În figurile 8.3.2, …, 8.3.7, sunt prezentate câteva dintre funcţiile întâlnite
165
frecvent în toate domeniile de activitate, şi anume: funcţia putere, funcţia radical,
funcţia exponenţială, funcţia geometrică, funcţia hiperbolică şi funcţia
trigonometrică.
Coeficienţii funcţiei analitice, y , se determină din condiţia ca suma pătratelor
abaterilor ( y − y ) să fie minimă, adică :
( )2 .
n
S = yi − y i (8.3.1)
i =1
S n
= 2( yi − a 0 − a1 xi )(−1) = 0;
a 0 i =1
(8.3.4)
S n
= 2( yi − a 0 − a1 xi )(− xi ) = 0.
a1 i =1
sau
166
n n
n xi a0 yi
i =1 = ni =1 (8.3.5’)
n n
xi xi2 a1 xi y i
i =1 i =1 i =1
i =1
unde:
n
yi
i =1
yM = .
n
Coeficientul r poate lua valori între 0 şi 1 şi se poate folosi inclusiv pentru
regresia neliniară.
Următoarea ecuaţie alternativă este folosită în cazul regresiei liniare, pentru
calculul coeficientului de corelaţie:
∑𝑛
1 (𝑥𝑖 −𝑥𝑀 )(𝑦𝑖 −𝑦𝑀 )
𝑟= ,
√ ∑𝑛 2 𝑛
1 (𝑥𝑖 −𝑥𝑀 ) ∑1 (𝑦𝑖 −𝑦𝑀 )
2
Exemplu de calcul
Fie datele din tabelul 8.3.2, obţinute experimental. Reprezentarea grafică a
funcţiei este dată în figura 8.3.8.
Tabelul 8.3.2
x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
y 1.1 1.4 1.2 1.6 1.4 1.8 1.5 1.9 1.7 2.1
2.5
2
y
1.5
1
0 0.2 0.4 0.6 0.8 1
x
Fig.8.3.8. Reprezentarea grafică a datelor obţinute experimental
168
Se cere să se determine expresia analitică a unei funcţii pentru aproximarea
datele experimentale, folosind metoda celor mai mici pătrate
Rezolvare
Din analiza valorilor prezentate în tabelul 8.3.2 şi a figurii 8.3.8, se constată
că datele obţinute experimental pot fi aproximate cu o dreaptă,
Programul principal de calcul este prezentat în tabelul 8.3.3.
Tabelul 8.3.3
% Program aproximarea_functiilor_metoda_cmmp_lin;
clear;
fismcmplin = fopen('fismcmplin.txt','w');
n = 10;
x = [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
y = [1.1 1.4 1.2 1.6 1.4 1.8 1.5 1.9 1.7 2.1];
[a0,a1,kod] = mcmplin(n,x,y);
if kod > 0
fprintf('%s%i\n',' kod = ',kod);
return;
end
fprintf('%s%10.5f%s%10.5f\n',' a0 =',a0,' a1 =',a1);
fprintf(fismcmplin,'%s%10.5f%s%10.5f\r\n',' a0 =',a0,' a1 =',a1);
fprintf('\n');
fprintf(fismcmplin,'\r\n');
fprintf('%s\n',' poz x y y_lin');
fprintf(' =============================');
fprintf('\n');
fprintf(fismcmplin,'%s\r\n',' poz x y y_lin');
fprintf(fismcmplin,'%s\r\n',' =============================');
for i = 1 : n
y1(i) = a0+a1*x(i);
fprintf('%4i %8.3f %8.3f %8.3f\n',i,x(i),y(i),y1(i));
fprintf(fismcmplin,'%4i %8.3f %8.3f %8.3f\r\n',i,x(i),y(i),y1(i));
end
ym = 0; syypol = 0; syym = 0;
for i = 1 : n
ym = ym+y(i);
end
ym = ym/n;
for i = 1 : n
syypol = syypol+(y(i)-y1(i))*(y(i)-y1(i));
syym = syym+(y(i)-ym)*(y(i)-ym);
end
r = sqrt(1-syypol/syym);
fprintf('\n');
fprintf(fismcmplin,'\r\n');
fprintf('%s%8.3f\n',' r =',r);
fprintf(fismcmplin,'%s%8.3f\r\n',' r =',r);
figure(1)
plot(x,y,x,y,'k*','LineWidth',1.2);
xlabel('x','FontSize',12);
ylabel('y','fontsize',12);
figure(2)
plot(x,y,x,y,'k*',x,y1,x,y1,'k+','LineWidth',1.2);
169
xlabel('x','FontSize',12);
ylabel('y, y1','fontsize',12);
fclose(fismcmplin);
%____________________________________________________________
Tabelul 8.3.4
poz x y y_lin
===================
1 0.100 1.100 1.169
2 0.200 1.400 1.258
3 0.300 1.200 1.347
4 0.400 1.600 1.436
5 0.500 1.400 1.525
6 0.600 1.800 1.615
7 0.700 1.500 1.704
8 0.800 1.900 1.793
9 0.900 1.700 1.882
10 1.000 2.100 1.971
În figura 8.3.9 se prezintă cele două curbe: cea obţinută experimental (curba
y) şi cea de aproximare (curba y1 ).
2.5
2 ooo y
y, y1
+++ y1
1.5
1
0 0.2 0.4 0.6 0.8 1
x
( )
n 2
S = d i2 = y i − a m xim − a m −1 xim −1 − ... − a1 xi − a 0 , (8.3.10)
i =1
să fie minimă.
Pentru aceasta, trebuie ca derivatele parţiale ale lui S, în raport cu
necunoscutele a 0 , a1 ,..., a m , să fie egale cu zero, adică:
n n 2 n m n
0 i 1 i 2
na + x a + x a + ... + i m yi ;
x a =
i = 1 i = 1 i =1 i =1
n n n n n
x i a 0 + x i2 a1 + xi3 a 2 + ... + x im +1 a m = x i y i ;
i =1 i =1 i =1 i =1 i =1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
n
x m a + x m +1 a + x m + 2 a + ... + x 2 m a = x m y .
n n n n
i =1
i 0
i 1 i 2
i =1 i =1
i m i i
i =1 i =1
(8.3.11)
Relaţiile (8.3.11) formează un sistem de m + 1 ecuaţii liniare cu tot atâtea
necunoscute, sistem ce se rezolvă printr-o metodă numerică adecvată (de
exemplu, prin metoda matricei inverse).
Exemplu de calcul
Fie datele din tabelul 8.3.6, obţinute experimental. Reprezentarea grafică a lui
y în funcţiei de x este dată în figura 8.3.10.
Tabelul 8.3.6
x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
y 1.10 1.40 1.30 1.50 1.60 1.70 1.40 1.50 1.35 1.32
171
1.8
1.6
1.4
y
1.2
1
0 0.2 0.4 0.6 0.8 1
x
Fig.8.3.10. Reprezentarea grafică a datelor obţinute experimental
Rezolvare
Din analiza datelor experimentale şi a figurii 8.3.10, se constată că funcţia
tabelată se poate aproxima cu un polinom de gradul 5, de forma:
y = a0 + a1 x + a 2 x 2 + a3 x 3 + a 4 x 4 + a5 x 5 .
for j = 1 : m+1
fprintf('%s%i%s%7.3f\n',' a(',j-1,') =',a(j));
fprintf(fismcmppolin,'%s%i%s%7.3f\r\n',' a(',j-1,') =',a(j));
end
fprintf('\n');
fprintf(fismcmppolin,'\r\n');
fprintf(' poz x y y_polin');
fprintf('\n');
fprintf(' =============================');
fprintf('\n');
fprintf(fismcmppolin,' poz x y y_polin');
fprintf(fismcmppolin,'\r\n');
fprintf(fismcmppolin,' =============================');
fprintf(fismcmppolin,'\r\n');
for i = 1 : 10
x1 = (i-1)*0.1+0.1;
pj = 0;
for j = 1 : m
pj = pj+a(j+1)*x1^j;
end
p(i) = a(1)+pj;
end
for i = 1 : n
fprintf('%4i %8.3f %8.4f %8.4f\n',i,x(i),y(i),p(i));
fprintf(fismcmppolin,'%4i %8.4f %8.3f %8.4f\r\n',i,x(i),y(i),p(i));
end
ym = 0; syypol = 0; syym = 0;
for i = 1 : n
ym = ym+y(i);
end
ym = ym/n;
for i = 1 : n
syypol = syypol+(y(i)-p(i))*(y(i)-p(i));
syym = syym+(y(i)-ym)*(y(i)-ym);
end
r = sqrt(1-syypol/syym);
fprintf('\n');
fprintf(fismcmppolin,'\r\n');
fprintf('%s\n',' Coeficientul de corelatie Peason:');
fprintf(fismcmppolin,'%s\r\n',' Coeficientul de corelatie Peason:');
fprintf('%s%8.3f\n',' r =',r);
fprintf(fismcmppolin,'%s%8.3f\r\n',' r =',r);
figure(1)
plot(x,y,x,y,'k*','LineWidth',1.2);
xlabel('x','FontSize',12);
ylabel('y','fontsize',12);
figure(2)
plot(x,y,x,y,'ko',x,p,x,p,'k+','LineWidth',1.2)
xlabel('x','FontSize',12)
ylabel('y, p','fontsize',12 )
text(0.4,1.35,'ooo y','FontSize',10)
text(0.4,1.25,'+++ p','FontSize',10)
fclose(fismcmppolin);
%______________________________________________________________________
173
Valorile coeficienţilor funcţiei polinomiale de gradul 5 sunt: a0 = 0.728 ,
a1 = 5.729 , a 2 = −22.262 , a3 = 50.538 , a 4 = −55.454 , a5 = 22.051.
Coeficientul de corelaţie Pearson are valoarea: r = 0.872. Dacă se consideră
un polinom de gradul 4, se obţine coeficientul de corelaţie r = 0.864. Dacă, în
schimb, se măreşte gradul polinomului, curba corespunzătoare funcţiei analitice
se apropie din ce în ce mai mult de curba obţinută experimental. Aceasta nu
înseamnă că aproximarea este mai bună, deoarece pe un interval destul de mic
apar variaţii foarte mari ale valorilor derivatei de ordinul întâi.
În tabelul 8.3.8 se prezintă valorile funcţiei numerice date şi valorile functiei
de aproximare, în funcţie de abscisa sistemului de coordonate.
Tabelul 8.3.8
poz x y y_polin
====================
1 0.1000 1.100 1.1235
2 0.2000 1.400 1.3059
3 0.3000 1.300 1.4120
4 0.4000 1.500 1.4982
5 0.5000 1.600 1.5674
6 0.6000 1.700 1.5950
7 0.7000 1.400 1.5560
8 0.8000 1.500 1.4506
9 0.9000 1.350 1.3315
10 1.0000 1.320 1.3299
În figura 8.3.11, se prezintă cele două curbe: cea obţinută experimental (curba
y) şi cea de aproximare (curba p ).
1.8
1.6
y, p
1.4
ooo y
+++ p
1.2
1
0 0.2 0.4 0.6 0.8 1
x
i i 0 i 1 y
=1 i =1 i =1 i
de unde rezultă:
n 1 n 2 n n x n xi n n 1
y xi − xi yi n − xi
i =1 i i =1 i =1 i =1 i i =1 yi i =1 i =1 yi
a0 = 2
; a1 = 2
. (8.3.16)
n n n n
n xi2 − xi n xi2 − xi
i =1 i =1 i =1 i =1
Exemplu de calcul
Fie datele din tabelul 8.3.10, obţinute experimental. Reprezentarea grafică a
funcţiei y în raport cu x este dată în figura 8.3.12.
Tabelul 8.3.10
x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
y 1.00 0.60 0.40 0.35 0.25 0.21 0.2 0.15 0.13 0.13
175
Se cere să se determine expresia analitică a unei funcţii pentru aproximarea
datelor experimentale, folosind metoda celor mai mici pătrate
Rezolvare
Din analiza datelor obţinute experimental, precum şi a figurii 8.3.12 se
constată că acestea pot fi aproximate cu o funcţie hiperbolică, şi anume
1
y= . Coeficienţii funcţiei hiperbolice se determină cu ajutorul funcţiei
a0 + a1 x
mcmphip.m, prezentată în tabelul 8.3.9.
1
0.8
0.6
y
0.4
0.2
0
0 0.2 0.4 0.6 0.8 1
x
Fig.8.3.12. Reprezentarea grafică a datelor obţinute experimental
Programul principal de calcul se prezintă în tabelul 8.3.11.
Tabelul 8.3.11
% Program aproximarea_functiilor_metoda_cmmp_hiperbolica;
clear;
fismcmphip = fopen('fismcmphip.txt','w');
n = 10;
x = [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
y = [1 0.6 0.4 0.35 0.25 0.21 0.2 0.15 0.13 0.13];
[a0,a1,kod] = mcmphip(n,x,y);
if kod > 0
fprintf('%s%i\n',' kod = ',kod);
return;
end
fprintf('\n');
fprintf(fismcmphip,'\r\n');
fprintf('%s\n',' Coeficientii functiei hiperbolice:');
fprintf(fismcmphip,'%s\r\n',' Coeficientii functiei hiperbolice:');
fprintf('%s%10.5f%s%10.5f%s\n',' a0 =',a0,'; a1 =',a1,'.');
fprintf(fismcmphip,'%s%10.5f%s%10.5f%s\r\n',' a0 =',a0,'; a1
=',a1,'.');
fprintf('\n');
fprintf(fismcmphip,'\r\n');
fprintf('%s\n',' poz x y y_hip');
fprintf('%s\n',' =============================');
fprintf(fismcmphip,'%s\r\n',' poz x y y_hip');
fprintf(fismcmphip,'%s\r\n',' =============================');
for i = 1 : n
y1(i) = 1/(a0+a1*x(i));
176
fprintf('%4i %8.3f %8.3f %8.3f\n',i,x(i),y(i),y1(i));
fprintf(fismcmphip,'%4i %8.3f %8.3f %8.3f\r\n',i,x(i),y(i),y1(i));
end
ym = 0; syyhip = 0; syym = 0;
for i = 1 : n
ym = ym+y(i);
end
ym = ym/n;
for i = 1 : n
syyhip = syyhip+(y(i)-y1(i))*(y(i)-y1(i));
syym = syym+(y(i)-ym)*(y(i)-ym);
end
r = sqrt(1-syyhip/syym);
fprintf('\n');
fprintf(fismcmphip,'\r\n');
fprintf('%s\n',' Coeficientul de corelatie Peason:');
fprintf(fismcmphip,'%s\r\n',' Coeficientul de corelatie Peason:');
fprintf('%s%8.3f\n',' r =',r);
fprintf(fismcmphip,'%s%8.3f\r\n',' r =',r);
figure(1)
plot(x,y,x,y,'k*','LineWidth',1.2);
xlabel('x','FontSize',12);
ylabel('y','fontsize',12);
figure(2)
plot(x,y,x,y,'ko',x,y1,x,y1,'k+','LineWidth',1.2);
xlabel('x','FontSize',12);
ylabel('y, y1','fontsize',12);
text(0.5,0.8,'ooo y','FontSize',10)
text(0.5,0.6,'+++ y1','FontSize',10)
fclose(fismcmphip);
%______________________________________________________________________
În figura 8.3.13 se prezintă cele două curbe: cea obţinută experimental (curba
y) şi cea de aproximare (curba y1 ).
177
1.4
1.2
0.8 ooo y
y, y1
0.6 +++ y1
0.4
0.2
0
0 0.2 0.4 0.6 0.8 1
x
să fie minimă.
Dacă se fac notaţiile:
Z = ln y , A = ln a şi B = ln b , (8.3.20)
a = e A ; b = eB . (8.3.24)
Exemplu de calcul
15
10
y
0
0 0.2 0.4 0.6 0.8 1
x
Fig.8.3.14. Reprezentarea grafică a datelor obţinute experimental
Rezolvare
Din analiza datelor obţinute experimental, precum şi a figurii 8.3.14, se
constată că acestea pot fi aproximate cu o funcţie exponenţială, de forma:
y = a b x . Determinarea constantelor a şi b se face cu ajutorul funcţiei
mcmpexp.m, prezentată în tabelul 8.3.13.
179
Programul principal de calcul se prezintă în tabelul 8.3.15.
Tabelul 8.3.15
% Program aproximarea_functiilor_metoda_cmmp_exponentiala;
clear;
fismcmpexp = fopen('fismcmpexp.txt','w');
n = 10;
y1 = zeros(n);
x = [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
y = [1.1 1.15 1.23 1.5 2.5 3.0 4.0 7.0 9.7 15.1];
[a,b,kod] = mcmpexp(n,x,y);
if kod > 0
fprintf('%s%i\n',' kod = ',kod);
return;
end
fprintf('\n');
fprintf(fismcmpexp,'\r\n');
fprintf('%s\n',' Coeficientii functiei exponentiala:');
fprintf(fismcmpexp,'%s\r\n',' Coeficientii functiei exponentiala:');
fprintf('%s%10.5f%s%10.5f%s\n',' a =',a,'; b =',b,'.');
fprintf(fismcmpexp,'%s%10.5f%s%10.5f%s\r\n',' a =',a,'; b =',b,'.');
fprintf('\n');
fprintf(fismcmpexp,'\r\n');
fprintf('%s\n',' poz x y y_exp');
fprintf('%s\n',' =============================');
fprintf(fismcmpexp,'%s\r\n',' poz x y y_exp');
fprintf(fismcmpexp,'%s\r\n',' =============================');
for i = 1 : n
y1(i) = a*b^x(i);
fprintf('%4i %8.3f %8.4f %8.4f\n',i,x(i),y(i),y1(i));
fprintf(fismcmpexp,'%4i %8.3f %8.4f %8.4f\r\n',i,x(i),y(i),y1(i));
end
ym = 0; syyexp = 0; syym = 0;
for i = 1 : n
ym = ym+y(i);
end
ym = ym/n;
for i = 1 : n
syyexp = syyexp+(y(i)-y1(i))*(y(i)-y1(i));
syym = syym+(y(i)-ym)*(y(i)-ym);
end
r = sqrt(1-syyexp/syym);
fprintf('\n');
fprintf(fismcmpexp,'\r\n');
fprintf('%s\n',' Coeficientul de corelatie Peason:');
fprintf(fismcmpexp,'%s\r\n',' Coeficientul de corelatie Peason:');
fprintf('%s%8.3f\n',' r =',r);
fprintf(fismcmpexp,'%s%8.3f\r\n',' r =',r);
figure(1)
plot(x,y,x,y,'k*','LineWidth',1.2);
xlabel('x','FontSize',12);
ylabel('y','fontsize',12);
figure(2)
plot(x,y,x,y,'ko',x,y1,x,y1,'k+','LineWidth',1.2);
xlabel('x','FontSize',12);
180
ylabel('y, y1','fontsize',12);
text(0.4,8,'ooo y','FontSize',10)
text(0.4,6,'+++ y1','FontSize',10)
fclose(fismcmpexp);
%_____________________________________________________________________
În figura 8.3.15 se prezintă cele două curbe: cea obţinută experimental (curba
y) şi cea de aproximare (curba y1 ).
20
15
y, y1
10
ooo y
+++ y1
5
0
0 0.2 0.4 0.6 0.8 1
x
Fig. 8.3.15. Reprezentarea grafică a datelor experimentale (curba y)
şi a celor de aproximare (curba y1)
181
8.3.6. Regresia geometrică
Se presupune că funcţia dată numeric se aseamănă foarte bine cu o funcţie de
tip geometric,
y = a xb . (8.3.25)
Se fac notaţiile:
Z = ln y , A = ln a , B = b şi t = ln x , (8.3.27)
i =1 i i
i =1 i =1
i i
sau
n n
nA +
ln x
i B = ln yi ;
i =1 i =1
n 2 (8.3.31)
ln x A + ln x B = ln x ln y ,
n n
i
i =1
i
i i
i =1 i =1
i =1 i =1 i =1 i =1
A= 2
;
n n
n (ln xi )2 − ln xi
i =1 i =1 (8.3.32)
n n n
n ln xi ln y i − ln xi ln y i
i =1 i =1 i =1
B= 2
.
n n
n (ln xi )2 − ln xi
i =1 i =1
Constantele a şi b, ale funcţiei geometrice (8.3.25), vor fi:
a = eA, b = B. (8.3.33)
Exemplu de calcul
Fie datele din tabelul 8.3.18, obţinute experimental. Reprezentarea grafică a
valorilor funcţiei tabelate y, în funcţiei de variabila independentă x, este dată în
figura 8.3.16.
Tabelul 8.3.18
x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
y 0.03 0.50 1.00 2.00 7.00 10.00 19.00 25.00 43.00 54.00
60
40
y
20
0
0 2 4 6 8 10
x
Rezolvare
Din analiza datelor obţinute experimental, precum şi a figurii 8.3.16, se
constată că acestea pot fi aproximate cu o funcţie geometrică, de forma: y = a x b
183
. Determinarea constantelor a şi b se face cu ajutorul funcţiei mcmpgeom.m,
prezentată în tabelul 8.3.17.
[a,b,kod] = mcmpgeom(n,x,y);
if kod > 0
error(' kod = 1');
return;
end
fprintf('\n');
fprintf(fismcmpgeom,'\r\n');
fprintf('%s\n',' Coeficientii functiei geometrice:');
fprintf(fismcmpgeom,'%s\r\n',' Coeficientii functiei geometrice:');
fprintf('%s%10.5f%s%10.5f%s\n',' a =',a,'; b =',b,'.');
fprintf(fismcmpgeom,'%s%10.5f%s%10.5f%s\r\n',' a =',a,'; b =',b,'.');
fprintf('\n');
fprintf(fismcmpgeom,'\r\n');
fprintf('%s\n',' poz x y y_geom');
fprintf('%s\n',' =============================');
fprintf(fismcmpgeom,'%s\r\n',' poz x y y_geom');
fprintf(fismcmpgeom,'%s\r\n',' =============================');
for i = 1 : n
y1(i) = a*x(i)^b;
fprintf('%4i %8.3f %8.4f %8.4f\n',i,x(i),y(i),y1(i));
fprintf(fismcmpgeom,'%4i %8.3f %8.4f %8.4f\r\n',i,x(i),y(i),y1(i));
end
ym = 0; syygeom = 0; syym = 0;
for i = 1 : n
ym = ym+y(i);
end
ym = ym/n;
for i = 1 : n
syygeom = syygeom+(y(i)-y1(i))*(y(i)-y1(i));
syym = syym+(y(i)-ym)*(y(i)-ym);
end
r = sqrt(1-syygeom/syym);
fprintf('\n');
fprintf(fismcmpgeom,'\r\n');
fprintf('%s\n',' Coeficientul de corelatie Peason:');
fprintf(fismcmpgeom,'%s\r\n',' Coeficientul de corelatie Peason:');
fprintf('%s%8.3f\n',' r =',r);
fprintf(fismcmpgeom,'%s%8.3f\r\n',' r =',r);
figure(1)
plot(x,y,x,y,'k*','LineWidth',1.2);
xlabel('x','FontSize',12);
ylabel('y','fontsize',12);
184
figure(2)
plot(x,y,x,y,'ko',x,y1,x,y1,'k+','LineWidth',1.2);
xlabel('x','FontSize',12);
ylabel('y, y1','fontsize',12);
text(3,40,'ooo y','FontSize',10)
text(3,30,'+++ y1','FontSize',10)
fclose(fismcmpgeom);
%_______________________________________________________________
În figura 8.3.17 se prezintă cele două curbe: cea obţinută experimental (curba
y) şi cea de aproximare (curba y1 ).
60
40 ooo y
y, y1
+++ y1
20
0
0 2 4 6 8 10
x
n n n
n y i cos( xi ) − cos( xi ) y i
i =1 i =1 i =1
a1 = 2
. (8.3.38)
n n
n cos 2 ( xi ) − cos( xi )
i =1 i =1
Exemplu de calcul
Fie datele din tabelul 8.3.22, obţinute pe cale experimentală. Reprezentarea
grafică a valorilor funcţiei tabelate y, în funcţiei de variabila independentă x, este
dată în figura 8.3.18.
Tabelul 8.3.22
x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
y 2.00 1.92 1.75 1.60 1.40 1.10 0.75 0.30 -0.10 -0.30
Se cere determinarea unei funcţii analitice care să aproximeze cât mai bine
datele experimentale, în sensul celor mai mici pătrate.
186
2.5
2
1.5
1
y
0.5
0
-0.5
0 0.2 0.4 0.6 0.8 1
x
Fig.8.3.18. Reprezentarea grafică a datelor obţinute experimental
Rezolvare
Din analiza datelor obţinute experimental, precum şi a figurii 8.3.18 se
constată că acestea pot fi aproximate cu o funcţie trigonometrică de forma:
y = a0 + a1 cos( x) , unde = 2 [rad/s]. Determinarea constantelor a 0 şi a1 se
face cu ajutorul functiei mcmptrig.m, prezentată în tabelul 8.3.21.
Programul principal de calcul se prezintă în tabelul 8.3.23.
Tabelul 8.3.23
% Program aproximarea_functiilor_metoda_cmmp_trigonometrica;
clear;
fismcmptrig = fopen('fismcmptrig.txt','w');
om = 2;
n = 10;
y1 = zeros(n);
x = [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
y = [2.0 1.95 1.85 1.7 1.3 1.1 0.5 0.3 -0.1 -0.3];
[a0,a1,kod] = mcmptrig(n,x,y,om);
if kod > 0
fprintf('%s%i\n',' kod = ',kod);
return;
end
fprintf(fismcmptrig,'\r\n');
fprintf('%s\n',' Coeficientii functiei trigonometrice:');
fprintf(fismcmptrig,'%s\r\n',' Coeficientii functiei
trigonometrice:');
fprintf('%s%10.5f%s%10.5f%s\n',' a0 =',a0,'; a1 =',a1,'.');
fprintf(fismcmptrig,'%s%10.5f%s%10.5f%s\r\n',' a0 =',a0,'; a1
=',a1,'.');
fprintf('\n');
fprintf(fismcmptrig,'\r\n');
fprintf('%s\n',' poz x y y_trig');
fprintf('%s\n',' =============================');
187
fprintf(fismcmptrig,'%s\r\n',' poz x y y_trig');
fprintf(fismcmptrig,'%s\r\n',' =============================');
for i = 1 : n
y1(i) = a0+a1*cos(om*x(i));
fprintf('%4i %8.3f %8.4f %8.4f\n',i,x(i),y(i),y1(i));
fprintf(fismcmptrig,'%4i %8.3f %8.4f %8.4f\r\n',i,x(i),y(i),y1(i));
end
ym = 0; syytrig = 0; syym = 0;
for i = 1 : n
ym = ym+y(i);
end
ym = ym/n;
for i = 1 : n
syytrig = syytrig+(y(i)-y1(i))*(y(i)-y1(i));
syym = syym+(y(i)-ym)*(y(i)-ym);
end
r = sqrt(1-syytrig/syym);
fprintf('\n');
fprintf(fismcmptrig,'\r\n');
fprintf('%s\n',' Coeficientul de corelatie Peason:');
fprintf(fismcmptrig,'%s\r\n',' Coeficientul de corelatie Peason:');
fprintf('%s%8.3f\n',' r =',r);
fprintf(fismcmptrig,'%s%8.3f\r\n',' r =',r);
figure(1)
plot(x,y,x,y,'k*','LineWidth',1.2);
xlabel('x','FontSize',12);
ylabel('y','fontsize',12);
figure(2)
plot(x,y,x,y,'ko',x,y1,x,y1,'k+','LineWidth',1.2);
xlabel('x','FontSize',12);
ylabel('y, y1','fontsize',12);
text(0.2,1.3,'ooo y','FontSize',10)
text(0.2,0.7,'+++ y1','FontSize',10)
fclose(fismcmptrig);
%______________________________________________________________________
Tabelul 8.3.24
poz x y y_trig
======================
1 0.100 2.0000 2.0813
2 0.200 1.9500 1.9775
3 0.300 1.8500 1.8091
4 0.400 1.7000 1.5829
5 0.500 1.3000 1.3078
6 0.600 1.1000 0.9949
7 0.700 0.5000 0.6565
8 0.800 0.3000 0.3062
9 0.900 -0.1000 -0.0420
10 1.000 -0.3000 -0.3743
188
În figura 8.3.19 se prezintă cele două curbe: cea obţinută experimental (curba
y) şi cea de aproximare (curba y1 ).
2.5
1.5
ooo y
y, y1
1
+++ y1
0.5
-0.5
0 0.2 0.4 0.6 0.8 1
x
Fig. 8.3.19. Reprezentarea grafică a datelor experimentale (curba y)
şi a celor de aproximare (curba y1)
Regresia liniară folosind pseudoinversa
Se formează următoarele matrici folosind valorile experimentale xi şi yi, precum şi coeficienţii funcţiei
de regresie (a0 şi a1):
1 𝑥1 𝑦1
1 𝑥2 𝑦2 𝑎0
𝐴=[ ] 𝒃=[⋮] 𝒙 = [𝑎 ]
⋮ ⋮ 1
1 𝑥𝑛 𝑦𝑛
Se poate scrie următoarea relaţie matematică, reprezentând un sistem liniar în care necunoscutele sunt
a0 şi a1:
𝐴∙𝒙 =𝒃
Întrucât matricea A este dreptunghiulară (are n rânduri şi 2 coloane), sistemul are mai multe ecuaţii
decât necunoscute. Aceste sisteme sunt supradeterminate şi în general nu au soluţie. De aceea, se va
transforma sistemul existent într-un sistem cât mai „apropiat” de cel original, dar care are soluţie.
Aceasta soluţie va fi notată cu 𝑥̂. În acest scop, se înmulţeşte fiecare termen la stânga cu AT:
=> 𝐴𝑇 𝐴 ∙ 𝒙
̂ = 𝐴𝑇 𝒃
Dacă se înmulţeşte o matrice dreptunghiulară cu propria ei inversă se obţine o matrice pătratică
simetrică. În cazul nostru, ATA va fi o matrice pătratică simetrică, cu două rânduri şi două coloane.
=> (𝐴𝑇 𝐴)−1 (𝐴𝑇 𝐴) ∙ 𝒙
̂ = (𝐴𝑇 𝐴)−1 𝐴𝑇 𝒃
=> ̂ = (𝐴𝑇 𝐴)−1 𝐴𝑇 𝒃
soluţia sistemului este: 𝒙 (1)
unde (𝐴𝑇 𝐴)−1 𝐴𝑇 se numeşte pseudo-inversă.
20 590
40 460
60 365
70 390
80 350
-1-
700
600
500
distanta
400
Reprezentate grafic, valorile 300
respective arată astfel: 200
100
0
0 20 40 60 80 100
varsta
Rezolvare:
Se formează un sistem de ecuaţii liniare în care se utilizează valorile experimentale xi şi yi:
𝑎0 + 20 ∙ 𝑎1 = 590
𝑎0 + 40 ∙ 𝑎1 = 460
𝑎0 + 60 ∙ 𝑎1 = 365
𝑎0 + 70 ∙ 𝑎1 = 390
{𝑎0 + 80 ∙ 𝑎1 = 350
Acest sistem nu are soluţie (sistemul impune ca aceeaşi dreaptă să verifice valorile experimentale;
dar, punctele de coordonate (xi, yi) nu sunt coliniare!).
1 20 590
1 40 460 𝑎0
𝐴= 1 60 𝒃 = 365 𝒙 = [𝑎 ]
1
1 70 390
[1 80] [350]
1 20 590
1 40 𝑎0 460
1 60 [𝑎 ] = 365
1 70 1 390
[1 80] [350]
În relaţia (1):
=> ̂ = (𝐴𝑇 𝐴)−1 𝐴𝑇 𝒃
soluţia sistemului este: 𝒙 (1)
1 20
1 1 1 1 1 1 40 5 270
𝐴𝑇 𝐴 = [ ] 1 60 = ⋯ = [ ]
20 40 60 70 80 1 70 270 16900
[1 80]
-2-
590
1 1 1 1 1 460 2155
𝐴𝑇 𝑏 = [ ] 365 = [ ]
20 40 60 70 80 390 107400
[350]
1 7421500 639.784
[ ]=[ ]
11600 −44850 −3.866
-3-
Regresia polinomială (în acest exemplu: polinom de gradul 2) folosind
metoda matricilor de proiecţie
În cazul exemplului anterior, de această dată se cere ca, în locul unei drepte de regresie, să se identifice
un polinom de regresie de ordinul 2 care să aproximeze acuitatea vizuală a şoferilor în raport cu vârsta
acestora. Forma generală a polinomului de ordinul 2 este:
𝑦̅ = 𝑎2 𝑥 2 + 𝑎1 𝑥 + 𝑎0
Utilizând această relaţie, se formează următorul sistem de ecuaţii în care se utilizează datele
experimentale xi şi yi (vârstele xi şi distanţele yi) din tabelul de valori de mai sus:
Vârstă medie (xi) Distanţa în metri (yi)
20 590
40 460
60 365
70 390
80 350
𝑎0 + 20 ∙ 𝑎1 + 400 ∙ 𝑎2 = 590
𝑎0 + 40 ∙ 𝑎1 + 1600 ∙ 𝑎2 = 460
𝑎0 + 60 ∙ 𝑎1 + 3600 ∙ 𝑎2 = 365
𝑎0 + 70 ∙ 𝑎1 + 4900 ∙ 𝑎2 = 390
{𝑎0 + 80 ∙ 𝑎1 + 6400 ∙ 𝑎2 = 350
Acest sistem nu are soluţie (sistemul impune ca acelaşi polinom să verifice toate valorile
experimentale; dar, privit din perspectiva reprezentării grafice, punctele de coordonate (xi, yi) nu se
află toate în acelaşi timp pe curba generată de un singur polinom de gradul 2).
1 20 400 590
1 40 1600 460 𝑎0
𝐴= 1 60 3600 𝒃 = 365 𝒙 = [𝑎1 ]
1 70 4900 390 𝑎2
[1 80 6400] [350]
1 20 400 590
1 40 1600 0 𝑎 460
1 60 3600 [𝑎1 ] = 365
1 70 4900 𝑎2 390
[1 80 6400 ] [ 350]
̂ = (𝐴𝑇 𝐴)−1 𝐴𝑇 𝒃
Conform relaţiei (1), soluţia cea mai convenabilă a sistemului anterior este: 𝒙
1 20 400
1 1 1 1 1 1 40 1600 5 270 16900
𝐴𝑇 𝐴 = [ 20 40 60 70 80 ] 1 60 3600 = ⋯ = [ 270 16900 1143000 ]
400 1600 3600 4900 6400 1 70 4900 16900 1143000 80650000
[1 80 6400]
-4-
590
1 1 1 1 1 460 2155
𝐴𝑇 𝑏 = [ 20 40 60 70 80 ] 365 = [ 107400 ]
400 1600 3600 4900 6400 390 6437000
[350]
𝑎0 −1
5 270 16900 2155 774.382
[𝑎1 ] = [ 270 16900 1143000 ] [ 107400 ] = ⋯ = [−10.608]
𝑎2 16900 1143000 80650000 6437000 0.0679
Folosind această relaţie, se poate estima de exemplu că un şofer cu vârsta de 50 de ani are o acuitate
vizuală de aproximativ 414 m.
Spre comparaţie, figura următoare prezintă atât dreapta de regresie cât şi polinomul de regresie de
ordinul 2:
650
600
y = -3.8664x + 639.78
550 R² = 0.8957
500
Distanta
450
400
350
y = 0.0679x2 - 10.608x + 774.38
R² = 0.9727
300
10 20 30 40 50 60 70 80 90
Varsta
-5-
1
9.3.1. INTRODUCERE
sau dacă această primitivă există, dar are o expresie analitică foarte complicată,
folosirea în calculele ulterioare este foarte greoaie. De aceea, pentru calculul
integralei (9.3.1) se stabilesc formule aproximative simple şi uşor de folosit pe
orice calculator.
Formula:
b n
a f ( x)dx Ai f ( xi ) R , (9.3.2)
i 0
în care Ai sunt constante independente de f, iar x0 , x1 , , xn sunt nodurile
intervalului [a, b] , poartă numele de formulă de cuadratură numerică.
În continuare, se deduc expresiile câtorva formule de integrare numerică şi
se întocmesc procedurile de calcul, scrise în limbaj Turbo-Pascal.
ba
1 1 1 1 A0
b2 a2
x0 x1 x2 xn A1 2
b a3
3
x02 x12 x22 2
xn A2 (9.3.4)
3
b a n1
n 1
x0n x1n x2n n
xn An
n 1
Deoarece nodurile intervalului [a, b] se consideră distincte, determinantul
sistemului (9.3.4) este diferit de zero (determinant de tip Vandermonde), iar
soluţia sistemului este unică. Se poate arăta că restul formulei de cuadratură este
nul pentru orice polinom de grad mai mic sau egal cu n, nu numai pentru
polinoamele particulare considerate [36].
În cazul în care funcţia f (x) este dată tabelar, adică se cunosc valorile
f ( xi ), i 1, n în nodurile reţelei, relaţia (9.3.9) devine:
h
I ( y1 2 y 2 2 y3 2 y n1 y n ) . (9.3.10)
2
Dacă se cunoaşte expresia analitică a funcţiei f (x) şi se cere calculul
integralei I , pe intervalul [a, b] , atuncif relaţia (9.3.9)
f (xi h) capătă
f (xi 2hforma:
)
f (xi h) (xi )
h f (xi 2h)
I f ( x1 ) 2 f ( x1 h) 2 f ( x1 2h) 2 f x1 (n 1)h f (b) (9.3.11)
2 h h h
Metoda trapezelor, de calcul al integralei definite pe intervalul [a, b] , constă
xi 2h xi h xi 2h x
în înlocuirea curbei y f (x) cu o linie poligonală, după cum se vede în figura
9.3.1. i 2 i1 i i1 i 2
f ( x i 1 ) f ( xi 1 )
f ( xi )
f ( x2 )
f (x)
f ( xn )
f ( x1 )
o x1 x2 xi 1 xi x i 1 xn x
Fig. 9.3.1. Reprezentarea geometrică a metodei trapezelor
h h2
f ( xi 1 ) f ( xi h) f ( xi ) f ( xi ) f ( i ) ;
1! 2!
h h2 h3
F ( xi 1 ) F ( xi h) F ( xi ) F ( xi )
F ( xi ) F ( i )
1! 2! 3!
(9.3.14)
2 3
h h h
F ( xi ) f ( xi ) f ( xi ) f ( i ),
1! 2! 3!
unde i ( xi , xi 1 ) , F ( xi ) f ( xi ) .
După înlocuiri în relaţia (9.3.13), se obţine:
h3
ETi f ( i ) . (9.3.15)
12
Dacă se consideră intervalul [a, b] , atunci eroarea de trunchiere, în cazul
metodei trapezelor, este
n 1 h 3 n1
ET ETi f ( i ) . (9.3.16)
i 1 12 i 1
1 n1
Pentru (a, b) , astfel încât f () f (i ) şi tinând seama de faptul
n 1 i 1
că nodurile sunt echidistante, adică h (b a) /(n 1) , relaţia (9.3.16) devine:
(b a ) 3
ET f () . (9.3.17)
12(n 1) 2
M (b a ) 3
ET . (9.3.18)
12(n 1) 2
5
În cazul în care funcţia f (x) este dată tabelar, adică se cunosc valorile
f ( xi ), i 1, n în nodurile reţelei de integrare, relaţia (9.3.22) devine:
6
h
I ( y1 4 y 2 2 y3 4 y 4 2 y n2 4 y n1 y n ) . (9.3.23)
3
Dacă se cunoaşte expresia analitică a funcţiei f (x) şi se cere calculul
integralei I, pe intervalul [a, b] , atunci relaţia (9.3.22) devine:
h
I f ( x1 ) 4 f ( x1 h) 2 f ( x1 2h) 4 f x1 (n 1)h f (b) (9.3.24)
3
Metoda Simpson 1/3, de calcul al integralei definite pe intervalul [a, b] ,
constă în înlocuirea curbei y f (x) , pe fiecare interval de forma [ x2i 1 , x2i 1 ] ,
cu un polinom de gradul doi (v.fig.9.3.2). Numărul de puncte trebuie astfel ales
încât raportul (n 1) / 2 să fie număr întreg. Dacă nu se ţine seama de acest lucru
şi mai rămâne un interval, suprafaţa corespunzătoare acestuia se calculează cu
metoda trapezelor.
Eroarea de trunchiere pe intervalul [ x2i 1 , x2i 1 ] , în cazul formulei de
cuadratură numerică (9.3.22), este de forma:
x h
ET 2i x 2i 1 f ( x)dx [ f ( x2i 1 ) 4 f ( x2i ) f ( x2i 1 )] . (9.3.25)
f ( x1 ) f ( x1 ) f ( x1 )
2i 1 3
Procedând în mod analog formulei trapezelor, se obţine:
h 5 ( IV )
ET2i f ( 2i ) .
90
f ( x 2 i 1 )
f ( x2 i 1 ) f ( x2i ) f ( xn )
f ( x) f ( x2 )
f ( x1)
O
x1 x2 x 2 i 1 x2 i x2 i 1 xn x
Fig. 9.3.2. Reprezentarea geometrică a metodei Simpson 1/3
h 5 (n 1) ( IV )
ET f () . (9.3.27)
180
ba
Pentru h rezultă:
n 1
(b a ) 5
ET 4
f ( IV ) () . (9.3.28)
180(n 1)
Dacă există M 0 , astfel încât f ( IV ) ( x) M , () x (a, b) , atunci
M (b a ) 5
ET . (9.3.29)
180(n 1) 2
3h
I ( y1 3 y 2 3 y3 2 y 4 3 y5 2 y n3 3 y n2 3 y n1 y n ) .
8
(9.3.33)
Dacă se cunoaşte expresia analitică a funcţiei f (x) şi se cere calculul
integralei I, pe intervalul [a, b] , atunci relaţia (9.3.32) devine:
h
I f ( x1 ) 3 f ( x1 h) 3 f ( x1 2h) 2 f ( x1 3h) 3 f ( x1 4h)
3
3 f x1 (n 1)h f ( x n )
(9.3.34)
Metoda Simpson 3/8, de calcul al integralei definite pe intervalul [a, b] ,
constă în înlocuirea curbei y f (x) pe fiecare interval de forma [ x3i 2 , x3i 1 ]
cu un polinom de gradul trei. Numărul de puncte trebuie astfel ales încât raportul
(n 1) / 3 să fie număr întreg (v.fig.9.3.3). Dacă nu se ţine seama de acest lucru
9
şi mai rămâne un interval, pentru acesta se aplică formula trapezelor; dacă
rămân două intervale, atunci se aplică formula corespunzătoare metodei
Simpson 1/3.
f ( x3i 1) f ( x3 i 1 )
f ( x3i )
f ( xn )
f ( x3 i 2 )
f ( x)
f ( x2 )
f ( x1 )
O x 3 i 1 xn
x1 x2 x3i 2 x3i x3 i 1 x
Fig. 9.3.3. Reprezentarea geometrică a metodei Simpson 3/8
2h ( 2h) 2
f ( x3i 2 ) f ( x3i 2h) f ( x3i ) f ( x3i ) ( x3i )
1! 2!
;
( 2h) 3 (2h) 4 ( IV )
f ( x3i ) f ( 3i )
3! 4!
h h2
f ( x3i 1 ) f ( x3i h) f ( x3i ) f ( x3i ) ( x3i )
1! 2!
;
h3 h 4 ( IV )
f ( x3i ) f ( 3i )
3! 4!
10
h h2
f ( x3i 1 ) f ( x3i h) f ( x3i ) f ( x3i ) ( x3i )
1! 2!
;
3 4
h h
f ( x3i ) f ( IV ) ( 3i )
3! 4!
h h2 h3
F ( x3i 1 ) F ( x3i h) F ( x3i ) F ( x3i ) F ( x3i ) F ( x3i )
1! 2! 3!
;
h 4 ( IV ) h 5 (V )
F ( x3i ) F ( 3i )
4! 5!
2h ( 2h) 2 ( 2h) 3
F ( x3i 2 ) F ( x3i 2h) F ( x3i ) F ( x3i ) F ( x3i ) F ( x3i )
1! 2! 3!
(2h) 4 ( IV ) (2h) 5 (V )
F ( x3i ) F ( 3i )
4! 5!
unde 3i ( x3i 2 , x3i 1 ) , F ( x3i ) f ( x3i ) .
3h 5 ( IV )
ET3i f ( 3i ) . (9.3.37)
80
Dacă se consideră intervalul [a, b] , atunci eroarea de trunchiere în cazul
metodei Simpson 3/8 este:
n 1 n 1
5 3
3 3h
ET ET3i
80
f ( IV ) ( 3i ) . (9.3.38)
i 1 i 1
n 1
3 3
Pentru (a, b) , astfel încât f ( IV ) ()
n 1 i 1
f ( IV ) ( 3i ) şi ţinând seama
(b a ) 5
ET 4
f ( IV ) () . (9.3.39)
80(n 1)
1 b
b − a a
f mediu = f ( x)dx
După cum se poate observa din figura de mai sus, este evident că aria calculată folosind această
metodă nu are ca rezultat exact aria de sub curbă. Însă, micşorând suficient de mult lăţimea fiecărui
dreptunghi, rezultatul va fi mult mai apropiat de valoarea analitică (corectă). În schimb, numărul
dreptunghiurilor va creşte, deci necesarul de resurse de calcul va fi mai mare. Figura de mai jos
ilustrează acest aspect.
Tot în figura următoare, se observă că dreptunghiurile pot fi alese cu colţul din dreapta-sus sau din
stânga-sus pe curba y = f(x).
1
Există de asemenea şi varianta în care mijlocul laturii de sus se află pe curbă (figura următoare).
Metoda dreptunghiurilor se numeşte metoda Riemann şi este utilă pentru a evidenţia principiul de
bază prin care poate fi calculată o integrală definită. Din punct de vedere practic însă, metoda este
ineficientă, deci foarte rar utilizată.
Metoda trapezelor
O alternativă superioară metodei Riemann este metoda trapezelor, care funcţionează astfel:
1. Se împarte intervalul [a, b] în n subintervale, fiecare cu lăţimea h; rezultă valorile x0 = a, x1, x2, …,
xn-1, xn = b; lăţimea unui interval va fi:
b−a
h=
n
2
2. Se calculează valorile corespunzătoare f(x0) = f(a), f(x1), …, f(xn-1), f(xn) = f(b);
3. Se aproximează funcţia de integrat pe fiecare interval, prin interpolare liniară; rezultă n trapeze cu
înălţimea constantă h. În figura următoare este prezentată o situaţie în care intervalul de integrat este
divizat în n = 5 subintervale.
b−a n −1
b−a n −1
f (a) + 2 f ( xi ) + f (b) = f ( x0 ) + 2 f ( xi ) + f ( xn )
b
a
f ( x)dx =
2n i =1
2n i =1
Ţinând cont de definiţia mediei unei funcţii f(x), se poate de asemenea concluziona că aceasta este:
1 𝑏
𝑓(𝑎) + 2 ∑𝑛−1
1 𝑓(𝑥𝑖 ) + 𝑓(𝑏)
𝑓(𝑥) = ∫ 𝑓(𝑥)𝑑𝑥 =
𝑏−𝑎 𝑎 2𝑛
3
În cazul în care nu există o relaţie matematică pentru funcţia de integrat, ci funcţia este exprimată
prin valori discrete yi (setul de valori y0, y1, y2, …, yn obţinute experimental sau rezultate din calcule),
atunci integrarea prin metoda trapezelor se poate face cu relaţia:
h n
I=
2
y 0 + 2
1
yi + y n ,
unde h are aceeaşi semnificaţie ca şi mai sus (deci, trebuie ca valorile yi să fie măsurate la
intervale [xi-1, xi] echidistante).
Deşi superioară aproximării prin sume Riemann, metoda trapezelor nu este considerată totuşi
suficient de eficientă comparativ cu alte metode. Eroarea de calcul este proporţională cu h3. Raportată
la numărul de intervale n, eroarea poate fi exprimată ca fiind o funcţie de 1/n2, cu alte cuvinte, dacă se
dublează numărul de intervale n, eroarea se va reduce de 4 ori. Reducerea excesivă a pasului (adică un
număr prea mare de intervale n) poate avea însă două efecte: fie se atinge limita de acurateţe a
sistemului de calcul, fie erorile de rotunjire cumulate devin inacceptabil de mari. În plus, un număr
prea mare de intervale are ca efect creşterea prohibitivă a necesarului de resurse de calcul.
Metoda trapezelor s-a bazat pe aproximări liniare succesive, prin interpolare, ale funcţiei de
integrat. Simpson 1/3 foloseşte aproximări pătratice succesive ale funcţiei f(x). Cu alte cuvinte, pe
fiecare pereche de subintervale, funcţia va fi aproximată cu o parabolă P(x). Este de aşteptat ca o
parabolă să se “ajusteze” mai bine pe curba originală f(x) decât o dreaptă, deci ca acurateţea
rezultatului să fie mai bună decât în cazul metodei trapezelor (figura următoare - aproximarea funcţiei
f(x) cu parabola P(x) pe două subintervale alăturate).
4
Observaţie: pentru a înţelege metoda de lucru, în figura de mai sus pasul h este mare. În realitate se
alege un pas mic. Când pasul h este mic, polinomul P(x) aproximează foarte bine funcţia originală f(x).
Aria regiunii din figura de mai sus (cuprinsă între parabolă şi axa ox) se calculează ca fiind
produsul dintre bază (2h) şi o înălţime medie (ponderată, în care yi deţine cea mai mare pondere) a
graficului:
𝑦𝑖−1 + 4𝑦𝑖 + 𝑦𝑖+1 ℎ
𝐴𝑟𝑖𝑎 = 2ℎ = (𝑦𝑖−1 + 4𝑦𝑖 + 𝑦𝑖+1 )
6 3
Pentru toate regiunile intervalului de integrare [a, b], dacă se ţine cont de faptul că yi = f(xi),
h=(b-a)/n, iar f(x0) = f(a) şi f(xn) = f(b):
b−a
b
𝑏 𝑛−1 𝑛−2
𝑏−𝑎
∫ 𝑓(𝑥)𝑑𝑥 = [𝑓(𝑎) + 4 ∑ 𝑓(𝑥𝑖 ) + 2 ∑ 𝑓(𝑥𝑖 ) + 𝑓(𝑏)]
𝑎 3𝑛
𝑖=1,3,5... 𝑖=2,4,6...
5
Relaţia de calcul al integralei I pentru un singur grup de 3 subintervale este de asemenea o medie
ponderată a “înălţimii” medii a grupului de intervale:
I=
3h
f ( xi −2 ) + 3 f ( xi −1 ) + 3 f ( xi ) + f ( xi+1 ) = 3(b − a) f ( xi−2 ) + 3 f ( xi−1 ) + 3 f ( xi ) + f ( xi +1 )
8 8n
Pentru întregul interval de integare [a, b], formula Simpson 3/8 este:
n
−1
3(b − a) n −1
b
f ( x0 ) + 3 f ( xi ) + 2 f ( x3 j ) + f ( xn )
3
f ( x)dx
8n i 3k j =1
a
Comparaţie practică între cele trei metode prezentate
Se cere să se rezolve următoarea integrală prin metoda trapezelor, Simpson 1/3 şi Simpson 3/8, cu
6 zecimale:
1.5
I = e x cos( x)dx
0
Pentru a evalua acurateţea rezultatului, mai întâi se rezolvă integrala analitic, pentru a obţine
rezultatul exact:
1.5
e x sin( x) e x cos( x)
I = + = 1.893742
2 2 0
Tabelul următor prezintă rezultatele centralizate obţinute prin cele 3 metode, precum şi erorile
absolută şi relativă, pentru n=6 subintervale şi 6 zecimale. Se observă superioritatea celor două metode
Simpson în raport cu metoda trapezelor.
Eroarea absoluta, E Eroarea relativa, e
Analitic 1.893742
Trapez 1.866943 0.026799 1.4151%
S1/3 1.893575 0.000167 0.0088%
S3/8 1.893742 0 0.0000%
6
Exemplu de calcul erori, pentru metoda trapezelor:
E 0.026799
e= 100 = 100 = 1.415%
valoarea _ exacta 1.893742
7
Rezolvarea numerică a ecuaţiilor diferenţiale
Ecuaţiile diferenţiale sunt ecuaţii în care necunoscuta nu este o variabilă, ci o funcţie. Într-o
ecuaţie diferenţială, există cel puţin o derivată a funcţiei căutate. De exemplu, din ecuaţia următoare
se caută funcţia y(x):
y'+ y = x + 3
Această ecuaţie mai poate fi scrisă şi astfel:
dy
+ y = x + 3 sau f ' ( x) + f ( x) = x + 3 (în acest ultim caz, necunoscuta este f(x) şi este o altă
dx
denumire pentru y(x)).
Se verifică soluţia: y' ( x) = −3e−3 x ; y' ' ( x) = 9e−3 x 9e−3 x + 2(−3)e−3 x − 3e−3 x = 0 ; verificat!
dx
d2y
y = sin( x) (funcţia necunoscută y(x) este înmulţită cu propria ei derivată de ordinul 2);
dx 2
𝑦 ′ + cos(𝑦) = 0 (necunoscuta y este argument al functiei cos, care este neliniara).
1
Exemple de ecuaţii diferenţiale liniare:
𝑦 ′′ + 2𝑦 ′ + 𝑦 = sin(𝑥) (ecuaţia este liniara în y);
𝑦 ′ − 𝑡 2 𝑦 = 0 (ecuaţia este liniara în y).
Rezolvarea numerică a ecuaţiilor diferenţiale ordinare de ordinul I prin metoda lui Euler
dy
Aceste ecuaţii au forma generală: = f ( x, y ) . Se observă că în dreapta semnului “=” se
dx
amplasează toţi termenii care nu conţin dy/dx, obţinându-se o funcţie oarecare f(x, y).
Dacă ecuaţia ar fi rezolvată analitic, s-ar obţine o relaţie matematică pentru funcţia y(x).
Metodele numerice (inclusiv metoda lui Euler) nu identifică o funcţie (formulă), ci un set de valori.
Dacă funcţia analitică y(x) şi valorile identificate prin metoda lui Euler ar fi reprezentate grafic,
acestea ar fi foarte apropiate (deşi nu s-ar suprapune perfect). Aşadar, toate metodele numerice
(inclusiv Euler) nu sunt perfecte, ci oferă o soluţie aproximativă (introduc o anumită eroare care
poate fi însă acceptabilă). În practică, de cele mai multe ori ecuaţiile diferenţiale sunt dificil sau chiar
imposibil de rezolvat analitic (cu deosebire atunci când sunt neliniare), astfel încât se folosesc metode
numerice de rezolvare în ciuda erorilor de calcul.
În figura de mai jos sunt reprezentate o funcţie y(x) determinată în urma rezolvării analitice a unei
ecuaţii diferenţiale ordinare de ordinul I (cu roşu) şi numeric (cu albastru; punctele sunt determinate
cu metoda lui Euler). Distanţa dintre cele două curbe reprezintă eroarea introdusă de Euler.
Spre deosebire de alte metode numerice, Euler introduce o eroare destul de mare, însă modul
acesteia de funcţionare trebuie cunoscut întrucât stă la baza tuturor metodelor care vor fi studiate în
cadrul acestui capitol.
Etapele rezolvării ecuaţiilor diferenţiale folosind Euler (interpretare geometrică):
Indiferent dacă rezolvarea este analitică sau
numerică, este necesar să se cunoască o condiţie
iniţială. Cu alte cuvinte, să se cunoască o
pereche de valori “de pornire” x0 şi y0 = y(x0)
(exemplele care vor urma vor fi mai edificatore).
Interpretarea geometrică a etapelor de rezolvare
poate fi urmărită în figura alăturată. Pentru o
dy
ecuaţie de forma = f ( x, y ) aceste etape sunt:
dx
2
1. Se cunoaşte condiţia inţială, respectiv punctul de coordonate x0, y0; prin urmare, se poate calcula
valoarea f(x0, y0); aceasta reprezintă de fapt panta funcţiei y(x) în punctul de coordonate (x0, y0)1;
2. Prin punctul de coordonate x0, y0 se trasează o dreaptă având panta f(x0, y0). Dacă s-ar cunoaşte
soluţia analitică (cu albastru în figura anterioară), dreapta ar fi tangentă la curbă în (x0, y0);
3. Se alege un pas h care, în toate etapele care urmează, va rămâne constant; deci: x1 = x0 + h ;
4. Din triunghiul dreptunghic cu catetele h şi y1-y0, panta f(x0, y0) se poate scrie ca fiind:
y −y
f ( x0 , y0 ) = 1 0 (similar tg(α)); prin urmare, se poate determina y1:
h
y1 = y0 + h f ( x0 , y0 )
Se cunoaşte aşadar acum punctul de coordonate (x1, y1).
5. Se continuă etapele de mai sus, pornind de această dată din (x1, y1). Procedând în mod similar, se
determină punctul de coordonate (x2, y2):
x2 = x1 + h y2 = y1 + h f ( x1 , y1 )
Observaţie: În figurile de mai sus, erorile (distanţele dintre punctele determinate prin metoda Euler
şi curba analitică) sunt mari ca urmare a faptului că pasul h a fost ales în mod deliberat mare, astfel
încât interpretarea geometrică să fie foarte clar vizualizată. În realitate se lucrează cu un pas h
suficient de mic pentru ca punctele de coordonate (xi, yi) să urmărească îndeaproape curba analitică.
Generalizând relaţiile anterioare, coordonatele unui punct oarecare n pot fi determinate prin metoda
Euler astfel:
xn = xn−1 + h yn = yn−1 + h f ( xn−1 , yn−1 ) (2)
1 Derivata dy/dx în x0 reprezintă panta funcţiei y(x) în x0, iar aceasta este egală (după cum se observă din forma generală a ecuaţiei
diferenţiale) cu f(x0, y0);
3
dy
Se aranjează ecuaţia diferenţială, astfel încât să fie adusă sub forma = f ( x, y ) :
dx
dy
= x + 2 y (1)
dx
Din relaţia (1) se poate trage concluzia că 𝑓(𝑥, 𝑦) = 𝑥 + 2𝑦; aşadar, 𝑓(𝑥0 , 𝑦0 ) = 𝑥0 + 2𝑦0 .
Se calculează x1 şi y1 cu ajutorul ecuaţiilor generale (2):
x1 = x0 + h = 0 + 0.1 = 0.1 y1 = y0 + h f ( x0 , y0 ) = y0 + h (x0 + 2 y0 ) = 0 + 0.1 (0 + 2 0) = 0
Se calculează x2 şi y2 cu ajutorul ecuaţiilor generale (2):
x2 = x1 + h = 0.1 + 0.1 = 0.2 y2 = y1 + h f ( x1 , y1 ) = y1 + h (x1 + 2 y1 ) = 0 + 0.1 (0.1 + 2 0) = 0.01
Procedând în mod similar se calculează (x3, y3) şi (x4, y4):
x3 = x2 + h = 0.2 + 0.1 = 0.3 y3 = y2 + h (x2 + 2 y2 ) = 0.01 + 0.1 (0.2 + 2 0.01) = 0.032
y( x) = e x (verificare:
dy
dx
( )
'
= e x = e x şi condiţia iniţială: pt x=0 e0 = 1 )
Ei 0.021
ei = 100 (de exemplu: 𝑒1 = | | ∙ 100 = 1.72)
yi _ analitic 1.221
0 0 1 1 0 0
Fiind vorba despre o funcţie exponenţială (variaţie continuu crescătoare), se observă că eroarea
creşte permanent. Acest aspect este vizibil şi în graficul de mai jos, unde se poate constata că
distanţa dintre cele două curbe (y_analitic, respectiv y_numeric) creşte continuu.
5
Metoda Heun foloseşte de mai multe ori la aceeaşi etapă (la acelaşi pas) metoda lui Euler de rezolvare
a ecuaţiilor diferenţiale, pentru a obţine un rezultat superior din punct de vedere al erorii de calcul.
O bună parte dintre elementele prezentate în continuare au fost deja explicate în cursul anterior. Prin
urmare, înainte de a parcurge acest material, se recomandă să recitiţi cu atenţie cursul anterior.
1. Elemente iniţiale: ca şi în cazul metodei Euler, este necesar să cunoască o condiţie iniţială; cu
alte cuvinte, trebuie cunoscut un punct iniţial de coordonate x0 şi y0. De asemenea, trebuie să se
stabilescă un pas h constant, de obicei cu o valoare mică (v. cursul anterior).
2. Se calculează o primă pantă în punctul de coordonate (x0, y0), pe care o vom denumi panta_1 şi
care va avea aşadar valoarea f(x0, y0). În scopul interpretării geometrice, în figura următoare s-a
trasat o dreaptă cu panta panta_1, tangentă la graficul funcţiei y(x) în punctul de coordonate (x0, y0).
(0)
4. Cu Euler, se calculează 𝑦1 = 𝑦0 + ℎ ⋅ 𝑓(𝑥0 , 𝑦0 ) (în figura următoare s-a notat simplu, y1); ne
reamintim că f(x0, y0) este panta dreptei din figura următoare, deci se poate scrie formal:
(0)
𝑦1 = 𝑦0 + 𝑝𝑎𝑛𝑡𝑎_1 ⋅ ℎ
Până aici a fost aplicată de fapt metoda Euler, însă metoda Heun continuă cu paşii următori.
5. Se calculează o nouă pantă (pe care o vom denumi panta_2) în punctul de coordonate (x1, y1).
Aceasta va avea valoarea f(x1, y1).
- 1 -
6. Se translatează pe verticală dreapta de pantă panta_2 până când va trece prin punctul de
coordonate (x0, y0):
8. Se foloseşte din nou Euler pentru a recalcula y1, dar cu panta medie:
sau
y1(1) = y0 +
h
2
f ( x0 , y0 ) + f ( x1 , y1( 0) )
În figura următoare se observă că dreapta cu pantă medie este bisectoarea unghiului format de cele
două drepte anterioare. De asemenea, se observă că eroare este semnificativ mai mică decât în cazul
în care am fi aplicat doar metoda lui Euler (care se opreşte la pasul 4).
- 2 -
Se pot continua iteraţiile (media [f(x0, y0) + f(x1, noul y1)] / 2, apoi recalculare y1 etc...) pentru a
îmbunătăţi suplimentar soluţia y1, însă de cele mai multe ori se trece la determinarea următorului
punct de coordonate (x2, y2): x2 = x1 + h (etapa 3 de mai sus), apoi y2(0) = y1 + h f ( x1 , y1 ) (etapa 4
de mai sus) etc.
panta _ medie =
( ) (
f ( x0 , y0 ) + f ( x1 , y1( 0) ) 4 e0,80 − 0,5 2 + 4 e0,81 − 0,5 5
=
)
= 4,70108...
2 2
Noul y1 este (pasul (8) anterior): y1(1) = y0 + panta _ medie h = 2 + 4,70108 1 = 6,70108
Noua eroare relativă este:
6,1946 − 6,70108
e= 100 = 8,176%
6,1946
Această nouă eroare este de 2,4 ori mai mică decât eroare anterioară (obţinută cu Euler)!
Pentru a îmbunătăţi suplimentar precizia rezultatului, se calculează încă o dată y1. Mai întâi se
recalculează panta medie:
panta _ medie =
( ) (
f ( x0 , y0 ) + f ( x1 , y1(1) ) 4 e0,80 − 0,5 2 + 4 e0,81 − 0,5 6,70108
=
)
= 4,27581...
2 2
Noul y1 va fi deci:
- 3 -
y1( 2) = y0 + panta _ medie h = 2 + 4,275811 = 6,27581
Notă:
În exemplul anterior s-au obţinut erori mari, întrucât s-a lucrat cu un pas h mare. În mod normal,
pasul ar trebui sa fie mai mic (cel mult 0,5).
- 4 -
217
dn y
n
= f ( x, y, y , y , , y ( n−1) ) , (10.1.1)
dx
unde n reprezintă ordinul ecuaţiei.
Ecuaţia (10.1.1) mai poate fi scrisă şi sub formele:
F ( x, y , y , y , , y ( n ) ) = 0 , y ( n ) = f ( x, y, y , y , , y ( n−1) ) .
Pentru n = 1 , ecuaţia deferenţială (10.1.1) capătă forma:
dy
= f ( x, y ) (10.1.2)
dx
sau
y = f ( x, y) . (10.1.3)
METODE UNIPAS
cu condiţia iniţială
y ( x0 ) = y 0 . (10.2.2)
h h2
y ( x1 ) = y ( x0 ) + y ( x0 ) + y ( x0 ) +
1! 2!
j ( j +1)
(10.2.4)
h ( j) h
+ y ( x0 ) + y ( j +1) ( x0 + x),
j! ( j + 1)!
Din relaţia (10.2.4) se observă că, pentru determinarea valorii y( x1 ) trebuie
să cunoaştem valorile y ( x0 ) , y ( x0 ) , y ( x0 ) , , y ( j ) ( x0 ) .
Pentru a arăta greutatea aplicări acestei metode, se vor determina primele
derivate ale funcţiei y(x) .
Astfel,
y ( x) = f ( x, y );
dy ( x) d f f f f
y ( x) = = ( f ( x, y ( x)) ) = + y = +f ;
dx dx x y x y
2 f 2 f 2 f
2
f f f
y ( x) = 2 + 2 f +f + ( + f ),
x xy y 2 y x y
y1 = y0 + hy ( x0 ) (10.2.5)
220
sau
y1 = y0 + hf ( x0 , y0 ) , (10.2.5’)
yi +1 = yi + hf ( xi , yi ) , h = xi +1 − xi , i = 0, n − 1. (10.2.6)
După cum se observă din relaţia (10.2.6), metoda Euler foloseşte pentru
calculul lui yi +1 doar panta în punctul ( xi , yi ) .
Prin compararea formulei (10.2.6) cu dezvoltarea în serie Taylor (10.2.4) se
observă că eroarea de trunchiere este de ordinul lui h 2 , adică E y = O(h 2 ) .
Reprezentarea geometrică a formulei lui Euler, pentru integrarea ecuaţiilor
diferenţiale, este arătată în figura 10.2.1.
Din figura 10.2.1 se observă că s-a înlocuit curba integrală y(x) cu o linie
poligonală formată din segmentele A0 B1 , B1 B2 , B2 B3 , … . Se observă de
asemenea că numai în punctul A0 cele două curbe coincid. Din acest motiv,
metoda a căpătat unele modificări care conduc la îmbunătăţirea soluţiei ecuaţiei
diferenţiale date.
Această metodă mai este folosită şi ca punct de plecare pentru alte metode de
rezolvare.
221
PROCEDURE EULERIMB(FCT:PROC11;X0,Y0,H:REAL;NP:INTEGER;VAR
Y:VECTOR1;VAR KOD:INTEGER);
X0 = x 0 ;
Y0 = y 0 ;
H = h - pasul de integrare;
NP = n + 1 - numărul de puncte în care se integrează ecuaţia diferenţială;
parametrii de ieşire:
Y – tablou cu dimensiunea n + 1 , care conţine valoarea iniţială y 0 şi valorile
calculate y1 , y 2 , y n ;
KOD – cod de eroare, care rezultă cu valoarea 0 când funcţionarea este
normală şi cu valoarea 1 atunci când apar probleme la calculul funcţiei f ( x, y) .
Exemplu de calcul
Fie ecuaţia diferenţială
sin( x)
y =
y
cu condiţia iniţială:
y(0) = 1.
Să se integreze numeric ecuaţia dată pentru x [0, / 2] şi pasul reţelei de
integrare h = 0.174533 [rad], folosind metoda Euler imbunătăţită. Soluţia
numerică să se compare cu soluţia analitică.
223
Rezolvare
y ( x) = 3 − 2 cos( x) .
Tabelul 10.2.2
PROGRAM INTEGRAREA_ECUATIEI_DIFERENTIALE;
{FOLOSIREA METODEI EULER IMBUNATATITA}
USES CRT,METODNUM;
VAR Y,Y1:VECTOR1;
VAR I,J,NP,KOD:INTEGER;
VAR X,X0,Y0,H:REAL;
F:TEXT;
{$F+}
PROCEDURE FCT(X,Y:REAL;VAR F:REAL;VAR KOD:INTEGER);
BEGIN
KOD:=0;
IF Y <= 1.E-12 THEN
BEGIN
KOD:=1;
EXIT;
END
ELSE
F:=SIN(X)/Y;
END;
{$F-}
BEGIN
ASSIGN(F,'ECUATDIF.DAT');
REWRITE(F);
CLRSCR;
NP:=10;
224
X0:=0;
Y0:=1;
H:=0.174533;
EULERIMB(FCT,X0,Y0,H,NP,Y,KOD);
WRITELN( 'NR.NOD X Y_ANALITIC Y_NUMERIC');
WRITELN(F, 'NR.NOD X Y_ANALITIC Y_NUMERIC');
FOR I:=1 TO NP DO
BEGIN
X:=(I-1)*H;
Y1[I]:=SQRT(3-2*COS(X));
WRITELN(I:4,X:13:6,Y1[I]:13:6,Y[I]:13:6);
WRITELN(F,I:4,X:13:6,Y1[I]:13:6,Y[I]:13:6);
READLN;
END;
CLOSE(F);
END.
y = yi + ( x − xi )( xi , yi , h) .
Pentru x = xi +1 , se obţine
h h
yi +1 = yi + hf ( xi + , yi + yi ) , i = 0, n − 1 . (10.2.11)
2 2
225
şi reprezintă ordonata punctului căutat, C.
Eroarea de trunchiere, în cazul metodei Euler modificată, este de ordinul lui
h3.
PROCEDURE EULERMOD(FCT:PROC11;X0,Y0,H:REAL;NP:INTEGER;VAR
Y:VECTOR1;VAR KOD:INTEGER);
Exemplu de calcul
Rezolvare
Tabelul 10.2.4
NR.NOD X Y_ANALITIC Y_NUMERIC
1 0.000000 1.000000 1.000000
2 0.174533 1.015079 1.015212
3 0.349066 1.058591 1.059062
4 0.523599 1.126033 1.126904
5 0.698132 1.211574 1.212788
6 0.872665 1.309361 1.310810
7 1.047198 1.414214 1.415795
8 1.221731 1.521828 1.523461
9 1.396264 1.628713 1.630344
10 1.570797 1.732051 1.733650
cu condiţia iniţială
y ( x0 ) = y 0 .
yi +1 = yi + c11k1 (10.2.16)
sau
yi +1 = yi + c11hf ( xi , yi ) . (10.2.16’)
h h2
y ( xi +1 ) = y ( xi ) + y ( xi ) + y ( xi ) +
1! 2!
h j ( j) h ( j +1) ( j +1)
+ y ( xi ) + y ( xi + x),
j! ( j + 1)!
a soluţiei reale, se reţin termenii până la h inclusiv, se obţine:
y ( xi +1 ) = y ( xi ) + hf ( xi , yi ) . (10.2.17)
relaţie care este identică cu (10.2.6), adică s-a obţinut formula lui Euler.
228
Pentru p = 2 , din relaţiile (10.2.13) şi (10.2.14), rezultă:
yi +1 = yi + c21k1 + c22 k 2 =
(10.2.19)
= yi + c21hf ( xi , yi ) + c22 hf ( xi + 2 h, yi + 21hf ( xi , yi )
sau
yi +1 = yi + c21 hf ( xi , yi ) + c22 h[ f ( xi , yi ) + 2 hf x ( xi , yi ) +
, (10.2.19’)
+ 21 hf y ( xi , yi ) f ( xi , yi )]
unde:
f f
f x = , f y = .
x y
Prin identificare cu dezvoltarea în serie Taylor a soluţiei exacte y( xi +1 ) în
jurul lui xi , se obţine:
c 21 + c22 = 1;
1
c 22 2 = ; (10.2.20)
2
1
c 22 21 = .
2
Relaţiile 10.2.20 formează un sistem de trei ecuaţii cu 4 necunoscute. Din
relaţia (10.2.19), se observă că c 22 trebuie să fie diferit de zero, astfel că se
presupune:
c22 = 1 / 2 (10.2.21)
şi rezultă:
1
c21 = ;
2
2 = 1; (10.2.22)
21 = 1.
Cazul cel mai des utilizat este p = 4 , astfel că relaţia (10.2.13) devine:
unde:
k1 = hf ( xi , yi );
k 2 = hf ( xi + 2 h, yi + 21k1 );
(10.2.26)
k 3 = hf ( xi + 3 h, yi + 31k1 + 32 k 2 );
k 4 = hf ( xi + 4 h, yi + 41k1 + 42 k 2 + 43 k 3 ).
Dezvoltând în serie Taylor după h relaţia (10.2.25) şi identificând
coeficienţii cu cei din dezvoltarea în serie Taylor a soluţiei exacte y( xi +1 ) , se
obţine un sistem de 10 ecuaţii cu 13 necunoscute. Cea mai utilizată soluţie este:
1
yi +1 = yi + (k1 + 2k 2 + 2k 3 + k 4 ) , i = 0, n − 1 , (10.2.27)
6
în care:
k1 = hf ( xi , yi );
h k
k 2 = hf ( xi + , yi + 1 );
2 2 (10.2.28)
h k
k 3 = hf ( xi + , yi + 2 );
2 2
k 4 = hf ( xi + h, yi + k 3 ).
Exemple de calcul
Tabelul 10.2.5
NR.NOD X Y_ANALITIC Y_NUMERIC
1 0.000000 1.000000 1.000000
2 0.174533 1.015079 1.015079
3 0.349066 1.058591 1.058592
4 0.523599 1.126033 1.126034
5 0.698132 1.211574 1.211576
6 0.872665 1.309361 1.309362
7 1.047198 1.414214 1.414216
8 1.221731 1.521828 1.521830
9 1.396264 1.628713 1.628714
10 1.570797 1.732051 1.732053
Analizând datele din tabelul 10.2.5, rezultă o apropiere foarte mare între cele
două curbe integrale, obţinute pe cale analitică şi pe cale numerică.
Exemplul 2.
Rezolvare
Tabelul 10.2.6
PROGRAM REZOLVARE_ECUATII_DIFERENTIALE;
USES CRT,METODNUM;
VAR Y,Y1:VECTOR1;
VAR I,J,NP,KOD:INTEGER;
VAR c,x,X2,X0,Y0,H:REAL;
F:TEXT;
{$F+}
PROCEDURE FCT(X,Y:REAL;VAR F:REAL;VAR KOD:INTEGER);
BEGIN
KOD:=0;
IF Y <= 1.E-8 THEN
BEGIN
KOD:=1;
EXIT;
END
ELSE
F:=-SIN(2*Y)/SIN(2*X);
END;
{$F-}
BEGIN
ASSIGN(F,'ECUATDIF.DAT');
REWRITE(F);
CLRSCR;
NP:=16;
X0:=3.14159265/4;
Y0:=1;
H:=0.0174533;
C:=SIN(1)/COS(1);
RUNGEKT4(FCT,X0,Y0,H,NP,Y,KOD);
WRITELN( 'NR.NOD Y_ANALITIC Y_NUMERIC');
WRITELN(F, 'NR.NOD Y_ANALITIC Y_NUMERIC');
FOR I:=1 TO NP DO
BEGIN
X:=X0+(I-1)*H;
Y1[I]:=ATAN2(C*COS(X),SIN(X));
WRITELN(F,I:4,Y[I]:13:6,Y1[I]:13:6);
WRITELN(I:4,Y[I]:13:6,Y1[I]:13:6);
READLN;
END;
CLOSE(F);
END.
Exemple de calcul
Rezolvare
Tabelul 10.2.9
Nr.nod Y_ANALITIC Y_NUMERIC Z_ANALITIC Z_NUMERIC
0 1.000000 1.000000 0.000000 0.000000
1 1.084886 1.084888 0.108852 0.108849
2 1.139481 1.139486 0.230984 0.230981
3 1.164485 1.164493 0.360217 0.360215
4 1.161490 1.161500 0.491070 0.491068
5 1.132772 1.132783 0.618836 0.618836
6 1.081093 1.081105 0.739615 0.739618
7 1.009522 1.009535 0.850309 0.850314
8 0.921275 0.921287 0.948581 0.948589
9 0.819578 0.819589 1.032798 1.032809
Exemplul 2. Fie circuitul R-L-C, din figura 10.2.4. Aplicând legea a doua
a lui Kirchhoff, rezultă
di (t )
ev (t ) = R i (t ) + L + u c (t ) , (10.2.33)
dt
în care: i (t ) este curentul din buclă, ev (t ) - tensiunea electromotoare aplicată,
iar u c (t ) este tensiunea de pe condensator. Variaţia de tensiune pe condensator
este dată de relaţia:
du c (t ) i (t )
= , (10.2.34)
dt C
unde C este capacitatea condensatorului.
K t=0 R L
i(t)
ev uc(t) C
di (t ) 1
= [ev (t ) − R i (t ) − u c (t )] ;
dt L
du c (t ) i (t )
= . (10.2.35)
dt C
Se pun condiţiile iniţiale
i(0) = 0 şi uc (0) = 0 ,
şi se cere să se rezolve sistemul de ecuaţii (10.2.35) pentru t [0, 0.001] s, unde
t = 0 este momentul la care se închide comutatorul K (v. figura 10.2.4). Se
cunosc: ev (t ) = 15 V, R = 200 , L = 0.01 H, C = 1 F.
Rezolvare
Tabelul 10.2.10
PROGRAM SISTEME_DE_ECUATII_DIFERENTIALE;
USES CRT,METODNUM;
VAR CIN,Y,Z:VECTOR1;
YY:MAT;
I,J,NE,NP,KOD:INTEGER;
T,X0,H:REAL;
F1:TEXT;
{$F+}
PROCEDURE FCT1(X:REAL;Y:VECTOR1;VAR F:VECTOR1;VAR KOD:INTEGER);
VAR R,L,C,EV:REAL;
BEGIN
R:=200;
L:=0.01;
C:=0.000001;
EV:=15;
F[1]:=(EV-R*Y[1]-Y[2])/L;
F[2]:=Y[1]/C;
KOD:=0;
END;
{$F-}
BEGIN
ASSIGN(F1,'SISTEMED.DAT');
REWRITE(F1);
CLRSCR;
237
NE:=2;
NP:=26;
X0:=0;
CIN[1]:=0;
CIN[2]:=0;
H:=0.00004;
SRUNGKT4(FCT1,NE,NP,X0,H,CIN,YY,KOD);
IF KOD > 0 THEN
BEGIN
WRITELN(' KOD=',KOD);
READLN;
HALT;
END;
WRITELN(' Nr.nod T I UC');
WRITELN(F1,' Nr.nod T I UC');
FOR J:=1 TO NP DO
BEGIN
T:=(J-1)*H;
WRITELN(J-1:4,T:10:5,YY[1,J]:12:6,YY[2,J]:12:6);
WRITELN(F1,J-1:4,T:10:5,YY[1,J]:12:6,YY[2,J]:12:6);
READLN;
END;
CLOSE(F1);
END.
d2 y dy
= f ( x, y , ), (10.2.36)
dx 2 dx
cu condiţiile iniţiale:
y ( x0 ) = y0 ;
(10.2.37)
y ( x0 ) = y0 .
dy
Dacă în relaţia (10.2.36) se face notaţia v = , se obţine un sistem de două
dx
ecuaţii diferenţiale de ordinul unu
dv
= f ( x, y, v);
dx
(10.2.38)
dy
= v,
dx
cu condiţiile iniţiale:
y ( x0 ) = y 0 ;
(10.2.39)
v ( x0 ) = y0 .
239
Soluţia sistemului (10.2.38) este:
1
vi +1 = vi + (k1 + 2k 2 + 2k3 + k 4 );
6
(10.2.40)
1
yi +1 = yi + (m1 + 2m2 + 2m3 + m4 ),
6
i = 0, n − 1,
unde:
k1 = hf ( xi , yi , vi ); m1 = hvi ;
h m k k1
k 2 = hf ( xi + , yi + 1 , vi + 1 ); m2 = h(vi + );
2 2 2 2
h m k k
k3 = hf ( xi + , yi + 2 , vi + 2 ); m3 = h(vi + 2 );
2 2 2 2
k 4 = hf ( xi + h, yi + k3 , vi + m3 ); m4 = h(vi + k3 ).
Exemplu de calcul
Un pendul a cărui masă m se presupune concentrată în
punctul A (fig. 10.2.6) este atârnat de punctul O printr-un fir de O
lungime l . Sub acţiunea gravitaţiei, pendulul oscilează; se vor
neglija frecările şi alte influenţe. Dacă unghiul dintre pendul şi 4
l
verticală la momentul t este , atunci asupra masei m
acţionează forţa mg vertical în jos, iar în direcţia tangentei la A
traiectoria descrisă de punctul material A forţa mg sin , unde g E
este acceleraţia gravitaţională. După legea a doua a lui Newton 2
această forţă este egală cu produsul dintre masa m şi acceleraţia mg
d
2
tangenţială l 2 . Pentru unghiul (t ) se obţine ecuaţia
dt
diferenţială neliniară
d 2
ml 2 = −mg sin ; (10.2.41)
dt
sau
d 2 g
2
= − sin . (10.2.42)
dt l
Se cere să se determine unghiul şi derivata acestuia în raport cu timpul,
d / dt , pentru un număr de 50 de puncte, considerând pasul h = 0.047862 [s] şi
condiţiile iniţiale:
240
t = 0 ; = 1.57079[rad], = 0 . (10.2.43)
Rezolvare
-2
-4
-6
0 0.5 1 1.5 2 2.5
t [s]
METODE MULTIPAS
Metoda Adams
h h2 h3 h4
yi +1 = yi + f ( xi , yi ) +
f ( xi , yi )
f ( xi , yi ) + f ( xi , yi ) +
1! 2! 3! 4!
(10.3.1)
prin diferenţe regresive.
Cu notaţia f i = f ( xi , yi ) , realţia (10.3.1) devine:
h h2 h3 h4
yi +1 = yi + fi + f i + f i+ f i+ . (10.3.1’)
1! 2! 3! 4!
Dacă se foloseşte simbolul D pentru a indica derivatele lui y, atunci
dezvoltarea în serie Taylor
h h2 h3 h 4 ( IV )
yi +1 = yi + yi + yi+ yi+ yi + (10.3.2)
1! 2! 3! 4!
devine:
243
2
h h h3 3 h4 4
yi +1 = yi + Dyi + D yi +
2
D yi + D yi + =
1! 2! 3! 4!
(10.3.3)
hD h 2 D 2 h 3 D 3 h 4 D 4
= (1 + + + + + ) yi .
1! 2! 3! 4!
Cu ajutorul dezvoltării în serie a lui e x ,
x x x 2 x3
e = 1 + + ,
1! 2! 3!
operatorul diferenţial din relaţia (10.3.3) poate fi scris simbolic,
hD h 2 D 2 h 3 D 3 h 4 D 4
1+ + + + + = e hD , (10.3.4)
1! 2! 3! 4!
astfel că:
yi +1 = e hD yi . (10.3.5)
yi = (1 − e − hD ) yi (10.3.7)
sau
hD h 2 D 2 h 3 D 3 h 4 D 4
yi = ( − + − + ) yi . (10.3.8)
1! 2! 3! 4!
Relaţia (10.3.8) exprimă diferenţa finită regresivă, cu ajutorul derivatelor lui
y calculate în punctul i.
Dacă relaţia (10.3.7) se scrie simbolic sub forma:
= 1 − e − hD , (10.3.9)
atunci diferenţa finită de ordinul doi este:
2 = (1 − e − hD ) 2 = 1 − 2e − hD + e −2hD =
hD h 2 D 2 h 3 D 3 h 4 D 4
= 1 − 2(1 − + − + − ) +
1! 2! 3! 4!
2hD 4h 2 D 2 8h 3 D 3 16h 4 D 4
+ (1 − + − + − ),
1! 2! 3! 4!
sau
7 4 4
2 = h 2 D 2 − h3 D3 + h D − (10.3.10)
12
244
În mod analog, se determină diferenţa finită regresivă de ordinul trei
3 5
3 = h3 D3 − h 4 D 4 + h5 D5 − (10.3.11)
2 4
ş.a.m.d.
Pentru a exprima derivatele lui y în funcţie de diferenţele finite regresive, se
scrie relaţia (10.3.9) sub forma:
e − hD = 1 − , (10.3.12)
se aplică simbolic logaritmii naturali ambilor membri ai relaţiei (10.3.12), şi se
obţine:
ln e −hD = ln(1 − ) ,
2 3 4
hD = + + + + . (10.3.13)
2 3 4
Derivatele de ordin superior se obţin prin ridicarea simbolică la putere a relaţiei
(10.3.13), şi anume:
11 4 5 5
h2 D 2 = 2 + 3 + + + ;
12 6
3 7
h3 D3 = 3 + 4 + 5 ; (10.3.14)
2 4
17
h 4 D 4 = 4 + 2 5 + 6 ;
6
5 25
h5 D5 = 5 + 6 + 7
2 6
Prin înlocuirea derivatelor din relaţia (10.3.1), cu dezvoltările din relaţiile
(10.3.13) şi (10.3.14), se obţine formula lui Adams, şi anume:
1 1 1 1 1
yi +1 = yi + h[ f i + ( + 2 + 3 + 4 + 5 + ) f i +
2 2 3 4 5
1 11 5
+ ( 2 + 3 + 4 + 5 + ) ff i +
6 12 6
1 3 7
+ ( 3 + 4 + 5 + ) f i +
24 2 4
1
+ ( 4 + 2 5 + ) f ( xi , yi ) + ( 5 + ) f i + ]
120
(10.3.15)
245
După prelucrări simple, relaţia (10.3.15) devine:
1 5 3 251 4
yi +1 = yi + h[(1 + + 2 + 3 + + ) fi . (10.3.16)
2 12 8 720
sau
1 5 3 251 4
yi +1 = yi + h[( f i + f i + 2 f i + 3 f i + fi + ) ,
2 12 8 720
(10.3.16’)
care este formula Adams de integrare numerică a ecuaţiilor diferenţiale ordinare.
Din relaţia (10.3.16’), se observă că primele k valori ale soluţiei se
calculează cu ajutorul unei metode unipas, unde k este ordinul maxim al
diferenţelor finite regresive folosite.
Folosind relaţia:
m f i = f i − Cm
1
f i −1 + C m2 f i −2 + + (−1) m f i −m , m = 1, k ,
unde y(x) este soluţia ecuaţiei diferenţiale. Prin înlocuirea funcţiei f ( x, y( x))
printr-un polinom Newton de interpolare stânga de ordinul k (v. §.8.2.4.2), se
obţine:
xi +1 f i 2 fi
yi +1 = yi + x [ f i + ( x − xi ) + ( x − xi )( x − xi −1 ) + +
i 1!h 2!h 2
(10.3.22)
k fi
+ ( x − xi )( x − xi −1 ) ( x − xi −k +1 )] dx .
k! h k
246
Dacă în relaţia (10.3.22) se face schimbarea de variabilă u = ( x − xi ) / h , se
obţine relaţia (10.3.16’)
Din formula (10.3.16’) sau cazurile particulare ale acesteia, prezentate în
relaţiile (10.3.17), (10.3.18), (10.3.19), (10.3.20, se observă ca metoda Adams
nu se autoporneşte. În acest caz, este necesară utilizarea unei alte metode (Euler,
Runge-Kutta, etc.) pentru determinarea soluţiei aproximative pentru primele
puncte, după care se aplică metoda Adams.
PROCEDURE ADAMS(FCT:PROC11;RUNGEKT4:PROC13;X0,Y0,H:REAL;
NP:INTEGER;VAR Y:VECTOR1;VAR KOD:INTEGER);
Exemplu de calcul
Rezolvare
Tabelul 10.3.1
PROGRAM INTEGRAREA_ECUATIEI_DIFERENTIALE;
{FOLOSIREA METODEI EULER IMBUNATATITA}
USES CRT,METODNUM;
VAR Y,Y1:VECTOR1;
VAR I,J,ITER,NP,KOD:INTEGER;
VAR X,X0,Y0,H,EPS:REAL;
F:TEXT;
{$F+}
PROCEDURE FCT(X,Y:REAL;VAR F:REAL;VAR KOD:INTEGER);
BEGIN
KOD:=0;
IF X <= 1.E-12 THEN
BEGIN
KOD:=1;
EXIT;
END
ELSE
F:=2*Y/X+X*X*EXP(X);
END;
{$F-}
BEGIN
ASSIGN(F,'ECUATDIF.DAT');
REWRITE(F);
CLRSCR;
NP:=11;
X0:=1;
Y0:=0;
H:=0.2;
ADAMS(FCT,RUNGEKT4,X0,Y0,H,NP,Y,KOD);
WRITELN( 'NR.NOD X Y_ANALITIC Y_NUMERIC');
WRITELN(F, 'NR.NOD X Y_ANALITIC Y_NUMERIC');
FOR I:=1 TO NP DO
BEGIN
X:=X0+(I-1)*H;
Y1[I]:=X*X*(EXP(X)-EXP(1));
WRITELN(I:4,X:13:6,Y1[I]:13:6,Y[I]:13:6);
248
WRITELN(F,I:4,X:13:6,Y1[I]:13:6,Y[I]:13:6);
READLN;
END;
CLOSE(F);
END.
Tabelul 10.3.2
NR.NOD X Y_ANALITIC Y_NUMERIC
1 1.000000 0.000000 0.000000
2 1.200000 0.866643 0.866379
3 1.400000 2.620360 2.619741
4 1.600000 5.720962 5.719895
5 1.800000 10.793625 10.776043
6 2.000000 18.683097 18.635756
7 2.200000 30.524581 30.437082
8 2.400000 47.836193 47.693465
9 2.600000 72.639284 72.421054
10 2.800000 107.614701 107.296094
11 3.000000 156.305296 155.855295
yip+1 = yi + hf ( xi , yi ) , i = 0, n − 1 . (10.3.24)
h
yic+1 = yi + [ f ( xi , yi ) + f ( xi +1 , yip+1 )] , i = 0, n − 1. (10.3.25)
2
Algoritmul metodei este, deci:
PROCEDURE EULERPC(FCT:PROC11;X0,Y0,H,EPS:REAL;NP,ITER:INTEGER;VAR
Y:VECTOR1;VAR KOD:INTEGER);
Exemplu de calcul
Rezolvare
Tabelul 10.3.3
PROGRAM INTEGRAREA_ECUATIEI_DIFERENTIALE;
{FOLOSIREA METODEI PREDICTOR-CORECTOR EULER IMBUNATATITA}
USES CRT,METODNUM;
VAR Y,Y1:VECTOR1;
VAR I,J,NP,KOD,ITER:INTEGER;
VAR X,X0,Y0,H,EPS:REAL;
F:TEXT;
{$F+}
PROCEDURE FCT(X,Y:REAL;VAR F:REAL;VAR KOD:INTEGER);
BEGIN
KOD:=0;
IF X <= 1.E-12 THEN
BEGIN
KOD:=1;
EXIT;
END
ELSE
F:=2*Y/X+X*X*EXP(X);
END;
{$F-}
BEGIN
ASSIGN(F,'ECUATDIF.DAT');
REWRITE(F);
CLRSCR;
NP:=11;
X0:=1;
Y0:=0;
H:=0.2;
EPS:=0.000001;
ITER:=20;
EULERPC(FCT,X0,Y0,H,EPS,NP,ITER,Y,KOD);
WRITELN( 'NR.NOD X Y_ANALITIC Y_NUMERIC');
WRITELN(F, 'NR.NOD X Y_ANALITIC Y_NUMERIC');
FOR I:=1 TO NP DO
BEGIN
X:=X0+(I-1)*H;
Y1[I]:=X*X*(EXP(X)-EXP(1));
WRITELN(I:4,X:13:6,Y1[I]:13:6,Y[I]:13:6);
WRITELN(F,I:4,X:13:6,Y1[I]:13:6,Y[I]:13:6);
READLN;
END;
CLOSE(F);
END.
xi +1 f i +1 2 f i +1
yic+1 = yi + x [ f i +1 + ( x − xi +1 ) + ( x − xi +1 )( x − xi ) + +
i 1!h 2!h 2
k f i +1
+ ( x − xi +1 )( x − xi ) ( x − xi −k + 2 )] dx .
k! h k
(10.3.27)
În relaţia (10.3.27) se face schimbarea de variabilă u = ( x − xi +1 ) / h , se
integrează şi se obţine:
1 1 1 1 4
yic+1 = yi + h[( f i +1 − f i +1 − 2 f i +1 − 3 f i +1 − f i +1 + ) .
2 12 24 720
(10.3.28)
Folosind expresiile diferenţelor regresive
f i +1 = f i +1 − f i ;
2 f i +1 = f i +1 − 2 f i + f i −1 ;
3 f i +1 = f i +1 − 3 f i + 3 f i −1 − f i −2 ;
............
şi particularizând relaţia (10.3.28) pentru diferiţi k, se obţine:
h
k = 1, yic+1 = yi + ( f i +1 + f i ) , i = 1, n ; (10.3.29)
2
252
h
k = 2, yic+1 = yi + (3 f i +1 + 8 f i − f i −1 ) , i = 2, n ; (10.3.30)
12
h
k = 3, yic+1 = yi + (9 f i +1 + 19 f i − 5 f i −1 + f i −2 ) , i = 3, n ; (10.3.31)
24
h
k = 4, yic+1 = yi + (269 f i +1 + 574 f i − 156 f i −1 + 34 f i −2 − f i −3 ) , (10.3.32)
720
i = 4, n ,
ş.a.m.d,
unde f i +1 = f ( xi +1 , y ip+1 ) .
Exemplu de calcul
Exemplu de calcul
Rezolvare
Tabelul 10.3.6
NR.NOD X Y_ANALITIC Y_NUMERIC
1 1.000000 0.000000 0.000000
2 1.200000 0.866643 0.866379
3 1.400000 2.620360 2.619741
4 1.600000 5.720962 5.719895
5 1.800000 10.793625 10.793244
6 2.000000 18.683097 18.682692
7 2.200000 30.524581 30.525266
8 2.400000 47.836193 47.837508
9 2.600000 72.639284 72.642420
10 2.800000 107.614701 107.619494
11 3.000000 156.305296 156.313128