#include <iostream>
#include <cmath>
using namespace std;
// Definicja funkcji
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 a = 0.0;
double b = 3.14;
int n1 = 10;
int n2 = 100;
double s1 = trapezy(a, b, n1);
double s2 = trapezy(a, b, n2);
cout << "Metoda trapezów dla f(x) = sin(x)\n";
cout << "Przedzial [" << a << ", " << b << "]\n\n";
cout << "n = " << n1 << " => s1 = " << s1 << endl;
cout << "n = " << n2 << " => s2 = " << s2 << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRGVmaW5pY2phIGZ1bmtjamkKZG91YmxlIGYoZG91YmxlIHgpCnsKICAgIHJldHVybiBzaW4oeCk7Cn0KCi8vIE1ldG9kYSB0cmFwZXrDs3cKZG91YmxlIHRyYXBlenkoZG91YmxlIGEsIGRvdWJsZSBiLCBpbnQgbikKewogICAgZG91YmxlIGggPSAoYiAtIGEpIC8gbjsKICAgIGRvdWJsZSBzdW1hID0gKGYoYSkgKyBmKGIpKSAvIDIuMDsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICBzdW1hICs9IGYoYSArIGkgKiBoKTsKICAgIH0KCiAgICByZXR1cm4gc3VtYSAqIGg7Cn0KCmludCBtYWluKCkKewogICAgZG91YmxlIGEgPSAwLjA7CiAgICBkb3VibGUgYiA9IDMuMTQ7CgogICAgaW50IG4xID0gMTA7CiAgICBpbnQgbjIgPSAxMDA7CgogICAgZG91YmxlIHMxID0gdHJhcGV6eShhLCBiLCBuMSk7CiAgICBkb3VibGUgczIgPSB0cmFwZXp5KGEsIGIsIG4yKTsKCiAgICBjb3V0IDw8ICJNZXRvZGEgdHJhcGV6w7N3IGRsYSBmKHgpID0gc2luKHgpXG4iOwogICAgY291dCA8PCAiUHJ6ZWR6aWFsIFsiIDw8IGEgPDwgIiwgIiA8PCBiIDw8ICJdXG5cbiI7CgogICAgY291dCA8PCAibiA9ICIgPDwgbjEgPDwgIiAgPT4gIHMxID0gIiA8PCBzMSA8PCBlbmRsOwogICAgY291dCA8PCAibiA9ICIgPDwgbjIgPDwgIiAgPT4gIHMyID0gIiA8PCBzMiA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cg==