will be created.
The point of X defined by x = [ - 2.000000000, - 6.085518827] and s = 2
will be defined.
The various intrinsics dealing with points will be demonstrated.
> Qxy<x,y> := PolynomialRing(Rationals(),2);
> f := -4*x^4 - 5*x^3*y + x^3 + 2*x^2*y^2 - 5*x^2*y + 3*x^2
> + 3*x*y^3 + x*y - 5*x - 8*y^3 - 3;
> X := RiemannSurface(f);
An easy way of defining a point on a Riemann surface X is via a pair of
coordinates, using the fiber attribute of X.
> L := X`Fiber(0);
> Pts := [ X![0,L[i]]: i in [1..#L] ];
> Pts;
[
(0.0000000000, -0.7211247851),
(0.0000000000, 0.3605623926 - 0.6245123832*I),
(0.0000000000, 0.3605623926 + 0.6245123832*I)
]
Using the Riemann surface Print command it is easy to control
the precision used when printing objects. The various ways of printing
the infinite points will also be demonstrated.
> Print(Pts[1] : Precision := Precision(X));
(0.000000000000000000000000000000, -0.721124785153704191160819155390)
> Representation(Pts[1]);
[ 0.000000000000000000000000000000000000000000000000000000,
-0.721124785153704191160819155390054794195934626749675288 ]
Next the various ways of printing the infinite points are shown.
> InfinitePoints(X);
[
Point at infinity on sheets {@ 1 @},
Point at infinity on sheets {@ 2, 3 @},
Y-infinite point over x = 2.666666667 on sheets {@ 2 @}
]
> < Representation(P): P in InfinitePoints(X) >;
<<Infinity, {@ 1 @}>, <Infinity, {@ 2, 3 @}>,
<2.66666666666666666666666666666666666666666666666666667, {@ 2 @}>>
> X!<Infinity(),1> eq InfinitePoints(X)[1];
true
> X!<Infinity(),2> eq X!<Infinity(),3>;
true
> X!<8/3,2> eq InfinitePoints(X)[3];
true
Using the intrinsic Coordinates, the projective coordinates of
the points can be retrieved.
> [ Coordinates(Pt): Pt in InfinitePoints(X) ];
[
[ 0.750000000000000000000000000000, 1.00000000000000000000000000000,
0.000000000000000000000000000000 ],
[ -1.00000000000000000000000000000, 1.00000000000000000000000000000,
0.000000000000000000000000000000 ],
[ 0.000000000000000000000000000000, 1.00000000000000000000000000000,
0.000000000000000000000000000000 ]
]
> X![3/4,1,0] eq InfinitePoints(X)[1];
true
> X![-1,1,0] eq InfinitePoints(X)[2];
true
> X![0,1,0] eq InfinitePoints(X)[3];
true
Next the ramification points will be printed.
> RamificationPoints(X);
[
(-0.9945334268 - 0.01315512874*I, 0.05451089484 - 0.1643916971*I),
(-0.9945334268 + 0.01315512874*I, 0.05451089484 + 0.1643916971*I),
(-0.5252377944 + 0.03223401255*I, 0.01450803309 - 0.2043107259*I),
(-0.5252377944 - 0.03223401255*I, 0.01450803309 + 0.2043107259*I),
(0.8365927809 + 0.5016034840*I, -0.4936743728 + 0.5748084711*I),
(0.8365927809 - 0.5016034840*I, -0.4936743728 - 0.5748084711*I),
(0.6518240243 - 0.8906693804*I, -1.581225731 - 0.3052027833*I),
(2.549953730, 19.14988442),
(0.6518240243 + 0.8906693804*I, -1.581225731 + 0.3052027833*I),
Point at infinity on sheets {@ 2, 3 @}
]
The discriminant points and the points lying over them will be examined.
> DiscriminantPoints(X)[1];
-0.994533426780725243594285430344169336513181415875424160 -
0.0131551287359799949411725445257194879581749598493457862*I
> PointsOverDiscriminantPoint(X,1);
[
(-0.9945334268 - 0.01315512874*I, 0.05451089484 - 0.1643916971*I),
(-0.9945334268 - 0.01315512874*I, 0.07106577813 + 0.3329009545*I)
]
Points lying over Infinity() are obtained as follows:
> PointsOverDiscriminantPoint(X,0);
[
Point at infinity on sheets {@ 1 @},
Point at infinity on sheets {@ 2, 3 @}
]
Random finite or infinite points on X can be obtained as follows:
> P1 := RandomPoint(X: Finite);
> P1;
(-2.285969242 + 16.06877365*I, -1.575257283 + 21.29854014*I)
> P2 := RandomPoint(X: Finite := false);
> P2;
Y-infinite point over x = 2.666666667 on sheets {@ 2 @}
[Next][Prev] [Right] [Left] [Up] [Index] [Root]