Symbolische Mathematik ist ein Spaß-Projekt. Ob jemand es benutzt oder nicht, scheint in deiner Frage nicht von Bedeutung zu sein, also tauche ein.
Ich habe zwei davon über die Jahre geschrieben. Am coolsten war eine für SQL-where-Klauseln - sie führte einige symbolische Manipulationen am SQL durch, um einige zusätzliche AND-Bedingungen einzufügen. Nicht ein vollständiger "Löser" oder "Optimierer" oder irgendetwas, nur ein paar symbolische Manipulationen irgendeiner SQL-Where-Klausel sind möglich. Das weniger coole war für einen Debugger; Es wurde komplexe Mathematik verwendet, um Offsets für Variablen (symbolisch) zu berechnen.
Sie beginnen mit Klassen für Elemente eines mathematischen Ausdruck definieren - Operanden, Operatoren, Funktionen etc.
Sie müssen entscheiden, welche Manipulationen diese Objekte zu beteiligen haben.Einen konkreten Wert für einen Ausdruck zu erhalten, ist einfach und offensichtlich. Beginnen Sie mit dem Fall, in dem alle Variablen eine Bindung haben.
Dann behandeln Sie den Fall, in dem einige Variablen nicht gebunden sind und Sie nur Teile des Ausdrucks auswerten können.
Dann handhaben Umordnen eines Ausdrucks in eine kanonische Form. Das heißt, Sie haben eine Teilbewertung durchgeführt und haben Add(Variable(x), Add(Variable(x), Lit(3)))
. Sie müssen Regeln schreiben, um dies in Add(Multiply(Lit(2), Variable(x)), Lit(3))
umzuwandeln.
Eine sehr coole Übung ist die Optimierung der Klammer, so dass die gedruckte Ausgabe die wenigsten Klammern benötigt, um die Bedeutung zu erfassen.
Es gibt viele, viele andere "Ausdruckstransformations" -Regeln, die wir alle in der Schule lernen, um algebraische Manipulationen zu machen. Viele von ihnen.
Insbesondere kann das Umordnen einer Gleichung zum Isolieren einer Variablen in einigen Fällen sehr schwierig sein.
Die Ableitung der Transformation ist einfach, aber die symbolische Integration ist wirklich, wirklich schwer mit einer Tonne Spezialfälle.
Die Grundlagen sind lustig. Je nachdem, wie weit du gehen willst, wird es immer schwieriger.
Eine andere Bibliothek Option ist, Sage zu verwenden (http://www.sagemath.org/) –