Frage

Ich brauche zu lösen, ein paar mathematische Gleichungen in meiner Anwendung.Hier ist ein typisches Beispiel für eine solche Gleichung:

a + b * c - d / e = a

Zusätzliche Regeln:

  • b % 10 = 0
  • b >= 0
  • b <= 100
  • Jede Zahl muss integer sein
  • ...

Ich möchte die mögliche Lösung setzt für a, b, c, d und e.

Gibt es alle Bibliotheken gibt, entweder open source oder kommerziell, die ich verwenden kann, um zu lösen solch einer Gleichung?Wenn ja, welche Art von Ergebnis tun Sie bieten?

War es hilfreich?

Lösung

lineare Systeme kann im Allgemeinen mit linearer Programmierung gelöst werden . Ich würde empfehlen, einen Blick auf uBLAS Erhöhung für den Anfang - es hat einen einfachen dreieckigen Löser. Dann könnten Sie Bibliotheken Kasse mehr domänenspezifische Ansätze Targeting, vielleicht QSopt .

Andere Tipps

Sie sind in der Welt der numerischen Analyse zu wagen, und hier werden Drachen. Scheinbar kleine Unterschiede in der Spezifikation können einen großen Unterschied machen, was ist der richtige Weg.

Ich zögere, ohne eine ziemlich genaue Beschreibung des Problems Domain konkrete Vorschläge zu machen. Es klingt superficiall wie Sie lineare Probleme beschränkt sind zu lösen, die einfach genug sind, dass es viele Möglichkeiten gibt, es zu tun, aber „...“ könnte ein Problem sein.

Eine gute Quelle für allgemeine Löser usw. wäre GAMS . Ein großer Teil der Software kann es ein bisschen schwer Gewicht sein, was Sie fordern.

Sie möchten ein Computer-Algebra-System.

Siehe https://stackoverflow.com/questions/160911/symbolic-math-lib , die Antworten auf die meist als relevant für c ++ als bis c.

Ich weiß, dass es nicht Ihre eigentliche Frage ist, aber Sie können die gegebene Gleichung vereinfachen:

d = b * c * e mit e! = 0

Ziemlich sicher, dass Numerical Recipes wird etwas

Sie sind für ein Computer-Algebra-System suchen, und das ist keine triviale Sache.

Lots von ihnen zur Verfügung stehen, aber versuchen, diese Liste bei Wikipedia:

http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems

-Adam

Das sieht aus wie lineare Programmierung. Hat dieser Liste Hilfe?

Zusätzlich zu den anderen Beiträgen. Ihre Constraint-Sets machen diese erinnern an einem integer Programmierproblem , so können Sie diese Art der Sache, wie auch überprüfen möchten. Vielleicht kann Ihr Problem sein (Wieder-) als angegeben.

Sie wissen müssen, aber dass die ganze Zahl Programmierprobleme neigen eine der schwierigeren Rechenprobleme, so dass Sie viele Taktzyklen mit vielleicht am Ende, um es zu knacken.

Betrachtet man nur die "zusätzliche Regeln" Teil, es sieht aus wie der linearen Programmierung, in welchem Fall LINDO oder einem ähnlichen Programm die Umsetzung des simplex-Algorithmus sollte in Ordnung sein.

Jedoch, wenn die erste Gleichung ist richtig typische Sie zeigt Ihnen NICHT eine lineare algebra problem - keine 2 Variablen Multiplikation oder Division miteinander angezeigt werden sollte auf eine lineare Gleichung!

Also ich würde sagen, Sie müssen auf jeden Fall entweder ein computer-algebra-system oder lösen Sie das problem mit einem genetischen Algorithmus.

Da Sie Einschränkungen haben, ähnlich denen in der linearen Programmierung, wenn Sie sind nicht ganz da, wenn Sie nur wollen, eine Lösung für Ihr spezielles problem würde ich sagen, nehmen Sie die Bibliotheken schon erwähnt, am Ende von Wikipedia-Artikel über genetische algorithmen und entwickeln Sie eine app, um Ihnen das Ergebnis.Wenn Sie einen generalistischen Ansatz, dann haben Sie zu simulieren algebraische Manipulationen auf Ihrem computer, auf keine andere Weise herum.

Der TI-89-Rechner verfügt über eine 'Solver' Anwendung. Es wurde Probleme zu lösen, wie die in Ihrem Beispiel gebaut. Ich weiß, es ist nicht eine Bibliothek. Aber es gibt mehrere TI-89 Emulatoren gibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top