fork download
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. double f(double x) {
  7. return sqrt(1.0 - x * x);
  8. }
  9.  
  10. double metoda_prostokatow(double a, double b, int n) {
  11. double h = (b - a) / n;
  12. double suma = 0.0;
  13.  
  14. for(int i = 0; i < n; i++) {
  15. double x = a + i * h; // lewy koniec
  16. suma += f(x);
  17. }
  18.  
  19. return suma * h;
  20. }
  21.  
  22. double metoda_trapezow(double a, double b, int n) {
  23. double h = (b - a) / n;
  24. double suma = (f(a) + f(b)) / 2.0;
  25.  
  26. for(int i = 1; i < n; i++) {
  27. double x = a + i * h;
  28. suma += f(x);
  29. }
  30.  
  31. return suma * h;
  32. }
  33.  
  34. int main() {
  35. double a = -1.0;
  36. double b = 1.0;
  37. int n = 100000; // liczba podziałów
  38.  
  39. double calka1 = metoda_prostokatow(a, b, n);
  40. double calka2 = metoda_trapezow(a, b, n);
  41.  
  42. double pi1 = 2.0 * calka1;
  43. double pi2 = 2.0 * calka2;
  44.  
  45. cout << "Pi (metoda prostokatow): " << pi1 << endl;
  46. cout << "Pi (metoda trapezow): " << pi2 << endl;
  47. cout << "Pi (M_PI): " << M_PI << endl;
  48.  
  49. return 0;
  50. }
Success #stdin #stdout 0.01s 5320KB
stdin
1000
stdout
Pi (metoda prostokatow): 3.14159
Pi (metoda trapezow):    3.14159
Pi (M_PI):               3.14159