Previous: Введение в пакет grobner, Up: Top   [Contents][Index]

51.2 Функции и переменные пакета grobner

51.2.1 Глобальные переключатели пакета grobner

Управляющая переменная: poly_monomial_order

Значение по умолчанию: lex

Этот глобальный переключатель управляет тем, какой порядок одночленов используется с многочленах и в вычислении базиса Гребнера. Если значение не задано, то будет использовано lex.

Управляющая переменная: poly_coefficient_ring

Значение по умолчанию: expression_ring

Этот переключатель указывает кольцо коэффициентов многочленов, используемое в вычислениях базиса Гребнера. Если значение не задано, то используется общее кольцо выражений maxima. Если необходимо, значение переключателя может быть установлено равным ring_of_integers.

Управляющая переменная: poly_primary_elimination_order

Значение по умолчанию: false

Определяет порядок исключения переменных в функциях, основанных на исключении переменных. Если значение не задано, то будет использовано lex.

Управляющая переменная: poly_secondary_elimination_order

Значение по умолчанию: false

Определяет порядок сохраняемых переменных в функциях, основанных на исключении переменных. Если значение не задано, то будет использовано lex.

Управляющая переменная: poly_elimination_order

Значение по умолчанию: false

Определяет порядок исключения в вычислениях, основанных на исключении переменных. Если значение задано, то оно перекрывает значение переменных poly_primary_elimination_order и poly_secondary_elimination_order. Пользователь должен обеспечить, что заданный порядок исключения применим для данного числа исключаемых переменных.

Управляющая переменная: poly_return_term_list

Значение по умолчанию: false

Если равно true, то все функции пакета возвращают многочлены в виде списков членов с текущим порядком одночленов, а не в виде выражений maxima.

Управляющая переменная: poly_grobner_debug

Значение по умолчанию: false

Если равно true, то выводится трассировка и отладочная информация.

Управляющая переменная: poly_grobner_algorithm

Значение по умолчанию: buchberger

Возможные значения:

Определяет алгоритм, используемый для поиска базиса Гребнера.

Управляющая переменная: poly_top_reduction_only

Значение по умолчанию: false

Если не равно false, то когда возможно используется только приведение верхнего уровня. Приведение верхнего уровня означает, что алгоритм деления останавливается после первого приведения.

51.2.2 Простые операторы в пакете grobner

poly_add, poly_subtract, poly_multiply и poly_expt являются арифметическими операциями над многочленами. Они осуществляются над внутренним представлением, но результат преобразуется обратно в выражение maxima.

Функция: poly_add (poly1, poly2, varlist)

Складывает два многочлена poly1 и poly2.

(%i1) poly_add(z+x^2*y,x-z,[x,y,z]);
                                    2
(%o1)                              x  y + x
Функция: poly_subtract (poly1, poly2, varlist)

Вычитает многочлен poly2 из poly1.

(%i1) poly_subtract(z+x^2*y,x-z,[x,y,z]);
                                      2
(%o1)                          2 z + x  y - x
Функция: poly_multiply (poly1, poly2, varlist)

Возвращает произведение многочленов poly1 и poly2.

(%i2) poly_multiply(z+x^2*y,x-z,[x,y,z])-(z+x^2*y)*(x-z),expand;
(%o1)                                  0
Функция: poly_s_polynomial (poly1, poly2, varlist)

Возвращает S-многочлен (syzygy polynomial) двух многочленов poly1 и poly2.

Функция: poly_primitive_part (poly1, varlist)

Возвращает многочлен poly деленный на НОД своих коэффициентов.

(%i1) poly_primitive_part(35*y+21*x,[x,y]);
(%o1)                              5 y + 3 x
Функция: poly_normalize (poly, varlist)

Возвращает многочлен poly деленный на свой старший коэффициент. Подразумевается, что деление возможно, что может быть не всегда верно в случае колец не являющихся полями.

51.2.3 Другие функции пакета grobner

Функция: poly_expand (poly, varlist)

