#include <iostream>
#include <cmath>
using namespace std;
// Definicja funkcji
double f(double x) {
return sqrt(1.0 - x * x);
}
// Metoda prostokątów (środkowa)
double metodaProstokatow(double a, double b, int n) {
double h = (b - a) / n;
double suma = 0.0;
for (int i = 0; i < n; i++) {
double x = a + (i + 0.5) * h; // punkt środkowy
suma += f(x);
}
return suma * h;
}
// Metoda trapezów
double metodaTrapezow(double a, double b, int n) {
double h = (b - a) / n;
double suma = 0.5 * (f(a) + f(b));
for (int i = 1; i < n; i++) {
double x = a + i * h;
suma += f(x);
}
return suma * h;
}
int main() {
double a = -1.0;
double b = 1.0;
int n;
cout << "Podaj liczbe podprzedzialow: ";
cin >> n;
double wynikProstokaty = 2.0 * metodaProstokatow(a, b, n);
double wynikTrapezy = 2.0 * metodaTrapezow(a, b, n);
cout << "\nPrzyblizenie liczby pi:\n";
cout << "Metoda prostokatow: " << wynikProstokaty << endl;
cout << "Metoda trapezow: " << wynikTrapezy << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRGVmaW5pY2phIGZ1bmtjamkKZG91YmxlIGYoZG91YmxlIHgpIHsKICAgIHJldHVybiBzcXJ0KDEuMCAtIHggKiB4KTsKfQoKLy8gTWV0b2RhIHByb3N0b2vEhXTDs3cgKMWbcm9ka293YSkKZG91YmxlIG1ldG9kYVByb3N0b2thdG93KGRvdWJsZSBhLCBkb3VibGUgYiwgaW50IG4pIHsKICAgIGRvdWJsZSBoID0gKGIgLSBhKSAvIG47CiAgICBkb3VibGUgc3VtYSA9IDAuMDsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGRvdWJsZSB4ID0gYSArIChpICsgMC41KSAqIGg7ICAvLyBwdW5rdCDFm3JvZGtvd3kKICAgICAgICBzdW1hICs9IGYoeCk7CiAgICB9CgogICAgcmV0dXJuIHN1bWEgKiBoOwp9CgovLyBNZXRvZGEgdHJhcGV6w7N3CmRvdWJsZSBtZXRvZGFUcmFwZXpvdyhkb3VibGUgYSwgZG91YmxlIGIsIGludCBuKSB7CiAgICBkb3VibGUgaCA9IChiIC0gYSkgLyBuOwogICAgZG91YmxlIHN1bWEgPSAwLjUgKiAoZihhKSArIGYoYikpOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgZG91YmxlIHggPSBhICsgaSAqIGg7CiAgICAgICAgc3VtYSArPSBmKHgpOwogICAgfQoKICAgIHJldHVybiBzdW1hICogaDsKfQoKaW50IG1haW4oKSB7CiAgICBkb3VibGUgYSA9IC0xLjA7CiAgICBkb3VibGUgYiA9IDEuMDsKICAgIGludCBuOwoKICAgIGNvdXQgPDwgIlBvZGFqIGxpY3piZSBwb2RwcnplZHppYWxvdzogIjsKICAgIGNpbiA+PiBuOwoKICAgIGRvdWJsZSB3eW5pa1Byb3N0b2thdHkgPSAyLjAgKiBtZXRvZGFQcm9zdG9rYXRvdyhhLCBiLCBuKTsKICAgIGRvdWJsZSB3eW5pa1RyYXBlenkgPSAyLjAgKiBtZXRvZGFUcmFwZXpvdyhhLCBiLCBuKTsKCiAgICBjb3V0IDw8ICJcblByenlibGl6ZW5pZSBsaWN6YnkgcGk6XG4iOwogICAgY291dCA8PCAiTWV0b2RhIHByb3N0b2thdG93OiAiIDw8IHd5bmlrUHJvc3Rva2F0eSA8PCBlbmRsOwogICAgY291dCA8PCAiTWV0b2RhIHRyYXBlem93OiAgICAiIDw8IHd5bmlrVHJhcGV6eSA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9