In this section we discuss creation and the basic attributes of conic curves. See Section Finding Points on Conics for functions which find points on conics and construct parametrisations of conics.
A conic is defined by a polynomial of degree 2 in some two-dimensional ambient space. The ambient can be either an affine or a projective space.
Prime: BoolElt Default: false
Maxtrial: RngInt Default: 13
Construct the conic C defined by the polynomial f in the ambient space X. The ambient X can de defined over any ring. However, the most specialised algorithms for finding points of conics require that X be defined over the integers or the rationals, or over a field such that the coefficients of f are rational numbers.
If the defining polynomial f of C is in diagonal form and if it is known that its coefficients are prime then one can set the parameter Prime. This can be of particular relevance when searching for a solution of the conic as one needs to factorize the coefficients of C's reduced form.
It is possible to set the parameter Maxtrial which sets the highest prime for which to perform a trial division. Trial division is used in conjunction with partial factorization when searching for a solution. More on this in Section Finding Points on Conics.
Returns true if and only if X is a conic. If true returns X as a CrvCon object.
> Q := RationalField(); > PU<x1> := PolynomialRing(Q); > h := 119/44*x1^2 - 908/555*x1 + 723/259; > IsIrreducible(h); true > NF := NumberField(h);Next we make a two-dimensional projective space over the number field NF and create a conic in that space.
> P<x,y,z> := ProjectiveSpace(NF,2);
> f := 1/11*34*x^2 - 1/3629*28523*x*y - 1/32375*41003*x*z
> - 1/697*953*y^2 - 1/7656*3347*y*z - 1/852*245*z^2;
> C := Conic(P, f);
> C;
Conic over NF defined by
34/11*x^2 - 28523/3629*x*y - 41003/32375*x*z - 953/697*y^2 - 3347/7656*y*z -
245/852*z^2
As a second example, we create a conic in an affine space over the integers.
> Z := Integers(); > A<x2,y2> := AffineSpace(Z,2); > Caff := Conic(A, 171*x2^2 - 758*x2*y2 + 213*x2 + 399*y2^2 - 731*y2); > Caff; Conic over Integer Ring defined by 171*x2^2 - 758*x2*y2 + 213*x2 + 399*y2^2 - 731*y2
The functions described here provide access to basic information stored for a conic C.
The defining polynomial of the conic C. This intrinsic is inherited from the general scheme machinery.
The Legendre equation of the conic C, that is, the diagonal form of the defining polynomial of C. Also returned as the second value is the matrix of the transformation of coordinates taking C to the special form.Except when the base ring of C is the integers Z, both the polynomial and the matrix live in BaseRing(C). When BaseRing(C) is Z, then the polynomial and the matrix are given in Q.
The reduced form of the Legendre equation of the conic C, that is, the diagonal form whose coefficients have been made pairwise coprime and square-free. Also returned as the second value is the matrix of the transformation of coordinates taking C to the special form.As for LegendreEquation, both the polynomial and the matrix live in BaseRing(C) except when BaseRing(C) is Z, in which case the polynomial and the matrix are given in Q.
Returns true if and only if the conic C has a solubility certificate. If true, returns this certificate as the second value.If a x^2 + b y^2 + c z^2 is C's reduced form then the solubility certificate of C is given by [k_1, k_2, k_3] such that
k_1^2 = - bc (( mod) a), k_2^2 = - ca (( mod) b) ( and) k_3^2 = - ab (( mod) c).
The local solubility criterion says that as long as the coefficients of the Legendre equation of C do not all have the same sign (the obvious first obstruction to the existence of a solution) then C has a solution if and only if a solubility certificate exists.
Prime: BoolElt Default: false
Returns true if and only if S = [a, b, c] has a solubility certificate. If true, returns this certificate as the second value. Setting Prime to true bypasses factorizing a, b, and c.
A sequence of three integers containing the solubility certificate of the conic C, if it exists.
> Q := RationalField(); > PU<x1> := PolynomialRing(Q); > NF := NumberField(119/44*x1^2 - 908/555*x1 + 723/259); > P<x,y,z> := ProjectiveSpace(NF,2); > f := 1/11*34*x^2 - 1/3629*28523*x*y - 1/32375*41003*x*z > - 1/697*953*y^2 - 1/7656*3347*y*z - 1/852*245*z^2; > C := Conic(P, f); > LegendreEquation(C); 98974*$.1^2 - 12409257568917902*$.2^2 - 31365148370980073527421441401780154556880127002*$.3^2 > ReducedForm(C); 5140537518193*$.1^2 - 41*$.2^2 - 310766637002701863989569733062051*$.3^2 > HasSolubilityCertificate(C); trueThe next example shows that, although it is more mathematically correct to think of conics as being projective curves, the machinery here works even in the case of affine curves.
> A<x2,y2> := AffineSpace(Integers(),2); > Caff := Conic(A, 171*x2^2 - 758*x2*y2 + 213*x2 + 399*y2^2 - 731*y2); > LegendreEquation(Caff); 171*$.1^2 - 12895452*$.2^2 - 161097225936 > ReducedForm(Caff); 18853*$.1^2 - $.2^2 - 10147083 > HasSolubilityCertificate(Caff); true