#include <iostream>
#include <cmath>
using namespace std;
// Definicja funkcji f(x)
double f(double x)
{
return sin(x);
}
// Metoda prostokątów
double metodaProstokatow(double a, double b, int n)
{
double dx = (b - a) / n;
double s = 0.0;
double x = a;
for (int i = 1; i <= n; i++)
{
x = x + dx; // przesunięcie do prawego końca przedziału
s = s + dx * f(x); // pole prostokąta
}
return s;
}
int main()
{
// Przykład 1
double a1 = 0.0;
double b1 = 3.14;
int n1 = 10;
double s1 = metodaProstokatow(a1, b1, n1);
// Przykład 2
double a2 = 0.0;
double b2 = 3.14;
int n2 = 100;
double s2 = metodaProstokatow(a2, b2, n2);
cout << "s1 (n = 10) = " << s1 << endl;
cout << "s2 (n = 100) = " << s2 << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRGVmaW5pY2phIGZ1bmtjamkgZih4KQpkb3VibGUgZihkb3VibGUgeCkKewogICAgcmV0dXJuIHNpbih4KTsKfQoKLy8gTWV0b2RhIHByb3N0b2vEhXTDs3cKZG91YmxlIG1ldG9kYVByb3N0b2thdG93KGRvdWJsZSBhLCBkb3VibGUgYiwgaW50IG4pCnsKICAgIGRvdWJsZSBkeCA9IChiIC0gYSkgLyBuOwogICAgZG91YmxlIHMgPSAwLjA7CiAgICBkb3VibGUgeCA9IGE7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgewogICAgICAgIHggPSB4ICsgZHg7ICAgICAgICAgICAvLyBwcnplc3VuacSZY2llIGRvIHByYXdlZ28ga2/FhGNhIHByemVkemlhxYJ1CiAgICAgICAgcyA9IHMgKyBkeCAqIGYoeCk7ICAgIC8vIHBvbGUgcHJvc3Rva8SFdGEKICAgIH0KCiAgICByZXR1cm4gczsKfQoKaW50IG1haW4oKQp7CiAgICAvLyBQcnp5a8WCYWQgMQogICAgZG91YmxlIGExID0gMC4wOwogICAgZG91YmxlIGIxID0gMy4xNDsKICAgIGludCBuMSA9IDEwOwogICAgZG91YmxlIHMxID0gbWV0b2RhUHJvc3Rva2F0b3coYTEsIGIxLCBuMSk7CgogICAgLy8gUHJ6eWvFgmFkIDIKICAgIGRvdWJsZSBhMiA9IDAuMDsKICAgIGRvdWJsZSBiMiA9IDMuMTQ7CiAgICBpbnQgbjIgPSAxMDA7CiAgICBkb3VibGUgczIgPSBtZXRvZGFQcm9zdG9rYXRvdyhhMiwgYjIsIG4yKTsKCiAgICBjb3V0IDw8ICJzMSAobiA9IDEwKSAgPSAiIDw8IHMxIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJzMiAobiA9IDEwMCkgPSAiIDw8IHMyIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K