Вернуть элементы основы Гребнера по мере их обнаружения
Этот вопрос может относиться к любой системе компьютерной алгебры, которая может вычислять Базис Гребнера из набора полиномов (Mathematica, Singular, GAP, Macaulay2, MatLab и т. Д.).
Я работаю с переопределенной системой полиномов, для которой полный базис Гребнера слишком сложно вычислить, однако для меня было бы полезно иметь возможность распечатывать базисные элементы Гребнера по мере их обнаружения, чтобы я мог знать, является ли конкретный полином находится в основе гробнера. Есть какой-либо способ сделать это?
2 ответа
Если вы реализуете алгоритм Бухбергера самостоятельно, то вы можете просто распечатать элементы, как они найдены.
Если у вас есть Mathematica, вы можете использовать этот код в качестве отправной точки.
https://www.msu.edu/course/mth/496/snapshot.afs/groebner.m
Смотрите функцию BuchbergerSteps.
Из-за того, как работает алгоритм Бухбергера (см., Например, Википедию или IVA), частичные результаты, которые вы можете получить, печатая промежуточные результаты, не обязательно составляют основу Грёбнера.
В зависимости от вашей конечной цели, вы можете попробовать вместо этого алгоритм триангуляции идеалов, такой как алгоритм Ритта-Ву (см. Книгу IVA или книгу Шан-Чинг Чоу). Это несколько похоже на приведение к форме эшелона строк в линейной алгебре, и вы можете прервать алгоритм в любой точке, чтобы получить частично приведенную систему полиномиальных уравнений.