Computation of the Frobenius polynomial using Newton’s identities#

sage.schemes.cyclic_covers.charpoly_frobenius.charpoly_frobenius(frob_matrix, charpoly_prec, p, weight, a=1, known_factor=[1])#

Return the characteristic polynomial of the given Frobenius matrix.

INPUT:

  • frob_matrix – a matrix representing the Frobenius matrix up to some precision

  • charpoly_prec – a vector ai, such that, \(frob_matrix.change_ring(ZZ).charpoly()[i]\)

    will be correct mod \(p^ai\), this can be easily deduced from the Hodge numbers and knowing the q-adic precision of frob_matrix

  • p – prime \(p\)

  • weight – weight of the motive

  • a\(q = q^a\)

  • known_factor – the list of coefficients of the known factor

OUTPUT:

A list of integers corresponding to the characteristic polynomial of the Frobenius action

EXAMPLES:

sage: from sage.schemes.cyclic_covers.charpoly_frobenius import charpoly_frobenius
sage: M = Matrix([[O(17), 8 + O(17)], [O(17), 15 + O(17)]])
sage: charpoly_frobenius(M, [2, 1, 1], 17, 1, 1)
[17, 2, 1]

sage: R = Zq(17**2 , names=('a',))
sage: M = Matrix(R, [[8*17 + 16*17**2 + O(17**3), 8 + 11*17 + O(17**2)], [7*17**2 + O(17**3), 15 + 8*17 + O(17**2)]])
sage: charpoly_frobenius(M*M, [3, 2, 2], 17, 1, 2)
[289, 30, 1]

sage: M = Matrix([[8*31 + 8*31**2 + O(31**3), O(31**3), O(31**3), O(31**3)], [O(31**3), 23*31 + 22*31**2 + O(31**3), O(31**3), O(31**3)], [O(31**3), O(31**3), 27 + 7*31 + O(31**3), O(31**3)], [O(31**3), O(31**3), O(31**3), 4 + 23*31 + O(31**3)]])
sage: charpoly_frobenius(M, [4, 3, 2, 2, 2], 31, 1, 1)
[961, 0, 46, 0, 1]

sage: M = Matrix([(4*43^2 + O(43^3), 17*43 + 11*43^2 + O(43^3), O(43^3), O(43^3), 17 + 37*43 + O(43^3), O(43^3)),
....:  (30*43 + 23*43^2 + O(43^3), 5*43 + O(43^3), O(43^3), O(43^3), 3 + 38*43 + O(43^3), O(43^3)),
....:  (O(43^3), O(43^3), 9*43 + 32*43^2 + O(43^3), 13 + 25*43 + O(43^3), O(43^3), 17 + 18*43 + O(43^3)),
....:  (O(43^3), O(43^3), 22*43 + 25*43^2 + O(43^3), 11 + 24*43 + O(43^3), O(43^3), 36 + 5*43 + O(43^3)),
....:  (42*43 + 15*43^2 + O(43^3), 22*43 + 8*43^2 + O(43^3), O(43^3), O(43^3), 29 + 4*43 + O(43^3), O(43^3)),
....:  (O(43^3), O(43^3), 6*43 + 19*43^2 + O(43^3), 8 + 24*43 + O(43^3), O(43^3), 31 + 42*43 + O(43^3))])
sage: charpoly_frobenius(M, [5, 4, 3, 2, 2, 2, 2], 43, 1, 1)
    [79507, 27735, 6579, 1258, 153, 15, 1]

sage: M = Matrix([(1 + O(4999), O(4999), 0, 0),
....:  (O(4999), 4860 + O(4999), 0, 0),
....:  (0, 0, O(4999), O(4999)),
....:  (0, 0, O(4999), 1 + O(4999))])
sage: charpoly_frobenius(M, [2, 1, 1], 4999, 1, 1, [1, -2 ,1 ])
[4999, 139, 1]