C++ Aufgabe, Integralrechnung?

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.

SchmandDiesDas 
Fragesteller
 29.04.2016, 19:32

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

1
ceevee  29.04.2016, 19:58
@SchmandDiesDas

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.

0