The cuspidal subspace#
EXAMPLES:
sage: S = CuspForms(SL2Z,12); S
Cuspidal subspace of dimension 1 of Modular Forms space of dimension 2 for
Modular Group SL(2,Z) of weight 12 over Rational Field
sage: S.basis()
[
q - 24*q^2 + 252*q^3 - 1472*q^4 + 4830*q^5 + O(q^6)
]
sage: S = CuspForms(Gamma0(33),2); S
Cuspidal subspace of dimension 3 of Modular Forms space of dimension 6 for
Congruence Subgroup Gamma0(33) of weight 2 over Rational Field
sage: S.basis()
[
q - q^5 + O(q^6),
q^2 - q^4 - q^5 + O(q^6),
q^3 + O(q^6)
]
sage: S = CuspForms(Gamma1(3),6); S
Cuspidal subspace of dimension 1 of Modular Forms space of dimension 3 for
Congruence Subgroup Gamma1(3) of weight 6 over Rational Field
sage: S.basis()
[
q - 6*q^2 + 9*q^3 + 4*q^4 + 6*q^5 + O(q^6)
]
- class sage.modular.modform.cuspidal_submodule.CuspidalSubmodule(ambient_space)#
Bases:
ModularFormsSubmodule
Base class for cuspidal submodules of ambient spaces of modular forms.
- change_ring(R)#
Change the base ring of self to R, when this makes sense. This differs from
base_extend()
in that there may not be a canonical map from self to the new space, as in the first example below. If this space has a character then this may fail when the character cannot be defined over R, as in the second example.EXAMPLES:
sage: chi = DirichletGroup(109, CyclotomicField(3)).0 sage: S9 = CuspForms(chi, 2, base_ring = CyclotomicField(9)); S9 Cuspidal subspace of dimension 8 of Modular Forms space of dimension 10, character [zeta3 + 1] and weight 2 over Cyclotomic Field of order 9 and degree 6 sage: S9.change_ring(CyclotomicField(3)) Cuspidal subspace of dimension 8 of Modular Forms space of dimension 10, character [zeta3 + 1] and weight 2 over Cyclotomic Field of order 3 and degree 2 sage: S9.change_ring(QQ) Traceback (most recent call last): ... ValueError: Space cannot be defined over Rational Field
- is_cuspidal()#
Return True since spaces of cusp forms are cuspidal.
EXAMPLES:
sage: CuspForms(4,10).is_cuspidal() True
- modular_symbols(sign=0)#
Return the corresponding space of modular symbols with the given sign.
EXAMPLES:
sage: S = ModularForms(11,2).cuspidal_submodule() sage: S.modular_symbols() Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 3 for Gamma_0(11) of weight 2 with sign 0 over Rational Field sage: S.modular_symbols(sign=-1) Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 1 for Gamma_0(11) of weight 2 with sign -1 over Rational Field sage: M = S.modular_symbols(sign=1); M Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 2 for Gamma_0(11) of weight 2 with sign 1 over Rational Field sage: M.sign() 1 sage: S = ModularForms(1,12).cuspidal_submodule() sage: S.modular_symbols() Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 3 for Gamma_0(1) of weight 12 with sign 0 over Rational Field sage: eps = DirichletGroup(13).0 sage: S = CuspForms(eps^2, 2) sage: S.modular_symbols(sign=0) Modular Symbols subspace of dimension 2 of Modular Symbols space of dimension 4 and level 13, weight 2, character [zeta6], sign 0, over Cyclotomic Field of order 6 and degree 2 sage: S.modular_symbols(sign=1) Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 3 and level 13, weight 2, character [zeta6], sign 1, over Cyclotomic Field of order 6 and degree 2 sage: S.modular_symbols(sign=-1) Modular Symbols subspace of dimension 1 of Modular Symbols space of dimension 1 and level 13, weight 2, character [zeta6], sign -1, over Cyclotomic Field of order 6 and degree 2
- class sage.modular.modform.cuspidal_submodule.CuspidalSubmodule_R(ambient_space)#
Bases:
CuspidalSubmodule
Cuspidal submodule over a non-minimal base ring.
- class sage.modular.modform.cuspidal_submodule.CuspidalSubmodule_eps(ambient_space)#
Bases:
CuspidalSubmodule_modsym_qexp
Space of cusp forms with given Dirichlet character.
EXAMPLES:
sage: S = CuspForms(DirichletGroup(5).0,5); S Cuspidal subspace of dimension 1 of Modular Forms space of dimension 3, character [zeta4] and weight 5 over Cyclotomic Field of order 4 and degree 2 sage: S.basis() [ q + (-zeta4 - 1)*q^2 + (6*zeta4 - 6)*q^3 - 14*zeta4*q^4 + (15*zeta4 + 20)*q^5 + O(q^6) ] sage: f = S.0 sage: f.qexp() q + (-zeta4 - 1)*q^2 + (6*zeta4 - 6)*q^3 - 14*zeta4*q^4 + (15*zeta4 + 20)*q^5 + O(q^6) sage: f.qexp(7) q + (-zeta4 - 1)*q^2 + (6*zeta4 - 6)*q^3 - 14*zeta4*q^4 + (15*zeta4 + 20)*q^5 + 12*q^6 + O(q^7) sage: f.qexp(3) q + (-zeta4 - 1)*q^2 + O(q^3) sage: f.qexp(2) q + O(q^2) sage: f.qexp(1) O(q^1)
- class sage.modular.modform.cuspidal_submodule.CuspidalSubmodule_g0_Q(ambient_space)#
Bases:
CuspidalSubmodule_modsym_qexp
Space of cusp forms for \(\Gamma_0(N)\) over \(\QQ\).
- class sage.modular.modform.cuspidal_submodule.CuspidalSubmodule_g1_Q(ambient_space)#
Bases:
CuspidalSubmodule_gH_Q
Space of cusp forms for \(\Gamma_1(N)\) over \(\QQ\).
- class sage.modular.modform.cuspidal_submodule.CuspidalSubmodule_gH_Q(ambient_space)#
Bases:
CuspidalSubmodule_modsym_qexp
Space of cusp forms for \(\Gamma_H(N)\) over \(\QQ\).
- class sage.modular.modform.cuspidal_submodule.CuspidalSubmodule_level1_Q(ambient_space)#
Bases:
CuspidalSubmodule
Space of cusp forms of level 1 over \(\QQ\).
- class sage.modular.modform.cuspidal_submodule.CuspidalSubmodule_modsym_qexp(ambient_space)#
Bases:
CuspidalSubmodule
Cuspidal submodule with q-expansions calculated via modular symbols.
- hecke_polynomial(n, var='x')#
Return the characteristic polynomial of the Hecke operator T_n on this space. This is computed via modular symbols, and in particular is faster to compute than the matrix itself.
EXAMPLES:
sage: CuspForms(105, 2).hecke_polynomial(2, 'y') y^13 + 5*y^12 - 4*y^11 - 52*y^10 - 34*y^9 + 174*y^8 + 212*y^7 - 196*y^6 - 375*y^5 - 11*y^4 + 200*y^3 + 80*y^2
Check that this gives the same answer as computing the Hecke matrix:
sage: CuspForms(105, 2).hecke_matrix(2).charpoly(var='y') y^13 + 5*y^12 - 4*y^11 - 52*y^10 - 34*y^9 + 174*y^8 + 212*y^7 - 196*y^6 - 375*y^5 - 11*y^4 + 200*y^3 + 80*y^2
Check that trac ticket #21546 is fixed (this example used to take about 5 hours):
sage: CuspForms(1728, 2).hecke_polynomial(2) # long time (20 sec) x^253 + x^251 - 2*x^249
- new_submodule(p=None)#
Return the new subspace of this space of cusp forms. This is computed using modular symbols.
EXAMPLES:
sage: CuspForms(55).new_submodule() Modular Forms subspace of dimension 3 of Modular Forms space of dimension 8 for Congruence Subgroup Gamma0(55) of weight 2 over Rational Field
- class sage.modular.modform.cuspidal_submodule.CuspidalSubmodule_wt1_eps(ambient_space)#
Bases:
CuspidalSubmodule
Space of cusp forms of weight 1 with specified character.
- class sage.modular.modform.cuspidal_submodule.CuspidalSubmodule_wt1_gH(ambient_space)#
Bases:
CuspidalSubmodule
Space of cusp forms of weight 1 for a GammaH group.