Rational points on an elliptic curve over a number field
There might be a misunderstanding in your question.
The idea is probably to give examples of rational points on the elliptic curve
when considered over various number fields.
Checking if a point is on a curve
Define a test to check if a point is on the curve.
sage: def check(x, y):
....: print(y^2)
....: print(x^3 - 3267*x + 45630)
....: return(y^2 == x^3 - 3267*x + 45630)
Check that (-21, 324)
is on the curve.
sage: xa, ya = (-21, 324)
sage: check(xa, ya)
104976
104976
True
Check that (21 + 6*s, 54 - 42*s)
is on the curve, where s^2 = 33
.
sage: K.<s> = NumberField(x^2 - 33)
sage: xb, yb = (21 + 6*s, 54 - 42*s)
sage: check(xb, yb)
-4536*s + 61128
-4536*s + 61128
True
Check that (15 + 36*I, 216 - 324*I)
is on the curve, where I^2 = -1
.
sage: C.<I> = NumberField(x^2 + 1)
sage: xc, yc = (15 + 36*I, 216 - 324*I)
sage: check(xc, yc)
-139968*I - 58320
-139968*I - 58320
True
But those are not the same point on the elliptic curve.
I suppose your question is, given a number field F, how to find a point on the elliptic curve over F.
Finding rational points on an elliptic curve over a number field
Here is an example of a naïve search: we run through integer elements in a number field K
and check if they are x-coordinates of points on E/K
.
Define an elliptic curve.
sage: E = EllipticCurve([0, 0, 0, -3267, 45630])
sage: E
Elliptic Curve defined by y^2 = x^3 - 3267*x + 45630 over Rational Field
Consider the elliptic curve over a number field.
sage: K.<s> = NumberField(x^2 - 33)
sage: EK = E/K
Now use the method is_x_coord
:
sage: for a in range(-30,31):
....: for b in range(-30,31):
....: if EK.is_x_coord(a + b*s): print a + b*s
....:
-21
6
7
15
-6*s + 21
6*s + 21
Then it's not too hard to figure out the corresponding y-coordinates. I'll leave it as an exercise!
Generators
The gens
method can also be useful.
sage: E = EllipticCurve([0, 0, 0, -3267, 45630])
sage: K.<s> = NumberField(x^2 - 33)
sage: EK = E/K
sage: sage: EK.gens()
[(-21 : -324 : 1), (6 : 162 : 1), (-6*s + 21 : -42*s - 54 : 1)]
For the field C:
sage: C.<I> = NumberField(x^2 + 1)
sage: EC = E/C
sage: EC.gens()
[(-21 : -324 : 1),
(-129 : -1296*I : 1),
(-72*I + 15 : -648*I - 432 : 1),
(72*I + 15 : 648*I - 432 : 1)]