Teilprogramm für Obersummenber < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Hallo,
ich bin zur Zeit dabei ein Programm zur Obersummen, Untersummen und Trapezsummenberechnung zu schreiben. Nun stecke ich aber bei einem Abschnitt, welcher für meine Kenntnisse recht kompliziert ist.
Es wurden schon der x1 Wert (kleinster x-Intervall-Wert) und der x2 Wert (größter x-Intervall-Wert) eingegeben. Nun habe ich die gesamte Breite ausgerechnet (ib = x1 + x2) und diesen durch die Intervallanzahl dividiert (b = Intervallbreite).
Als nächstes wollte ich einen Programmteil verfassen, welcher von x1 so oft im Intervall von b weitergeht, bis der Wert x2 erreicht wurde. Natürlich sollen alle diese Werte gespeichert werden. Diese jeweiligen Werte sollten dann noch in ein Programm eingeschleust werden, welches die Obersumme berechnet (also Summe aller f(jeweiliger x-Wert) mal Breite b). Vorher sollten die jeweiligen f(jeweiliger x-Wert) Werte überprüft werden, ob sie größer sind, als deren Nachfolger und wenn nicht soll der Nachfolger verwendet werden.
Ich hoffe, dass ich mein Anliegen zumindest ganz ok rüberbringen konnte und würde mich über Hilfen freuen.
Liebe Grüße
Andreas
PS: Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo!
Du schreibst ja keinen Code, daher kann man dir auch nicht so genau helfen. Aber was hälst du davon:
1: |
| 2: | double b=(x2-x1)/n
| 3: |
| 4: | double obersumme=0;
| 5: | for(int i=0; i<n;i++){
| 6: | double x = x1 + i*b;
| 7: | obersumme += Flaeche(x,b);
| 8: | }
|
Und dazu brauchst du dann eine Funktion Flaeche(x,b) , die den Funktionswert an der Stelle x und an der Stelle x+b berechnet. Der größere von beiden wird mit b multipliziert (=Rechteckfläche) und zurück gegeben.
Achso, eine Anmerkung: Die Formel, die du da benutzt, berechnet den Mittelwert des Integrationsintervalls, nicht die Breite. Und bei mir ist die Breite nur die breite eines einzelnen Rechtecks.
|
|
|
|