## Exercice 2.1¶

Avec des anneaux de polynômes

In [1]:
A.<x,y> = QQ[]
P = x*y^5 + 2*y^4 + 3*y^3*x^3 + 4*x^2*y^2 + 5*x*y^2 + 6*y*x^3 + 7*y

In [2]:
P.degree()

Out[2]:
6
In [3]:
Q = P.polynomial(x)
Q

Out[3]:
(3*y^3 + 6*y)*x^3 + 4*y^2*x^2 + (y^5 + 5*y^2)*x + 2*y^4 + 7*y
In [4]:
Q.parent()

Out[4]:
Univariate Polynomial Ring in x over Univariate Polynomial Ring in y over Rational Field

Une syntaxe équivalente

In [5]:
B = QQ['y']['x']
B

Out[5]:
Univariate Polynomial Ring in x over Univariate Polynomial Ring in y over Rational Field
In [6]:
B(P)

Out[6]:
(3*y^3 + 6*y)*x^3 + 4*y^2*x^2 + (y^5 + 5*y^2)*x + 2*y^4 + 7*y

avec des variables symboliques

## Exercice 2.2¶

Avec des variables symboliques

In [7]:
var('x,y')

Out[7]:
(x, y)
In [8]:
P = (x^2 + x*y + x + y)*(x + y)

In [9]:
P

Out[9]:
(x^2 + x*y + x + y)*(x + y)
In [10]:
P.expand()

Out[10]:
x^3 + 2*x^2*y + x*y^2 + x^2 + 2*x*y + y^2
In [11]:
P.factor()

Out[11]:
(x + y)^2*(x + 1)
In [12]:
P.expand().collect(x)

Out[12]:
x^3 + x^2*(2*y + 1) + (y^2 + 2*y)*x + y^2
In [13]:
P.expand().collect(y)

Out[13]:
x^3 + (x + 1)*y^2 + x^2 + 2*(x^2 + x)*y

Avec des anneaux de polynômes

In [14]:
A.<x,y> = QQ[]

In [15]:
P = (x^2 + x*y + x + y)*(x + y)
P

Out[15]:
x^3 + 2*x^2*y + x*y^2 + x^2 + 2*x*y + y^2
In [16]:
P.factor()

Out[16]:
(x + 1) * (x + y)^2
In [17]:
P.polynomial(x)

Out[17]:
x^3 + (2*y + 1)*x^2 + (y^2 + 2*y)*x + y^2
In [18]:
P.polynomial(y)

Out[18]:
(x + 1)*y^2 + (2*x^2 + 2*x)*y + x^3 + x^2

## Exercice 3.1¶

In [19]:
A.<x,y> = QQ[]

In [20]:
A.term_order()

Out[20]:
Degree reverse lexicographic term order
In [21]:
x > y

Out[21]:
True
In [22]:
P = x*y^5 + 2*y^4 + 3*y^3*x^3 + 4*x^2*y^2 + 5*x*y^2 + 6*y*x^3 + 7*y

In [23]:
P

Out[23]:
3*x^3*y^3 + x*y^5 + 6*x^3*y + 4*x^2*y^2 + 2*y^4 + 5*x*y^2 + 7*y
In [24]:
B.<x,y> = PolynomialRing(QQ, order='lex')
B.term_order()

Out[24]:
Lexicographic term order
In [25]:
B(P)

Out[25]:
3*x^3*y^3 + 6*x^3*y + 4*x^2*y^2 + x*y^5 + 5*x*y^2 + 2*y^4 + 7*y
In [26]:
C = B.change_ring(order='deglex')
C

Out[26]:
Multivariate Polynomial Ring in x, y over Rational Field
In [27]:
C.term_order()

Out[27]:
Degree lexicographic term order
In [28]:
C(P)

Out[28]:
3*x^3*y^3 + x*y^5 + 6*x^3*y + 4*x^2*y^2 + 2*y^4 + 5*x*y^2 + 7*y
In [29]:
P.change_ring(B.change_ring(order='degrevlex'))

Out[29]:
3*x^3*y^3 + x*y^5 + 6*x^3*y + 4*x^2*y^2 + 2*y^4 + 5*x*y^2 + 7*y

## Excercice 3.7¶

In [30]:
A.<z,y,x> = PolynomialRing(QQ, order="lex")
z > y > x

Out[30]:
True
In [31]:
I = A.ideal([y - x^2, z - x^3])

In [32]:
I.basis_is_groebner()

Out[32]:
True
In [33]:
(z^2 - x^4*y).mod(I)

Out[33]:
0
In [34]:
h1, h2 = (z^2 - x^4*y).lift(I)
h1, h2

Out[34]:
(-x^4, z + x^3)
In [35]:
h1*I.gen(0) + h2*I.gen(1)

Out[35]:
z^2 - y*x^4