Эта функция преобразует многочлен во внутреннее представление и обратно. Она эквивалентна expand(poly), если poly корректно преобразуется в многочлен. Если представление не совместимо с многочленом от переменных varlist, то это приводит к ошибке. Данная функция может быть использована для проверки, возможно ли преобразование выражения во внутреннее представление. Нижеследующие примеры демонстрируют, что допустимы переменные с индексом или в виде трансцендентных функций.

(%i1) poly_expand((x-y)*(y+x),[x,y]);
                                     2    2
(%o1)                               x  - y
(%i2) poly_expand((y+x)^2,[x,y]);
                                2            2
(%o2)                          y  + 2 x y + x
(%i3) poly_expand((y+x)^5,[x,y]);
                  5      4         2  3       3  2      4      5
(%o3)            y  + 5 x y  + 10 x  y  + 10 x  y  + 5 x  y + x
(%i4) poly_expand(-1-x*exp(y)+x^2/sqrt(y),[x]);
                                          2
                                  y      x
(%o4)                       - x %e  + ------- - 1
                                       sqrt(y)

(%i5) poly_expand(-1-sin(x)^2+sin(x),[sin(x)]);
                                2
(%o5)                      - sin (x) + sin(x) - 1

Функция: poly_expt (poly, number, varlist)

возводит многочлен poly в положительную целую степень number. Если number не есть целое положительное число, то сигнализируется ошибка.

(%i1) poly_expt(x-y,3,[x,y])-(x-y)^3,expand;
(%o1)                                  0
Функция: poly_content (poly. varlist)

poly_content вычисляет НОД коэффициентов многочлена

(%i1) poly_content(35*y+21*x,[x,y]);
(%o1)                                  7
Функция: poly_pseudo_divide (poly, polylist, varlist)

Псевдо-деление многочлена poly на список из n многочленов polylist. Возвращает несколько значений. Первое значение – список частных a. Второе значение – остаток r. Третье значение – скалярный коэффициент c, такой что c*poly делимо на polylist в кольце коэффициентов, не обязательно являющимся полем. И наконец, четвертое значение – целое число, дающее число выполненных приведение. Результирующие величины удовлетворяют выражению:

c*poly=sum(a[i]*polylist[i],i=1...n)+r.

Функция: poly_exact_divide (poly1, poly2, varlist)

Делит многочлен poly1 на многочлен poly2. Предполагается, что деление без остатка возможно. Возвращает частное.

Функция: poly_normal_form (poly, polylist, varlist)

Функция poly_normal_form вычисляет нормальную форму многочлена poly по отношению к множеству многочленов polylist.

Функция: poly_buchberger_criterion (polylist, varlist)

Возвращает true если polylist является базисом Гребнера с учетом текущего упорядочивания членов. Использует критерий Бухбергера: для любых двух многочленов h1 и h2 из polylist e S-многочлен S(h1,h2) приводим к 0 по модулю polylist.

Функция: poly_buchberger (polylist_fl varlist)

poly_buchberger применяет алгоритм Бухбергера к списку многочленов и возвращает результирующий базис Гребнера.

51.2.4 Стандартная пост-обработка для базиса Гребнера

Идеал k-го исключения I_k идеала I над K[ x[1],...,x[n] ] есть идеал intersect(I, K[ x[k+1],...,x[n] ]).
Частное идеалов I:J есть идеал {h| для всех w в J: w*h в I}.
Идеал I:p^inf есть идеал {h| существует n в N: p^n*h в I}.
Идеал I:J^inf есть идеал {h| существуют n в N и p в J: p^n*h в I}.
Радикал идеала sqrt(I) есть идеал {h| существует n в N : h^n в I }.

Функция: poly_reduction (polylist, varlist)

poly_reduction приводит список многочленов polylist, так что каждый многочлен полностью приведен по отношению к другим.

Функция: poly_minimization (polylist, varlist)

Возвращает подмножество списка многочленов polylist, порождающих тот же мономиальный идеал, что и polylist но минимальный, т.е. старшие одночлены многочленов из подмножества не делят ни один из других старших одночленов других многочленов этого подмножества.

Функция: poly_normalize_list (polylist, varlist)

poly_normalize_list применяет poly_normalize к каждому многочлену в списке. Т.е. делит каждый из многочленов списка polylist на его старший коэффициент.

