ubuntuusers.de

[Java] Curve fitting - Parameter einer e-Funktion ermitteln

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

dersven

Anmeldungsdatum:
16. August 2005

Beiträge: 792

Wohnort: Kreuzlingen, Schweiz

Hallo! ich habe eine <Interger, Integer> Hashmap mit daten, die eine Exponential-Funktion ergeben

f(x)=a*exp(-b*x)

Nun moechte ich fuer die Daten eine ausgleichsFunktion (bzw. deren Parameter a und b) ermitteln. Gibt es fuer java bereits methoden, die mir die Werte ermitteln koennen, wenn ich denen die Daten und die Art der Funktion uebergebe?

Danke fuer die Hilfe

eviga

Avatar von eviga

Anmeldungsdatum:
25. Juli 2008

Beiträge: 180

Wohnort: Rostock / Bergen auf Rügen

Moin moin,

nein das gibt es meines Wissens noch nicht, das geht auch nicht, da die Anzahl der Funktionen jegliches maß übersteigt! Du wirst wohl nicht drum rum kommen das 'händisch' anzugehen.

Gruß, Axel

dersven

(Themenstarter)

Anmeldungsdatum:
16. August 2005

Beiträge: 792

Wohnort: Kreuzlingen, Schweiz

eviga schrieb:

Du wirst wohl nicht drum rum kommen das 'händisch' anzugehen.

Die Funktion anzugeben ist fuer mich auch kein Problem, denn die kenne ich ja. Ich moechte nur eine Moeglichkeit haben, dass ich die parameter zu der funktion direkt in java ermitteln kann. Derzeit lasse ich mir die Roh-Daten ausgeben, plotte und fitte die mit gnuplot (mit octave kann ich noch nicht umgehen), schreibe mir die werte in meine grafik (oeder lese diese auf dem terminal aus), und mache dann etwas damit.

Ich wuerde das fiten gerne mit java machen. z.B. habe ich versucht eine lineare Regression zu berechnen. Habe mir dann selbst eine Funktion geschrieben (die hat leider nicht uneingeschraenkt funktioniert, da ich mit sehr grossen zahlen arbeite, und nicht weiss, wie man BigInteger in Java nutzt - und fuer anderen nichtlineare Funktion kenne ich die Art der Berechnung der Funktions[parameter nicht).

Wie auch immer, es sollte doch biobliotheken geben, denen ich (1)meine Daten und (2)die Art der Funktion, auf den meine Daten gefitted werden sollen uebergeben kann, und dann erhalte ich die parameter zurueck (wie in gnuPlot mit dem Befehl "fit"). Oder muss ich das auf jedenfall ist externen Programmen wie gnuPlot machen? (kann ich mir fast nicht vorstellen).

Fuer einzelne Datensaetze ist das ja OK (in gnuPlot braucht man zwei Zeilen und hat die Werte), aber wenn man 15'000 mal das machen moechte ist das eher hinderlich. Ausserdem kann man die Daten nicht direkt in Java weiterverwenden, sonden muss ein zweites Programm machen, welches dann die ermittelten Werte einliesst, und damit weiterarbeitet

Antworten |