Algorithmus zum bewerten von mathematischen Funktionen

Neatoro

Mitglied
Moin Moin,

ich bin seit einigen Tagen auf der Suche nach einem Algorithmus, der einen String auf Formen von mathematischen Funktionen überprüft.

Beispiel:

String s = "f(x)=3x+3" ==> Lineare Funktion der Form "f(x)=mx+n"

Bis jetzt bin ich leider erfolglos geblieben. Sollte dies aus welchen Gründen auch immer in Java nicht möglich sein, würde mir auch eine andere Programmiersprachen belieben.

Danke schonmal im vorraus
 
Du kannst es in jeder* Programmiersprache machen. Aber WolframAlpha nutzt ja nicht nur die Algorythmen, sondern auch eine große Faktendatenbank, um das zu machen.


Ich glaube nicht, dass man das trivial mal eben selber macht.
 
Jede Grundform der Mathematischen Formeln in deterministischen endlichen Automaten ausdrücken und diese dann als Java-Metode implementieren.
Die Frage dabei ist wie komplex die Formeln sind.
:rtfm:
 
Ein paar mehr Details wären hilfreich.
Naja die Aufgabenstellung ist ja schon klar: Die Eigenschaften einer Mathematischen Funktion herausfinden und geordnet ausgeben.

Du könntest es mit regulären Ausdrücken versuchen.
Das ist auf jeden fall ein Anfang; damit solltest du ziemlich weit kommen. Schwierig wird es nur bei Termen wie [c]f(x)=3x^(-1)[/c] zu erkennen, dass es sich um eine Hyperbel handelt.
 
Zuletzt bearbeitet:
Jede Grundform der Mathematischen Formeln in deterministischen endlichen Automaten ausdrücken und diese dann als Java-Metode implementieren.

War auch mein erster Gedanke. Reguläre Ausdrücke kann man nur nutzen, wenn man die Formeln in einem bestimmten Format verlangt.
 
Reguläre Ausdrücke kann man nur nutzen, wenn man die Formeln in einem bestimmten Format verlangt.

Bedingt. z.B. würden sich relativ einfach alle ganzrationalen Funktionen mit ausschließlich positiven Exponenten mit einer Regex matchen lassen. Die Ausgabe wäre dann denkbar simpel, z.B.
Code:
Die Funktion f mit f(x)=10-2x^3+5ax^2 ist eine ganzrationale Funktion 3. Grades und dem Parameter a.
 
Ein Format wäre für mich z.B. "ganzrationalen Funktionen mit ausschließlich positiven Exponenten". Diese Funktion fällt übrigens unter deine Definition 😛

Code:
f(x) = ((3*3)^6/4x^2)^4+(3x-2)^(5/2)

PS: Ist doch relativ unspannend etwas einzutippen, wo man das Ergebnis schon vorher sieht.
 
Zuletzt bearbeitet:
Ein Format wäre für mich z.B. "ganzrationalen Funktionen mit ausschließlich positiven Exponenten". Diese Funktion fällt übrigens unter deine Definition 😛

Code:
f(x) = ((3*3)^6/4x^2)^4+(3x-2)^(5/2)

PS: Ist doch relativ unspannend etwas einzutippen, wo man das Ergebnis schon vorher sieht.
Ich sage ja nicht, dass die Regex kurz oder simpel ist... ich habe schon über Stunden Regex-Monster im Tester erschaffen die sich über 3-4 Zeilen erstrecken.

Aber sicher - ganz allein die Regex wird es nicht regeln denn die entscheidenden Elemente muss man nochmal einzeln untersuchen.
Auch macht es sinn im Bezug auf Dinge wie [c](3x-2)^(5/2)[/c] vorher eine Umformung nach [c](3x-2)^2.5[/c] vorzunehmen.
 
Danke erstmal für die vielen Antworten 😀

Ich habe mich gestern Nacht das ganze komplett anderes gestaltet. Ich wollte lediglich einige Funktionstypen haben und nicht alle. Somit werde ich jetzt für alle einzelnen Funktionen, die ich haben möchte, extra Formulare anlegen, wo man dann nur noch den Parameter eingeben muss. Ich habe das ganze gestern erstmal für lineare Funktionen gestaltet. Wer sich das mal anschauen möchte kann das gerne hier tun: MathHelper.jar
 

Neue Themen


Zurück
Oben