Небольшое HOWTO...
Возьмем для примера уравнение
. В Maple в пакете
Groebner есть функция
HilbertDimension(), которая позволяет получить размерность многообразия. Наберем в Maple следующие команды:
Цитата:
> with(Groebner)
>
//(
здесь J - идеал, порождаемый > HilbertDimension(J)
HilbertDimension(J) выдаст 2. Теперь добавим к исходному уравнению еще одно:
Наберем в Maple:
Цитата:
> with(Groebner)
>
> HilbertDimension(J)
HilbertDimension(J) выдаст 1.
И наконец для системы
HilbertDimension(J) выдаст 0, что соответствует конечному множеству корней. Для этих же целей можно использовать функцию
IsZeroDimensional(), которая в случае многообразия размерности 0 выдаст "true" (и "false" в противном случае).
Теперь для последней системы/идеала получим базис Гребнера в лексикографическом(!) порядке (используем функцию
Basis()). Наберем в Maple:
Цитата:
> with(Groebner)
>
> Basis(J, plex(x, y, z)) //(plex(x, y, z) - указывает на использование лексикографического порядка)
Получим:
. Т.е. по сути мы пришли к эквивалентной
треугольной системе полиномиальных уравнений:
Базис Гребнера, вычисляемый в лексикографическом(!) порядке, обладает уникальным свойством - он приводит исходную систему полиномиальных уравнений к треугольному виду! Если размерность многообразия равна нулю, то первым уравнением в треугольной системе будет полиномиальное уравнение (возможно высокой степени) от одной переменной.