C++ Aufgabe, Integralrechnung?

...komplette Frage anzeigen

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.

Antwort bewerten Vielen Dank für Deine Bewertung
SchmandDiesDas 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

Was möchtest Du wissen?