# HG changeset patch
# User Robert Bradshaw <robertwb@math.washington.edu>
# Date 1245996758 25200
# Node ID f77fe37202bbb46883a500378203ab609a4074b1
# Parent 013352f04fe0ac208b4b6c0e6ea0042adea3c7cf
Modify modular parameterization to use new elliptic exponential.
diff -r 013352f04fe0 -r f77fe37202bb sage/schemes/elliptic_curves/ell_rational_field.py
a
|
b
|
|
2819 | 2819 | sage: E.period_lattice() |
2820 | 2820 | Period lattice associated to Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field |
2821 | 2821 | """ |
2822 | | from sage.schemes.elliptic_curves.period_lattice import PeriodLattice_ell |
2823 | | return PeriodLattice_ell(self) |
| 2822 | try: |
| 2823 | return self._period_lattice |
| 2824 | except AttributeError: |
| 2825 | from sage.schemes.elliptic_curves.period_lattice import PeriodLattice_ell |
| 2826 | self._period_lattice = PeriodLattice_ell(self) |
| 2827 | return self._period_lattice |
2824 | 2828 | |
2825 | 2829 | def elliptic_exponential(self, z, embedding=None): |
2826 | 2830 | r""" |
… |
… |
|
3191 | 3195 | [-7 -1] |
3192 | 3196 | [15 2] |
3193 | 3197 | sage: phi((-7*z-1)/(15*z+2)) |
3194 | | (8.20822465478524 - 13.1562816054681*I : -8.79855099049343 + 69.4006129342194*I : 1.00000000000000) |
| 3198 | (8.20822465478524 - 13.1562816054681*I : -8.79855099049339 + 69.4006129342195*I : 1.00000000000000) |
3195 | 3199 | |
3196 | 3200 | We can also get a series expansion of this modular parameterization:: |
3197 | 3201 | |
… |
… |
|
6964 | 6968 | sage: E = EllipticCurve('37a') |
6965 | 6969 | sage: phi = E.modular_parametrization() |
6966 | 6970 | sage: phi((sqrt(7)*I - 17)/74, 53) |
6967 | | (-3.44405199344475e-16 - 1.69572887583947e-16*I : 3.44405199344530e-16 + 1.69572887583947e-16*I : 1.00000000000000) |
| 6971 | (-3.37746093871080e-16 - 2.21824021705058e-16*I : 3.33066907387547e-16 + 2.21719344273286e-16*I : 1.00000000000000) |
6968 | 6972 | |
6969 | 6973 | Verify that the mapping is invariant under the action of `\Gamma_0(N)` |
6970 | 6974 | on the upper half plane:: |
… |
… |
|
6977 | 6981 | sage: phi(tau+1) |
6978 | 6982 | (-3.92181329652810 - 12.2578555525366*I : 44.9649874434872 + 14.3257120944681*I : 1.00000000000000) |
6979 | 6983 | sage: phi((6*tau+1) / (11*tau+2)) |
6980 | | (-3.92181329652853 - 12.2578555525369*I : 44.9649874434897 + 14.3257120944671*I : 1.00000000000000) |
| 6984 | (-3.92181329652856 - 12.2578555525369*I : 44.9649874434898 + 14.3257120944670*I : 1.00000000000000) |
6981 | 6985 | |
6982 | 6986 | ALGORITHM: |
6983 | 6987 | |
… |
… |
|
7008 | 7012 | lattice_point += an/n |
7009 | 7013 | lattice_point *= q |
7010 | 7014 | # Map to E via Weierstrass P |
7011 | | E2 = self._E.change_ring(CC) |
7012 | | from sage.interfaces.all import gp |
7013 | | gp.set_real_precision((CC.prec()+10)//3) |
7014 | | e = gp(E2) |
7015 | | w = list(e.ellztopoint(lattice_point)) |
7016 | | return E2.point([CC(repr(w[0])), CC(repr(w[1])), CC(1)], check=False) |
| 7015 | return self._E.elliptic_exponential(lattice_point) |
7017 | 7016 | |
7018 | 7017 | def power_series(self): |
7019 | 7018 | r""" |