Funktionsparser

Klassenbibliothek: Funktionsparser

Die Klassenbibliothek dient dazu Funktionen einfach einlesen zu können und diese in einer für den Computer lesbare Form umzuwandeln.

Aufbau

Grundlegend besteht die Bibliothek aus zwei Teilen.
Zuerst gibt es einen Teil welcher sich mit allen möglichen Funktionsteilen. Darunter zählen Variablen, Zahlen, Klammern, Operatoren, Argumenttrennzeichen, und auch Subfunktionen mit entweder einem oder zwei Argumenten. Zu Subfunktionen mit einem Argument zählen z.B. Sinus, Cosinus, Tangens, Dekadischer Logarithmus etc. zwei Argumente verwenden Funktionen wie Maximum, Minimum und der Logarithmus mit beliebiger Basis. Zusätzlich sind auch die gängigsten Konstanten wie die Eulersche Zahl e und die Kreiszahl Pi bekannt.
Den zweiten Teil des Parsers bildet die Abbildung der Funktion. Dazu wird eine angegebene Zeichenkette in einen Funktionsbaum umgewandelt. Vorerst wurden dafür generische Klassen für einen grundsätzlichen Binärbaum geschrieben und diese wurden mit dem Typ Funktionsteil verwendet um einen Funktionsbaum zu erzeugen. Zur Umwandlung der Zeichenkette wird dabei der Rangierbahnhof-Algorithmus verwendet. Dieser wandelt die eingegeben Infix-Notation in eine Umgekehrt-Polnische-Notation um.

Verwendung

Zuerst muss eine Funktion eingelesen werden, dabei ist darauf zu achten, dass bei Funktionen mit einer Variablen ‚x‘ verwendet wird und bei Funktionen mit zwei Variablen ‚x‘ und ‚y‘.
Anschließend übergibt man die Zeichenkette an der jeweiligen Konstruktor von entweder ‚FunktionX‘ oder ‚FunktionXY‘.
Für alle Funktionswerte ruft man dann die Methode ‚GetAt()‘ mit der gewünschten Stelle auf. Die Methode verlangt einen Wert mit dem Datentyp ‚double‘ und gibt auch ein ‚double‘ wieder zurück.

Klassen

Klassendiagramme
1. Funktionsteile

2. Funktionsbaum

Ausblick

Diese Klassenbibliothek kann als Basis für Projekte genutzt werden, bei denen man Funktionen einlesen will und diese verarbeiten möchte.
Außerdem kann man den Parser insofern erweitern, dass auch ein Plotter zur Verfügung steht, mit dem man die Funktionen auch Grafisch darstellen kann.
Darauf aufbauend könnte man Anzeigen für Tangentialebenen und Ableitungen einbauen.