C++ Aufgabe, Integralrechnung?
Hallo, meine Aufgabe ist es ein C++ Programm zu schreiben, welches das bestimmte Integral der Funktion (x^2 +2) in den Grenzen [-2,3] berechnen soll. Das habe ich auch geschafft. Anschließend soll das Integrationsintervall in N Teilintervalle unterteilt werden, was ja auch nicht schwer ist. Nun soll ich aber im zweiten Teil der Aufgabe die Fläche mithilfe der Obersumme und der Untersumme berechnen. Die Funktion ist ja von [-2,0] streng monoton fallend und schneidet die y achse bei 2 und ist streng monoton steigend von [0,2]. mein Ansatz: Ich denke dass man die Obersumme und die Untersumme mithilfe von einer Schleife lösen kann, bin allerdings etwas ratlos, vielleicht kann mir ja jemand helfen :)
1 Antwort
Wie Ober-und Untersumme aus mathematischer Sicht funktionieren, weißt du? Falls nicht?
https://de.serlo.org/mathe/artikel-und-videos-aus-serlo-1-spaeter-loeschen/ober-und-untersumme
Dementsprechend musst du für die Obersumme beispielsweise im Bereich [-2, -1] die beiden Werte f(-2) und f(-1) berechnen. Der maximale Wert der beiden ist interessant (da die Funktion in dem Bereich fällt, ist das f(-2). Die Fläche des Rechtecks in dem Bereich ist nun (-1 - -2 * f(-2)), also f(-2). Den Wert merkst du dir in der Schleife und dann wanderst du weiter und berechnest das Maximum von f(-1) und f(0). Das summierst du dann weiter auf, bis du alle Rechtecke hast. Für die Untersumme nimmst du den Minimal- anstatt den Maximalwert. Die Schleife müsste ungefähr so aussehen (ungetesteter Pseudocode!)
double squareSum = 0;
double step = 1.0;
for (double x = -2.0; x <= 5.0; x+=step) {
double y1 = f (x);
double y2 = f (x+step);
squareSum += (step * max(y1, y2));
}
print (squareSum)
Je kleiner du die Variable step wählst, umso mehr Schleifendurchläufe brauchst du und umso genauer sollte dein Ergebnis werden.
squareSum ist die Ergebnisvariable, die ist am Anfang 0 und wird aufaddiert.
+= ist dieses Aufaddieren, das ist eine Kurzform für squareSum = squareSum + (step * max(y1,y2))
Die Fläche eines Rechteckes berechnet sich aus Breite * Höhe. Die Breite ist jeweils die Schrittvariable, also step. Die Höhe ist (bei der Obersumme) der maximale Funktionswert, also einfach der höhere Wert von y1 und y2.
okay, vielen dank schonmal, habe fast alles verstanden. außer die letzte zeile in der schleife: squareSum += (step*max(y1,y2)); was ist damit genau gemeint