Veröffentlicht 26. Februar 201114 j Hallo, ich habe mir einen Funktionsparser gebaut, der eine Funktion von Infix in Postfix konvertiert und dann das Ergebnis errechnet. Nun will ich auch die Ableitung errechnen, aber ich finde keinen effizienten Weg. Ich würde die Funktion als String erstmal in Einzelteile zerlegen und dann einzeln ableiten. Aber gibt es keine effizientere Möglichkeit ?
26. Februar 201114 j Du willst hier symbolisch die Differentation durchführen. Ich gehe davon aus, dass Dir die Regeln bekannt sind. Im Grunde kann man das selbst implementieren, ich würde hier aber zu fertigen Bibliotheken greifen GiNaC is Not a CAS denn diese sind entsprechend getestet. Man kann das zwar auch selbst implementieren, wobei ich dann hier ganz dringend von einer Stringverarbeitung abraten würde und das ganze über eine entsprechende Grammatik definiere, mit Lexer und Parser verarbeiten würde und dann aus dem entsprechenden Syntaxbaum die Ableitungen bilden würde
26. Februar 201114 j Danke für die Antwort. Ich hab schon geahnt das es keinen einfachen Weg gibt es selbst zu implementieren. Da werd ich wohl auf eine Bibliothek zurückgreifen. Danke.
26. Februar 201114 j Naja das Bilden von Ableitung geschieht nach deterministischen Regeln, somit sollte das kein Problem sein. Deine Grammatik für arithmetische Ausdrücke zu schreiben ist auch nicht viel Aufwand. Parser & Lexer kann man mit entsprechenden Tools aus der Grammatik direkt erzeugen (dafür gibt es Toolunterstützung). Sofern man dann einen passenden Syntaxbaum hat, kann man eben diesen passend zu den Ableitungsregeln verarbeiten. Im Gegensatz zur Integration ist das noch recht leicht
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.