Riemann Integral

Hallo Zusammen,

lern gerade für meine Java-Klausur und unser Prof ist verrückt nach Mathecodings. Er hat uns eine Bsp. Aufgabe gegeben leider, komm ich nicht auf den Sinn bzw. Funktion dahinter.

Zuerstmal die Aufgabe:

Das Integral einer Riemann-integrablen Funktion kann näherungsweise auf dem Intervall[a, b] durch die Riemann’sche Summe RN approximiert werden:

Schreiben Sie eine Methode compute, die das Integral mittels der Riemann’schen Summe näherungsweise berechnet, wobei als Argumente die Integrationsgrenzen sowie die obere Summationsgrenze an die Methode compute übergeben werden. Der Typ der Übergabeparameter soll dabei für die Integrationsgrenzen der Datentyp float sein , für die obere Summationsgrenze N soll der Datentyp int sein.

Die Methode danach in Java zuschreiben ist kein Problem, mir fehlt jedoch das Verständnis das ganze umzusetzen. So dass ich nachher eine Lösung hab. Also eine Funktion wo ich nur noch die Grenzen einsetzen muss.

Ich hoffe ihr könnt mir weiterhelfen.

Nehmen wir als Beispiel Funktion: f(x)=x² in den Grenzen 1 bis 11 und 5 Teilstücke
Rechtecke haben den Flächeninhalt höhe*breite
Breite = (11-1)/5=2
Ein Rechteck hat also die breite 2
die Höhe eines Rechteckes ist f(x)
Diese Form des Integrals ist ungenau daher kann man nur sagen zwischen welchen die Fläche liegt.

untere Grenze des Flächeninhalts
Au=f(1)*2 + f(3)*2 + f(5)*2 + f(7)*2 + f(9)*2

obere Grenze des Flächeninhalts
Ao=f(3)*2 + f(5)*2 + f(7)*2 + f(9)*2 + f(11)*2

Die tatsächliche Fläche liegt zwischen Au und Ao

Das kannste jetzt abprogrammieren.
Weiter unten gebe ich einen Programmiertipp

Fläche1=0;
breite=(oben-unten)/stücke
Schleife wiederholen wie stücke da sind{
Fläche1=Fläche1+Funktion(unten+breite*stücknummer)*breite
}

Dies ist die komplettlösung, bitte erst angucken nachdem du es selbst programmiert hast.

private float f_von_x(float x){
return x*x; /*Die Hilfsfunktion für x². Dies kann man für andere Funktionen beliebig kompliziert machen*/
}

public float compute(float a,float b, int N){
float unten=a;/*Ich benutz lieber eingängige variablennamen, daher die Umbenennung*/
float oben=b;
float Stuecke=N;

/*Fehlerbehandlung*/

if(Stueckeoben){/*Fehlerhafte Eingabe 2*/
System.out.println(„Die untere Grenze muss kleiner als die Obere Grenze sein.“);
return 0;
}
if(unten=oben){/*Fehlerhafte Eingabe 3*/
System.out.println(„Untere und obere Grenze müssen verschieden groß sein.“);
return 0;
}

/*Eigentliches Programm*/
float Flaechemin=0;
float breite=(oben-unten)/Stuecke; /*war das in Java / oder div?*/
for(int i=0,i

Vielen Dank für deine Antwort,

hab jetzt zumindest kapiert was damit gemeint ist, weiß leider nicht wie ich das auf die angegebene Funktion (welche ich als Bild beim ersten Post angegeben hab) anwenden soll.

Vielleicht wäre es dir möglich darauf einzugehen.

Das Bild, das Du angegeben hast, enthält nur die allgemeine Definition des Riemannintegrals, keine Funktionsvorschrift.

Zeile 1 besagt, dass die Strecke a bis b in viele Stücke xi unterteilt wird.
Zeile 2 links besagt, dass jedem xi ein Funktionswert zugewiesen wird
Zeile 2 rechts besagt, dass i natürliche Zahlen sind und N das größte ist.
daraus folgt, die Strecke a bis b wird in N Stücke unterteilt.
Zeile 3 besagt, dass die Fläche RN die Summe der Rechtecke sind(ein Rechteck berechnet sich aus breite*höhe).

Dankeschön für deine Antwort, aber ist dann diese Integral ohne Funktion zu lösen? Weil dadurch ja der f(x) wert und somit die Höhe nicht berechenbar ist.

Dankeschön für deine Antwort, aber ist dann diese Integral
ohne Funktion zu lösen? Weil dadurch ja der f(x) wert und
somit die Höhe nicht berechenbar ist.

Das ist ein seltsamer Einwand. Deine dritte Zeile lautet

R_N = \sum_{i=1}^{N} \big(x_{i+1}-x_i\big) f(\xi_i).

Dabei geht doch ganz klar die Funktion f an den Stellen ξi ein! Und besagte ξi liegen jeweils zwischen xi und xi+1. Dementsprechend wird aus jedem Intervall ein Funktionswert ausgewertet.

Viele Gruesse,

The Nameless