Was leistet der mathematische Parser

Der mathematische Parser (die Funktionen sind als Sammlung von Unterprogrammen in C, FORTRAN und Pascal und als Klassenbibliothek für C++ verfügbar) realisiert die Berechnung von reellen Zahlenwerten, die durch arithmetische Ausdrücke (als Strings) definiert werden.

Die Ausdrücke dürfen ZAHLEN, definierte KONSTANTEN (bzw. Variablen), STANDARDFUNKTIONEN, definierte FUNKTIONEN, öffnende und schließende Klammern ( [ { } ] )  enthalten. Diese Elemente können durch die Symbole für die vier Grundrechenarten  + - * /  und das Symbol für das Potenzieren (^ oder **) verknüpft werden. Leerzeichen werden ignoriert, bei den Buchstaben wird nicht zwischen Groß- und Kleinbuchstaben unterschieden. Die arithmetischen Operationen werden unter Beachtung der Vorrangregeln ausgeführt.

  • ZAHLEN können (optional) ein Vorzeichen, einen Dezimalpunkt und einen Exponenten (gegebenenfalls auch mit einem Vorzeichen) enthalten (Beispiele:  - 2.1 E-5  ; 5120  ;  . 3125  ; 
    - 0.001).
     
  • KONSTANTEN (auch Variablen) werden durch einen NAMEN identifiziert und mit einem Wert, der aus einem arithmetischen Ausdruck gebildet wird, im Wertespeicher des Parsers gespeichert. Ein NAME besteht aus Zeichen und muß mit einem Buchstaben beginnen, die übrigen Zeichen dürfen Buchstaben, Ziffern und der Unterstrich _ sein.
     
  • STANDARDFUNKTIONEN werden auf ein Argument angewendet, das der Funktionsbezeichnung in Klammern folgen muß. Zulässig sind
     
    • die trigonometrischen Funktionen  sin, cos, tan, cot,
    • die Arcus-Funktionen  asin, acos, atan, acot,
    • die Hyperbelfunktionen  sinh, cosh, tanh, coth,
    • die Area-Funktionen  asinh, acosh, atanh, acoth,
    • die Logarithmus-Funktionen  ln (natürlicher Logarithmus)  und  lg (dekadischer Logarithmus),
    • die e-Funktion  exp,
    • die Quadratwurzel-Funktion  sqrt  bzw.  sqr,
    • die Absolutwert-Funktion  abs,
    • die Signum-Funktion  sign,
    • die "Anschalt-Funktion"  swon  und die "Abschalt-Funktion"  swoff,
    • die Fakultät-Funktion  fak.
       
  • Definierte FUNKTIONEN (nur in der C++-Version) werden durch einen NAMEN identifiziert und mit dem STRING, aus dem der Wert berechnet werden soll (arithmetischer Ausdruck), im Funktionenspeicher des Parsers abgelegt. Wenn aus dem String ein Wert berechnet werden kann, wird auch dieser mit dem Namen der Funktion im Wertespeicher des Parsers gespeichert. Ein NAME besteht (wie der Name einer Konstanten) aus Zeichen und muß mit einem Buchstaben beginnen, die übrigen Zeichen dürfen Buchstaben, Ziffern und der Unterstrich _ sein.

Ein arithmetischer Ausdruck, der dem Parser als String zu übergeben ist, wird einer syntaktischen Kontrolle unterzogen. Wenn er fehlerfrei ist, wird versucht, den Wert des Ausdrucks zu ermitteln, wobei weitere Kontrollen (Verwendung unerlaubter Argumente für die Standardfunktionen, Division durch Null, Überlaufgefahr, ...) durchgeführt werden. Fehler können durch einen zurückgegebenen Indikator (und den Bereich im String, in dem der Fehler entdeckt wurde) identifiziert werden.

Beispiele für korrekte arithmetische Ausdrücke:

    17 + 5 * 9.3

    - 3 * sin ( - 210)

    PI / 2 + SQRT [ 1 + ( cos ( PI / 4)) ^ ( 3 / 2) ]

Ob die Argumente der Winkelfunktionen in Grad oder Radian interpretiert werden sollen, kann über einen Schalter eingestellt (und jederzeit wieder verändert) werden. Die Konstante p (als PI oder pi oder Pi in den Ausdrücken verwendbar) und die Konstante e (Basis der natürlichen Logarithmen, in Ausdrücken als E oder e verwendbar) sind vordefiniert, alle übrigen Konstanten, die verwendet werden, müssen vorher definiert werden. In den nachfolgenden Beispielen wird vorausgesetzt, daß die Konstanten RADIUS, HÖHE, XDL und YDL vorab definiert wurden (und im Parser mit einem Zahlenwert gespeichert sind):

    1 / 3 * pi * RADIUS ^ 2 * HÖHE

    3 * sinh (xdl / 4 + 2) + 4 * sqrt ( 0.98 * ydl + 2)

Beispiele für fehlerhafte arithmetische Ausdrücke:

    3 * - 20            (zwei aufeinanderfolgende Operationssymbole)

    SQRT 27.3          (Argument einer Standardfunktion muß eingeklammert werden)

    LN ( COS (PI) )     (Logarithmus mit negativem Argument)

    5 / SIN (PI)        (Division durch Null)

    SINH (1000)        (Operation führt zu Überlauf)

home

www.D@nkert.de

mail
Mail2

D

Zurück zur Parser-Hauptseite

nkert.de