Sunteți pe pagina 1din 7

 Carmen-Sanda Georgescu, Tudor Petrovici, Radu Popa

Metode numerice. Fisa de laborator nr. 5:


INTEGRAREA NUMERICĂ. INTEGRAREA NUMERICĂ CU
NODURI ECHIDISTANTE. INTEGRAREA NUMERICĂ CU
NODURI INEGAL DISTANŢATE

3. INTEGRAREA NUMERICĂ

Formulele de integrare numerică se mai numesc formule de cuadratură numerică. Acestea se


clasifică în două grupe mari şi anume:
¾ formule Newton-Côtes, care utilizează valori ale funcţiei de integrat în noduri xk echidistante pe
domeniul de integrare;
¾ formule de cuadratură Gauss, care folosesc noduri inegal distanţate, determinate pe baza anumitor
proprietăţi ale polinoamelor ortogonale.

3.1. INTEGRAREA NUMERICĂ CU NODURI ECHIDISTANTE.


FORMULE NEWTON-CÔTES

Fie funcţia f (x ) , dată tabelar într-un număr de (n + 1) puncte, sub forma:

xk x0 x1 ... xn
yk = f(xk) y0 y1 ... yn

unde x0 = a < x1 < ... < xn-1 < xn = b sunt noduri echidistante în intervalul [a; b] . Pasul de discretizare (în
ipoteza că discretizarea intervalului [a; b] se efectuează cu pas constant) se calculează cu relaţia:
b−a
h= = xk − xk −1 , unde k = 1, n . (5.1)
n
O modalitate simplă de calcul aproximativ al integralei
b
I = f ( x ) dx
∫ (5.2)
a

constă în găsirea unei funcţii care să aproximeze satisfăcător pe f (x ) şi să fie uşor de integrat. Deoarece se
presupune că funcţia f (x ) se calculează, sau este cunoscută doar în nodurile xk, apare ca logică alegerea unui
polinom de interpolare.

3.1.1. METODA TRAPEZELOR

În această metodă, formula utilizată pentru calcul aproximativ al integralei I se numeşte regula
extinsă a trapezelor:
xn =b
h
I= ∫ f ( x ) dx ≅ 2 ( y
x a
0 + 2 y1 + 2 y 2 + ... + 2 y n −1 + y n ) , (5.3)
0=

cu a, b ∈ R şi f (x ) ≠ 0 pe [a; b] .
Pentru evidenţierea influenţei numărului de intervale n, se subliniază că eroarea de aproximare este
de ordinul O(1/n2). Conform relaţiei (5.3), dacă f (x ) ≥ 0 pe [a; b] , integrala I este reprezentată geometric de
către aria cuprinsă între curba y = f (x ) şi axa absciselor, între abscisele x0 = a şi xn = b, fiind aproximată
prin suma ariilor trapezelor de înălţime constantă h. Dacă discretizarea intervalului [a; b] este suficient de
fină, atunci valoarea calculată cu regula trapezelor se aproprie cu ordinul O(1/n2) de valoarea exactă a
integralei I.
Exemplul 1 Ö Integrarea numerică prin metoda trapezelor
Fie funcţia f (x ) = 1 + x + 0,4 x 2 − 0,1 x 3 , cu x ∈ [0; 4] . Folosind metoda trapezelor, evaluaţi numeric
4
integrala I = ∫ f (x ) dx , pentru 4, 8, 16 paşi pe domeniul de integrare (adică n = {4; 8; 16} în relaţia (5.1)).
0

Rezolvare: Fie diviziunea echidistantă a intervalului [0;4] de pas h=1, deci x0=0, x1=1, x2=2, x3=3, x4=4.
Atunci I = (1 2)( f (0 ) + 2 f (1) + 2 f (2) + 2 f (3) + f (4)) = 12.35 . Dacă vom lua o diviziune echidistantă a
intervalului [0;4] de pas h=1/2, apoi de pas h=1/4, obţinem pentru I o valoare de 14.1, respectiv de 14.125
(valoarea exactă a integralei este Iex = 14.133)
Algoritm:
1. Informaţia iniţială: Scrie funcţia y = f(x) şi citeşte extremităţile intervalului de integrare a şi b, numărul de
subintervale n ale diviziunii lui [a;b]; Calculează pasul h ← (b-a)/n şi valorile xk: x ← a:h:b
2. Pentru i = 2:(n-1), calculează suma următoare: s1 ← ∑f(xi)
3. Calculează integrala (notată Ia) cu formula (5.3): Ia ← h*(f(a)+f(b))/2+h*s1
Program GNU Octave pentru determinarea integralei din f (x ) între a şi b (pentru Exemplul 1, cu 500 de
subintervale)
octave#1>function y = f(x)
y = 1 + x + 0.4*x.^2 - 0.1*x.^3;
endfunction
octave#2>a=0; b=4; n=500; h=(b-a)/n; x=a:h:b; lg=length(x);
octave#3>s1 = dot(x(2:lg-1),f(x(2:lg-1)))
octave#4>Ia = s1*h + h*(f(x(1))+f(x(lg)))/2

Programul returnează valoarea I = 14.133 (identică cu valoarea exactă).

Ö Observaţie importantă: Este posibil ca domeniul de integrare să fie discretizat cu paşi inegali:
(xk − xk −1 ) pentru k = 1, n . În acest caz, aria definită de integrala I poate fi aproximată prin suma ariilor
trapezelor de înălţime variabilă (xk − xk −1 ) , sub forma:
xn =b
(x1 − x0 )( y0 + y1 ) + (x2 − x1 )( y1 + y 2 ) + ... + (xn − xn−1 )( y n−1 + y n ) .
I= ∫ f ( x ) dx ≅
x a
2 2 2
(5.4)
0=

Formula (5.4) reprezintă regula extinsă a trapezelor pentru noduri xk inegal distaţate ( k = 0, n ). Dacă
funcţia este dată tabelar prin vectorii x = [x1 x2 . . . xn] cu pas variabil şi y = [y1 y2 . . . yn], atunci un program
GNU Octave pentru calculul integralei din y(x) între x = x1 şi x = xn se poate scrie astfel (conform formulei
(5.4):
octave#1> df = diff(x);
octave#2>for i=1:(n-1)
z(i) = y(i)+y(i+1);
endfor
octave#3>integrala =dot(df,z)/2

Ö Notă: Formulele de integrare numerică (5.3) şi (5.4), care utilizează valorile funcţiei din noduri
plasate pe întregul domeniu de integrare, se numesc formule de formă închisă.
Integralele improprii convergente pot fi calculate cu formule Newton-Côtes, de formă deschisă
sau semi-deschisă. Când valorile funcţiei la capetele intervalului sunt greu de determinat, ori atunci când în
x0 = a şi/sau xn = b apar singularităţi ale funcţiei, se recomandă efectuarea integrării numerice pe baza
formulelor de formă deschisă, care utilizează numai nodurile din interiorul intervalului, anume [x1, x2, ... ,
xn-1], capetele x0 şi xn fiind excluse (se subliniază că intervalul [x0; xn] este discretizat cu pas constant).
Există şi formule de formă semi-deschisă, care utilizează nodurile din interior şi unul din capetele
intervalului.
De exemplu, formula de formă deschisă a regulii extinse a trapezelor este:
xn =b
h
I= ∫ f (x ) dx ≅ (3 y 1 + 2 y 2 + 2 y 3 + ... + 2 y n −2 + 3 y n −1 ) , (5.5)
x =a
2
0
respectiv formula de formă semi-deschisă a regulii extinse a trapezelor (închisă la stânga şi deschisă la
dreapta intervalului) este:
xn =b
h
I= ∫ f ( x ) dx ≅ 2 ( y
x =a
0 + 2 y1 + 2 y 2 + ... + 2 y n −2 + 3 y n −1 ) . (5.6)
0

Exemplul 2 Ö Integrarea numerică prin metoda trapezelor: integrală improprie de speţa I-a
∞ ∞
x
Fie funcţia f ( x ) = x e . Să se calculeze integrala I =
x
∫ f (x ) dx = ∫ e x dx , folosind metoda
1 1
trapezelor.
Rezolvare: Cu schimbarea de variabilă x = 1 u , integrala improprie de speţa I-a se transformă într-o
1 1
1 1
integrală improprie de speţa a II-a, anume integrala din funcţia g(u) între 0 şi 1: I = g (u ) du = ∫ ∫u 3 1u
du ,
0 0
e
unde g(u) → ∞ pentru u → 0. Pentru determinarea integralei, vom aplica o formula de tip (5.6), semi-
deschisă la stânga şi închisă la dreapta. Astfel, dacă vom considera o discretizare a intervalului [0;1],
echidistantă de pas 0.01 (adică n = 100), programul de calcul GNU Octave se scrie:
octave#1>function y = f(x)
y = (1./x.^3)./exp(1./x);
endfunction
octave#2>a=0; b=1; n=100; h=(b-a)/n; x=a:h:b; lg= length(x);
octave#3>s1 = dot(x(3:lg-1),f(x(3:lg-1)))
octave#4>Ia = s1*h + h*(3*f(x(2))+f(x(lg)))/2

3.1.2. METODA SIMPSON

Dacă se admite n par, adică un număr par de intervale pe domeniul [a; b] , respectiv un număr
impar de noduri echidistante pe domeniu, atunci se obţine:
xn =b n par
h
I= ∫ f ( x ) dx ≅ 3 ( y
x =0
0 + 4 y1 + 2 y 2 + 4 y 3 + ... + 2 y n − 2 + 4 y n −1 + y n ) . (5.7)
0
Formula (5.75) se numeşte regula lui Simpson extinsă. Eroarea de aproximare a integralei este de ordinul
O(1/n4), fiind astfel mai mică decât eroarea corespunzătoare metodei trapezelor.
Pentru cazul integrării cu doi paşi pe domeniul de integrare (n = 2 ) , deci pentru 3 noduri
echidistante, formula (5.7) se reduce la:
x2 =b
h
I= ∫ f ( x ) dx ≅ 3 ( y
x =a
0 + 4 y1 + y 2 ) , (5.8)
0
numită regula lui Simpson, sau regula 1/3 a lui Simpson. Datorită simetriei stânga-dreapta a formulei în
trei noduri (5.8), aceasta este exactă pentru funcţii polinomiale f(x) de grad ≤ 3.

Exemplul 3 Ö Integrarea numerică prin metoda lui Simpson


π2
Să se calculeze o valoare aproximativă a integralei I = ∫
π6
sin x dx , folosind formula (5.8) cu trei

noduri (x0 = π/6, x1 = π/3, x2 = π/2).


Rezolvare: I = (π/18)[sin(π/6) + 4(sin(π/3) + (sin(π/2)] = 0.86201. Valoarea exactă a integralei este
0.86603. Eroarea absolută este: ε x = 0.0040154 .
Algoritm pentru metoda Simpson (regula lui Simpson extinsă):
1. Informaţia iniţială: Scrie funcţia y = f(x) şi citeste extremităţile intervalului de integrare a şi b, numărul natural
m (diviziunea lui [a;b] va avea 2*m subintervale); Calculează pasul h ← (b-a)/(2*m)
2. Pentru k = 1:m, calculează: x ← a+h*(2*k-1); s1 ← s1+f(x)
3. Pentru k = 1:m-1, calculează: x ← a+h*2*k; s2 ← s2+f(x)
4. Calculează integrala (notată Ia) cu formula (5.7): Ia ← h*(f(a)+4*s1+2*s2+f(b))/3
Program de calcul pentru metoda Simpson, în GNU Octave:
octave#1> function s = simpson(f,a,b,m)
h=(b-a)/(2*m);
s1=0;
s2=0;
for k=1:m
x=a+h*(2*k-1);
s1=s1+f(x);
endfor
for k=1:(m-1)
x=a+h*2*k;
s2=s2+f(x);
endfor
s = h*(f(a)+4*s1+2*s2+f(b))/3;
endfunction

3.2. INTEGRAREA NUMERICĂ CU NODURI INEGAL DISTANŢATE

3.2.1. FORMULA DE CUADRATURĂ GAUSS-LEGENDRE

Domeniul x∈[a;b] se poate transforma în z∈[-1;1], cu schimbarea de variabilă:


2 x − (a + b )
z= , (5.9)
b−a
prin care f(x) devine F(z), astfel încât:
b
f ( x ) dx =
(b − a ) 1 F (z ) dz .
I= ∫
a
2 ∫
−1
(5.10)

Formula de cuadratură Gauss-Legendre se scrie


1 n

∫ F ( z ) dz = ∑ w F (z ) ,
i =0
i i (5.11)
−1

unde wi sunt coeficienţi de pondere, iar cele (n+1) noduri de integrare zi , i = 0, n sunt rădăcinile
polinomului Legendre de ordinul (n+1) (vezi Anexa). Utilizând (5.11), integrala I (5.10) devine:
b
(b − a)
1
(b − a ) n
I= ∫ f (x ) dx =
2
F ( z ) dz =
∫ 2
∑ w F (z ) .
i =0
i i (5.12)
a −1
În tabelul 5.1. sunt indicate nodurile de integrare zi şi coeficienţii de pondere wi corespunzători, pentru
un număr de intervale n = 1; 2; 3, corespunzând unor formule cu (n+1) = 2; 3; 4 noduri pe interval.

Tabelul 5.1. − Nodurile de integrare zi şi coeficienţii de pondere wi


zi pentru i = 0, n n wi pentru i = 0, n
n=1
± 0.577350269 (adică ± 1 3 ) 1.0
n=2
0.0 0.888888889
± 0.774596669 0.555555556
n=3
± 0.339981044 0.652145155
± 0.861136312 0.347854845

Pentru n = 1, se obţine formula de cuadratură Gauss-Legendre cu două noduri:


1 1
 1   1 
∫ ∑
F ( z ) dz = wi F (zi ) = F  −
i =0 
 + F 
3  3
 . (5.13)
−1
Formula (5.13) este interesantă, deoarece prin simpla adunare a valorilor funcţiei F(zi) în doar două
noduri, z 0 = − 1 3 şi z1 = 1 3 , se obţine o estimare exactă a integralei unei funcţii F(z), cu z∈[-1; 1], deci
a unei funcţii f(x), de grad mai mic sau egal cu 3.

Exemplul 4 Ö Integrarea numerică cu formula de cuadratură Gauss-Legendre cu două noduri


Să se rezolve integrala din Exemplul 3, folosind formula de cuadratură Gauss-Legendre cu două
noduri.
Indicaţie: Se face schimbarea de variabilă z = (6x − 3π ) π , deci dx = (π 3) dz şi rezultă integrala:
I = (π/6) [sin((π*z0+3*π)/6) + sin((π*z1+3*π)/6)] cu z 0 = − 1 3 şi z1 = 1 3 din formula (5.13).
Rezultă: I = 0.99971. Valoarea exactă a integralei este 0.86603.

3.2.2. FORMULA DE CUADRATURĂ GAUSS-CEBÎŞEV

Formula de cuadratură Gauss-Cebîşev se aplică pentru integrale de forma:


1 n
1
∫ 1− z2
F (z ) dz = ∑ w F (z ) ,
i =0
i i (5.14)
−1
unde cele (n+1) valori zi ale nodurilor de integrare:
 (2i + 1) π 
zi = cos , i = 0, n (5.15)
 (n + 1) 2 
sunt rădăcinile polinomului Cebîşev Tn+1(z). Coeficienţii de pondere wi sunt egali între ei şi egali cu
π/(n+1), astfel încât formula de cuadratură Gauss-Cebîşev (5.14) se scrie:
1 n
1 π
∫ 1− z2
F ( z ) dz = ∑ F (z ) .
(n + 1) i=0 i
(5.16)
−1
b b
1
Orice integrală de forma ∫ f ( x ) dx , sau
f (x ) dx , unde a şi b sunt finite, poate fi adusă la

2
a 1 − x a
forma (5.14), printr-o transformare convenabilă de variabilă.

Exemplul 5 Ö Integrarea numerică cu formula de cuadratură Gauss-Cebîşev


2

∫( )
Să se calculeze integrala I = 16 x 2 − 50 x + 40 dx , folosind o formulă de cuadratură de tip Gauss-
1
Cebîşev cu 3 noduri (n = 2 ) pe domeniul z∈[-1;1]. Determinaţi eroarea relativă procentuală faţă de valoarea
exactă a integralei: ε rx = 100 (Iexact − Inumeric ) Iexact [%], dacă Iexact = 2.3333.
Rezolvare: Se observă că integrala din Exemplul 5 nu este de forma (5.14), deci pentru a o aduce la acea
formă, se va înmulţi şi împărţi integrandul cu 1 − z 2 . Se parcurg următorii paşi:
Pasul 1: Se face schimbarea de variabilă z ← x şi schimbarea domeniului de integrare [-1; 1] ← [a; b];
Pasul 2: Se determină funcţiile F(z) ← f(x) şi ψ(z ) ← F (z ) 1 − z 2 ;
 (2i + 1) π 
Pasul 3: Se calculează nodurile de integrare z i = cos , i = 0,2 ;
 (n + 1) 2 
1 n
1 π
Pasul 4: Se aplică formula (5.16) pentru cazul considerat: ∫ 1− z2
ψ ( z ) dz = ∑ψ( z ) , unde n = 2 .
(n + 1) i =0 i
−1
Astfel, pentru n oarecare rezultă:
b
f ( x ) dx =
(b − a)
1
(b − a)
1
1− z2 (b − a)
1
1
I= ∫
a
2 ∫ F ( z ) dz =
−1
∫2 −1 1− z2
F ( z ) dz =
2 ∫
−1 1− z2
ψ ( z ) dz =

(b − a ) π n
=
2
∑ ψ(z )
(n + 1) i=0 i
(5.17)

Pentru cazul concret al Exemplului 5, cu n = 2 , rezultă:


2
2 1 1 1 1 (1 − z − 4 z 2 ) 1 − z 2 π
I= ∫
1
(16 x 2 − 50 x + 40) dx =
2 ∫
−1
(1 − z − 4 z 2 ) dz =
2 ∫−1
1− z2
dz =
6
∑ (1 − z
i =0
i − 4 z i2 ) 1 − z i2 = 2.618 .

APLICAŢII DE LABORATOR

11
x2
Problema 1 Ö Evaluaţi numeric integrala I =
1
∫ 1 + ln x
dx , atât prin metoda trapezelor, cât şi prin metoda

Simpson, pentru un număr n ∈ {4; 8} de subintervale pe domeniul de integrare.


Folosind un program de calcul, evaluaţi numeric integrala, atât cu metoda trapezelor (vezi programul
de la Exemplul 1 sau funcţia GNU Octave trapz), cât şi cu metoda lui Simpson (vezi programul de la
Exemplul 3 sau funcţia GNU Octave quad), considerând 1000 de subintervale. Pentru fiecare caz,
determinaţi eroarea relativă în raport cu valoarea exactă a integralei: Iex = 146.795.

Help pentru metoda trapezelor: utilizarea funcţiei GNU Octave trapz


Această funcţie calculează integrala numerică folosind metoda trapezelor. Dacă x şi y sunt vectori de aceeaşi
dimensiune (unde x trebuie sa aibă valori crescătoare), I = trapz(x,y) calculează integrala de la x0 la xn din
funcţia tabulată y = f(x). Dacă x este omis, atunci el este asignat automat ca fiind un vector cu componente
egal distanţate.

Aplicarea funcţiei trapz corespunde următoarelor secvenţe de program GNU Octave:


# Pentru n = 1000, rezulta:
octave:1>n=1000; a=1; b=11; h=(b-a)/n; x=1:h:11; y=x.^2./(1+log(x)); I = trapz(x,y)

Help pentru metoda Simpson: utilizarea funcţiei GNU Octave quad


Intrări: f = funcţia integrand y = f(x); a şi b sunt limitele de integrare; ead = eroarea admisă (se foloseşte
când se doreşte o altă precizie decât cea implicitâ); si = vector care conţine singularităţile (dacă există). Se
menţionează că a şi b pot lua şi valori infinite (integrale improprii). La intrare, se mai poate folosi optional şi
quad_options, ca set de parametri pentru quad.
Ieşiri: v = rezultatul integrării; ier = cod de validare a integrării (este un număr intreg: 0 indică validarea
integrării cu succes); nfun = indică câte evaluări au fost necesare; err = indică estimarea erorii.

Aplicarea funcţiei quad corespunde următoarelor secvenţe de program GNU Octave:


octave:1>function y = f(x), y=x.^2./(1+log(x)); endfunction
# Pentru n = 1000, rezulta:
octave:2>n=1000; a=1; b=11; h=(b-a)/n; x=1:h:11;
octave:3>[v, ier, nfun, err] = quad('f',a,b)
Observaţie: Integrandul poate fi introdus şi direct în funcţia quad. De exemplu, pentru y = sin(x), cu x de la
π/6 la π/2 (fără specificarea pasului după x), se scrie:
octave:4>integrala = quad('sin',pi/6,pi/2) # aici rezultă valoarea 0.86603.
11
x2
Problema 2 Ö Evaluaţi numeric integrala I = ∫
1
1 + ln x
dx , atât prin metoda Gauss-Legendre cu 2 noduri,

cât şi prin metoda Gauss-Cebîşev cu 3 noduri. Notă: În GNU Octave, pentru metoda Gauss-Cebîşev se
foloseşte funcţia quadc.

∫e
cos x
Problema 3 Ö Calculaţi valoarea aproximativă a integralei I = dx , folosind metoda Simpson, cu
−π
n = 8 paşi pe domeniul de integrare şi metoda Gauss-Legendre cu 3 noduri.
Program GNU Octave (se vor utiliza funcţiile GNU Octave gquad şi gquad6):
octave:1>function y = f(x), y = exp(cos(x)); endfunction
# Folosim functia Octave gquad cu 3 puncte de integrare Gauss
octave:2>[bp,wf]=grule(3); i1=gquad("f",-pi,pi,1,bp,wf)
# Folosim functia Octave gquad6 cu 6 puncte de integrare Gauss
octave:3>i2=gquad6("f",-pi,pi,1)