curs 12

10
CURS 12 CURS 12 egrarea funcţiilor egrarea funcţiilor Metoda trapezelor Metoda trapezelor - functia de integrat este aproximata liniar

Upload: ponce

Post on 15-Jan-2016

44 views

Category:

Documents


0 download

DESCRIPTION

CURS 12. Integrarea funcţiilor. Metoda trapezelor - functia de integrat este aproximata liniar. //Metoda trapezelor #include #include float f (float x) { return x*x-exp(x); } float trapez( floa t (*p)(float), float a, float b, int n) { float h,vint; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CURS 12

CURS 12CURS 12Integrarea funcţiilorIntegrarea funcţiilorMetoda trapezelorMetoda trapezelor

- functia de integrat este aproximata liniar

Page 2: CURS 12
Page 3: CURS 12

//Metoda trapezelor#include <stdio.h>#include <math.h>float f (float x) { return x*x-exp(x); } float trapez( float (*p)(float), float a, float b, int n) { float h,vint; int i; h=(b-a)/(n-1); vint=((*p)(a)+(*p)(b))/2.0; for(i=2;i<=n-1;i++) vint+=(*p)(a+(i-1)*h); vint=h*vint; return vint; } int main() { int n; float li,ls,v; printf("Limita inferioara: "); scanf("%f",&li); printf("Limita superioara: "); scanf("%f",&ls); printf("Nr. puncte de integrare: "); scanf("%d",&n); v=trapez(f,li,ls,n); printf("Valoarea integralei este: %g",v); // Caz test: Functia: x*x-exp(x) cu limitele a=0, b=2 // valoarea exacta este: printf("\nCaz test: %f",11.0/3.0-exp(2.0)); while(!_kbhit()); return 0; }

Page 4: CURS 12
Page 5: CURS 12
Page 6: CURS 12

Metoda Metoda Simpson Simpson

-functia de integrat este aproximată cu un polinom de gradul 2 (parabolă) -polinomul aceleaşi valori ca şi f(x) la capetele intervalului de integrare şi în mijlocul acestuia,

adică pentru f(a), f(b) şi pentru f(q), unde q=(a+b)/2.

TrapezTrapez SimpsonSimpson

Page 7: CURS 12

Cum se calculeaza integrala functiei f?- se aproximeaza cu integrala polinomului

Page 8: CURS 12

(1)

(2)

(3)

(2)*4+(3)

Dar:

valoarea integralei se poate calcula evaluând funcţia f în 3 puncte: 0, h şi 2h.Nu trebuie determinati coeficientii polinomului de interpolare!

Page 9: CURS 12

1. Pentru un interval oarecare [a,b] se împarte intervalul [a,b] în m intervale şi se aplică formula fiecărui subinterval [x0,x2], [x2,x4], ...

2. Numărul de intervale m trebuie să fie par pentru a putea aplica formula parabolei definită de trei puncte care determină două intervale.

3. In intervalul [x0,x2] se va evalua valoarea funcţiei în punctele a, a+h şi a+2h, în intervalul [x2,x4] se va evalua valoarea funcţiei în punctele a+2h, a+3h şi a+4h, etc.

Page 10: CURS 12

//Metoda Simpson#include<stdio.h>#include<math.h>#include<conio.h>double f(double x) { return 4.5*cos(x/3)*cos(x/3)-x/4; }double simpson(double a, double b, int m, double (*)(double x)){ double h,s1,s2,I; int i; if(a==b) return 0; //cazul a=b m=2*m; // asigura ca nr. de intervale sa fie par h=(b-a)/m; // calculul lungimii intervalelor s1=0.0; s2=0.0; for(i=1;i<=m/2;i++) //calculul celor doua sume { s1+=f(a+(2*i-1)*h); if(i<m/2) s2+=f(a+2*i*h); } I=(h/3)*(f(a)+f(b)+4*s1+2*s2);return I;}int main() { double a,b,I; int m; a=0; b=10; printf("\nIntroduceti o valoare (para) pentru numarul de intervale m= "); scanf("%d",&m); I=simpson(a,b,m,f); printf("\n\t I=%12.10f\n",I); while(!_kbhit()); return 0;}

Cazuri test pentru metoda Simpson

m Valoarea integralei

4 11.2664452110 11.2628481720 11.2627658340 11.26276074

100 11.26276041