Hallo!
Wir machen gerade im Informatik-Unterricht eigene Projekte und ich habe mich für Integralrechnung entschieden. Nur habe ich absolut keine Ahnung wo ich anfangen soll.
Wie gebe ich Funktionen in Java ein?
Bilde ich eine Stammfunktion oder bestimme ich das Integral mithilfe einer Anäherung durch Ober- oder Untersumme?
Na um die Funktionen selbst zu implementieren,
würde ich die Formeln unter https://de.wikipedia.org/wiki/Integralrechnung
verwenden und daraus eine Methode basteln.
Für Näherungsfunktionen musst du die Funktion rekursiv aufrufen.
Beliebige Funktionen in Java so abzubilden, dass du eine Aufleitung errechnen kannst, ist absolut nicht trivial. Wenn es nur um Näherungswerte für einen Interval geht, kannst du einfach mit einer Library zum Evaluieren von Mathematischen Termen (siehe Post von @JStein52) rechnen (siehe Beispiele hier).
Wenn es wirklich um den Funktionsterm der Integralfunktion geht, hast du zwei Möglichkeiten:
Nur bestimmte Funktionstypen erlauben (z.b. Ganzrational bis zum Xten Grad); hier gibt der User dann nur die Koeffizienten an; die Struktur des Funktionsterms (und damit auch die Struktur des Funktionsterms der Aufleitung) ist schon im Voraus bekannt. Zur Laufzeit verrechnest du nurnoch die Koeffizienten und gibts die Formel formatiert aus.
Beispiel: Koeffizieten für Ganzrational 2. Grades: f(x) = 3x² + 5x + 1 ergibt (a=3, b=5, c=1). Allgemeine Aufleitung für f(x) = ax² + bx + c ist F(x) = (a/3)x³ + 0,5bx² + cx. Damit wird aus der User-Eingabe (a=3, b=5, c=1) F(x) = x³ + 2.5x² + x
Du implementierst einen Algorithmus (ggf. musst du ihn auch selbst Entwickeln), der alle bekannten Aufleitungsregeln auf einen gegebenen, geparsten Funktionsterm anwendet. Hierbei hilft dir auch eine Mathe-Library, welche Terme für dich parsen kann. Dieser Weg ist absolut nicht trivial (z.B. Mathematika spukt für einfache Terme z.T. Terme für Auf-/Ableitungen aus, die über mehrere Zielen gehen). Dafür aber natürlich umso eindrucksvoller.
Das ist sogar unmöglich. Sogar, wenn man es auf integrierbare Funktionen beschränkt, bleibt es unmöglich. Nicht jede integrierbare Funktion besitzt eine Stammfunktion.
Und überhaupt, zunächst einmal die Frage an @Alexander Meischt: Was willst du überhaupt machen? Wilst du Integrale ausrechnen oder wirklich Stammfunktionen bestimmen? Wenn du Integrale berechnen willst, umfasts das auch unbestimmte Integrale?
Ganz salopp: Wenn du mit geringem Aufwand eine Stammfunktion bilden kannst (etwa bei Polynomen, trigonometrische Funktionen, ...) dann mache das, wenn nicht, dann bilde Näherungssummen. Das müssen übrigens nicht Ober- und Untersumme sein, sondern beliebige Zwischensummen tun auch ihren dienst. Die Berechnung von Ober- und Untersumme hingegen bräuchtest du nur, um Integrierbarkeit nachzuweisen.