In einer C ++ - Anwendung, die ich kodiere, muss ich ein System von nicht linearen Gleichungen (N Gleichungen, N Unbekannten) lösen.
Die Systeme, die ich löse, sind eher klein (bis zu 10 Gleichungen / Unbekannte), daher wird Leistung kein echtes Problem sein. Ich habe das Internet ein wenig nach einer nichtlinearen Solver-Bibliothek durchsucht, und ich kam nicht zu etwas, das einfach zu benutzen ist (zu NOX und C / C + + Minpack , aber beide scheinen ein Overkill für meine Bedürfnisse zu sein.
Irgendwelche Gedanken und Ideen von einfach zu bedienenden Bibliotheken für diesen Zweck?
Es gibt zwei Möglichkeiten für Sie, Sie können die Sonnenuhren-Pakete verwenden, die einen nichtlinearen Löser enthalten, geschrieben in C, denke ich. Das einzige Problem, das ich damit gefunden habe, ist, dass Sie gute Anfangsschätzungen geben müssen. Die zweite Option ist die Verwendung von NLEQ oder NLEQ2, die meiner Meinung nach überlegen sind (in FORTRAN geschrieben, aber leicht mit C-ähnlichen Sprachen verlinkt werden). Allerdings hatte ich einige Probleme, sie zu finden. Es gibt eine gute Website mit einer Liste möglicher Optionen unter: Ссылка
Eins sollte klar sein: Nichtlineare Gleichungslösung ist nicht einfach. Es ist nicht das Gleiche wie lineare Gleichungen zu lösen. Sie erhalten nicht immer eine Lösung. Und Ihre Wahl der Anfangsbedingung und der Inkrementierungsstrategie kann tiefgreifende Auswirkungen auf die Lösung haben, die Sie erhalten.
Damit kann ich eine bestimmte Bibliothek nicht empfehlen, aber Sie sollten nach einem linearen Algebra-Paket Ausschau halten, das Newton-Raphson-Iteration in seinem Auswahlmenü enthält.
Numerische Rezepte hat eine Routine, die die Arbeit für Sie erledigen wird.
Es hängt davon ab, wie nichtlinear die Gleichungen sind. Wenn sie einige "nette" Eigenschaften besitzen ... am offensichtlichsten sind positiv-semi-definite Matrix oder Konvexität, können spezialisierte Algorithmen verfügbar sein. Ich verwende IBM / ILOG CPLEX für die meisten meiner linearen Programmieranforderungen. Es werden Bibliotheken bereitgestellt, die in C ++ - Anwendungen eingebunden werden können. Obwohl ich ihr quadratisches Programmiermodul nicht benutzt habe, ist es wirklich der Stand der Technik in der linearen und nichtlinearen Programmierung mit hoher Leistung.
Tags und Links math c++ equation-solving libraries