Modular forms

Computing Hecke operators

[Stein] W. Stein, Modular forms, a computational approach

Fourier coefficients


B = ModularForms(1,12, prec=10).basis()
f = B[0]; 
f; print "2nd coefficient=", f[2]

Hecke operators

Cf. [Stein] Sect. 2.5

Input: k, n
Output: matrix of Hecke operator T_n on M_k(SL_2(ZZ))


k=36
n=3
M = ModularForms(1,k,prec=6).echelon_form()
T = M.hecke_matrix(n) # T3
print T


k = 12 # >=4 , even
n= 2

# d = dim Sk (cf. [Stein] Cor. 2.16)
if k%12==2: 
    d = floor(k/12)-1 
else:
    d = floor(k/12) 
    
M = ModularForms(1,k, prec=d*n+1).echelon_form() # with Miller basis
B = M.q_expansion_basis() # basis [f_0, f_1] as q-series 
hecke_operator_on_basis(B, n, k) # matrix of T_2

Computing Hecke field

hecke_eigenvalue_field()

sage: ls = Newforms(35, 2, names='a') ; ls
[q + q^3 - 2*q^4 - q^5 + O(q^6),
q + a1*q^2 + (-a1 - 1)*q^3 + (-a1 + 2)*q^4 + q^5 + O(q^6)]
sage: ls[0].hecke_eigenvalue_field()
Rational Field
sage: ls[1].hecke_eigenvalue_field()
Number Field in a1 with defining polynomial x^2 + x - 4