Steenbrink/EjemplosGeneralesManuel.ipynb
2024-04-18 17:09:03 +02:00

18 KiB

In [1]:
load('zetas_triples_general.py')
In [2]:
R3.<x, y, z> = PolynomialRing(QQ, order='negdeglex')
R2.<u, v> = PolynomialRing(QQ, order='negdeglex')
def surface(f, g):
    sb = {u: x, v: y}
    return z^3 - 3 * f.subs(sb) * z + 2 * g.subs(sb)

def discrim3(f, g):
    return f^3 - g^2

def milnor(F):
    return F.jacobian_ideal().vector_space_dimension()

def factoresNewton(f):
    return [p.factor() for p in ZetaFunctions(f).get_polyfaces_dictionary(compact=True)
            if p.number_of_terms() > 1]
In [20]:
# f = ((v^2 + u^3)^2 + u^5*v) * ((u^2 + v^3)^2 + v^5*u)
f = (v^6 + u^7) * (u^6 + v^7)
# g = (v^4 + u^6) * (u^4 + v^6)
g = ((v^2 + u^3)^2 + u^5*v) * ((u^2 + v^3)^2 + v^5*u)
hs = []
ks = [((u^2 + v^3) * (v^2 + u^3), 4)]
ff = f * prod(p^j for p, j in hs) * prod(p for p, j in ks)
gg = g * prod(p^j for p, j in ks) * prod(p for p, j in hs)
d = R2(discrim3(ff, gg) / prod(p^2 for p, j in hs) /  prod(p^3 for p, j in ks))
[(f, j) for f, j in d.factor() if j > 1]#, milnor(surface(f, g))
Out[20]:
[]
In [21]:
factoresNewton(d)
Out[21]:
[u^25 * (3*v^12 + 3*u^7*v^6 + u^14),
 v^25 * (3*u^12 + 3*u^6*v^7 + v^14),
 (3) * (u + v) * v^12 * u^12 * (u^12 - u^11*v + u^10*v^2 - u^9*v^3 - 2*u^8*v^4 + 2*u^7*v^5 - 2*u^6*v^6 + 2*u^5*v^7 - 2*u^4*v^8 - u^3*v^9 + u^2*v^10 - u*v^11 + v^12)]
In [34]:
# f = ((v^2 + u^3)^2 + u^5 * v) * ((u^2 + v^3)^2 + v^5 * u)
f = (v^4 + u^5) * (v^5 + u^4)
g = (v^6 + u^8) * (u^6 + v^8)
# g = ((v^3 + u^5)^2 + u^2 * v^5) * ((u^3 + v^5)^2 + v^2 * u^5)
hs = []
ks = []
ff = f * prod(p^j for p, j in hs) * prod(p for p, j in ks)
gg = g * prod(p^j for p, j in ks) * prod(p for p, j in hs)
d = R2(discrim3(ff, gg) / prod(p^2 for p, j in hs) /  prod(p^3 for p, j in ks))
[(f, j) for f, j in d.factor() if j > 1]#, milnor(surface(f, g))
Out[34]:
[]
In [33]:
factoresNewton(d)
Out[33]:
[(-1) * v^19 * (2*u^6 + v^7),
 (-1) * u^19 * (2*v^6 + u^7),
 (-1) * (u + v) * v^6 * u^6 * (2*u^12 - 2*u^11*v - u^10*v^2 + u^9*v^3 - u^8*v^4 + u^7*v^5 - u^6*v^6 + u^5*v^7 - u^4*v^8 + u^3*v^9 - u^2*v^10 - 2*u*v^11 + 2*v^12)]
