Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <time.h>
- #include <stdlib.h>
- #define PI 3.1415926359
- double fonction1(double x)
- {
- return x*x - 2;
- }
- double fonction2(double x){
- return sin(x) ;
- }
- double fonction3(double x){
- // 10x^4 + 5x^3 + x^2 + x
- return(10*x*x*x*x + 5*x*x*x + x*x + x);
- }
- double fonction4(double x){
- int j;
- double somme = 0 ;
- for (j=1 ; j<=10 ; j=j+1){
- somme = somme + cos((440+40*(j-1))*x) ;
- }
- return(somme) ;
- }
- double trapezes(double f(double), int nbIntervalles, double a, double b)
- {
- double h, resultat ;
- int i ;
- resultat = 0 ;
- h = (b-a)/nbIntervalles ;
- for (i = 1; i < nbIntervalles ; i = i+1) {
- resultat = resultat + f(a + i*h) ;
- }
- resultat = h*((f(a) + f(b))/2 + resultat) ;
- return resultat;
- }
- void exoTrapezes()
- {
- double resultat;
- printf("\nTRAPEZES: \n");
- resultat = trapezes(fonction1,10, 0, 6);
- printf("resultat 1: %lf\n", resultat);
- resultat = trapezes(fonction2,10, 0, 1);
- printf("resultat 2: %lf\n", resultat);
- resultat = trapezes(fonction3,10, 0, 5);
- printf("resultat 3: %lf\n", resultat);
- resultat = trapezes(fonction2,10, (PI)/2, (3*PI)/2);
- printf("resultat 4: %lf\n", resultat);
- resultat = trapezes(fonction4,10, 0, PI);
- printf("resultat 5: %lf\n", resultat);
- }
- double simpson(double f(double), int nbIntervalles, double a, double b)
- {
- int i;
- double h, x, res1, res2;
- nbIntervalles = nbIntervalles * 2;
- h = (b - a) / nbIntervalles;
- res1 = 0;
- res2 = 0;
- for(i = 1; i < nbIntervalles; ++i)
- {
- x = a + i*h;
- if(i % 2 == 0)
- {
- res1 = res1 + f(x);
- }
- else
- {
- res2 = res2 + f(x);
- }
- }
- return (f(a) + f(b) + 2*res1 + 4*res2) * h/3;
- }
- void exoSimpson()
- {
- double resultat;
- printf("\nSIMPSON : \n");
- resultat = simpson(fonction1,10, 0, 6);
- printf("resultat 1: %lf\n", resultat);
- resultat = simpson(fonction2,10, 0, 1);
- printf("resultat 2: %lf\n", resultat);
- resultat = simpson(fonction3,10, 0, 5);
- printf("resultat 3: %lf\n", resultat);
- resultat = simpson(fonction2,10, (PI)/2, (3*PI)/2);
- printf("resultat 4: %lf\n", resultat);
- resultat = simpson(fonction4,10, 0, PI);
- printf("resultat 5: %lf\n", resultat);
- }
- double quadraGauss(double f(double), double a, double b)
- {
- double alpha, beta, c;
- alpha = (b-a) / 2;
- beta = (a+b) / 2;
- c = sqrt(3./5);
- return ((5*f(-alpha*c + beta) + 8*f(beta) + 5*f(alpha*c + beta)) / 9) * alpha;
- }
- void exoQuadraGauss()
- {
- double resultat;
- printf("\nQUADRA GAUSS : \n");
- resultat = quadraGauss(fonction1, 0, 6);
- printf("resultat 1: %lf\n", resultat);
- resultat = quadraGauss(fonction2, 0, 1);
- printf("resultat 2: %lf\n", resultat);
- resultat = quadraGauss(fonction3, 0, 5);
- printf("resultat 3: %lf\n", resultat);
- resultat = quadraGauss(fonction2, (PI)/2, (3*PI)/2);
- printf("resultat 4: %lf\n", resultat);
- resultat = quadraGauss(fonction4, 0, PI);
- printf("resultat 5: %lf\n", resultat);
- }
- double monteCarlo(double f(double), int n, double a, double b)
- {
- int i;
- double res, u, x;
- srand(time(NULL));
- res = 0;
- for(i = 0; i < n; ++i)
- {
- u = rand();
- u /= RAND_MAX;
- x = a + u*(b-a);
- res += f(x);
- }
- res = res * (b-a) / n;
- return res;
- }
- void exoMonteCarlo()
- {
- double resultat;
- printf("\nMONTE CARLO : \n");
- resultat = monteCarlo(fonction1,1e6, 0, 6);
- printf("resultat 1: %lf\n", resultat);
- resultat = monteCarlo(fonction2,1e6, 0, 1);
- printf("resultat 2: %lf\n", resultat);
- resultat = monteCarlo(fonction3,1e6, 0, 5);
- printf("resultat 3: %lf\n", resultat);
- resultat = monteCarlo(fonction2,1e6, (PI)/2, (3*PI)/2);
- printf("resultat 4: %lf\n", resultat);
- resultat = monteCarlo(fonction4,1e6, 0, PI);
- printf("resultat 5: %lf\n", resultat);
- }
- int main()
- {
- exoTrapezes();
- printf("\n");
- exoSimpson();
- printf("\n");
- exoQuadraGauss();
- printf("\n");
- exoMonteCarlo();
- printf("\n");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement