### Navigation

- index
- modules |
- next |
- previous |
- Modular Forms for Hecke Triangle Groups »

# Elements of Hecke modular forms spaces

AUTHORS:

- Jonas Jermann (2013): initial version

class `sage.modular.modform_hecketriangle.element.``FormsElement`(parent, rat)

  Bases: `sage.modular.modform_hecketriangle.graded_ring_element.FormsRingElement`

  (Hecke) modular forms.

  `ambient_coordinate_vector`()

    Return the coordinate vector of `self` with respect to `self.parent().ambient_space().gens()`.

    The returned coordinate vector is an element of `self.parent().module()`.

    Mote: This uses the corresponding function of the parent. If the parent has not defined a coordinate vector function or an ambient module for coordinate vectors then an exception is raised by the parent (default implementation).

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import ModularForms
        sage: MF = ModularForms(n=4, k=24, ep=-1)
        sage: MF.gen(0).ambient_coordinate_vector().parent()
        Vector space of dimension 3 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring
        sage: MF.gen(0).ambient_coordinate_vector()
        (1, 0, 0)
        sage: subspace = MF.subspace([MF.gen(0), MF.gen(2)])
        sage: subspace.gen(0).ambient_coordinate_vector().parent()
        Vector space of degree 3 and dimension 2 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring
        Basis matrix:
        [1 0 0]
        [0 0 1]
        sage: subspace.gen(0).ambient_coordinate_vector()
        (1, 0, 0)
        sage: subspace.gen(0).ambient_coordinate_vector() == subspace.ambient_coordinate_vector(subspace.gen(0))
        True

  `coordinate_vector`()

    Return the coordinate vector of `self` with respect to `self.parent().gens()`.

    This uses the corresponding function of the parent. If the parent has not defined a coordinate vector function or a module for coordinate vectors then an exception is raised by the parent (default implementation).

    EXAMPLES:

        sage: from sage.modular.modform_hecketriangle.space import ModularForms
        sage: MF = ModularForms(n=4, k=24, ep=-1)
        sage: MF.gen(0).coordinate_vector().parent()
        Vector space of dimension 3 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring
        sage: MF.gen(0).coordinate_vector()
        (1, 0, 0)
        sage: subspace = MF.subspace([MF.gen(0), MF.gen(2)])
        sage: subspace.gen(0).coordinate_vector().parent()
        Vector space of dimension 2 over Fraction Field of Univariate Polynomial Ring in d over Integer Ring
        sage: subspace.gen(0).coordinate_vector()
        (1, 0)
        sage: subspace.gen(0).coordinate_vector() == subspace.coordinate_vector(subspace.gen(0))
        True

  `lseries`(num_prec=None, max_imaginary_part=0, max_asymp_coeffs=40)

    Return the L-series of `self` if `self` is modular and holomorphic. Note: This relies on the (pari) based function `Dokchitser`.

    INPUT:

    - `num_prec` – An integer denoting the to-be-used numerical precision.

        If integer `num_prec=None` (default) the default numerical precision of the parent of `self` is used.

    - `max_imaginary_part` – A real number (default: 0), indicating up to which

        imaginary part the L-series is going to be studied.

    - `max_asymp_coeffs` – An integer (default: 40).

    OUTPUT:

    An interface to Tim Dokchitser’s program for computing L-series, namely the series given by the Fourier coefficients of `self`.

    EXAMPLES:

        sage: from sage.modular.modform.eis_series import eisenstein_series_lseries
        sage: from sage.modular.modform_hecketriangle.space import ModularForms
        sage: f = ModularForms(n=3, k=4).E4()/240
        sage: L = f.lseries()
        sage: L
        L-series associated to the modular form 1/240 + q + 9*q^2 + 28*q^3 + 73*q^4 + O(q^5)
        sage: L.conductor
        1
        sage: L(1).prec()
        53
        sage: L.check_functional_equation() < 2^(-50)
        True
        sage: L(1)
        -0.0304484570583...
        sage: abs(L(1) - eisenstein_series_lseries(4)(1)) < 2^(-53)
        True
        sage: L.derivative(1, 1)
        -0.0504570844798...
        sage: L.derivative(1, 2)/2
        -0.0350657360354...
        sage: L.taylor_series(1, 3)
        -0.0304484570583... - 0.0504570844798...*z - 0.0350657360354...*z^2 + O(z^3)
        sage: coeffs = f.q_expansion_vector(min_exp=0, max_exp=20, fix_d=True)
        sage: sum([coeffs[k]*k^(-10) for k in range(1,len(coeffs))]).n(53)
        1.00935215408...
        sage: L(10)
        1.00935215649...

        sage: f = ModularForms(n=6, k=4).E4()
        sage: L = f.lseries(num_prec=200)
        sage: L.conductor
        3
        sage: L.check_functional_equation() < 2^(-180)
        True
        sage: L(1)
        -2.92305187760575399490414692523085855811204642031749788...
        sage: L(1).prec()
        200
        sage: coeffs = f.q_expansion_vector(min_exp=0, max_exp=20, fix_d=True)
        sage: sum([coeffs[k]*k^(-10) for k in range(1,len(coeffs))]).n(53)
        24.2281438789...
        sage: L(10).n(53)
        24.2281439447...

        sage: f = ModularForms(n=8, k=6, ep=-1).E6()
        sage: L = f.lseries()
        sage: L.check_functional_equation() < 2^(-45)
        True
        sage: L.taylor_series(3, 3)
        0.000000000000... + 0.867197036668...*z + 0.261129628199...*z^2 + O(z^3)
        sage: coeffs = f.q_expansion_vector(min_exp=0, max_exp=20, fix_d=True)
        sage: sum([coeffs[k]*k^(-10) for k in range(1,len(coeffs))]).n(53)
        -13.0290002560...
        sage: L(10).n(53)
        -13.0290184579...

        sage: f = (ModularForms(n=17, k=24).Delta()^2)    # long time
        sage: L = f.lseries()    # long time
        sage: L.check_functional_equation() < 2^(-50)    # long time
        True
        sage: L.taylor_series(12, 3)    # long time
        0.000683924755280... - 0.000875942285963...*z + 0.000647618966023...*z^2 + O(z^3)
        sage: coeffs = f.q_expansion_vector(min_exp=0, max_exp=20, fix_d=True)    # long time
        sage: sum([coeffs[k]*k^(-30) for k in range(1,len(coeffs))]).n(53)    # long time
        9.31562890589...e-10
        sage: L(30).n(53)    # long time
        9.31562890589...e-10

        sage: f = ModularForms(n=infinity, k=2, ep=-1).f_i()
        sage: L = f.lseries()
        sage: L.check_functional_equation() < 2^(-50)
        True
        sage: L.taylor_series(1, 3)
        0.000000000000... + 5.76543616701...*z + 9.92776715593...*z^2 + O(z^3)
        sage: coeffs = f.q_expansion_vector(min_exp=0, max_exp=20, fix_d=True)
        sage: sum([coeffs[k]*k^(-10) for k in range(1,len(coeffs))]).n(53)
        -23.9781792831...
        sage: L(10).n(53)
        -23.9781792831...

### Navigation

- index
- modules |
- next |
- previous |
- Modular Forms for Hecke Triangle Groups »