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