In [14]:
d1 = R2(d(u=u^7, v=u^6 * (v - 1))/ u^156)
factoresNewton(d)
Out[14]:
[(-1) * (49*v^2 + u^13)]
In [127]:
f = u * v - u^3 - v^3
g = u^2 * v^2 - u^5 - v^5
hs = [(u, 1)]
ks = [(v, 2)]
ff = f * prod(p^j for p, j in hs) * prod(p for p, j in ks)
gg = g * prod(p^j for p, j in ks) * prod(p for p, j in hs)
d = R2(discrim3(ff, gg) / prod(p^2 for p, j in hs) /  prod(p^3 for p, j in ks))
d.factor(), # milnor(surface(ff, gg))
Out[127]:
((-1) * (-u^4*v^3 + 3*u^6*v^2 + 3*u^3*v^5 - 3*u^8*v - 6*u^5*v^4 + u^4*v^5 - 3*u^2*v^7 + u^10 + u^7*v^3 + 3*u^4*v^6 - 2*u^2*v^8 + u*v^9 + u^10*v + 2*u^5*v^6 + v^11),)
In [128]:
factoresNewton(d)
Out[128]:
[(-1) * v^3 * (-u^4 + 3*u^3*v^2 - 3*u^2*v^4 + u*v^6 + v^8), u^4 * (v - u^2)^3]
In [132]:
(-u^4 + 3*u^3*v^2 - 3*u^2*v^4 + u*v^6 + v^8)(v=1).derivative(u).factor()
Out[132]:
(-1) * (-1 + 4*u) * (-1 + u)^2
In [143]:
(-u^4 + 3*u^3*v^2 - 3*u^2*v^4 + u*v^6 + v^8)(v=1).derivative(u)(u=1 / 4)
Out[143]:
0
In [136]:
(ff(u=1 / 4, v=1)^3/gg(u=1 / 4, v=1)^2).factor()
Out[136]:
-1 * 7^6 * 31^-4
In [151]:
dd = R2(discrim3(-ff / 3, gg / 16) / prod(p^2 for p, j in hs) /  prod(p^3 for p, j in ks))
factoresNewton(dd)
Out[151]:
[(-1/6912) * v^3 * (-4*u + v^2)^2 * (16*u^2 - 40*u*v^2 + 27*v^4),
 (-1/27) * u^4 * (v - u^2)^3]
In [153]:
factoresNewton(dd(u=u + v^2 / 4))
Out[153]:
[(1/6144) * v^7 * (-256*u^2 + 3*v^5),
 (-1/27) * u^4 * (v - u^2)^3,
 (-1/216) * u^2 * v^3 * (8*u^2 - 16*u*v^2 + 9*v^4)]
In [121]:
d1 = R2(d(v=v^2, u=v^3 * (u + 1)) / v^22)
g1 = R2(g(v=v^2, u=v^3 * (u + 1)) / v^10)
In [122]:
factoresNewton(d1)
Out[122]:
[-4*u^2 + v^5]
In [123]:
factoresNewton(g1)
Out[123]:
[(-1) * (-2*u + v^5)]
In [106]:
A = Matrix(QQ, 5)
for i, j in ((0, 2), (0, 4), (1, 2), (3, 4)):
    A[i, j] = A[j, i] = 1
A[0, 0] = -5
A[1, 1] = A[3, 3] = -2
A[2, 2] = A[4, 4] = -1
show(A)
Vf = vector(QQ, [0, 1, 0, 1, 0])
Vg = vector(QQ, [0, 0, 1, 0, 1])
Vd = vector(QQ, [5, 0, 1, 0, 1])
Vhs = ((vector(QQ, [0, 1, 0, 1, 0]), 1),)
Vks = ()
<html>\(\displaystyle \left(\begin{array}{rrrrr} -5 & 0 & 1 & 0 & 1 \\ 0 & -2 & 1 & 0 & 0 \\ 1 & 1 & -1 & 0 & 0 \\ 0 & 0 & 0 & -2 & 1 \\ 1 & 0 & 0 & 1 & -1 \end{array}\right)\)</html>
In [107]:
n, Nf, Ng, Nd, Nhs, Nks, euler, nus, pols == trinomiales_general(A, Vf, Vg, Vhs, Vks, Vd, total=True)
Out[107]:
(5,
 (2, 3, 5, 3, 5),
 (4, 5, 10, 5, 10),
 (9, 10, 20, 10, 20),
 [((1, 2, 3, 1, 2), 1), ((1, 1, 2, 2, 3), 1)],
 [],
 (-5, -1, -2, -1, -2),
 (2, 3, 5, 3, 5),
 False)
