#include #include // Implementiert die Trapezregel mit der Intervallanzahl n // der unteren Integrationsgrenze a, der oberen Integrationsgrenze b // und ueber die Funktion f template double trapezregel(int n, double a, double b, Function f) { double h = (b-a)/n; // berechne intervalllaenge double accum = 0; for (int i = 1; i < n; i++) { accum += f(a + i*h); // fuehre die summe aus } return h/2 * (f(a) + 2*accum + f(b)); // wende formel an } // beispiel fuer funktor class Wurzel { public: double operator()(double x) { return std::sqrt(x); } }; int main() { Wurzel f; // fuehre integration fuer verschiedene Intervallanzahlen n aus double integ10 = trapezregel(10, 0, 1.5, f); double integ100 = trapezregel(100, 0, 1.5, f); double integ1000 = trapezregel(1000, 0, 1.5, f); std::cout << "Integral ueber sqrt(x) von 0 bis 1.5" << std::endl; std::cout << "n = 10: " << integ10 << std::endl; std::cout << "n = 100: " << integ100 << std::endl; std::cout << "n = 1000: " << integ1000 << std::endl; }