Dokumentation |
---|
https://msolve.lip6.fr/
msolve
ist eine Open-Source-C-Bibliothek, die Computeralgebra-Algorithmen zum Lösen von Polynomsystemen (mit rationalen Koeffizienten oder Koeffizienten in einem Primkörper) implementiert.
Derzeit können Sie mit msolve
grundsätzlich multivariate Polynomsysteme lösen. Dies umfasst:
Ein Tutorial gibt es hier
Einige der Funktionalitäten von msolve sind bereits in den Computeralgebrasystemen Oscar und SageMath verfügbar. Weitere Informationen hierzu finden Sie weiter unten.
Siehe die INSTALL-Datei.
Weitere Informationen finden Sie im Tutorial (siehe https://msolve.lip6.fr)
msolve
Eingabedateien müssen das folgende Format haben:
1. Zeile : Variablen als durch Kommata getrennte Liste, zB x1,x2,x3,x4,y1,y2
.
2. Zeile : Feldcharakteristik, z. B. 0
.
Folgende Zeilen : Erzeugen von Polynomen, alle bis auf das letzte müssen mit einem enden ,
z. B
x1,x2,x3,x4,y1,y2
101
x1+x2+x3+x4,
2*y1-145*y2
Polynome können also mehrzeilig sein ,
als Trennzeichen dienen.
Koeffizienten können rational sein und /
verwenden, z. B. -2/3*x2*y1^2+...
.
Einige grundlegende Befehle lauten wie folgt:
./msolve -f in.ms -o out.ms
Wille:
msolve
die realen Lösungenmsolve
eine Parametrisierung der Lösungen Alle Ausgabedaten werden in der Datei out.ms
angezeigt
Mit dem Flag -v
können Sie die Ausführlichkeit steuern und so einen Einblick in die Arbeit von msolve
erhalten. Probieren Sie es aus.
./msolve -v 2 -f in.ms -o out.ms
msolve
berechnet Groebner-Basen, wenn der Basiskörper entweder der Körper rationaler Zahlen oder ein Primkörper ist (Merkmal sollte kleiner als 2^31 sein).
Der folgende Befehl
./msolve -g 1 -f in.ms -o out.ms
wird die führenden Monome der reduzierten Groebner-Basis des vom Eingabesystem in in.ms
generierten Ideals für die sogenannte abgestufte umgekehrte lexikografische Reihenfolge berechnen. Dadurch können Sie die Dimension des Lösungssatzes der Eingabepolynome (in einem algebraischen Abschluss des Basisfeldes) sowie den Grad des von ihnen erzeugten Ideals ableiten.
Verwenden Sie das Flag -g 2
wie folgt
./msolve -g 2 -f in.ms -o out.ms
gibt die reduzierte Groebner-Basis für die abgestufte umgekehrte lexikografische Reihenfolge zurück.
msolve
können Sie dank des Flags -e
auch Groebner-Basen-Berechnungen mit Ein-Block-Eliminations-Monomial-Reihenfolge durchführen. Der folgende Befehl
./msolve -e 1 -g 2 -f in.ms -o out.ms
führt die Groebner-Basisberechnung durch und eliminiert die erste Variable. Allgemeiner gesagt werden durch die Verwendung -ek
die ersten k
Variablen entfernt.
Wenn das Eingabepolynomsystem rationale Koeffizienten und endlich viele komplexe Lösungen hat , berechnet msolve
standardmäßig die realen Lösungen des Eingabesystems. Diese sind mit Isolierkästen für alle Koordinaten aller reellen Lösungen kodiert.
Zum Beispiel für die Eingabedatei in.ms
wie folgt
x, y
0
x^2+y^2-4,
x*y-1
Der Aufruf ./msolve -f in.ms -o out.ms
zeigt in der Datei out.ms
die folgende Ausgabe an
[0, [1,
[[[-41011514734338452707966945920 / 2^96, -41011514734338452707966945917 / 2^96], [-153057056683910732545430822374 / 2^96, -153057056683910732545430822373 / 2^96]],
[[-612228226735642930181723289497 / 2^98, -612228226735642930181723289492 / 2^98], [-164046058937353810831867783675 / 2^98, -164046058937353810831867783674 / 2^98]],
[[612228226735642930181723289492 / 2^98, 612228226735642930181723289497 / 2^98], [164046058937353810831867783674 / 2^98, 164046058937353810831867783675 / 2^98]],
[[41011514734338452707966945917 / 2^96, 41011514734338452707966945920 / 2^96], [153057056683910732545430822373 / 2^96, 153057056683910732545430822374 / 2^96]]]
]]:
Dies sind die 4 Isolierboxen der 4 exakten Wurzeln, deren numerische Näherungen (-0.5176380902, -1.931851653)
, (-1.931851653, -0.5176380902)
, (1.931851653, 0.5176380902)
und sind (0.5176380902, 1.931851653)
.
Mehrere Komponenten von msolve
werden durch Multithreading parallelisiert. Tippen
./msolve -t 4 -f in.ms -o out.ms
weist msolve
4 Threads zu verwenden. Multithreading in msolve
wird verwendet in
msolve
in AlgebraicSolving AlgebraicSolving ist ein Julia-Paket, das msolve
umschließt und weitere Funktionen wie die Berechnung rationaler Lösungen bereitstellt. Weitere Informationen und Dokumentation finden Sie hier.
msolve
msolve
wird in Oscar verwendet, um Polynomsysteme mit rationalen Koeffizienten zu lösen .
Es erkennt, ob das Eingabesystem endlich viele komplexe Lösungen hat, und gibt in diesem Fall eine rationale Parametrisierung der Lösungsmenge sowie die realen Lösungen für das Eingabesystem aus (siehe das Tutorial von msolve
hier).
Sie können sich dies und die Dokumentation von Oscar ansehen.
Hier erfahren Sie, wie Sie es verwenden können.
julia> R,(x1,x2,x3) = PolynomialRing(QQ, ["x1","x2","x3"])
(Multivariate Polynomial Ring in x1, x2, x3 over Rational Field, fmpq_mpoly[x1, x2, x3])
julia> I = ideal(R, [x1+2*x2+2*x3-1, x1^2+2*x2^2+2*x3^2-x1, 2*x1*x2+2*x2*x3-x2])
ideal(x1 + 2*x2 + 2*x3 - 1, x1^2 - x1 + 2*x2^2 + 2*x3^2, 2*x1*x2 + 2*x2*x3 - x2)
julia> real_solutions(I)
((84*x^4 - 40*x^3 + x^2 + x, 336*x^3 - 120*x^2 + 2*x + 1, PolyElem[-184*x^3 + 80*x^2 - 4*x - 1, -36*x^3 + 18*x^2 - 2*x], fmpz[-1, -1]), Vector{fmpq}[[744483363399261433351//1180591620717411303424, 372241681699630716673//1180591620717411303424, -154187553040555781639//1180591620717411303424], [1, 0, 0], [71793683196126133110381699745//316912650057057350374175801344, 71793683196126133110381699745//633825300114114700748351602688, 173325283664805084153412401855//633825300114114700748351602688], [196765270119568550571//590295810358705651712, 1//590295810358705651712, 196765270119568550571//590295810358705651712]])
msolve
in SageMath Wenn Sie msolve
installiert haben, wird es von SageMath verwendet, wenn Sie die Variety
-Funktion zum Lösen von Polynomsystemen mit reellen Koeffizienten aufrufen.
Hier und hier können Sie einen Blick darauf werfen
Wir danken Marc Mezzarobba, der die Verwendung von msolve
in SageMath initiiert hat, und dem gesamten Entwicklungsteam von SageMath, insbesondere denjenigen, die an diesem Ticket beteiligt waren
msolve
Wenn Sie msolve
bei der Erstellung einer Arbeit verwendet haben, sind wir dankbar, dass Sie diese wie folgt zitieren:
msolve: A Library for Solving Polynomial Systems,
J. Berthomieu, C. Eder, M. Safey El Din, Proceedings of the
46th International Symposium on Symbolic and Algebraic Computation (ISSAC),
pp. 51-58, ACM, 2021.
oder, wenn Sie BibTeX-Einträge verwenden:
@inproceedings{msolve,
TITLE = {{msolve: A Library for Solving Polynomial Systems}},
AUTHOR = {Berthomieu, J{'e}r{'e}my and Eder, Christian and {Safey El Din}, Mohab},
BOOKTITLE = {{2021 International Symposium on Symbolic and Algebraic Computation}},
ADDRESS = {Saint Petersburg, Russia},
SERIES = {46th International Symposium on Symbolic and Algebraic Computation},
PAGES = {51--58},
PUBLISHER = {{ACM}},
YEAR = {2021},
MONTH = Jul,
DOI = {10.1145/3452143.3465545},
PDF = {https://hal.sorbonne-universite.fr/hal-03191666v2/file/main.pdf},
HAL_ID = {hal-03191666},
HAL_VERSION = {v2},
}
Das Papier kann hier heruntergeladen werden.
Die Entwicklung von msolve
wird von der Forschungsinitiative Rheinland-Pfalz gefördert.