Вернуть элементы основы Гребнера по мере их обнаружения

Этот вопрос может относиться к любой системе компьютерной алгебры, которая может вычислять Базис Гребнера из набора полиномов (Mathematica, Singular, GAP, Macaulay2, MatLab и т. Д.).

Я работаю с переопределенной системой полиномов, для которой полный базис Гребнера слишком сложно вычислить, однако для меня было бы полезно иметь возможность распечатывать базисные элементы Гребнера по мере их обнаружения, чтобы я мог знать, является ли конкретный полином находится в основе гробнера. Есть какой-либо способ сделать это?

2 ответа

Если вы реализуете алгоритм Бухбергера самостоятельно, то вы можете просто распечатать элементы, как они найдены.

Если у вас есть Mathematica, вы можете использовать этот код в качестве отправной точки.

https://www.msu.edu/course/mth/496/snapshot.afs/groebner.m

Смотрите функцию BuchbergerSteps.

Из-за того, как работает алгоритм Бухбергера (см., Например, Википедию или IVA), частичные результаты, которые вы можете получить, печатая промежуточные результаты, не обязательно составляют основу Грёбнера.

В зависимости от вашей конечной цели, вы можете попробовать вместо этого алгоритм триангуляции идеалов, такой как алгоритм Ритта-Ву (см. Книгу IVA или книгу Шан-Чинг Чоу). Это несколько похоже на приведение к форме эшелона строк в линейной алгебре, и вы можете прервать алгоритм в любой точке, чтобы получить частично приведенную систему полиномиальных уравнений.

Другие вопросы по тегам