#include <iostream>
#include <cmath>
using namespace std;
// Funkcja f(x) = sqrt(1 - x^2)
double f(double x) {
return sqrt(1.0 - x * x);
}
// Metoda prostokątów (środków przedziałów)
double rectangleMethod(double a, double b, int n) {
double h = (b - a) / n;
double sum = 0.0;
for (int i = 0; i < n; i++) {
double x = a + (i + 0.5) * h; // środek przedziału
sum += f(x);
}
return sum * h;
}
// Metoda trapezów
double trapezoidalMethod(double a, double b, int n) {
double h = (b - a) / n;
double sum = (f(a) + f(b)) / 2.0;
for (int i = 1; i < n; i++) {
double x = a + i * h;
sum += f(x);
}
return sum * h;
}
int main() {
double a = -1.0;
double b = 1.0;
int n;
cout << "Podaj liczbe podprzedzialow: ";
cin >> n;
double rectIntegral = rectangleMethod(a, b, n);
double trapIntegral = trapezoidalMethod(a, b, n);
double pi_rect = 2.0 * rectIntegral;
double pi_trap = 2.0 * trapIntegral;
cout << "\nPrzyblizenie liczby pi:\n";
cout << "Metoda prostokatow: " << pi_rect << endl;
cout << "Metoda trapezow: " << pi_trap << endl;
cout << "\nDokladna wartosc pi: " << M_PI << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRnVua2NqYSBmKHgpID0gc3FydCgxIC0geF4yKQpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIHNxcnQoMS4wIC0geCAqIHgpOwp9CgovLyBNZXRvZGEgcHJvc3Rva8SFdMOzdyAoxZtyb2Rrw7N3IHByemVkemlhxYLDs3cpCmRvdWJsZSByZWN0YW5nbGVNZXRob2QoZG91YmxlIGEsIGRvdWJsZSBiLCBpbnQgbikgewogICAgZG91YmxlIGggPSAoYiAtIGEpIC8gbjsKICAgIGRvdWJsZSBzdW0gPSAwLjA7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBkb3VibGUgeCA9IGEgKyAoaSArIDAuNSkgKiBoOyAvLyDFm3JvZGVrIHByemVkemlhxYJ1CiAgICAgICAgc3VtICs9IGYoeCk7CiAgICB9CgogICAgcmV0dXJuIHN1bSAqIGg7Cn0KCi8vIE1ldG9kYSB0cmFwZXrDs3cKZG91YmxlIHRyYXBlem9pZGFsTWV0aG9kKGRvdWJsZSBhLCBkb3VibGUgYiwgaW50IG4pIHsKICAgIGRvdWJsZSBoID0gKGIgLSBhKSAvIG47CiAgICBkb3VibGUgc3VtID0gKGYoYSkgKyBmKGIpKSAvIDIuMDsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgIGRvdWJsZSB4ID0gYSArIGkgKiBoOwogICAgICAgIHN1bSArPSBmKHgpOwogICAgfQoKICAgIHJldHVybiBzdW0gKiBoOwp9CgppbnQgbWFpbigpIHsKICAgIGRvdWJsZSBhID0gLTEuMDsKICAgIGRvdWJsZSBiID0gMS4wOwogICAgaW50IG47CgogICAgY291dCA8PCAiUG9kYWogbGljemJlIHBvZHByemVkemlhbG93OiAiOwogICAgY2luID4+IG47CgogICAgZG91YmxlIHJlY3RJbnRlZ3JhbCA9IHJlY3RhbmdsZU1ldGhvZChhLCBiLCBuKTsKICAgIGRvdWJsZSB0cmFwSW50ZWdyYWwgPSB0cmFwZXpvaWRhbE1ldGhvZChhLCBiLCBuKTsKCiAgICBkb3VibGUgcGlfcmVjdCA9IDIuMCAqIHJlY3RJbnRlZ3JhbDsKICAgIGRvdWJsZSBwaV90cmFwID0gMi4wICogdHJhcEludGVncmFsOwoKICAgIGNvdXQgPDwgIlxuUHJ6eWJsaXplbmllIGxpY3pieSBwaTpcbiI7CiAgICBjb3V0IDw8ICJNZXRvZGEgcHJvc3Rva2F0b3c6ICIgPDwgcGlfcmVjdCA8PCBlbmRsOwogICAgY291dCA8PCAiTWV0b2RhIHRyYXBlem93OiAgICAiIDw8IHBpX3RyYXAgPDwgZW5kbDsKCiAgICBjb3V0IDw8ICJcbkRva2xhZG5hIHdhcnRvc2MgcGk6ICIgPDwgTV9QSSA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9