final ipi11

This commit is contained in:
2020-01-17 01:56:24 +01:00
parent 7106f92c51
commit b425367304
4 changed files with 367 additions and 1 deletions
+35
View File
@@ -0,0 +1,35 @@
#include <iostream>
#include <cmath>
// Implementiert die Trapezregel mit der Intervallanzahl n
// der unteren Integrationsgrenze a, der oberen Integrationsgrenze b
// und ueber die Funktion f
template <class Function>
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;
}