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

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 [ ]: