Eisenstein series#
- sage.modular.modform.eis_series.compute_eisenstein_params(character, k)#
Compute and return a list of all parameters
that define the Eisenstein series with given character and weight .Only the parity of
is relevant (unless k = 1, which is a slightly different case).If
character
is an integer , then the parameters for are computed instead. Then the condition is that .If
character
is a list of integers, the parameters for are computed, where is the subgroup of generated by the integers in the given list.EXAMPLES:
sage: sage.modular.modform.eis_series.compute_eisenstein_params(DirichletGroup(30)(1), 3) [] sage: pars = sage.modular.modform.eis_series.compute_eisenstein_params(DirichletGroup(30)(1), 4) sage: [(x[0].values_on_gens(), x[1].values_on_gens(), x[2]) for x in pars] [((1, 1), (1, 1), 1), ((1, 1), (1, 1), 2), ((1, 1), (1, 1), 3), ((1, 1), (1, 1), 5), ((1, 1), (1, 1), 6), ((1, 1), (1, 1), 10), ((1, 1), (1, 1), 15), ((1, 1), (1, 1), 30)] sage: pars = sage.modular.modform.eis_series.compute_eisenstein_params(15, 1) sage: [(x[0].values_on_gens(), x[1].values_on_gens(), x[2]) for x in pars] [((1, 1), (-1, 1), 1), ((1, 1), (-1, 1), 5), ((1, 1), (1, zeta4), 1), ((1, 1), (1, zeta4), 3), ((1, 1), (-1, -1), 1), ((1, 1), (1, -zeta4), 1), ((1, 1), (1, -zeta4), 3), ((-1, 1), (1, -1), 1)] sage: sage.modular.modform.eis_series.compute_eisenstein_params(DirichletGroup(15).0, 1) [(Dirichlet character modulo 15 of conductor 1 mapping 11 |--> 1, 7 |--> 1, Dirichlet character modulo 15 of conductor 3 mapping 11 |--> -1, 7 |--> 1, 1), (Dirichlet character modulo 15 of conductor 1 mapping 11 |--> 1, 7 |--> 1, Dirichlet character modulo 15 of conductor 3 mapping 11 |--> -1, 7 |--> 1, 5)] sage: len(sage.modular.modform.eis_series.compute_eisenstein_params(GammaH(15, [4]), 3)) 8
- sage.modular.modform.eis_series.eisenstein_series_lseries(weight, prec=53, max_imaginary_part=0, max_asymp_coeffs=40)#
Return the L-series of the weight
Eisenstein series on .This actually returns an interface to Tim Dokchitser’s program for computing with the L-series of the Eisenstein series
INPUT:
weight
- even integerprec
- integer (bits precision)max_imaginary_part
- real numbermax_asymp_coeffs
- integer
OUTPUT:
The L-series of the Eisenstein series.
EXAMPLES:
We compute with the L-series of
and then :sage: L = eisenstein_series_lseries(16) sage: L(1) -0.291657724743874 sage: L = eisenstein_series_lseries(20) sage: L(2) -5.02355351645998
Now with higher precision:
sage: L = eisenstein_series_lseries(20, prec=200) sage: L(2) -5.0235535164599797471968418348135050804419155747868718371029
- sage.modular.modform.eis_series.eisenstein_series_qexp(k, prec=10, K=Rational Field, var='q', normalization='linear')#
Return the
-expansion of the normalized weight Eisenstein series on to precision prec in the ring . Three normalizations are available, depending on the parameternormalization
; the default normalization is the one for which the linear coefficient is 1.INPUT:
k
- an even positive integerprec
- (default: 10) a nonnegative integerK
- (default: ) a ringvar
- (default:'q'
) variable name to use for q-expansionnormalization
- (default:'linear'
) normalization to use. If this is'linear'
, then the series will be normalized so that the linear term is 1. If it is'constant'
, the series will be normalized to have constant term 1. If it is'integral'
, then the series will be normalized to have integer coefficients and no common factor, and linear term that is positive. Note that'integral'
will work over arbitrary base rings, while'linear'
or'constant'
will fail if the denominator (resp. numerator) of is invertible.
ALGORITHM:
We know
. So we compute all the simultaneously, using the fact that is multiplicative.EXAMPLES:
sage: eisenstein_series_qexp(2,5) -1/24 + q + 3*q^2 + 4*q^3 + 7*q^4 + O(q^5) sage: eisenstein_series_qexp(2,0) O(q^0) sage: eisenstein_series_qexp(2,5,GF(7)) 2 + q + 3*q^2 + 4*q^3 + O(q^5) sage: eisenstein_series_qexp(2,5,GF(7),var='T') 2 + T + 3*T^2 + 4*T^3 + O(T^5)
We illustrate the use of the
normalization
parameter:sage: eisenstein_series_qexp(12, 5, normalization='integral') 691 + 65520*q + 134250480*q^2 + 11606736960*q^3 + 274945048560*q^4 + O(q^5) sage: eisenstein_series_qexp(12, 5, normalization='constant') 1 + 65520/691*q + 134250480/691*q^2 + 11606736960/691*q^3 + 274945048560/691*q^4 + O(q^5) sage: eisenstein_series_qexp(12, 5, normalization='linear') 691/65520 + q + 2049*q^2 + 177148*q^3 + 4196353*q^4 + O(q^5) sage: eisenstein_series_qexp(12, 50, K=GF(13), normalization="constant") 1 + O(q^50)
AUTHORS:
William Stein: original implementation
Craig Citro (2007-06-01): rewrote for massive speedup
Martin Raum (2009-08-02): port to cython for speedup
David Loeffler (2010-04-07): work around an integer overflow when
is largeDavid Loeffler (2012-03-15): add options for alternative normalizations (motivated by trac ticket #12043)