Advertisement
paulogp

Método de Monte Carlo para estimar o valor de Pi

Jul 13th, 2011
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.08 KB | None | 0 0
  1. // metodo de monte carlo para estimar o valor de pi
  2. // apple xcode
  3. // paulogp
  4.  
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <math.h>
  9.  
  10. #define TOLMAX 1.0e-8
  11. #define NPONTOS 5000
  12.  
  13. int main (int argc, const char * argv[])
  14. {
  15.     /* metodo de monte carlo para estimar o valor de Pi */
  16.     int the_total_pontos = 0;
  17.     int the_pontos_dentro = 0;
  18.     int the_p;
  19.  
  20.     float the_x;
  21.     float the_y;
  22.     float the_area_ant = 0.0;
  23.     float the_area_nov = 0.0;
  24.     float the_tol = 1.0;
  25.  
  26.     while (the_tol > TOLMAX)
  27.     {
  28.         the_p = 1;
  29.  
  30.         while (the_p <= NPONTOS)
  31.         {
  32.             the_x = (float) rand() / RAND_MAX;
  33.             the_y = (float) rand() / RAND_MAX;
  34.  
  35.             if ((the_x * the_x + the_y * the_y) < 1)
  36.             {
  37.                 the_pontos_dentro++;
  38.             }
  39.  
  40.             the_p++;
  41.         }
  42.  
  43.         the_total_pontos = the_total_pontos + NPONTOS;
  44.         the_area_nov = (float) the_pontos_dentro / the_total_pontos;
  45.         printf("area para %d pontos: %f\n", the_total_pontos, the_area_nov);
  46.         the_tol = fabs(the_area_nov - the_area_ant);
  47.         the_area_ant = the_area_nov;
  48.     }
  49.  
  50.     printf("estimativa de pi = %6.3f\n", 4 * the_area_nov);
  51.  
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement