OK, I don't have time for a whole lecture on the subject but in a nutshell:

Each elliptic curve (over Q) has a modular form associated to it (as
proved by Wiles et al), which is a power series whose coefficents are
denoted a_n.  These are easily determined from the a_p (for prime p).
And the definition of a_p is 1+p-#E(F_p), except that for primes of
bad reduction the definition is a little different.

William's solution using E.Np() is more transparent than mine (as well
as simpler and faster -- I'm not a SAGE expert! ) and makes sense
without knowning about modular forms or a_p.

For primes of bad reduction it still makes sense to reduce the curve
mod p and count the points on that, even though the reduced curve is
not an elliptic curve.  The answer is always p-1, p, or p+1 in that
case.  That is probably prved in Silverman & Tate -- or if not I could
give you other references.

John


On 8/10/07, Justin <[EMAIL PROTECTED]> wrote:
>
> Thank you both for your recommendations.
>
> Seeing that I'm new to SAGE and Python, could you explain what these
> different solutions actually do?
>
> I've just been teaching myself out of Tate and Silverman's "Rational
> Points on Elliptic Curves" and I see that aplist has something to do
> with the fourier coefficients of the modular form associated with the
> elliptic curve. (Explanation of even this to a lowly undergrad such as
> myself is appreciated)
>
> I've further noticed that the produced output for Mr. Stein's is
> different from Mr. Cremona's solution. Furthermore Mr. Cremona's
> output closely matches what I got except it produces output for when
> p=11! The discriminant of this curve is -11 and thus the reduction
> should be bad there (thus I avoided it).
>
> I've also considered just using e.sea(p) since that supposedly gives
> me the number of points on the curve over F_p, but e.sea(3) throws me
> an error claiming that the curve is singular there and the value for
> e.sea(7) already doesn't match Mr. Cremona's and my output!
>
> Any suggestions?
> -Justin
>
>
> On Aug 10, 11:50 am, "William Stein" <[EMAIL PROTECTED]> wrote:
> > On 8/10/07, John Cremona <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> > > Two comments, neither about memory management as such:
> >
> > > (1) Why do you need to store all the primes and curves?  Why don't you
> > > loop through primes?
> >
> > > (2) EllipticCurve([0,-1,1,0,0]).aplist(10000) gives you almost what
> > > you want (just replace the i'th entry ap by 1+p-ap where p is the ith
> > > prime):
> >
> > > e=EllipticCurve([0,-1,1,0,0]);
> > > ap=e.aplist(10000);
> > > plist=prime_range(10000);
> > > [1+plist[i]-ap[i] for i in range(prime_pi(10000))]
> >
> > Moreover, even EllipticCurve([0,-1,1,0,0]).aplist(1000000)
> > will finish in a reasonable amount of time -- i.e., it's very very optimized
> > (thank you PARI).   You can also do the following, which is basically
> > the same as above and even faster:
> >    sage: e = EllipticCurve([0,1,-1,0,0])
> >    sage: v = [e.Np(p) for p in primes(10000)]
> >
> > William
>
>
> >
>


-- 
John Cremona

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://sage.math.washington.edu/sage/ and http://sage.scipy.org/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to