15 KiB
15 KiB
In [79]:
load('zetas_triples_general.py')
In [19]:
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 [3]:
f = v^2 - u^3 g = v^3 - u^4 discrim3(f, g).factor(), milnor(surface(f, g))
Out[3]:
((-1) * u^3 * (-2*u*v^3 + 3*v^4 + u^5 - 3*u^3*v^2 + u^6), +Infinity)
In [150]:
H = ff^3 / gg^2 H1 = H(u=u * v^2) H1(v=0, u=1/4).factor()
Out[150]:
-1 * 2^-8 * 3^3
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 [ ]: