Here's a way, using QQbar. To get this to work I had to (1) add a
trivial function is_square() for elements of QQbar (it did not exist
but was required i nthe code for constructing points), and also
correct a typo in the code of qqbar.py (line 2942).
sage: e = EllipticCurve("27a3")
sage: ebar = e.change_ring(QQbar)
sage: E4 = ebar(0).division_points(4)
sage: E4
[(-1.721084160919158? : -0.50000000000000000? - 2.201834737520806?*I :
1),
(-1.721084160919158? : -0.50000000000000000? + 2.201834737520806?*I :
1),
(-0.6299605249474365? : -1/2 : 1),
(-0.2305815555121425? - 0.3993789694352942?*I : -1.089979839785493? +
0.?e-19*I : 1),
(-0.2305815555121425? - 0.3993789694352942?*I : 0.08997983978549296?
+ 0.?e-38*I : 1),
(-0.2305815555121425? + 0.3993789694352942?*I : -1.089979839785493? +
0.?e-19*I : 1),
(-0.2305815555121425? + 0.3993789694352942?*I : 0.08997983978549296?
+ 0.?e-38*I : 1),
(0 : 1 : 0),
(0.3149802624737183? - 0.5455618179858607?*I : -1/2 : 1),
(0.3149802624737183? + 0.5455618179858607?*I : -1/2 : 1),
(0.4611631110242849? : -1.089979839785493? : 1),
(0.4611631110242849? : 0.08997983978549296? : 1),
(0.8605420804595790? - 1.490502605407016?*I : -0.50000000000000000? -
2.201834737520806?*I : 1),
(0.8605420804595790? - 1.490502605407016?*I : -0.50000000000000000? +
2.201834737520806?*I : 1),
(0.8605420804595790? + 1.490502605407016?*I : -0.50000000000000000? -
2.201834737520806?*I : 1),
(0.8605420804595790? + 1.490502605407016?*I : -0.50000000000000000? +
2.201834737520806?*I : 1)]
Now we find the appropriate fields
sage: Set([P[0].minpoly() for P in E4])
{x^3 + 1/4, x^6 + 5*x^3 - 1/2, x}
sage: Set([P[1].minpoly() for P in E4])
{x^4 + 2*x^3 + 6*x^2 + 5*x - 1/2, x + 1/2, x - 1}
so the x-coords are defined over Q(a,b) where a,b are roots of x^3
+ 1/4, x^6 + 5*x^3 - 1/2 and the y-coords are in Q(c) where c is a
root of x^4 + 2*x^3 + 6*x^2 + 5*x - 1/2.
sage: f4 = E4[0][1].minpoly(); f4
x^4 + 2*x^3 + 6*x^2 + 5*x - 1/2
sage: f3 = E4[2][0].minpoly(); f3
x^3 + 1/4
sage: f6 = E4[0][0].minpoly(); f6
x^6 + 5*x^3 - 1/2
sage: x6 = E4[0][0]
sage: x4 = E4[0][1]
sage: x3 = E4[2][0]
Now what we need is a way of constructing a number field from a finite
list of elements of QQbar, which is not implemented. But the above is
a start.
I will make a patch to correct the two things mentioned at the top
(without which this code will not work).
John Cremona
On Sep 18, 3:12 pm, Hendrik <[email protected]> wrote:
> Hi,
>
> First of all, I'm very happy with the things I can do with elliptic
> curves over number fields in Sage.
>
> My problem:
> I want to add the complete 4-torsion of E27a3 to the rationals, i.e. I
> want K=Q(E[4]).
> My situation is more or less similar
> to:http://groups.google.com/group/sage-nt/browse_thread/thread/b17b3f26a...
> ,
> though for now I just want to know information about K.
> Just adjoining the x-coordinates of the division polynomial does not
> give me the complete 4-torsion.
> Adding the y-coordinates and get the splitting_field is beyond the
> capabilities of Sage, I guess.
> Is there a way to obtain this field K?
> Am I missing something, is there some functionality in Sage to do
> this?
>
> Best,
>
> Hendrik
--~--~---------~--~----~------------~-------~--~----~
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-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---