In [81]:
Nf + sum(j * V0 for V0, j in Nhs) + sum(V0 for V0, j in Nks)
Out[81]:
(4, 6, 10, 6, 10)
In [82]:
Ng + sum(j * V0 for V0, j in Nks) + sum(V0 for V0, j in Nhs)
Out[82]:
(6, 8, 15, 8, 15)
In [83]:
Nd + 3 * sum(V0 for V0, j in Nks) + 2 * sum(V0 for V0, j in Nhs)
Out[83]:
(13, 16, 30, 16, 30)
In [84]:
for k in pols:
    print(k)
    print(pols[k])
    print("===")
0
(z^3 + x^2*z^2 + x^7, (2, 1, 1), -5)
===
1
(z^3 + x^6*z + x^8, (3, 1, 1), -1)
===
2
(z^3 + x^10*z + x^15, (5, 1, 1), -2)
===
3
(z^3 + x^6*z + x^8, (3, 1, 1), -1)
===
4
(z^3 + x^10*z + x^15, (5, 1, 1), -2)
===
(0, 2)
(z^3 + x^2*y^5*z^2 + x^7*y^15, (2, 5, 1), 1)
===
(0, 4)
(z^3 + x^2*y^5*z^2 + x^7*y^15, (2, 5, 1), 1)
===
(1, 2)
(z^3 + x^6*y^10*z + x^8*y^15, (3, 5, 1), 1)
===
(3, 4)
(z^3 + x^6*y^10*z + x^8*y^15, (3, 5, 1), 1)
===
(0, 'd')
(z^3 + x^2*z^2 + x^7*y, (2, 1, 1), 5)
===
(1, 'f')
(z^3 + x^8 + x^6*y*z, (3, 1, 1), 1)
===
(2, 'g')
(z^3 + x^10*z + x^15*y, (5, 1, 1), 1)
===
(2, 'd')
(z^3 + x^5*z^2 + x^15*y, (5, 1, 1), 1)
===
(3, 'f')
(z^3 + x^8 + x^6*y*z, (3, 1, 1), 1)
===
(4, 'g')
(z^3 + x^10*z + x^15*y, (5, 1, 1), 1)
===
(4, 'd')
(z^3 + x^5*z^2 + x^15*y, (5, 1, 1), 1)
===
(1, ('h', 0))
(z^3 + x^6*y*z + x^8*y, (3, 1, 1), 1)
===
(3, ('h', 1))
(z^3 + x^6*y*z + x^8*y, (3, 1, 1), 1)
===
In [86]:
zt, zm, dic = zetas(n, pols, info=True)
In [90]:
quo, L = zt.partial_fraction_decomposition()
print(quo)
for p in L:
    print(p.factor())
0
(1737/350) * (s + 9/14)^-1
(-56/15) * (s + 2/3)^-1
(-28/25) * (s + 1)^-1
In [94]:
for j in dic:
    print("El ciclotómico de orden ", j, " tiene multiplicidad ", dic[j])
El ciclotómico de orden  1  tiene multiplicidad  3
El ciclotómico de orden  2  tiene multiplicidad  5
El ciclotómico de orden  3  tiene multiplicidad  3
El ciclotómico de orden  5  tiene multiplicidad  2
El ciclotómico de orden  14  tiene multiplicidad  5
El ciclotómico de orden  15  tiene multiplicidad  2
In [108]:
n1a, Nf1a, Ng1a, Nd1a, Nhs1a, Nks1a, euler1a, nus1a, pols1a = trinomiales_general(A, Vf, Vg, Vhs, Vks, Vd, total=False)
In [110]:
n1 == n1a and Nf1 == Nf1a and Ng1 == Ng1a and nus1 == nus1a and euler1 == euler1a
Out[110]:
True
In [111]:
Nhs1
Out[111]:
[((1, 2, 3, 1, 2), 1), ((1, 1, 2, 2, 3), 1)]
In [112]:
Nhs1a
Out[112]:
[((2, 3, 5, 3, 5), 1)]
In [113]:
pols1a.keys()
Out[113]:
dict_keys([0, 1, 2, 3, 4, (0, 2), (0, 4), (1, 2), (3, 4), (0, 'd'), (2, 'd'), (4, 'd'), (1, ('h', 0)), (3, ('h', 0))])
In [ ]: