4)

In [1]:
R.<x,y> = PolynomialRing(QQ, order = 'lex')
f = x^3*y^3 + 1
p = 1 + 3*x + 2*x^2 + x^2*y + x^3*y
q = x*y^2 + x^2*y^2
print(f)
print(p)
print(q)
x^3*y^3 + 1
x^3*y + x^2*y + 2*x^2 + 3*x + 1
x^2*y^2 + x*y^2
In [2]:
g1 = f - y^2*p
g1
Out[2]:
-x^2*y^3 - 2*x^2*y^2 - 3*x*y^2 - y^2 + 1
In [3]:
g2 = g1 + y*q
g2
Out[3]:
-2*x^2*y^2 + x*y^3 - 3*x*y^2 - y^2 + 1
In [4]:
r = g2 + 2*q
r
Out[4]:
x*y^3 - x*y^2 - y^2 + 1
In [5]:
a1 = y^2
a2 = -y - 2
In [6]:
f == a1*p + a2*q + r
Out[6]:
True
In [7]:
# degrees of the leading terms of f, a1*p and a2*q
print(f.lt().degrees())
print((a1*p).lt().degrees())
print((a2*q).lt().degrees())
(3, 3)
(3, 3)
(2, 3)
In [ ]:
 
In [8]:
# faster way (different remainder)
f.reduce([p,q])
Out[8]:
x*y^3 + 1
In [ ]:
 

5)

In [9]:
R.<x,y> = PolynomialRing(QQ, order = 'lex')
f = x^3*y^2
p = 1 + x^3*y + 3*x^2*y^5
q = 2*x^2*y + x^2*y^2
print(f)
print(p)
print(q)
x^3*y^2
x^3*y + 3*x^2*y^5 + 1
x^2*y^2 + 2*x^2*y
In [10]:
g1 = f - y*p
g1
Out[10]:
-3*x^2*y^6 - y
In [11]:
g2 = g1 + 3*y^4*q
g2
Out[11]:
6*x^2*y^5 - y
In [12]:
g3 = g2 - 6*y^3*q
g3
Out[12]:
-12*x^2*y^4 - y
In [13]:
g4 = g3 + 12*y^2*q
g4
Out[13]:
24*x^2*y^3 - y
In [14]:
g5 = g4 - 24*y*q
g5
Out[14]:
-48*x^2*y^2 - y
In [15]:
r = g5 + 48*q
r
Out[15]:
96*x^2*y - y
In [16]:
a1 = y
a2 = -3*y^4 + 6*y^3 - 12*y^2 + 24*y - 48
In [17]:
f == a1*p + a2*q + r
Out[17]:
True
In [18]:
# degrees of the leading terms of f, a1*p and a2*q
print(f.lt().degrees())
print((a1*p).lt().degrees())
print((a2*q).lt().degrees())
(3, 2)
(3, 2)
(2, 6)
In [ ]:
 
In [19]:
# faster way
f.reduce([p,q])
Out[19]:
96*x^2*y + 2
In [ ]:
 

6)

In [20]:
R.<x,y> = PolynomialRing(QQ, order = 'lex')
f = x^2*y + x*y^2 + y^2
f1 = x*y - 1
f2 = y^2 - 1
print(f)
print(f1)
print(f2)
x^2*y + x*y^2 + y^2
x*y - 1
y^2 - 1
In [21]:
# reduce first by f1 and then by f2
r = f.reduce([f1]).reduce([f2])
r
Out[21]:
x + y + 1
In [22]:
a1 = -x - y
a2 = -1

f + a1*f1 + a2*f2
Out[22]:
x + y + 1
In [ ]:
 
In [23]:
# reduce by f1 and f2
r = f.reduce([f1, f2])
r
Out[23]:
2*x + 1
In [24]:
# different reduction with b1, b2
b1 = -x
b2 = -1 - x

f + b1*f1 + b2*f2
Out[24]:
2*x + 1
In [ ]: