6.2 Полином

class Poly( polyInterface, poly='0')
Задает полином
polyInterface:
определяет интерфейс полинома (см. 6.1)

poly:
строка инициализирующая полином (см. 3)

Класс Poly имеет следующие методы:

length( )
возвращает количество членов полинома

degree( )
возвращает максимальную сумму степеней переменных монома.

Аналогично degree класса Monom

length( )
возвращает количество членов полинома

norm( )
возвращает норму полинома

lm( )
возвращает лидирующий моном полинома

lc( )
возвращает лидирующий коэффициент полинома

setZero( )
делает полином равным нулю

pp( )
делит многочлен на его содержание

isPp( )
возвращает True если содержание полинома равно 1, иначе False

prolong( var, deg=1)
умножает полином на переменную с номером var в степени deg

mult( coeff)
умножает полином на коэффциент

Коэффициенты полинома и coeff должны иметь одинаковый интерфейс.

mult( monom)
умножает полином на моном

Мономы полинома и monom должны иметь одинаковый интерфейс.

diff( par, deg=1)
возвращает производную полинома по параметру номером par в степени deg.

reduction( poly)
выполняет приведение полинома по полиному poly.

Лидирующий моном poly.должен делит лидирующий моном полинома. Полиномы должны иметь одинаковый интерфейс.

spoly( poly)
строит S-полином полинома и полинома poly.

Полиномы должны иметь одинаковый интерфейс.

Класс Poly может быть аргументом следующих функций:

str( ply)
возвращает представление в виде строки полинома poly согласно типу системы 3.

Аналогично работает команда Python print

cmp( poly1, poly2)
возвращает 1 если poly1 > poly2,
возвращает 0 если poly1 == poly2,
возвращает -1 если poly1 < poly2.

В сравнении участвуют лидирующие мономы полиномов. Полиномы должны иметь одинаковый интерфейс.

<, >, <=, >=, ==, !=( poly1, poly2)
Для этих операций лидирующие мономы полиномов сравниваются согласно определенному типу упорядочения. Полиномы должны иметь одинаковый интерфейс.

Полином может быть использован в логических выражениях. Нулевой полином дает в логических выражениях False, а остальные True

+, /, *( poly1, poly2)
Эти операции возвращают сумму, разность и произведение полиномов.

Полиномы должны иметь одинаковый интерфейс.

+=, /=, *=( poly1, poly2)
Эти операции присваивает сумму, разность и произведение мономов полиномов переменной poly1.

Полиномы должны иметь одинаковый интерфейс.

len( poly)
возвращает число членов полинома poly.

[]( poly, i)
возвращает i-ый член полинома.

Полином представляет собой итератор языка Python:

import ginv

st = ginv.SystemType("Polynomial")
im = ginv.MonomInterface("Lex", st, ['x', 'y', 'z'])
ic = ginv.CoeffInterface("GmpZ", st)
ip = ginv.PolyInterface("PolyList", st, im, ic)

poly1 = ginv.Poly(ip, "(y^3 - x)^3")
print poly1
poly2 = ginv.Poly(ip, "(y^3 - x)^2 + (x^3 - y)^2")
print poly2
poly1 *= poly2

for (m, c) in poly1: print (m, c),
В результате будет распечатан следующий результат:
(-1)*x^3 + 3*x^2*y^3 + (-3)*x*y^6 + y^9
x^6 + (-2)*x^3*y + x^2 + (-2)*x*y^3 + y^6 + y^2
(x^9, -1) (x^8*y^3, 3) (x^7*y^6, -3) (x^6*y^9, 1) (x^6*y, 2) (x^5*y^4, -6) (x^5, -1)
(x^4*y^7, 6) (x^4*y^3, 5) (x^3*y^10, -2) (x^3*y^6, -10) (x^3*y^2, -1) (x^2*y^9, 10)
(x^2*y^5, 3) (x*y^12, -5) (x*y^8, -3) (y^15, 1) (y^11, 1)