#include <iostream>
#include <cmath>
using namespace std;
// Funkcja f(x) = sqrt(1 - x^2)
double f(double x)
{
return sqrt(1.0 - x * x);
}
int main()
{
int n; // liczba podziałów
double a = -1.0; // początek przedziału
double b = 1.0; // koniec przedziału
cout << "Podaj liczbe podzialow n: ";
cin >> n;
double h = (b - a) / n;
// =============================
// Metoda prostokatow
// =============================
double suma_prost = 0.0;
for(int i = 0; i < n; i++)
{
double x = a + i * h; // lewy punkt
suma_prost += f(x);
}
double calka_prost = h * suma_prost;
double pi_prost = 2.0 * calka_prost;
// =============================
// Metoda trapezow
// =============================
double suma_trap = 0.0;
suma_trap = (f(a) + f(b)) / 2.0;
for(int i = 1; i < n; i++)
{
double x = a + i * h;
suma_trap += f(x);
}
double calka_trap = h * suma_trap;
double pi_trap = 2.0 * calka_trap;
// =============================
// Wyniki
// =============================
cout << "\nPrzyblizenie liczby pi:\n";
cout << "Metoda prostokatow: " << pi_prost << endl;
cout << "Metoda trapezow: " << pi_trap << endl;
cout << "\nDokladna wartosc (M_PI): " << M_PI << endl;
return 0;
}