22 KiB
22 KiB
In [1]:
# load('ZetaFunctionsNewtonND.py') R.<x, y, z> = PolynomialRing(QQ, order='neglex') S.<u, v> = PolynomialRing(QQ, order='neglex') S.<s> = PolynomialRing(QQ) f = u^5 + v^6 F = z^10 + f(u=x, v=y) ZF = ZetaFunctions(F) Zf = ZetaFunctions(f) dd = (1, 2, 3, 4, 5, 6, 8, 10, 15, 30) K = {d: ZF.topological_zeta(local=True, d=d) for d in dd} k = {d: Zf.topological_zeta(local=True, d=d) for d in dd}
In [2]:
for d in dd: if K[d] == 0: print(d) show(0) else: print(d) show(K[d].factor()) print("========================")
1
<html>\(\displaystyle \left(\frac{1}{5}\right) \cdot (s + \frac{7}{15})^{-1} \cdot (s + 1)^{-1} \cdot (s + \frac{7}{3})\)</html>
======================== 2
<html>\(\displaystyle 0\)</html>
======================== 3
<html>\(\displaystyle \left(\frac{2}{5}\right) \cdot (s + \frac{7}{15})^{-1}\)</html>
======================== 4
<html>\(\displaystyle 0\)</html>
======================== 5
<html>\(\displaystyle \left(\frac{1}{30}\right) \cdot (s + \frac{7}{15})^{-1}\)</html>
======================== 6
<html>\(\displaystyle \left(\frac{2}{5}\right) \cdot (s + \frac{7}{15})^{-1}\)</html>
======================== 8
<html>\(\displaystyle 0\)</html>
======================== 10
<html>\(\displaystyle \left(-\frac{1}{6}\right) \cdot (s + \frac{7}{15})^{-1}\)</html>
======================== 15
<html>\(\displaystyle \left(\frac{7}{30}\right) \cdot (s + \frac{7}{15})^{-1}\)</html>
======================== 30
<html>\(\displaystyle \left(\frac{7}{30}\right) \cdot (s + \frac{7}{15})^{-1}\)</html>
========================
In [3]:
for d in dd: if k[d] == 0: print(d) show(0) else: print(d) show(k[d].factor()) print("========================")
1
<html>\(\displaystyle \left(\frac{1}{3}\right) \cdot (s + \frac{11}{30})^{-1} \cdot (s + 1)^{-1} \cdot (s + \frac{11}{10})\)</html>
======================== 2
<html>\(\displaystyle \left(\frac{2}{15}\right) \cdot (s + \frac{11}{30})^{-1}\)</html>
======================== 3
<html>\(\displaystyle \left(\frac{2}{15}\right) \cdot (s + \frac{11}{30})^{-1}\)</html>
======================== 4
<html>\(\displaystyle 0\)</html>
======================== 5
<html>\(\displaystyle \left(\frac{1}{6}\right) \cdot (s + \frac{11}{30})^{-1}\)</html>
======================== 6
<html>\(\displaystyle \left(\frac{2}{15}\right) \cdot (s + \frac{11}{30})^{-1}\)</html>
======================== 8
<html>\(\displaystyle 0\)</html>
======================== 10
<html>\(\displaystyle \left(-\frac{1}{30}\right) \cdot (s + \frac{11}{30})^{-1}\)</html>
======================== 15
<html>\(\displaystyle \left(-\frac{1}{30}\right) \cdot (s + \frac{11}{30})^{-1}\)</html>
======================== 30
<html>\(\displaystyle \left(-\frac{1}{30}\right) \cdot (s + \frac{11}{30})^{-1}\)</html>
========================
In [5]:
divisors(5)
Out[5]:
[1, 5]
In [6]:
def corchete(fz, e, N): res = 0 for l0 in divisors(N / e): l = l0 * e res += moebius(l0) * fz[l] return res
In [20]:
corchete(k, 2, 10)(s=s + 1 / 10)
Out[20]:
1/6/(s + 7/15)
In [21]:
corchete(k, 5, 10)(s=s + 1 / 10)
Out[21]:
1/5/(s + 7/15)
In [22]:
corchete(k, 10, 10)(s=s + 1 / 10)
Out[22]:
-1/30/(s + 7/15)
In [23]:
def Ztopmanuel(dic, N): res = 1 / (N * s + 1) res += (N - 1) / N * s / (s+1) * ((N * s+ N + 1)/ (N * s + 1)) * dic[1](s=s + 1 / N) div = [e for e in divisors(N) if e != 1] for e in div: res += -s / (s + 1) * (e^2 - 1) / N * corchete(dic, e, N)(s=s + 1 / N) return res
In [25]:
(Ztopmanuel(k, 10) - K[1])
Out[25]:
0
In [13]:
AK10t30 = K10t30 AK10t15 = K10t15 - AK10t30 AK10t10 = K10t10 - AK10t30 AK10t6 = K10t6 - AK10t30 AK10t5 = K10t5 - AK10t10 - AK10t15 - AK10t30 AK10t3 = K10t3 - AK10t6 - AK10t30 AK10t2 = K10t2 - AK10t6 - AK10t10 - AK10t30 AK10 = K10 - AK10t3 - AK10t5 - AK10t6 - AK10t10 - AK10t30 AK10, AK10t2, AK10t3, AK10t5, AK10t6, AK10t10, AK10t15, AK10t30
Out[13]:
(4/15/(s^2 + 22/15*s + 7/15), 0, 0, 1/5/(s + 7/15), 1/6/(s + 7/15), -2/5/(s + 7/15), 0, (7/30) * (s + 7/15)^-1)
In [14]:
K10- AK10 - AK10t5 - AK10t6 - AK10t10 - AK10t30
Out[14]:
0
In [15]:
g=x^5 + y^6 Zg = ZetaFunctions(g) G=Zg.topological_zeta(local=True).value() GS=G(s=s+1/10) G2=Zg.topological_zeta(local=True, d=2).value() GS2=G2(s=s+1/10) G3=Zg.topological_zeta(local=True, d=3).value() GS3=G3(s=s+1/10) G4=Zg.topological_zeta(local=True, d=4) GS4=G4(s=s+1/10) G5=Zg.topological_zeta(local=True, d=5).value() GS5=G5(s=s+1/10) G6=Zg.topological_zeta(local=True, d=6).value() GS6=G6(s=s+1/10) G8=Zg.topological_zeta(local=True, d=8) GS8=G8(s=s+1/10) G10=Zg.topological_zeta(local=True, d=10).value() GS10=G10(s=s+1/10) G15=Zg.topological_zeta(local=True, d=15).value() GS15=G15(s=s+1/10) G30=Zg.topological_zeta(local=True, d=30).value() GS30=G30(s=s+1/10) GS, GS2, GS3, GS4, GS5, GS6, GS8, GS10, GS15, GS30
Out[15]:
((1/3*s + 2/5)/(s^2 + 47/30*s + 77/150), 2/15/(s + 7/15), 2/15/(s + 7/15), 0, 1/6/(s + 7/15), 2/15/(s + 7/15), 0, -1/30/(s + 7/15), -1/30/(s + 7/15), -1/30/(s + 7/15))
In [20]:
AGS30 = GS30 AGS15 = GS15 - AGS30 AGS10 = GS10 - AGS30 AGS6 = GS6 - AGS30 AGS5 = GS5 - AGS10 - AGS15 - AGS30 AGS3 = GS3 - AGS6 - AGS30 AGS2 = GS2 - AGS6 - AGS10 - AGS30 AGS = GS - AGS2 - AGS3 - AGS5 - AGS6 - AGS10 - AGS15 - AGS30 AGS, AGS2, AGS3, AGS5, AGS6, AGS10, AGS15, AGS30
Out[20]:
(1/30/(s^2 + 47/30*s + 77/150), 0, 0, 1/5/(s + 7/15), 1/6/(s + 7/15), 0, 0, -1/30/(s + 7/15))
In [22]:
GS - AGS - AGS5 - AGS6 - AGS30
Out[22]:
0
In [24]:
aux = K10 - 1/((10*s+1)) - (9/10)*(s/(s+1))*((10*s+11)/(10*s+1))*GS + (3/10)*(s/(s+1))*AGS6 + (24/10)*(s/(s+1))*AGS5 + (99/10)*(s/(s+1))*AGS30 aux
Out[24]:
0
In [14]:
moebius?
Signature: moebius(n) Type: Moebius String form: The Moebius function File: /usr/local/sagedev/src/sage/arith/misc.py Docstring: Return the value of the Möbius function of abs(n), where n is an integer. DEFINITION: \mu(n) is 0 if n is not square free, and otherwise equals (-1)^r, where n has r distinct prime factors. For simplicity, if n=0 we define \mu(n) = 0. IMPLEMENTATION: Factors or - for integers - uses the PARI C library. INPUT: * "n" - anything that can be factored. OUTPUT: 0, 1, or -1 EXAMPLES: sage: moebius(-5) -1 sage: moebius(9) 0 sage: moebius(12) 0 sage: moebius(-35) 1 sage: moebius(-1) 1 sage: moebius(7) -1 sage: moebius(0) # potentially nonstandard! 0 The moebius function even makes sense for non-integer inputs. sage: x = GF(7)['x'].0 sage: moebius(x + 2) -1 Tests with numpy and gmpy2 numbers: sage: from numpy import int8 sage: moebius(int8(-5)) -1 sage: from gmpy2 import mpz sage: moebius(mpz(-5)) -1 Init docstring: Initialize self. See help(type(self)) for accurate signature. Call docstring: EXAMPLES: sage: from sage.arith.misc import Moebius sage: Moebius().__call__(7) -1
In [16]:
moebius(5), moebius(-5)
Out[16]:
(-1, -1)
In [ ]: