Documente Academic
Documente Profesional
Documente Cultură
Fie o func ie f : [a ,b] → R i F(x) o primitiv a sa. Atât f(x) cât i F(x) sunt func ii
continue. Conform formulei Newton-Leibnitz:
b b
∫ f ( x )dx = F ( x ) = F( b ) − F( a )
, (9.1)
a a
În cele mai multe cazuri este foarte greu uneori chiar imposibil de determinat forma
primitivei F(x). Integrala (9.1) se poate calcula cu aproxima ie folosind metodele
numerice prin care se aproximeaz func ia f(x) definit pe intervalul [a, b] cu o func ie
g(x) astfel încât:
b b
∫ g( x )dx = ∫ ∑ ak qk ( x ) dx = ∑ ∫ ak qk ( x ) dx = ∑ ak ∫ qk ( x ) dx
a a k =1 k =1 a k =1 a
b n b (9.5)
deci ∫ g( x )dx = ∑ ak I k , I k = ∫ q k ( x )dx
a k =1 a
b
1
METODE NUMERICE
y=f(x) Func ii
spline
yi+1
yi+1
yi
O
xi xi+1 xi+2 x
Fig.7.1.1
În general pentru aproximarea func iei f(x) se utilizeaz diferite polinoame de
interpolare (preferându-se polinoame de grad mic, de obicei func ii spline continue de
gradul I sau II - fig. 9.1) i un num r cât mai mare de subintervale.
Polinomul de interpolare Lagrange Ln(x) are expresia:
( −1 )n−i q [n+1]
n
g ( x ) = Ln ( x ) = ∑ yi (9.7)
i =0 i! ( n − i )! ( q − i )
b b b
∫ f ( x )dx ≈ ∫ g ( x )dx = ∫ Ln ( x ) dx
a a a
( −1 ) n−i q [n +1]
b n n (9.9)
∫ f ( x )dx ≅ ∫ ∑
y i hdq
a 0 i =0
i! ( n − i )! ( q − i )
2
METODE NUMERICE
1 ( − 1 ) n −i y i q [n+1]
b n n
Aplica iile formulei de integrare aproximativ Newton Cotes pentru diferite diviziuni
ale intervalului [a, b] sunt:
1 ⋅1!⋅0! ∫0 q − 1
H1 = dq = =
2 2
0
Înlocuind în rela ia (9.14) se ob ine formula trapezelor:
b
∫ f ( x )dx =
h
[y0 + y1 ] (9.16)
a
2
3
METODE NUMERICE
∫ f ( x )dx =
h
[y0 + 4 y1 + y2 ] (9.19)
a
3
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
double f(double x)
{
return (x*x+5);
}
4
METODE NUMERICE
for(i=1;i<=n-1;i++) sum=sum+h*f(ls+i*h);
return sum;
}
void main()
{
double ls,ld;
int n;
clrscr();
cout<<"Dati limita stanga ls = ";cin>>ls;
cout<<"Dati limita dreapta ld = ";cin>>ld;
cout<<"Dati numarul de puncte n = ";cin>>n;
cout<<"Valoarea integralei prin formula trapezelor este
"<<i_trapez(ls,ld,n)<<endl;
getch();
}
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
double f(double x)
{
return(x*x+5);
}
void main()
{
double ls,ld,h;
int n;
clrscr();
cout<<"Dati limita stanga ls = ";cin>>ls;
cout<<"Dati limita dreapta ld = ";cin>>ld;
cout<<"Dati numarul de puncte n = ";cin>>n;
cout<<"Valoarea integralei prin formula lui Simpson este
"<<i_simpson(ls,ld,n)<<endl;
getch();
}