ASKSAGE: Sage Q&A Forum - RSS feedhttps://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Wed, 08 Mar 2017 13:02:32 +0100n-torsion subgroups on Elliptic Curves defined on some fieldhttps://ask.sagemath.org/question/36487/n-torsion-subgroups-on-elliptic-curves-defined-on-some-field/if E an elliptic is defined on K, then E[n] is a subgroup of an Elliptic curve defined on an algebraic closure of K, its the set of points P of this curve whose order is dividing n
G = E.torsion_subgroup()
gives the torsion subgroup in E(K), but is there a method giving the E[n] ?
For example, for the Elliptic Curve y^2=x^3-2 defined on Q
if we denote by alpha the cubic root of 2 and J a complex cubic root of unity, and O the point at infinity
E[2] = {O,(alpha,0), (alpha * J,0),(alpha * J^2,0)}
I tried the following
> E = EllipticCurve(CC,[0,-2])
> O = E(0)
> O.division_points(2)
and got [pretty close but not the right result, and not in an algebraic form anyway]
[(0.000000000000000 : 1.00000000000000 : 0.000000000000000),
(1.25992104989487 : 0.000000000000000 : 1.00000000000000)]
thanksWed, 08 Feb 2017 15:26:56 +0100https://ask.sagemath.org/question/36487/n-torsion-subgroups-on-elliptic-curves-defined-on-some-field/Answer by dan_fulea for <p>if E an elliptic is defined on K, then E[n] is a subgroup of an Elliptic curve defined on an algebraic closure of K, its the set of points P of this curve whose order is dividing n</p>
<p>G = E.torsion_subgroup()
gives the torsion subgroup in E(K), but is there a method giving the E[n] ?</p>
<p>For example, for the Elliptic Curve y^2=x^3-2 defined on Q</p>
<p>if we denote by alpha the cubic root of 2 and J a complex cubic root of unity, and O the point at infinity</p>
<p>E[2] = {O,(alpha,0), (alpha * J,0),(alpha * J^2,0)}</p>
<p>I tried the following</p>
<blockquote>
<p>E = EllipticCurve(CC,[0,-2]) </p>
<p>O = E(0)</p>
<p>O.division_points(2)</p>
</blockquote>
<p>and got [pretty close but not the right result, and not in an algebraic form anyway]</p>
<pre><code> [(0.000000000000000 : 1.00000000000000 : 0.000000000000000),
(1.25992104989487 : 0.000000000000000 : 1.00000000000000)]
</code></pre>
<p>thanks</p>
https://ask.sagemath.org/question/36487/n-torsion-subgroups-on-elliptic-curves-defined-on-some-field/?answer=36745#post-id-36745If we know the above answer, or generally if we know the field of definition for $E [ n ] (\overline{\mathbb Q})$, then we can initialize the curve $E$ in sage over this right field and ask for the corresponding $n^2$ torsion points of order dividing $n$. In the above case we have a simple situation:
sage: R.<x> = PolynomialRing(QQ)
sage: K.<J> = NumberField( x^2+x+1 )
sage: J^3
1
sage: L.<a> = K.extension( x^3 - 2 )
sage: a^3
2
sage: E = EllipticCurve( L, [0, -2] )
sage: Origin = E( 0 )
sage: Origin.division_points( 2 )
[(0 : 1 : 0), (a : 0 : 1), ((-J - 1)*a : 0 : 1), (J*a : 0 : 1)]
Note: It would have been possible to start with the simpler curve $y^2 = x^3 -1$, which is a twist of the given one.
Things get very complicated for bigger values of $n$.
For instance, if we want to get the points of order $3$ on the given curve, the extension needed is related to the multiplication by $3$ morphism on the curve. (I know, this is an instance of an other question. But the general path remains.) We may ask for it:
sage: E = EllipticCurve( QQ, [0,-2] )
sage: f,g = E.multiplication_by_m(3)
sage: f.factor()
(1/9) * x^-2 * (x - 2)^-2 * (x^2 + 2*x + 4)^-2 * (x^3 + 6*x^2 - 8) * (x^6 - 6*x^5 + 36*x^4 - 16*x^3 + 48*x^2 + 64)
sage: g.factor()
(1/27) * x^-3 * (x - 2)^-3 * y * (x^2 + 2*x + 4)^-3 * (x^3 + 16) * (x^3 - 6*x^2 - 12*x - 8) * (x^6 + 6*x^5 + 48*x^4 - 88*x^3 + 96*x^2 - 96*x + 64)
And a possibility to proceed would be to use them.
In fact, sage even offers us the relevant field.
EQ = EllipticCurve( QQ, [0, -2] )
K.<b> = EQ.division_field( 3 )
print K
EK = EQ.base_extend( K )
for P in EK.torsion_points():
print "Order %s :: %s" % ( P.order(), P )
And we get:
Order 3 :: (2 : 1/18*b^3 - 1/6*b^2 - 2/3*b + 7/9 : 1)
Order 3 :: (2 : -1/18*b^3 + 1/6*b^2 + 2/3*b - 7/9 : 1)
Order 3 :: (0 : 1/6*b^2 - 1/3*b - 1/3 : 1)
Order 3 :: (1/18*b^3 - 1/6*b^2 + 1/3*b - 11/9 : 1/18*b^3 - 1/6*b^2 - 2/3*b + 7/9 : 1)
Order 3 :: (-1/18*b^3 + 1/6*b^2 - 1/3*b - 7/9 : -1/18*b^3 + 1/6*b^2 + 2/3*b - 7/9 : 1)
Order 3 :: (0 : -1/6*b^2 + 1/3*b + 1/3 : 1)
Order 3 :: (-1/18*b^3 + 1/6*b^2 - 1/3*b - 7/9 : 1/18*b^3 - 1/6*b^2 - 2/3*b + 7/9 : 1)
Order 3 :: (1/18*b^3 - 1/6*b^2 + 1/3*b - 11/9 : -1/18*b^3 + 1/6*b^2 + 2/3*b - 7/9 : 1)
Order 1 :: (0 : 1 : 0)
(For the posted question one can replace the 3 in EQ.division_field( 3 ) by 2.)
The other possibility is of a numerical taste.
We may use the bijection from $\mathbb{C}/\Lambda$ to $E(\mathbb{C})$, usual notations, and compute to a good precision the image of the obvious $3$-torsion points (i.e. $\frac 13\cdot\Lambda$) in the domain of definition.Mon, 27 Feb 2017 14:15:40 +0100https://ask.sagemath.org/question/36487/n-torsion-subgroups-on-elliptic-curves-defined-on-some-field/?answer=36745#post-id-36745Comment by fagui for <p>If we know the above answer, or generally if we know the field of definition for $E [ n ] (\overline{\mathbb Q})$, then we can initialize the curve $E$ in sage over this right field and ask for the corresponding $n^2$ torsion points of order dividing $n$. In the above case we have a simple situation:</p>
<pre><code>sage: R.<x> = PolynomialRing(QQ)
sage: K.<J> = NumberField( x^2+x+1 )
sage: J^3
1
sage: L.<a> = K.extension( x^3 - 2 )
sage: a^3
2
sage: E = EllipticCurve( L, [0, -2] )
sage: Origin = E( 0 )
sage: Origin.division_points( 2 )
[(0 : 1 : 0), (a : 0 : 1), ((-J - 1)*a : 0 : 1), (J*a : 0 : 1)]
</code></pre>
<p>Note: It would have been possible to start with the simpler curve $y^2 = x^3 -1$, which is a twist of the given one.</p>
<p>Things get very complicated for bigger values of $n$.</p>
<p>For instance, if we want to get the points of order $3$ on the given curve, the extension needed is related to the multiplication by $3$ morphism on the curve. (I know, this is an instance of an other question. But the general path remains.) We may ask for it:</p>
<pre><code>sage: E = EllipticCurve( QQ, [0,-2] )
sage: f,g = E.multiplication_by_m(3)
sage: f.factor()
(1/9) * x^-2 * (x - 2)^-2 * (x^2 + 2*x + 4)^-2 * (x^3 + 6*x^2 - 8) * (x^6 - 6*x^5 + 36*x^4 - 16*x^3 + 48*x^2 + 64)
sage: g.factor()
(1/27) * x^-3 * (x - 2)^-3 * y * (x^2 + 2*x + 4)^-3 * (x^3 + 16) * (x^3 - 6*x^2 - 12*x - 8) * (x^6 + 6*x^5 + 48*x^4 - 88*x^3 + 96*x^2 - 96*x + 64)
</code></pre>
<p>And a possibility to proceed would be to use them.
In fact, sage even offers us the relevant field.</p>
<pre><code>EQ = EllipticCurve( QQ, [0, -2] )
K.<b> = EQ.division_field( 3 )
print K
EK = EQ.base_extend( K )
for P in EK.torsion_points():
print "Order %s :: %s" % ( P.order(), P )
</code></pre>
<p>And we get:</p>
<pre><code>Order 3 :: (2 : 1/18*b^3 - 1/6*b^2 - 2/3*b + 7/9 : 1)
Order 3 :: (2 : -1/18*b^3 + 1/6*b^2 + 2/3*b - 7/9 : 1)
Order 3 :: (0 : 1/6*b^2 - 1/3*b - 1/3 : 1)
Order 3 :: (1/18*b^3 - 1/6*b^2 + 1/3*b - 11/9 : 1/18*b^3 - 1/6*b^2 - 2/3*b + 7/9 : 1)
Order 3 :: (-1/18*b^3 + 1/6*b^2 - 1/3*b - 7/9 : -1/18*b^3 + 1/6*b^2 + 2/3*b - 7/9 : 1)
Order 3 :: (0 : -1/6*b^2 + 1/3*b + 1/3 : 1)
Order 3 :: (-1/18*b^3 + 1/6*b^2 - 1/3*b - 7/9 : 1/18*b^3 - 1/6*b^2 - 2/3*b + 7/9 : 1)
Order 3 :: (1/18*b^3 - 1/6*b^2 + 1/3*b - 11/9 : -1/18*b^3 + 1/6*b^2 + 2/3*b - 7/9 : 1)
Order 1 :: (0 : 1 : 0)
</code></pre>
<p>(For the posted question one can replace the 3 in EQ.division_field( 3 ) by 2.)</p>
<p>The other possibility is of a numerical taste.
We may use the bijection from $\mathbb{C}/\Lambda$ to $E(\mathbb{C})$, usual notations, and compute to a good precision the image of the obvious $3$-torsion points (i.e. $\frac 13\cdot\Lambda$) in the domain of definition.</p>
https://ask.sagemath.org/question/36487/n-torsion-subgroups-on-elliptic-curves-defined-on-some-field/?comment=36863#post-id-36863thank you very much, i need some time to digest it all, because i'm a beginner/amateur in this topic.
i don't really understand what f and g are.Wed, 08 Mar 2017 09:32:07 +0100https://ask.sagemath.org/question/36487/n-torsion-subgroups-on-elliptic-curves-defined-on-some-field/?comment=36863#post-id-36863Comment by dan_fulea for <p>If we know the above answer, or generally if we know the field of definition for $E [ n ] (\overline{\mathbb Q})$, then we can initialize the curve $E$ in sage over this right field and ask for the corresponding $n^2$ torsion points of order dividing $n$. In the above case we have a simple situation:</p>
<pre><code>sage: R.<x> = PolynomialRing(QQ)
sage: K.<J> = NumberField( x^2+x+1 )
sage: J^3
1
sage: L.<a> = K.extension( x^3 - 2 )
sage: a^3
2
sage: E = EllipticCurve( L, [0, -2] )
sage: Origin = E( 0 )
sage: Origin.division_points( 2 )
[(0 : 1 : 0), (a : 0 : 1), ((-J - 1)*a : 0 : 1), (J*a : 0 : 1)]
</code></pre>
<p>Note: It would have been possible to start with the simpler curve $y^2 = x^3 -1$, which is a twist of the given one.</p>
<p>Things get very complicated for bigger values of $n$.</p>
<p>For instance, if we want to get the points of order $3$ on the given curve, the extension needed is related to the multiplication by $3$ morphism on the curve. (I know, this is an instance of an other question. But the general path remains.) We may ask for it:</p>
<pre><code>sage: E = EllipticCurve( QQ, [0,-2] )
sage: f,g = E.multiplication_by_m(3)
sage: f.factor()
(1/9) * x^-2 * (x - 2)^-2 * (x^2 + 2*x + 4)^-2 * (x^3 + 6*x^2 - 8) * (x^6 - 6*x^5 + 36*x^4 - 16*x^3 + 48*x^2 + 64)
sage: g.factor()
(1/27) * x^-3 * (x - 2)^-3 * y * (x^2 + 2*x + 4)^-3 * (x^3 + 16) * (x^3 - 6*x^2 - 12*x - 8) * (x^6 + 6*x^5 + 48*x^4 - 88*x^3 + 96*x^2 - 96*x + 64)
</code></pre>
<p>And a possibility to proceed would be to use them.
In fact, sage even offers us the relevant field.</p>
<pre><code>EQ = EllipticCurve( QQ, [0, -2] )
K.<b> = EQ.division_field( 3 )
print K
EK = EQ.base_extend( K )
for P in EK.torsion_points():
print "Order %s :: %s" % ( P.order(), P )
</code></pre>
<p>And we get:</p>
<pre><code>Order 3 :: (2 : 1/18*b^3 - 1/6*b^2 - 2/3*b + 7/9 : 1)
Order 3 :: (2 : -1/18*b^3 + 1/6*b^2 + 2/3*b - 7/9 : 1)
Order 3 :: (0 : 1/6*b^2 - 1/3*b - 1/3 : 1)
Order 3 :: (1/18*b^3 - 1/6*b^2 + 1/3*b - 11/9 : 1/18*b^3 - 1/6*b^2 - 2/3*b + 7/9 : 1)
Order 3 :: (-1/18*b^3 + 1/6*b^2 - 1/3*b - 7/9 : -1/18*b^3 + 1/6*b^2 + 2/3*b - 7/9 : 1)
Order 3 :: (0 : -1/6*b^2 + 1/3*b + 1/3 : 1)
Order 3 :: (-1/18*b^3 + 1/6*b^2 - 1/3*b - 7/9 : 1/18*b^3 - 1/6*b^2 - 2/3*b + 7/9 : 1)
Order 3 :: (1/18*b^3 - 1/6*b^2 + 1/3*b - 11/9 : -1/18*b^3 + 1/6*b^2 + 2/3*b - 7/9 : 1)
Order 1 :: (0 : 1 : 0)
</code></pre>
<p>(For the posted question one can replace the 3 in EQ.division_field( 3 ) by 2.)</p>
<p>The other possibility is of a numerical taste.
We may use the bijection from $\mathbb{C}/\Lambda$ to $E(\mathbb{C})$, usual notations, and compute to a good precision the image of the obvious $3$-torsion points (i.e. $\frac 13\cdot\Lambda$) in the domain of definition.</p>
https://ask.sagemath.org/question/36487/n-torsion-subgroups-on-elliptic-curves-defined-on-some-field/?comment=36865#post-id-36865For a point P(x,y) on an eliptinc curve the point 3P has coordinates (u,v) where u, v are (generically) structural rational functions on x,y. These structural functions are f and g. In case of doubt in such situation one can ask sage: ?E.multiplication_by_m . (Question mark in front of a method.) In our case we want 3P = ( 0 : ? : ? ) so for the one direction we can try a field extension w.r.t. a root of the one or the other factor of f. E.g. (x^3 + 6*x^2 - 8) . Some Galois exercise shows that the other degree six factor is related to this one after adjoining a primitive cubic root of one. (Your J.) This (f,g)-solution works of course only in "toy examples". The bigger n, the lower chance to get a practicable solution in this way.Wed, 08 Mar 2017 13:02:32 +0100https://ask.sagemath.org/question/36487/n-torsion-subgroups-on-elliptic-curves-defined-on-some-field/?comment=36865#post-id-36865