#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
// Definicja funkcji
double f(double x) {
return sqrt(1.0 - x * x);
}
int main() {
const int n = 1000000; // stała liczba podprzedziałów
double a = -1.0;
double b = 1.0;
double h = (b - a) / n;
double suma_prostokaty = 0.0;
double suma_trapezy = 0.0;
// --------- METODA PROSTOKĄTÓW (środków przedziałów) ---------
for (int i = 0; i < n; i++) {
double x = a + (i + 0.5) * h;
suma_prostokaty += f(x);
}
double pi_prostokaty = 2.0 * suma_prostokaty * h;
// --------- METODA TRAPEZÓW ---------
suma_trapezy = (f(a) + f(b)) / 2.0;
for (int i = 1; i < n; i++) {
double x = a + i * h;
suma_trapezy += f(x);
}
double pi_trapezy = 2.0 * suma_trapezy * h;
cout << fixed << setprecision(10);
cout << "Metoda prostokatow: " << pi_prostokaty << endl;
cout << "Metoda trapezow: " << pi_trapezy << endl;
cout << "Dokladna wartosc: " << M_PI << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb21hbmlwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIERlZmluaWNqYSBmdW5rY2ppCmRvdWJsZSBmKGRvdWJsZSB4KSB7CiAgICByZXR1cm4gc3FydCgxLjAgLSB4ICogeCk7Cn0KCmludCBtYWluKCkgewoKICAgIGNvbnN0IGludCBuID0gMTAwMDAwMDsgIC8vIHN0YcWCYSBsaWN6YmEgcG9kcHJ6ZWR6aWHFgsOzdwogICAgZG91YmxlIGEgPSAtMS4wOwogICAgZG91YmxlIGIgPSAxLjA7CiAgICBkb3VibGUgaCA9IChiIC0gYSkgLyBuOwoKICAgIGRvdWJsZSBzdW1hX3Byb3N0b2thdHkgPSAwLjA7CiAgICBkb3VibGUgc3VtYV90cmFwZXp5ID0gMC4wOwoKICAgIC8vIC0tLS0tLS0tLSBNRVRPREEgUFJPU1RPS8SEVMOTVyAoxZtyb2Rrw7N3IHByemVkemlhxYLDs3cpIC0tLS0tLS0tLQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBkb3VibGUgeCA9IGEgKyAoaSArIDAuNSkgKiBoOwogICAgICAgIHN1bWFfcHJvc3Rva2F0eSArPSBmKHgpOwogICAgfQogICAgZG91YmxlIHBpX3Byb3N0b2thdHkgPSAyLjAgKiBzdW1hX3Byb3N0b2thdHkgKiBoOwoKICAgIC8vIC0tLS0tLS0tLSBNRVRPREEgVFJBUEVaw5NXIC0tLS0tLS0tLQogICAgc3VtYV90cmFwZXp5ID0gKGYoYSkgKyBmKGIpKSAvIDIuMDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgZG91YmxlIHggPSBhICsgaSAqIGg7CiAgICAgICAgc3VtYV90cmFwZXp5ICs9IGYoeCk7CiAgICB9CiAgICBkb3VibGUgcGlfdHJhcGV6eSA9IDIuMCAqIHN1bWFfdHJhcGV6eSAqIGg7CgogICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMTApOwoKICAgIGNvdXQgPDwgIk1ldG9kYSBwcm9zdG9rYXRvdzogIiA8PCBwaV9wcm9zdG9rYXR5IDw8IGVuZGw7CiAgICBjb3V0IDw8ICJNZXRvZGEgdHJhcGV6b3c6ICAgICIgPDwgcGlfdHJhcGV6eSA8PCBlbmRsOwogICAgY291dCA8PCAiRG9rbGFkbmEgd2FydG9zYzogICAiIDw8IE1fUEkgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==