fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. // Definicja funkcji
  8. double f(double x) {
  9. return sqrt(1.0 - x * x);
  10. }
  11.  
  12. int main() {
  13.  
  14. const int n = 1000000; // stała liczba podprzedziałów
  15. double a = -1.0;
  16. double b = 1.0;
  17. double h = (b - a) / n;
  18.  
  19. double suma_prostokaty = 0.0;
  20. double suma_trapezy = 0.0;
  21.  
  22. // --------- METODA PROSTOKĄTÓW (środków przedziałów) ---------
  23. for (int i = 0; i < n; i++) {
  24. double x = a + (i + 0.5) * h;
  25. suma_prostokaty += f(x);
  26. }
  27. double pi_prostokaty = 2.0 * suma_prostokaty * h;
  28.  
  29. // --------- METODA TRAPEZÓW ---------
  30. suma_trapezy = (f(a) + f(b)) / 2.0;
  31. for (int i = 1; i < n; i++) {
  32. double x = a + i * h;
  33. suma_trapezy += f(x);
  34. }
  35. double pi_trapezy = 2.0 * suma_trapezy * h;
  36.  
  37. cout << fixed << setprecision(10);
  38.  
  39. cout << "Metoda prostokatow: " << pi_prostokaty << endl;
  40. cout << "Metoda trapezow: " << pi_trapezy << endl;
  41. cout << "Dokladna wartosc: " << M_PI << endl;
  42.  
  43. return 0;
  44. }
Success #stdin #stdout 0.02s 5304KB
stdin
Standard input is empty
stdout
Metoda prostokatow: 3.1415926546
Metoda trapezow:    3.1415926503
Dokladna wartosc:   3.1415926536