#6045: [with patch, with review, needs work] Computation of Heegner points
---------------------------+------------------------------------------------
Reporter: robertwb | Owner: was
Type: defect | Status: new
Priority: major | Milestone: sage-4.1
Component: number theory | Keywords:
Reviewer: | Author:
Merged: |
---------------------------+------------------------------------------------
Comment(by cremona):
NB this requires #6386. Applies fine to 4.1.alpha2 + the four patches
there. Tests in ell_rational_field pass.
Modular param: type "and and" in a comment.
Heegner: typo "give" -> "given" in 2 or 3 places in docstrings. Why
do you reverse the order of summation of a_n/n? Can you sum the
series using an iterator for the an instead of forming the whole list?
_heegner_forms_list: (this only depends on N and D so could perhaps be
factored out of the class to a stand-alone function).
More seriously, this function is *wrong*! (Though in a way which does
not matter for the use which is made of it here so far.) The point is
this: To get a complete set of forms you need to choose *one* sqrt of
D mod 4*N and use the same b for all the forms. Otherwise the points
you get are not Galois conjugate. [Changing b to another sqrt amounts
to applying to the point in the upper half plane one of the
Atkin-Lehner involutions. This has two effects: firstly, it may
change the sign of the integral (depending on the A-L eigenvalue;
secondly, it maps \infty to another cusp, hence adds a torsion point
to the Heegner point. So instead of getting come conjugate point P
you get either P+T or -P+T with T torsion. The reason that this does
not make the rest of the code wrong here is that you only actually use
one of the forms (the one with smallest a to get best accuracy) and
then use algdep. But we should have code that could in principal
deliver a set of Galois conjugate points.
To get around this: try all the sqrt of D mod 4*N; for each, try to
find a complete set of forms with that same b. If that fails, either
look at another b, or choose a different lift of b from Z/2N to Z
(since larger b's will give more possible forms). I implemented this
in gp ages ago, so I have gp code which does this!
Future work: one useful application of Heegner points is to find
rational points on curves of rank 1. I have been doing this
successfully for years, and in 2005 work of Delaunay and Watkins made
it vastly more efficient. That excellent efficient version found its
way into Magma (thanks for Mark) and it would be good to get something
as good in Sage. The idea is to compute all the complex z (mod period
lattice L) for a complete set of forms, then take the trace by adding
those up (as complex numbers) before mapping to the curve, at which
point you only need to recognise the coordinates as rational numbers.
You can use the action of complex conjugation on the forms to halve
the number of evaluations (and in each pair can choose the smallest
a). The Delaunay-Watkins improvement allows to use even smaller a,
and I can explain further if asked!
Lastly: I tried 873b1 and D=-11, which works fine, though the point
constructed has height 14.785 but the heegner_point_height function
returns double that. This might need a different ticket.
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/6045#comment:16>
Sage <http://sagemath.org/>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---