Wie konvertiert man eine Gleichung in Formeln für einzelne Variablen?

.net c# expression-trees logic math

Frage

Wie konvertiert man eine Gleichung in Formeln für einzelne Variablen? Ich denke über eine mathematische Gleichung nach:

c^2 = a^2 + b^2

Ich möchte eine Funktion haben, die jede Formel verarbeiten kann, und mir die einzelnen Variablenformeln geben. Die obige Gleichung würde folgendes ergeben:

c^2 = a^2 + b^2

Ich möchte auch beginnen mit:

c^2 = a^2 + b^2

und Ausgabe:

c^2 = a^2 + b^2

Ich habe mir Ausdrucksbäume angeschaut, aber ich habe Schwierigkeiten, mir vorzustellen, wie das funktionieren wird. Ich möchte eine .NET (C #, VB.NET oder F #) Lösung. Irgendwelche Ideen?

Etwas wie:

c^2 = a^2 + b^2

Vielen Dank.

Akzeptierte Antwort

Das Lösen von symbolischen Gleichungen ist ein komplexes Problem und für viele Gleichungen gibt es keine geschlossene Lösung. Schreiben Sie Ihr eigenes Computer Algebra System ist nicht trivial, aber Sie können vielleicht ein Programm für einfache Gleichung schreiben.

Sie müssen einen Ausdrucksbaum der Eingabezeichenfolge erstellen und Transformationsregeln zum Manipulieren der Ausdrucksbaumstruktur definieren. Um nach einer Variablen zu suchen, können Sie dann eine Suche (unter Berücksichtigung guter Heuristiken, um die Laufzeit akzeptabel zu halten) auf dem Raum des Ausdrucksbaums durchführen, der durch mehrere Anwendungen von Transformationsregeln aus dem ursprünglichen Baum abgeleitet werden kann.


Beliebte Antwort

Das ist ein nicht-triviales Problem, das du lösen willst ... Ich glaube nicht, dass du viel Glück haben wirst, wenn du es alleine lösen willst. Es ist besser, eine Art von Drittanbieter-App oder eine Bibliothek zu finden, die das tut. Es gibt eine Reihe von Programmen, die die Operation ausführen können, über die Sie sprechen, wie Matlab und Maple. Auch ein TI-89 Graphikrechner kann das machen. Sie können möglicherweise die benötigten Algorithmen von Octave erhalten , was im Wesentlichen eine Open-Source-Implementierung von Matlab ist.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum