Gleichungen symbolisch auflösen
-
wie machen das Programme wie maple + mathematica? haben die eine riesige datenbank mit verschiedenen Funktionmstypen?
-
hi,
nein, sie werden sicherlich nicht alle Möglichkeiten ausprobieren !!Sie machen es wie jeder Compiler oder Interpreter, indem der Ausdruck mit seinen Variablen durchgeschaut wird, ob alle Variablen bekannt sind, ob jede Klammer ( eine Klammer ) hat, und dann wird ein binärer Baum erstellt.
z.B. a=b+c*(z+1)
/ \
* a
/ \
+ c
/ \
z 1Integrale und höheres wird natürlich etwas komplizierter gelöst.
-
Hast du da einen Link zu, oder eine gute Einführung?
Muss nämlich selbst demnächst (d.h. in ca. 2 Wochen) Formeln parsen. Ich hab mir bis jetzt gedacht, dass ich einfach von rechts nach links mir alle Klammern vorknöpf, aber "Punkt vor Strich" macht mich gerade nicht wirklich sehr glücklich
-
Ich weiß schon, wie so ein Baum aufgebaut wird und wie man einen Ausdruck berechnet, aber nicht, wie ein Programm aus
2=x^2
x berechnen kann (und zwar x=sqrt(2) und kein Näherungswert!).
-
Hm,
also Programme setzen einen Wert ein und berechnen dann schrittweise das Ergebnis, für die Klammernpaare benutzt man am besten einen Stack.
Wie man jedoch Formeln umstellt, ist eine gute Frage.
Knöpfe Dir die Seite vor, in der x vorkommt und eliminiere die Operatoren durch die Umkehrfunktion auf der anderen Seite.
Dabei musst Du eben dann auch der Reihe nach rückwärts vorgehen.
-
z.b. regelbasiert
Dazu könnte ich zB das Buch "Paradigms in Artificial Intelligence Programming" (paip) von Peter Norvig empfehlen. Das behandelt dieses und andere KI-Probleme anhand von Lisp. In comp.lang.lisp gab es auch vor kurzem einen Thread über die Frage, ob Wolfram (der Autor von Mathematica) die Lisp-CAS Systeme der 70er kannte und warum er nicht selbst in Lisp programmiert hat.
-
Was ist das Besondere an LISP?
-
Soviel ich weiss, gibt es nur den datentyp Liste und eben die Grunddatentypen.
-
Dann weißt du nicht besonders viel.
-
Kenne ich eben nicht, kennst du Haskell ?
-
Für "kennen" reichts wohl grade so, aber kein Stück mehr.
-
also.