Функция: poly_grobner (polylist, varlist)

Возвращает базис Гребнера идеала, порожденного многочленами polylist. Зависит от глобальных флагов.

Функция: poly_reduced_grobner (polylist, varlist)

Возвращает приведенный базис Гребнера идеала, порожденного многочленами polylist. Зависит от глобальных флагов.

Функция: poly_depends_p (poly, var, varlist)

poly_depends проверяет, зависит ли многочлен от переменной var.

Функция: poly_elimination_ideal (polylist, number, varlist)

poly_elimination_ideal возвращает базис Гребнера идеала number-го исключения идеала, порожденного списком многочленов (не обязательно образующих базис Гребнера).

Функция: poly_colon_ideal (polylist1, polylist2, varlist)

Возвращает приведенный базис Гребнера частного идеала

I(polylist1):I(polylist2)

где polylist1 и polylist2 – два списка многочленов.

Функция: poly_ideal_intersection (polylist1, polylist2, varlist)

poly_ideal_intersection возвращает пересечение двух идеалов.

Функция: poly_lcm (poly1, poly2, varlist)

Возвращает наименьший общий множитель многочленов poly1 и poly2.

Функция: poly_gcd (poly1, poly2, varlist)

Возвращает наибольший общий делитель многочленов poly1 и poly2.

Функция: poly_grobner_equal (polylist1, polylist2, varlist)

poly_grobner_equal проверяет порождают ли два базиса Гребнера один и тот же идеал. Возвращает true если два списка многочленов polylist1 и polylist2, предполагаемые базисами Гребнера, порождают один и тот же идеал, и false в противном случае. Это эквивалентно проверке, что каждый многочлен первого базиса приводится к 0 по модулю второго и обратно. Заметим, что в примере ниже первый список не есть базис Гребнера, и по этому результат есть false.

(%i1) poly_grobner_equal([y+x,x-y],[x,y],[x,y]);
(%o1)                         false
Функция: poly_grobner_subsetp (polylist1, polylist2, varlist)

poly_grobner_subsetp проверяет содержится ли идеал, порожденный polylist1, в идеале, порожденном polylist2. Чтобы тест всегда выполнялся, нужно чтобы polylist2 был бы базисом Гребнера.

Функция: poly_grobner_member (poly, polylist, varlist)

Возвращает true, если многочлен poly принадлежит к идеалу, порожденному списком многочленов polylist, который предполагается базисом Гребнера. Иначе возвращает false.

Функция: poly_ideal_saturation1 (polylist, poly, varlist)

Возвращает приведенный базис Гребнера насыщения идеала

I(polylist):poly^inf

Геометрически, над алгебраически замкнутым полем, это есть множество многочленов в идеале, порожденном polylist, которые не исчезают на многообразии poly.

Функция: poly_ideal_saturation (polylist1, polylist2, varlist)

Возвращает приведенный базис Гребнера насыщения идеала

I(polylist1):I(polylist2)^inf

Геометрически, над алгебраически замкнутым полем, это есть множество многочленов в идеале, порожденном polylist1, которые не исчезают на многообразии polylist2.

Функция: poly_ideal_polysaturation1 (polylist1, polylist2, varlist)

polylist2 – есть список n многочленов [poly1,...,polyn]. Возвращает приведенный базис Гребнера идеала

I(polylist):poly1^inf:...:polyn^inf

полученного последовательным насыщением многочленами из списка polylist2 идеала, порожденного списком многочленов polylist1.

Функция: poly_ideal_polysaturation (polylist, polylistlist, varlist)

polylistlist – есть список n списков многочленов [polylist1,...,polylistn]. Возвращает приведенный базис Гребнера насыщения идеала

I(polylist):I(polylist_1)^inf:...:I(polylist_n)^inf

Функция: poly_saturation_extension (poly, polylist, varlist1, varlist2)

poly_saturation_extension реализует знаменитый трюк Рабиновича.

Функция: poly_polysaturation_extension (poly, polylist, varlist1, varlist2)

Previous: Введение в пакет grobner, Up: Top   [Contents][Index]