Документация |
---|
https://msolve.lip6.fr/
msolve
— это библиотека C с открытым исходным кодом, реализующая алгоритмы компьютерной алгебры для решения полиномиальных систем (с рациональными коэффициентами или коэффициентами в простом поле).
В настоящее время с помощью msolve
вы можете решать многомерные полиномиальные системы. Это включает в себя:
Учебник доступен здесь
Некоторые функциональные возможности msolve уже доступны в системах компьютерной алгебры Oscar и SageMath. Дополнительную информацию об этом смотрите ниже.
См. файл INSTALL.
Дополнительная информация приведена в руководстве (см. https://msolve.lip6.fr).
Входные файлы msolve
должны иметь следующий формат:
1-я строка : переменные в виде списка, разделенного запятыми, например x1,x2,x3,x4,y1,y2
.
2-я строка : характеристика поля, например 0
.
следующие строки : генерация полиномов, все, кроме последней, должны заканчиваться символом ,
, например
x1,x2,x3,x4,y1,y2
101
x1+x2+x3+x4,
2*y1-145*y2
Полиномы могут быть многострочными, например ,
в качестве разделителя.
Коэффициенты могут быть рациональными, используя /
, например -2/3*x2*y1^2+...
.
Некоторые основные команды следующие:
./msolve -f in.ms -o out.ms
воля:
msolve
изолирует реальные решенияmsolve
вычислит параметризацию решений Все выходные данные отображаются в файле out.ms
Флаг -v
позволяет вам контролировать детализацию, давая представление о том, что делает msolve
. Попробуйте это.
./msolve -v 2 -f in.ms -o out.ms
msolve
вычисляет базы Грёбнера, когда базовое поле является либо полем рациональных чисел, либо полем простых чисел (характеристика должна быть меньше 2^31).
Следующая команда
./msolve -g 1 -f in.ms -o out.ms
вычислит ведущие мономы приведенного базиса Грёбнера идеала, генерируемого системой ввода, за in.ms
для так называемого градуированного обратного лексикографического упорядочения. Это позволяет вам определить размерность набора решений для входных полиномов (в алгебраическом замыкании основного поля), а также степень идеала, который они порождают.
Использование флага -g 2
следующим образом
./msolve -g 2 -f in.ms -o out.ms
вернет сокращенный базис Гребнера для градуированного обратного лексикографического упорядочения.
msolve
также позволяет выполнять вычисления по базису Гребнера, используя мономиальный порядок исключения одного блока, благодаря флагу -e
. Следующая команда
./msolve -e 1 -g 2 -f in.ms -o out.ms
выполнит базисное вычисление Грёбнера, исключая первую переменную. В более общем смысле, использование -ek
устранит первые k
переменных.
Когда входная полиномиальная система имеет рациональные коэффициенты и когда она имеет конечное число комплексных решений , msolve
по умолчанию вычисляет действительные решения входной системы. Они закодированы с помощью изолирующих рамок для всех координат всех реальных решений.
Например, во входном файле in.ms
следующим образом
x, y
0
x^2+y^2-4,
x*y-1
вызов ./msolve -f in.ms -o out.ms
отобразит в файле out.ms
следующий вывод
[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]]]
]]:
которые представляют собой 4 изолирующих прямоугольника 4 точных корней, числовые аппроксимации которых равны (-0.5176380902, -1.931851653)
, (-1.931851653, -0.5176380902)
, (1.931851653, 0.5176380902)
и (0.5176380902, 1.931851653)
.
Некоторые компоненты msolve
распараллеливаются посредством многопоточности. Ввод текста
./msolve -t 4 -f in.ms -o out.ms
сообщает msolve
использовать 4 потока. Многопоточность в msolve
используется в
msolve
в алгебраическом решении AlgebraicSolving — это пакет Julia, который является оболочкой msolve
и предоставляет некоторые дополнительные функции, такие как вычисление рациональных решений. См. здесь для получения дополнительной информации и документации.
msolve
на Оскаре msolve
используется в Оскаре для решения полиномиальных систем с рациональными коэффициентами.
Он определит, имеет ли входная система конечное число сложных решений, и в этом случае он выведет рациональную параметризацию набора решений, а также реальные решения для входной системы (см. руководство по msolve
здесь).
Вы можете посмотреть это и документацию Оскара.
Вот как вы можете его использовать.
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
в SageMath Если у вас установлена msolve
, она используется SageMath при вызове функции Variety
для решения полиномиальных систем с действительными коэффициентами.
Вы можете посмотреть здесь и здесь
Мы благодарны Марку Меззароббе, который инициировал использование msolve
в SageMath, и всей команде разработчиков SageMath, в частности тем, кто участвовал в этом задании.
msolve
Если вы использовали msolve
при подготовке какой-либо статьи, мы будем признательны, если вы процитируете ее следующим образом:
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.
или, если вы используете записи BibTeX:
@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},
}
Статью можно скачать здесь.
Разработка msolve
поддерживается инициативой Forschungsinitiative Rheinland-Pfalz.