#include <iostream>
#include <cmath>
using namespace std;
// Funkcja f(x) = sin(x)
double f(double x)
{
return sin(x);
}
// Metoda trapezów
double trapezy(double a, double b, int n)
{
double h = (b - a) / n;
double suma = (f(a) + f(b)) / 2.0;
for (int i = 1; i < n; i++)
{
suma += f(a + i * h);
}
return suma * h;
}
int main()
{
double a1 = 0.0;
double b1 = 1.57;
int n1 = 10;
double a2 = 0.0;
double b2 = 1.57;
int n2 = 100;
double s1 = trapezy(a1, b1, n1);
double s2 = trapezy(a2, b2, n2);
cout << "Metoda trapezow dla f(x) = sin(x)\n";
cout << "Przedzial [0, 1.57]\n\n";
cout << "n1 = " << n1 << " => s1 = " << s1 << endl;
cout << "n2 = " << n2 << " => s2 = " << s2 << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRnVua2NqYSBmKHgpID0gc2luKHgpCmRvdWJsZSBmKGRvdWJsZSB4KQp7CiAgICByZXR1cm4gc2luKHgpOwp9CgovLyBNZXRvZGEgdHJhcGV6w7N3CmRvdWJsZSB0cmFwZXp5KGRvdWJsZSBhLCBkb3VibGUgYiwgaW50IG4pCnsKICAgIGRvdWJsZSBoID0gKGIgLSBhKSAvIG47CiAgICBkb3VibGUgc3VtYSA9IChmKGEpICsgZihiKSkgLyAyLjA7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspCiAgICB7CiAgICAgICAgc3VtYSArPSBmKGEgKyBpICogaCk7CiAgICB9CgogICAgcmV0dXJuIHN1bWEgKiBoOwp9CgppbnQgbWFpbigpCnsKICAgIGRvdWJsZSBhMSA9IDAuMDsKICAgIGRvdWJsZSBiMSA9IDEuNTc7CiAgICBpbnQgbjEgPSAxMDsKCiAgICBkb3VibGUgYTIgPSAwLjA7CiAgICBkb3VibGUgYjIgPSAxLjU3OwogICAgaW50IG4yID0gMTAwOwoKICAgIGRvdWJsZSBzMSA9IHRyYXBlenkoYTEsIGIxLCBuMSk7CiAgICBkb3VibGUgczIgPSB0cmFwZXp5KGEyLCBiMiwgbjIpOwoKICAgIGNvdXQgPDwgIk1ldG9kYSB0cmFwZXpvdyBkbGEgZih4KSA9IHNpbih4KVxuIjsKICAgIGNvdXQgPDwgIlByemVkemlhbCBbMCwgMS41N11cblxuIjsKCiAgICBjb3V0IDw8ICJuMSA9ICIgPDwgbjEgPDwgIiAgPT4gIHMxID0gIiA8PCBzMSA8PCBlbmRsOwogICAgY291dCA8PCAibjIgPSAiIDw8IG4yIDw8ICIgID0+ICBzMiA9ICIgPDwgczIgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==