Documente Academic
Documente Profesional
Documente Cultură
Una dintre cele mai des aplicate implementri ale calculului numeric este calcularea
integralei definite prin metode aproximative. Metodele directe nu ntotdeauna permit calculul
analitic al integralei, i, de multe ori formula care definete funcia ce trebuie integrat nici nu
este cunoscut. De obicei sunt date doar o serie de puncte n care este cunoscut valoarea
funciei. n aceste cazuri integrala poate fi calculat doar prin metode aproximative (n
presupunerea c funcia de sub integral este continu pe segmentul pe care se face integrarea).
Din cursul de analiz matematic se tie, c sensul geometric al integralei definite este
aria trapezului curbiliniu, determinat de axa 0X, dreptele y = a i y = b, i graficul funciei f(x) pe
segmentul [a,b] (vezi fig. de mai jos)
y
f(x)
0 a b x
f ( x)dx = F ( x) = F (b) F (a )
b
a
a
n unele cazuri este dificil de calculat primitiva i atunci sunt bine venite diferite metode
numerice, care aproximeaz funcia iniial f (x ) cu o funcie polinomial g (x) . Astfel integrala
se calculeaz cu aproximaie n jurul primitivei G (x) a funciei g (x) :
b b
a
f ( x )dx g ( x )dx = G ( x ) ba
a
(1)
y=f(x)
y0 y1 y2 y3
0 a=x0 x1 x2 x3 x4 =b x
ba
mprim segmentul [a, b] n n pri egale, h = , astfel nct a=x0<x1<<xn=b i pe fiecare
n
segment obinut construim un dreptunghi la care o latur este egal cu [xi, xi+1], iar alt latur cu
valoarea funciei f(xi).
Aria trapezului curbiliniu aproximativ este egal cu suma ariilor tuturor dreptunghiurilor.
Este evident c o latur [xi, xi+1] va fi egal cu h, iar alt latur a dreptunghiului este
valoarea funciei f(xi), i=0,1,..,n-1. n aa mod, obinem:
S = h * f ( x0) + h * f ( x1) + h * f ( x2) + ... + h * f ( xn 1) = h * ( f ( x0) + f ( x1) + f ( x2) + ... + f ( xn 1)) =
n 1
= h * f ( xi )
i =0
Program Dreptunghi_Stanga;
Uses Crt;
Function Fn(x:real):real;
Begin
fn:=Sin(x);
End;
Var a,b,h,x,s:real;
i,n:integer;
Begin
ClrScr;
Write('Introdu extremitile [a,b]: ');
ReadLn(a,b);
Write('Introdu numrul de diviziuni n= ');
ReadLn(n);
h:=(b-a)/n;
s:=0;x:=a;
For i:=0 To n-1 Do
Begin
s:=s+Fn(x);
x:=x+h;
End;
s:=s*h;
WriteLn('Integrala = ',s:12:10);
ReadKey
End.
y=f(x)
y1 y2 y3 y4
0 a=x0 x1 x2 x3 x4 =b x
Program Drept_Dreapta;
Uses Crt;
Function Fn(x:real):real;
Begin
fn:=Sin(x);
End;
Var a,b,h,x,s:real;
i,n:integer;
Begin
ClrScr;
Write('Introdu extremitile [a,b]: ');
ReadLn(a,b);
Write('Introdu numrul de diviziuni n= ');
ReadLn(n);
h:=(b-a)/n;
s:=0;
x:=a+h;
For i:=1 To n Do
Begin
s:=s+Fn(x);
x:=x+h;
End;
s:=s*h;
WriteLn('Integrala = ',s:12:10);
ReadKey
End.
Nota 1. Menionm c att pentru formula dreptunghiurilor de stnga, ct i pentru formula
h
dreptunghiurilor de dreapta eroarea se calculeaz conform relaiei Rn b a M 1 , unde
2
M 1 = max f ( x ) , a x b .
2
Exemplu. S se calculeze 1
x dx dup formula dreptunghiurilor de stnga, diviznd segmentul
x = h( f ( x 0 ) + f ( x1 ) + f ( x 2 ) + f ( x 3 ) + f ( x 4 ) + f ( x 5 ) + f ( x 6 ) + f ( x 7 ) + f ( x 8 ) + f ( x 9 ) ) =
1
= 0,1 (1 + 1,049 + 1,095 + 1,140 + 1,183 + 1, 225 + 1, 265 + 1,304 + 1,342 + 1,378) = 0,1 11,981 1,2 .
1 1
Apreciem eroarea. Aflm c f ' ( x ) = . Pe segmentul [1;2], max f ' ( x ) M 1 = pentru
2 x 2
h 0,1 1
x=1. Determinm Rn b a M 1 = 1 = 0,025 . Am obinut n aa fel c
2 2 2
2
1
x dx 1,2 0,025 .