In the following example we create a degree two curve over the rational
field, then create a new curve of conic type using
.
,
explicitly as a conic curve.
The basic access functions for rational curves and conics are inherited
from the general machinery for plane curves and hypersurface schemes.
These examples illustrate how to obtain standard models of a curve of
genus zero, either as a conic or as a parametrisation by the projective line.
We begin with an example of a singular curve of geometric genus zero.
> P2<x,y,z> := ProjectivePlane(FiniteField(71));
> C := Curve(P2, (x^3 + y^2*z)^2 - x^5*z);
> C;
Curve over GF(71) defined by
x^6 + 70*x^5*z + 2*x^3*y^2*z + y^4*z^2
> ArithmeticGenus(C);
10
> Genus(C);
0
> #RationalPoints(C);
73
> Z := SingularSubscheme(C);
> Degree(Z);
18
We see that C is highly singular and that its desingularisation has genus
zero.
At most 18 of 73 points are singular; note that a nonsingular curve of genus
zero would have 72 points. We now investigate the source of the extra points.
> cmps := IrreducibleComponents(Z);
> [ Degree(X) : X in cmps ];
[ 11, 7 ]
> [ Degree(ReducedSubscheme(X)) : X in cmps ];
[ 1, 1 ]
> [ RationalPoints(X) : X in cmps ];
[
{@ (0 : 0 : 1) @},
{@ (0 : 1 : 0) @}
]
Since the only singular rational points on C are (0 : 0 : 1) and
(0 : 1 : 0), the "obvious" point (1 : 0 : 1) must be nonsingular
and we can use it to obtain a rational parametrisation of the curve
as explained in Section
Isomorphisms.
> P1<u,v> := ProjectiveSpace(FiniteField(71), 1);
> p := C![1, 0, 1];
> m := Parametrization(C, Place(p), Curve(P1));
> S1 := {@ m(q) : q in RationalPoints(P1) @};
> #S1;
72
> [ q : q in RationalPoints(C) | q notin S1 ];
[ (0 : 1 : 0) ]
We conclude that the extra point comes from a singularity
whose resolution does not have any degree one places over it
(see Section
Divisors of Chapter
ALGEBRAIC CURVES for background
on places of curves). We can verify this explicitly.
> [ Degree(p) : p in Places(C![0, 1, 0]) ];
[ 2 ]
In this example we start by defining a projective curve and we check
that it is rational; that is, that it has genus zero.
> P2<x,y,z> := ProjectiveSpace(Rationals(), 2);
> C0 := Curve(P2, x^2 - 54321*x*y + y^2 - 97531*z^2);
> IsNonsingular(C0);
true
The curve C
0 is defined as a degree 2 curve over the rationals.
By making a preliminary type change to the type of conics,
CrvCon,
we can test whether there exists a rational point over Q and use
efficient algorithms of Section
Finding Points
for finding rational points on curves in conic form.
The existence of a point (defined over the base field) is equivalent
to the existence of a parametrisation (defined over the base field)
of the curve by the projective line.
> bool, C1 := IsConic(C0);
> bool;
true
> C1;
Conic over Rational Field defined by
x^2 - 54321*x*y + y^2 - 97531*z^2
> HasRationalPoint(C1);
true (398469/162001 : -118246/162001 : 1)
> RationalPoint(C1);
(398469/162001 : -118246/162001 : 1)
The parametrisation intrinsic requires a one-dimensional ambient space
as one of the arguments. This space will be used as the domain of the
parametrisation map.
> P1<u,v> := ProjectiveSpace(Rationals(), 1);
> phi := Parametrization(C1, Curve(P1));
> phi;
Mapping from: Prj: P1 to CrvCon: C1
with equations :
398469*u^2 + 944072*u*v + 559185*v^2
-118246*u^2 - 200850*u*v - 85289*v^2
162001*u^2 + 329499*u*v + 162991*v^2
and inverse
-4634102139*x + 30375658963*y + 31793350442*z
5456130497*x - 25641668406*y - 32136366969*z
and alternative inverse equations :
5456130497*x - 25641668406*y - 32136366969*z
-6424037904*x + 21645471041*y + 31600239062*z
The defining functions for the parametrisation may look large, but
they are defined simply by a linear change of variables from the
2-uple embedding of the projective line in the projective plane.
We now do a naive search for rational points on the curve.
> time RationalPoints(C1 : Bound := 100000);
{@ @}
Time: 2.420
Although there were no points with small coefficients, the
parametrisation provides us with any number of rational points:
> phi(P1![0, 1]);
(559185/162991 : -85289/162991 : 1)
> phi(P1![1, 1]);
(1901726/654491 : -404385/654491 : 1)
> phi(P1![1, 0]);
(398469/162001 : -118246/162001 : 1)
The first part of this example illustrates how to obtain diagonal
equations for conics.
> P2<x,y,z> := ProjectiveSpace(RationalField(), 2);
> f := 1134*x^2 - 28523*x*y - 541003*x*z - 953*y^2 - 3347*y*z - 245*z^2;
> C := Conic(P2, f);
> LegendrePolynomial(C);
1134*x^2 - 927480838158*y^2 - 186042605936505203884941*z^2
> ReducedLegendrePolynomial(C);
817884337*x^2 - y^2 - 353839285266278*z^2
Now we demonstrate how to extend the base field of the conic; that is,
to create the conic with the same coefficients but in a larger field.
This can be done by calling
BaseExtend; in this instance, we move
from the rationals to a particular number field.
(Note the assignment of names to C in order to make the printing nicer.)
> P<t> := PolynomialRing(RationalField());
> K := NumberField(t^2 - t + 723);
> C<u,v,w> := BaseExtend(C, K);
> C;
Conic over K defined by
1134*u^2 - 28523*u*v - 953*v^2 - 541003*u*w - 3347*v*w - 245*w^2
[Next][Prev] [Right] [Left] [Up] [Index] [Root]