Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Mathematische Formeln parsen

  Alt 4. Okt 2008, 12:40
Okay ... also Rekursion ist schon mal einen Schritt zu weit gedahct, würde ich fast sagen ...

Du solltest dir erstmal klar machen, was du genau machen musst. Die Implementation ist erst danach dran.

Im allgemeinen musst du einen Binären Baum aufbauen, der aus sog. Token besteht.

Das ist der kleinste Teil einer mathem. Formel (also so ähnlich, wie dein Block)

Das sieht dann im Endeffekt so aus, dass ein Knoten einen Operanden darstellt, und dieser dann 2 Kinder haben kann. Jedes Kind kann entweder ein weiterer Operand sein, oder ein Symbol (X, Y, 42 oder -1)
(Zumindest bei binären Operatoren wie plus und minus usw.)

D.h. 2x^2 - x^3 + x(x-2)

Wird zu einem Baum:
Code:
*             {-}
      {*}            {+}
  {^}    {2}     {^}        {*}
{X} {2}        {X} {3}   {X}   {-}
                             {X} {2}
Den kannst du dann berechnen (rekursiv oder iterativ) bzw. vorher x einsetzen.

Aber es gibt hier auch schon ein paar Mathe-Parser, da kannst du dir ja mal einen angucken

Edit: Das parsen als Baum hat den Vorteil, dass du nachher schneller Rechnen kannst, als wenn du jedes mal den String parst, wenn du einen neuen X-Wert auswerten willst.
Außerdem kannst du das dann "kompilieren", um es noch schneller zu machen, aber das ist dann schon fortgeschritten
  Mit Zitat antworten Zitat