INPUT:
OUTPUT:
A numerical eigenforms object, with the following useful methods:
ap() - return all eigenvalues of $T_p$
eigenvalues() - list of eigenvalues corresponding to the given list of primes, e.g.,:
[[eigenvalues of T_2],
[eigenvalues of T_3],
[eigenvalues of T_5], ...]
systems_of_eigenvalues() - a list of the systems of eigenvalues of eigenforms such that the chosen random linear combination of Hecke operators has multiplicity 1 eigenvalues.
EXAMPLES:
sage: n = numerical_eigenforms(23)
sage: n == loads(dumps(n))
True
sage: n.ap(2)
[3.0, 0.61803398875, -1.61803398875]
sage: n.systems_of_eigenvalues(7)
[
[-1.61803398875, 2.2360679775, -3.2360679775],
[0.61803398875, -2.2360679775, 1.2360679775],
[3.0, 4.0, 6.0]
]
sage: n.systems_of_abs(7)
[
[0.6180339887..., 2.236067977..., 1.236067977...],
[1.6180339887..., 2.236067977..., 3.236067977...],
[3.0, 4.0, 6.0]
]
sage: n.eigenvalues([2,3,5])
[[3.0, 0.61803398875, -1.61803398875],
[4.0, -2.2360679775, 2.2360679775],
[6.0, 1.2360679775, -3.2360679775]]
Compare two spaces of numerical eigenforms. Currently returns 0 if they come from the same space of modular symbols, and -1 otherwise.
EXAMPLES:
sage: n = numerical_eigenforms(23)
sage: n.__cmp__(loads(dumps(n)))
0
Create a new space of numerical eigenforms.
EXAMPLES:
sage: numerical_eigenforms(61) # indirect doctest
Numerical Hecke eigenvalues for Congruence Subgroup Gamma0(61) of weight 2
Return a very sparse vector v such that v times the eigenvector matrix has all entries nonzero.
ALGORITHM:
EXAMPLES:
sage: n = numerical_eigenforms(37)
sage: n._easy_vector() # slightly random output
(1.0, 1.0, 0)
sage: n = numerical_eigenforms(43)
sage: n._easy_vector() # slightly random output
(1.0, 0, 1.0, 0)
sage: n = numerical_eigenforms(125)
sage: n._easy_vector() # slightly random output
(0, 0, 0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
Return all eigendata for self._easy_vector().
EXAMPLES:
sage: numerical_eigenforms(61)._eigendata() # random order
((1.0, 0.668205013164, 0.219198805797, 0.49263343893, 0.707106781187), (1.0, 1.49654668896, 4.5620686498, 2.02990686579, 1.41421356237), [0, 1], (1.0, 1.0))
Find numerical approximations to simultaneous eigenvectors in self.modular_symbols() for all T_p in self._tp.
EXAMPLES:
sage: n = numerical_eigenforms(61)
sage: n._eigenvectors() # random order
[ 1.0 0.289473640239 0.176788851952 0.336707726757 2.4182243084e-16]
[ 0 -0.0702748344418 0.491416161212 0.155925712173 0.707106781187]
[ 0 0.413171180356 0.141163094698 0.0923242547901 0.707106781187]
[ 0 0.826342360711 0.282326189397 0.18464850958 6.79812569682e-16]
[ 0 0.2402380858 0.792225196393 0.905370774276 4.70805946682e-16]
Print string representation of self.
EXAMPLES:
sage: n = numerical_eigenforms(61) ; n
Numerical Hecke eigenvalues for Congruence Subgroup Gamma0(61) of weight 2
sage: n._repr_()
'Numerical Hecke eigenvalues for Congruence Subgroup Gamma0(61) of weight 2'
Return a list of the eigenvalues of the Hecke operator
on all the computed eigenforms. The eigenvalues match up
between one prime and the next.
INPUT:
OUTPUT:
EXAMPLES:
sage: n = numerical_eigenforms(11,4)
sage: n.ap(2) # random order
[9.0, 9.0, 2.73205080757, -0.732050807569]
sage: n.ap(3) # random order
[28.0, 28.0, -7.92820323028, 5.92820323028]
sage: m = n.modular_symbols()
sage: x = polygen(QQ, 'x')
sage: m.T(2).charpoly(x).factor()
(x - 9)^2 * (x^2 - 2*x - 2)
sage: m.T(3).charpoly(x).factor()
(x - 28)^2 * (x^2 + 2*x - 47)
Return the eigenvalues of the Hecke operators corresponding to the primes in the input list of primes. The eigenvalues match up between one prime and the next.
INPUT:
OUTPUT:
list of lists of eigenvalues.
EXAMPLES:
sage: n = numerical_eigenforms(1,12)
sage: n.eigenvalues([3,5,13])
[[177148.0, 252.0], [48828126.0, 4830.0], [1.79216039404e+12, -577737.999...]]
Return the level of this set of modular eigenforms.
EXAMPLES:
sage: n = numerical_eigenforms(61) ; n.level()
61
Return the space of modular symbols used for computing this set of modular eigenforms.
EXAMPLES:
sage: n = numerical_eigenforms(61) ; n.modular_symbols()
Modular Symbols space of dimension 5 for Gamma_0(61) of weight 2 with sign 1 over Rational Field
Return the absolute values of all systems of eigenvalues for self for primes up to bound.
EXAMPLES:
sage: numerical_eigenforms(61).systems_of_abs(10)
[
[0.311107817466, 2.90321192591, 2.52542756084, 3.21431974338],
[1.0, 2.0, 3.0, 1.0],
[1.48119430409, 0.806063433525, 3.15632517466, 0.675130870567],
[2.17008648663, 1.70927535944, 1.63089761382, 0.460811127189],
[3.0, 4.0, 6.0, 8.0]
]
Return all systems of eigenvalues for self for primes up to bound.
EXAMPLES:
sage: numerical_eigenforms(61).systems_of_eigenvalues(10)
[
[-1.48119430409..., 0.806063433525..., 3.15632517466..., 0.675130870567...],
[-1.0..., -2.0..., -3.0..., 1.0...],
[0.311107817466..., 2.90321192591..., -2.52542756084..., -3.21431974338...],
[2.17008648663..., -1.70927535944..., -1.63089761382..., -0.460811127189...],
[3.0, 4.0, 6.0, 8.0]
]
Return the weight of this set of modular eigenforms.
EXAMPLES:
sage: n = numerical_eigenforms(61) ; n.weight()
2
Given a vector and a threshold eps, return all
indices where
is larger than eps.
EXAMPLES:
sage: sage.modular.modform.numerical.support( numerical_eigenforms(61)._easy_vector(), 1.0 )
[]
sage: sage.modular.modform.numerical.support( numerical_eigenforms(61)._easy_vector(), 0.5 )
[0, 1]