1 / 10

CURS 12

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

ponce
Télécharger la présentation

CURS 12

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CURS 12 Integrarea funcţiilor Metoda trapezelor - functia de integrat este aproximata liniar

  2. //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; }

  3. Metoda 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. Simpson Trapez

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

  5. (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!

  6. 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.

  7. //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

More Related