Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

36 lignes
1.1KB

  1. #include <iostream>
  2. #include <cmath>
  3. // Implementiert die Trapezregel mit der Intervallanzahl n
  4. // der unteren Integrationsgrenze a, der oberen Integrationsgrenze b
  5. // und ueber die Funktion f
  6. template <class Function>
  7. double trapezregel(int n, double a, double b, Function f) {
  8. double h = (b-a)/n; // berechne intervalllaenge
  9. double accum = 0;
  10. for (int i = 1; i < n; i++) {
  11. accum += f(a + i*h); // fuehre die summe aus
  12. }
  13. return h/2 * (f(a) + 2*accum + f(b)); // wende formel an
  14. }
  15. // beispiel fuer funktor
  16. class Wurzel {
  17. public:
  18. double operator()(double x) {
  19. return std::sqrt(x);
  20. }
  21. };
  22. int main() {
  23. Wurzel f;
  24. // fuehre integration fuer verschiedene Intervallanzahlen n aus
  25. double integ10 = trapezregel(10, 0, 1.5, f);
  26. double integ100 = trapezregel(100, 0, 1.5, f);
  27. double integ1000 = trapezregel(1000, 0, 1.5, f);
  28. std::cout << "Integral ueber sqrt(x) von 0 bis 1.5" << std::endl;
  29. std::cout << "n = 10: " << integ10 << std::endl;
  30. std::cout << "n = 100: " << integ100 << std::endl;
  31. std::cout << "n = 1000: " << integ1000 << std::endl;
  32. }