Algebraic Curves
restart:
with⁡algcurves:
When f is a polynomial in x and y, then f defines an algebraic curve in a plane.
f:=51344⁢y5+53384⁢y4−47264⁢y3−415912⁢x2⁢y3−49304⁢y2+29070⁢x2⁢y2+247631⁢x2⁢y+90164⁢x4⁢y+73931⁢x2+40396⁢x4
Puiseux Expansion
The function f has two singularities and one regular point on the line x=0. We can obtain information (such as the tangent lines, the delta invariant, and other invariants) on singularities by computing the Puiseux expansions. One can view these Puiseux expansions as a sort of Taylor expansion (note that Puiseux expansions can also have fractional powers of x, whereas a Taylor expansion does not) of the algebraic function RootOf(f, y). Because this algebraic function is multivalued, we will get several expansions corresponding to the different branches of f at x=0. The following command gives these expansions of f at x=0:
puiseux⁡f,x=0,y,0
61636418,x⁢RootOf⁡−73931+49304⁢_Z2,−1+x⁢RootOf⁡50324⁢_Z2−135641
The fourth argument 0 tells puiseux to compute a minimal number of terms. The number of terms that will be computed in this way is precisely the number of terms that are required to be able to distinguish the different Puiseux expansions from one another.
Note: It appears as though only three different Puiseux expansions were given, whereas the function f has five different branches. The other two expansions are implicitly given by taking the conjugates of these expansions over the field Q((x)).
puiseux⁡f,x=0,y,3
61636418+9831486952811706011940312110209⁢x2,1089365505607721104⁢x2+x⁢RootOf⁡−73931+49304⁢_Z2,−1−47466947852532504976⁢x2+x⁢RootOf⁡50324⁢_Z2−135641
This command means the following: Give the Puiseux expansions up to accuracy 3, which means modulo x3. So the coefficients of x2 are given, but not the coefficients of x3. To view the x3 terms of the Puiseux expansions, we must compute the Puiseux expansions up to accuracy > 3.
puiseux⁡f,x=0,y,4
61636418+9831486952811706011940312110209⁢x2,67083138071957259153721340698688⁢RootOf⁡−73931+49304⁢_Z2⁢x3+1089365505607721104⁢x2+x⁢RootOf⁡−73931+49304⁢_Z2,−1−149882029318321335285733439684206208⁢x3⁢RootOf⁡50324⁢_Z2−135641−47466947852532504976⁢x2+x⁢RootOf⁡50324⁢_Z2−135641
As one can see from the Puiseux expansions, the point x=0, y=−1 is singular, because two Puiseux expansions are going through this point:
y=−1+x⋅RootOf50324 _Z2−135641+higher_order_terms
and its conjugate. Similarly, x=0,y=0 is a singular point.
Singularities
singularities⁡f,x,y
−1,−12,1,2,1,2,0,−1,1,2,1,2,0,0,1,2,1,2,1,−12,1,2,1,2,−12,1,1,2,1,2,12,1,1,2,1,2
The output consists of lists of the form [ the location of the singularity, the multiplicity, the delta invariant, the number of local branches ]. The location is given as a list of three homogeneous coordinates, (x, y, z). The points (x, y, 1) are points in the affine plane C2, where C is the field of constants. The points (x, y, 0) are on the line at infinity. (In this example, there are no singularities at infinity.)
A point is singular if and only if the multiplicity of that point is > 1, and also if and only if the delta invariant is > 0. In this example, all of the singularities are double points. A double point has multiplicity 2 and delta invariant 1.
Genus
The genus of an algebraic curve equals d−1⁢d−22 minus the sum of the delta invariants. Because these have already been determined by the previous command, computing the genus is easy now:
genus⁡f,x,y
0
The genus only depends on the algebraic function field of the curve. This field does not change if we apply birational transformations, so the genus is invariant under such transformations. This means, for example, that subs⁡y=y−x2,f must have genus 0 as well:
expand⁡fy=y−x2|fy=y−x2
−256539⁢x4+170862⁢x2⁢y2+346239⁢x2⁢y−109768⁢x4⁢y−629448⁢x2⁢y3−49304⁢y2+51344⁢y5+53384⁢y4−47264⁢y3+73931⁢x2−13830⁢x6−1461272⁢y⁢x6+1568040⁢y2⁢x4+469296⁢x8−51344⁢x10+256720⁢x8⁢y−513440⁢y2⁢x6−256720⁢x2⁢y4+513440⁢y3⁢x4
genus⁡,x,y
Parametrization for Curves with Genus 0
An irreducible algebraic curve allows a parametrization if and only if the genus is 0. A parametrization is a birational map from the projective line (= the field of constants union {infinity}) to the algebraic curve. This map is 1-1, except for a finite number of points. It is a 1-1 map between the places of the projective line and the places of the algebraic curve f.
P:=parametrization⁡f,x,y,t
P:=3298337645644278144⁢t5−48121569876523752⁢t3+159321874567479⁢t482677812860104872⁢t4−3648212785570356⁢t2+938260949522,−693956497570032603672⁢t4+2955191035472683371⁢t2+28912511159520431548913101468076534248⁢t4−11707114828895272404⁢t2+3010879387016098
This parametrization algorithm computes a parametrization over an algebraic extension of the constants of degree <= 2 if degree(f,{x,y}) is even, and a rational (that is, no field extension) parametrization if the degree of the curve is odd, as in this example.
If we substitute an arbitrary number for t (avoiding roots of the denominators to avoid "division by zero" messages), we get a point on the curve.
Pt=123|Pt=123
43852749788622611154276995217400145311249701386,−37505862342347428098612918371318533151900145873837
Verify if this is indeed a point on the curve:
eval⁡f,x=1,y=2
Integral Basis
The function field of an irreducible algebraic curve f can be identified with the field C(x)[y]/(f). This is an algebraic extension of C(x) of degree degree(f,y). In some applications (integration of algebraic functions and the method that algcurves[parametrization] uses), one must be able to recognize the poles of elements in the function field. For this purpose, one can compute a basis (as a C[x] module) for the ring of functions in C(x)[y]/(f) that have only poles on the line at infinity. This basis is computed as follows:
b:=integral_basisf,x,y:
b:=map⁡normal,b;
b:=1,y,y2,16418⁢y⁢6418⁢y2+255⁢y−6163x,1154032⁢13824317⁢x4+4472580⁢x2⁢y2−8381355⁢x2⁢y+20001159⁢x4⁢y+6931440⁢x2⁢y3−591648⁢y2+616128⁢y4+24480⁢y3−3757065⁢x2−15312572⁢x6−18819060⁢y⁢x6−22233844⁢y2⁢x4+5740240⁢x3⁢y2+23728380⁢y⁢x5−4091100⁢y⁢x3+1026880⁢y3⁢x3+19307156⁢x5−3328820⁢x3−26630560⁢x7+18641392⁢x8+10652224⁢x9−10652224⁢x10+13091520⁢x9⁢y−32728800⁢x7⁢y+22910160⁢x8⁢y+4723648⁢y3⁢x6+26405104⁢y2⁢x6−5955904⁢x5⁢y3−13091520⁢x10⁢y−33293392⁢x5⁢y2−8882512⁢y3⁢x4+3286016⁢y3⁢x10+8215040⁢y3⁢x7−5750528⁢y3⁢x8−3286016⁢y3⁢x9−18368768⁢x9⁢y2+18368768⁢x10⁢y2−32145344⁢y2⁢x8+45921920⁢y2⁢x7x⁢x−1⁢2⁢x+1⁢2⁢x−1⁢x+1
Note: This did not require computation time because it has already been determined for use in the parametrization algorithm. The map( normal, b ) command makes the output look somewhat smaller.
The integral basis has a factor k in the denominator if and only if there is a singularity on the line x=RootOf(k). This can only happen if k2 divides the discriminant discrim(f, y). The integral basis contains information about the singularities in a form that is useful for computations. The advantage of this form is that it is rational--one requires no algebraic extensions of the field of constants to denote the integral basis, whereas we do need algebraic numbers to denote the Puiseux expansions. Suppose that we are only interested in the singularities on the line x=0. Then we can compute a local integral basis for the factor x. A local integral basis for a factor x−α is a basis for all elements in the function field that are integral over C[[x−α]]. An element of the function field is integral over C[[x−α]] if it has no pole at the places on the line x=α.
b_local:=integral_basis⁡f,x,y,x
b_local:=1,y,y2,16418⁢y⁢6418⁢y2+255⁢y−6163x,16418⁢y2⁢6418⁢y2+255⁢y−6163x
An example of the kind of information that the integral basis contains is the sum of the multiplicities of the factor x−α in the denominators. This sum equals the sum of the delta invariants of the points on the line x=α. So this local integral basis for the set of factors {x} tells us that the sum of the delta invariants on the line x=0 is 2.
Homogeneous Representation
Until now an algebraic curve was represented by a polynomial in two variables, x and y. An algebraic curve is normally not viewed as lying in the affine plane C2 (where C is the field of constants), but in the projective plane P2(C). The notation as a nonhomogeneous polynomial in two variables is convenient if we want to study the affine part of the curve (for example, in the integral basis computation), but not if we are interested in the part of the curve on the line at infinity. Often (for example, for computing the genus), the part of the curve at infinity is needed as well. The nonhomogeneous notation in two variables can be converted to the homogeneous notation as follows:
homogeneous⁡f,x,y,z
73931⁢x2⁢z3+40396⁢x4⁢z+247631⁢x2⁢y⁢z2+90164⁢x4⁢y−49304⁢y2⁢z3+29070⁢x2⁢y2⁢z−47264⁢y3⁢z2−415912⁢x2⁢y3+53384⁢y4⁢z+51344⁢y5
This can be converted again to f with
z=1|%z=1
51344⁢y5+53384⁢y4−47264⁢y3−415912⁢x2⁢y3−49304⁢y2+29070⁢x2⁢y2+247631⁢x2⁢y+90164⁢x4⁢y+73931⁢x2+40396⁢x4
Now the line at infinity is the line z=0 on homogeneous(f,x,y,z).
z=1|%x=z,z=x
73931⁢z2⁢x3+40396⁢z4⁢x+247631⁢x2⁢y⁢z2+90164⁢z4⁢y−49304⁢x3⁢y2+29070⁢z2⁢y2⁢x−47264⁢x2⁢y3−415912⁢y3⁢z2+53384⁢y4⁢x+51344⁢y5
By switching x and z we can move the line x=0 to infinity.
switched:=z=1|%z=1
switched:=73931⁢x3+40396⁢x+247631⁢x2⁢y+90164⁢y−49304⁢x3⁢y2+29070⁢x⁢y2−47264⁢x2⁢y3−415912⁢y3+53384⁢y4⁢x+51344⁢y5
singularities⁡switched,x,y
−2,−2,1,2,1,2,−1,1,0,2,1,2,−1,12,1,2,1,2,1,0,0,2,1,2,1,−12,1,2,1,2,2,2,1,2,1,2
We see that now there are two singularities at infinity, namely (1,0,0) and (-1,1,0). This may look different in the output of singularities, because in homogeneous coordinates, the points (x, y, z) and (c⁢x,c⁢y,c⁢z) are the same for nonzero c.
cusps:=761328152⁢x6⁢z4−5431439286⁢x2⁢y8+2494⁢x2⁢z8+228715574724⁢x6⁢y4+9127158539954⁢x10−15052058268⁢x6⁢y2⁢z2+3212722859346⁢x8⁢y2−134266087241⁢x8⁢z2−202172841⁢y8⁢z2−34263110700⁢x4⁢y6−6697080⁢y6⁢z4−2042158⁢x4⁢z6−201803238⁢y10+12024807786⁢x4⁢y4⁢z2−128361096⁢x4⁢y2⁢z4+506101284⁢x2⁢z2⁢y6+47970216⁢x2⁢z4⁢y4+660492⁢x2⁢z6⁢y2−z10−474⁢z8⁢y2−84366⁢z6⁢y4:
This curve is given as a homogeneous polynomial; however, the input for the algorithms in this package must be the curve in its nonhomogeneous representation:
cusps:=cuspsz=1|cuspsz=1
cusps:=761328152⁢x6−5431439286⁢y8⁢x2+2494⁢x2+228715574724⁢y4⁢x6+9127158539954⁢x10−15052058268⁢y2⁢x6+3212722859346⁢y2⁢x8−134266087241⁢x8−202172841⁢y8−34263110700⁢y6⁢x4−6697080⁢y6−2042158⁢x4−201803238⁢y10+12024807786⁢y4⁢x4−128361096⁢y2⁢x4+506101284⁢y6⁢x2+47970216⁢x2⁢y4+660492⁢x2⁢y2−1−474⁢y2−84366⁢y4
This polynomial is a curve of degree 10 having a maximal number of cusps according to the Plucker formulas. It was found by Rob Koelman. It has 26 cusps and no other singularities.
singularities⁡cusps,x,y
0,RootOf⁡117⁢_Z2+1,1,2,1,1,RootOf⁡29⁢_Z2+3,1,0,2,1,1,RootOf⁡49⁢_Z2+16,RootOf⁡637⁢_Z2−1215,1,2,1,1,RootOf⁡196⁢_Z2+1,−3⁢RootOf⁡196⁢_Z2+1,1,2,1,1,RootOf⁡196⁢_Z2+1,3⁢RootOf⁡196⁢_Z2+1,1,2,1,1,RootOf⁡299⁢_Z2−1,0,1,2,1,1,RootOf⁡2240⁢_Z2−9,−19⁢RootOf⁡2240⁢_Z2−9,1,2,1,1,RootOf⁡2240⁢_Z2−9,19⁢RootOf⁡2240⁢_Z2−9,1,2,1,1,RootOf⁡17199⁢_Z2−5,RootOf⁡3969⁢_Z2+16,1,2,1,1,RootOf⁡802816⁢_Z2+1,−81⁢RootOf⁡802816⁢_Z2+1,1,2,1,1,RootOf⁡802816⁢_Z2+1,81⁢RootOf⁡802816⁢_Z2+1,1,2,1,1
Now check if these points are indeed cusps. The multiplicities are 2 and the delta invariants are 1, so that part is correct. To decide if these points are cusps, we can use Puiseux expansions. Take one of these points:
Point:=RootOf⁡196⁢_Z2+1,−3⁢RootOf⁡196⁢_Z2+1,1
Now compute the Puiseux expansions at the line x = <the x coordinate of this point> :
p0:=puiseux⁡cusps,x=Point1,y,0
p0:=−922368161108809⁢−1053134456⁢x−RootOf⁡196⁢_Z2+1RootOf⁡196⁢_Z2+13/2−3⁢x,−922368161108809⁢−1053134456⁢x−RootOf⁡196⁢_Z2+1RootOf⁡196⁢_Z2+13/2+3⁢x,RootOf⁡309215454912⁢_Z6+238923279504⁢_Z4−7009082108⁢_Z2+211129875
To obtain the y coordinates of the points on the line x=Point1 from this, we need only substitute x=Point1.
p0x=Point1|p0x=Point1
−3⁢RootOf⁡196⁢_Z2+1,3⁢RootOf⁡196⁢_Z2+1,RootOf⁡309215454912⁢_Z6+238923279504⁢_Z4−7009082108⁢_Z2+211129875
We see that there are eight different points on this line. The RootOf.. _Z6+.. stands for six conjugated points (namely the roots of the polynomial inside the RootOf). However, the expression 3⋅RootOf196⁢_Z2+1 is only one point, because our field of definition is not Q anymore, but Q⁢RootOf196⁢_Z2+1. This is because we needed to extend the field Q to be able to "look" on the line x=RootOf⁡196⁢_Z2+1. The Puiseux series in this set p0 (which have only been determined up to minimal accuracy) are series (with fractional powers) in (x−Point1). Substitute the following to get series in x instead of in (x−Point1). That makes it somewhat easier to read.
p0x=x+Point1|p0x=x+Point1
−922368161108809⁢−1053134456⁢xRootOf⁡196⁢_Z2+13/2−3⁢x−3⁢RootOf⁡196⁢_Z2+1,−922368161108809⁢−1053134456⁢xRootOf⁡196⁢_Z2+13/2+3⁢x+3⁢RootOf⁡196⁢_Z2+1,RootOf⁡309215454912⁢_Z6+238923279504⁢_Z4−7009082108⁢_Z2+211129875
For determining the type of the singularity, the coefficients here are not relevant. We have an expansion of the form
constant⋅x32+constant⋅x+constant+higher_order_terms
The higher order terms (which have not yet been determined) have no influence on the type of the singularity, nor do the precise values of these constants. These expansions show that there are six regular points on this line and two cusps. One can easily get more terms of the Puiseux expansions, although that is not necessary for determining the type of the singularities.
puiseux⁡cusps,x=Point1,y,3x=x+Point1|puiseux⁡cusps,x=Point1,y,3x=x+Point1
−66985426157781881971084442425396400⁢RootOf⁡309215454912⁢_Z6+238923279504⁢_Z4−7009082108⁢_Z2+211129875+22019639211370715424636937225⁢RootOf⁡309215454912⁢_Z6+238923279504⁢_Z4−7009082108⁢_Z2+2111298755+24813209653059233424574⁢RootOf⁡309215454912⁢_Z6+238923279504⁢_Z4−7009082108⁢_Z2+2111298753⁢x2+1139399352211735⁢RootOf⁡196⁢_Z2+1⁢RootOf⁡309215454912⁢_Z6+238923279504⁢_Z4−7009082108⁢_Z2+2111298755+19872106849555⁢RootOf⁡196⁢_Z2+1⁢RootOf⁡309215454912⁢_Z6+238923279504⁢_Z4−7009082108⁢_Z2+2111298753−842795632341923530⁢RootOf⁡309215454912⁢_Z6+238923279504⁢_Z4−7009082108⁢_Z2+211129875⁢RootOf⁡196⁢_Z2+1⁢x+RootOf⁡309215454912⁢_Z6+238923279504⁢_Z4−7009082108⁢_Z2+211129875,20916953218151215178486401⁢−1053134456⁢xRootOf⁡196⁢_Z2+15/2−301234⁢x2RootOf⁡196⁢_Z2+1−922368161108809⁢−1053134456⁢xRootOf⁡196⁢_Z2+13/2−3⁢x−3⁢RootOf⁡196⁢_Z2+1,20916953218151215178486401⁢−1053134456⁢xRootOf⁡196⁢_Z2+15/2+301234⁢x2RootOf⁡196⁢_Z2+1−922368161108809⁢−1053134456⁢xRootOf⁡196⁢_Z2+13/2+3⁢x+3⁢RootOf⁡196⁢_Z2+1
We see that if we compute more terms, the results can get bigger quickly.
Graphics: Singularity Knots
A different way to show information about a singularity is the plot_knot command. The input of this procedure is a polynomial f in x and y, for which the singularity that we are interested in is located at x=0,y=0. For example, the curve f on the top of this worksheet has a singularity at 0, a double point.
plot_knot⁡f,x,y
The curve f is irreducible, and so it consists of only one component. But locally, around the point 0, it has two components. Information on these components and their intersection multiplicities can be given in the form of Puiseux pairs, obtained by computing the Puiseux expansions. A different way of representing this information is as follows: By identifying C2 with R4, the curve can be viewed as a two-dimensional surface over the real numbers. Now we can draw a small sphere inside R4 around the point 0. The surface of the sphere has dimension 3 over R. The intersection with the curve (which has dimension 1 over the complex numbers, so dimension 2 over the real numbers) consists of a number of closed curves over the real numbers, inside a space (the sphere surface) of dimension 3. After applying a projection from the sphere surface to R3, these curves can be plotted. (See also: E. Brieskorn, H. Knorrer: Ebene Algebraische Kurven, Birkhauser 1981.) In this plot, each component will correspond to one of the local components. Furthermore, the winding number in the plot equals the intersection multiplicity of the two branches of the curve. In this example this number is 1. Of course, we want to see more complicated 3-D plots. For this, we need only make the singularity more complicated, and the intersection multiplicities of the branches higher. Because we are interested in the curve only locally, it does not matter if the curve is irreducible. However, the input of plot_knot must be square-free.
plot_knot⁡y3−x2,x,y
We see that a cusp gives a 2-3 torus knot. More generally, if igcd⁡p,g=1, then plot_knot⁡xp−yq,x,y gives a p-q torus knot. It gets more interesting when we have plots consisting of more components. For this, we need only have a singularity consisting of more components. In this example, we start with a 2-3 torus knot using y3−x2. To obtain a high intersection multiplicity, we add a high power of x, and multiply these two components. Then we get:
plot_knot⁡y3−x2⁢y3−x2−x5,x,y,color=blue,yellow,lightmodel=light2
Getting good plots sometimes requires tweaking with the various options (see plot_knot), or changing some of the coefficients (for example, the coefficient of x5). Plot options can be experimented with interactively by clicking the plot and using the plot menus or the context panel for the plot. A useful option is Lighting Schemes available using the Color menu (or specified as the lightmodel option to the plot_knot call).
Weierstrassform, j_invariant
f:=y4−x4−x3−2⁢x2
f:=y4−x4+x3+2⁢x2
1
w:=Weierstrassform⁡f,x,y,x0,y0
w:=x03+18⁢x0+y02,−−4⁢y3+4⁢x⁢y2−y2−4⁢x2⁢y+2⁢y⁢x+4⁢x3−3⁢x2−4⁢xx,−6⁢y3−16⁢x⁢y3+16⁢x2⁢y2−10⁢x⁢y2−8⁢y2+14⁢x2⁢y+15⁢y⁢x−16⁢y⁢x3−21⁢x2+16⁢x4−18⁢x3+4⁢xx,−162+6⁢x03−25⁢x02+36⁢x0+4⁢y0⁢x02−36⁢y0⁢x0+72⁢y081+324⁢x0+4⁢x02+16⁢x03,−162−2⁢x03−27⁢x02+36⁢x0−4⁢y0⁢x02−2⁢y0⁢x0+81⁢y081+324⁢x0+4⁢x02+16⁢x03
j_invariant⁡f,x,y
1728
For curves with genus 0, one can compute a parametrization--a bijection between the curve and a projective line. One can view this projective line as a normal form for curves with genus 0. For curves with genus 1, we can also compute a normal form, the Weierstrass normal form. In this form the curve is written as F=y2- (polynomial in x of degree 3). To avoid ambiguity, we will denote the Weierstrass normal form with the variables x0 and y0 instead of x and y.
F≔w1
F:=x03+18⁢x0+y02
Now the curves f and F are birationally equivalent. The Weierstrass form algorithm computes such an equivalence in two directions, [w[2] , w[3]] is a morphism from f to F, and [w[4] , w[5]] is the inverse morphism. Check this for the point (-2,2,1) on f.
eval⁡w2,w3,x=−2,y=2
−72,612
Now check if this is on F:
eval⁡F,x0=1,y0=2
Now try the inverse, and see if we get the point (-2,2,1):
eval⁡w4,w5,x0=1,y0=2
−2,2
The Weierstrassform procedure handles hyperelliptic curves as well. A curve f is called hyperelliptic if and only if the genus is >1 and f is birational to a curve F of the form F=Y2−P⁡X where P is a polynomial in X. This means that the algebraic function field C(x)[y]/(f) is isomorphic to C(X)[Y]/(F). So this is similar to the elliptic case, the only difference is that the degree of F is higher.
The procedure is_hyperelliptic tests if a curve f is hyperelliptic.
is_hyperelliptic⁡f,x,y
false
h:=y8+x2−x4+x2−x2⁢y3
genus⁡h,x,y
3
is_hyperelliptic⁡h,x,y
true
W:=Weierstrassform⁡h,x,y,X,Y
W:=Y2−1+8⁢X−28⁢X2−4⁢X7+24⁢X5−52⁢X4+52⁢X3,y2x2−x+y2,−−6⁢y6+y5+12⁢x⁢y6−2⁢x⁢y5−4⁢y4⁢x+4⁢x⁢y3−12⁢x2⁢y3+12⁢x2⁢y4+4⁢x3−8⁢y4⁢x3+8⁢y3⁢x3−20⁢x4+36⁢x5−28⁢x6+8⁢x7y5⁢4⁢y2+1+4⁢y,12⁢2⁢X4−4⁢X3+6⁢X2−4⁢X+1+Y1−4⁢X+6⁢X2+2⁢X4−4⁢X3,−X2+X4−2⁢X31−4⁢X+6⁢X2+2⁢X4−4⁢X3
F≔W1
F:=Y2−1+8⁢X−28⁢X2−4⁢X7+24⁢X5−52⁢X4+52⁢X3
The curve given by h is birational to the curve F. The other entries of W give the images of x, y, X, and Y under the isomorphism and inverse isomorphism from C(x)[y]/(h) to C(X)[Y]/(F).
Further Results
In the subsequent sections, the following additional functions of algcurves are demonstrated: differentials: Compute basis of holomorphic differentials homology: Compute canonical basis of the homology. is_hyperelliptic: Test if a curve is hyperelliptic. monodromy: Compute the monodromy. periodmatrix: Determine the periodmatrix (Riemann matrix).
The algebraic function field L of the following curve is the field of all meromorphic functions on the algebraic curve (Riemann surface). It is the fraction field of the ring C[x,y]/(f), where C is the field of complex numbers. We can write L=C(x)[y]/(f). The category of Riemann surfaces is equivalent to the category of algebraic curves, and also equivalent to the category of algebraic function fields.
f:=y4−x⁢y2−x6
Now L is an algebraic extension of C(x) of degree 4. By interchanging the roles of x and y we can also view L as an algebraic extension of C(y) of degree 6.
Holomorphic Differentials
A regular point on the curve corresponds to one point on the Riemann surface. A singular point corresponds to one or more points on the Riemann surface. These points can be represented by Puiseux expansions.
puiseuxf,x=0,y,6,T; # Puiseux expansions modulo x^6
x=T2,y=12⁢T9+T,x=−T2,y=−T5
P1,P2:=op⁡
P1,P2:=x=T2,y=12⁢T9+T,x=−T2,y=−T5
A:=x+yx−y; # A is some element of L
A:=x+yx−y
seriessubs⁡P1,A,T; # Expansion of A at "point" P1
−1−2⁢T−2⁢T2−2⁢T3−2⁢T4+OT5
subsT=0,; # Value of A at P1
−1
seriessubs⁡P2,A,T; # Expansion of A at "point" P2
1+2⁢T3+OT6
subsT=0,; # Value of A at P2
The following function A has a pole at one of the two points P1, P2 on the Riemann surface.
A:=y3x2
series⁡subs⁡P1,A,T,10
T−1+OT7
series⁡subs⁡P2,A,T,10
OT11
The following is a basis for all functions that have no poles at all points where x has no pole.
integral_basis⁡f,x,y
1,y,y2x,−y⁢x−y2x3
A≔−1
A:=−y⁢x−y2x3
series⁡subs⁡P1,A,T,12
T5+OT13
series⁡subs⁡P2,A,T,12
T+T9
A differential is an expression "A * dx" where A is an element of L. Using a Puiseux expansion with local parameter T we can write it as A(T) * dT. If A(T) has no poles at any point, then the differential A*dx is called holomorphic. A basis of the holomorphic differentials is given by:
differentials⁡f,x,y
y⁢dx−2⁢y2+x,x⁢dx−2⁢y2+x,x3⁢dxy⁢−2⁢y2+x
dif1:=3
dif1:=x3⁢dxy⁢−2⁢y2+x
Now we will verify using Puiseux expansions that this differential (which has no poles anywhere on the Riemann surface) has no poles at P1 or P2.
subs⁡P1,dif1
T6⁢dx12⁢T9+T⁢−2⁢12⁢T9+T2+T2
normal⁡subs⁡dx=∂∂T⁢subs⁡P1,x⁢dT,
−8⁢T4⁢dTT8+2⁢T16+4⁢T8+2
series,T,5; # dif1 has no pole at P1
−2⁢dT⁢T4+OT12
subs⁡P2,dif1
T⁢dx−2⁢T10−T2
normal⁡subs⁡dx=∂∂T⁢subs⁡P2,x⁢dT,
2⁢dT2⁢T8+1
series,T,5; # dif1 has no pole at P2
2⁢dT+OT8
We see that the differential dif1 has no pole at P1 and P2. It should also have no poles at infinity, which we can verify as follows.
puiseux⁡f,x=∞,y,3,T
x=1T2,y=132⁢T9+14⁢T5+TT4,x=−1T2,y=−132⁢T9+14⁢T5−TT4
P3,P4:=op⁡
P3,P4:=x=1T2,y=132⁢T9+14⁢T5+TT4,x=−1T2,y=−132⁢T9+14⁢T5−TT4
subs⁡P3,dif1
dxT2⁢132⁢T9+14⁢T5+T⁢−2⁢132⁢T9+14⁢T5+T2T8+1T2
normal⁡subs⁡dx=∂∂T⁢subs⁡P3,x⁢dT,
32768⁢dTT8+8⁢T4+32⁢T16+16⁢T12+128⁢T8+1024
series⁡,T=0
dT−14⁢dT⁢T4+OT8
subs⁡P4,dif1
−dxT2⁢−132⁢T9+14⁢T5−T⁢−2⁢−132⁢T9+14⁢T5−T2T8−1T2
normal⁡subs⁡dx=∂∂T⁢subs⁡P4,x⁢dT,
−32768⁢dTT8−8⁢T4+32⁢T16−16⁢T12+128⁢T8+1024
−dT−14⁢dT⁢T4+OT8
The Monodromy
Let f be a polynomial in x and y. If we take a point x=b, then subs(x=b,f) will in general have n different solutions y=y1,…yn, where n=degree⁡f,y. The points b1,b2,…,bk where there are fewer than n different solutions are called discriminant points, since they are roots of discrim⁡f,y.
Let b be some fixed point that is not a discriminant point, and let y1,…yn be the solutions of f at x=b, obtained by: fsolve(subs(x=b,f),y,complex). If we take a path, starting at b, avoiding all b1,…,bk, going in a loop around one discriminant point bi, then we can analytically continue y1,…yn along this path. When we return to b, this analytic continuation will transform y1,…yn into new solutions of subs(x=b,f). Since the solutions in the complex numbers of subs(x=b,f) are unique up to permutations, the analytic continuation of y1,…yn along this path will result in a permutation of y1,…yn. If this permutation is nontrivial then bi is called a branch point.
The monodromy procedure will compute these permutations for all branch points bi.
The group generated by these permutations is isomorphic to the Galois group of C(x)[y]/(f) over C(x), where C stands for the complex numbers.
M:=monodromy⁡f,x,y
M:=−0.881842712475,−0.611848361036103,−1.12080378718916⁢I,1.12080378718916⁢I,0.611848361036103,−0.500000000000−0.500000000000⁢I,1,2,3,4,0.500000000000−0.500000000000⁢I,1,3,2,4,0.,1,4,2,3,0.500000000000+0.500000000000⁢I,1,2,3,4,−0.500000000000+0.500000000000⁢I,1,3,2,4,∞,1,4,2,3
Now M[1] is the basepoint.
M[2] are the solutions of fsolve(subs(x=M[1],f),complex).
M[3] is a list with elements of the form [bi, permutation for bi].
The group generated by these permutations is:
G:=monodromy⁡f,x,y,group
G:=permgroup⁡4,1,2,3,4,1,3,2,4,1,4,2,3
G is the Galois group of C(x)[y]/(f) over C(x). This is a subgroup of the Galois group H of Q(x)[y]/(f) over Q(x).
H:=galois⁡f,y
H:=4T3,D(4),-,8,(1 3),(1 2 3 4)
We see that G is a subgroup of H with index 2. This means that the intersection of the complex numbers C with the splitting field of f over Q(x) is a quadratic extension of Q. This quadratic extension is Q(I) because the splitting field of f over Q(x) is Q(x, I, RootOf(f,y)), which we can verify by:
evala⁡Factor⁡f,RootOf⁡x2+1,RootOf⁡f,y
y−RootOf⁡_Z4−x⁢_Z2−x6⁢y+RootOf⁡_Z4−x⁢_Z2−x6⁢y+RootOf⁡_Z2+1⁢RootOf⁡_Z4−x⁢_Z2−x6⁢x−RootOf⁡_Z4−x⁢_Z2−x62x3⁢y−RootOf⁡_Z2+1⁢RootOf⁡_Z4−x⁢_Z2−x6⁢x−RootOf⁡_Z4−x⁢_Z2−x62x3
The Homology
Given the homology, one can determine closed paths, called cycles, on the Riemann surface. The procedure homology computes 2*g cycles that form a canonical basis of the homology of the Riemann surface. Every closed path on the Riemann surface is homologically equivalent to a Z-linear combination of these 2*g cycles.
homology⁡f,x,y
The Period Matrix
If omega is a holomorphic differential, then its periods defined by the integrals of omega over closed paths on the Riemann surface. A basis (as a Z-module) of the periods of omega is obtained by integrating omega over every element of the homology basis.
The basis of the holomorphic differentials contains g elements.
The homology basis has 2*g elements.
By computing the integrals of these g holomorphic differentials over these 2*g paths, we get 2g by g integrals, which form a matrix called the period matrix.
P:=periodmatrixf,x,y; # This computation will take a while
By taking a different basis of the holomorphic differentials we can obtain a normalized period matrix of the form (I, Z) where I is the g by g identity and where the g by g matrix Z is called the Riemann matrix.
Z:=periodmatrix⁡f,x,y,Riemann
evalfZ,7; # It seems that all entries are of the form 15a+b I with a,b in Z
map⁡convert,,rational
In this example we can give an exact Riemann matrix. In most cases the entries of the Riemann matrix will be transcendental numbers that can only be computed approximately. The accuracy will depend on the global variable Digits. Increasing this value will lead to more accurate digits, but also to a longer computation time.
The algebraic curve f is determined up to birational equivalence by the matrix P and also by the matrix Z. A curve is birational to f if and only if its Riemann matrix is equivalent (not necessarily equal) to Z.
Related Information
For more examples, test files, plots, and documentation on the algcurves package, see: http://www.math.fsu.edu/~hoeij/maple.html and the help page algcurves. The package CASA contains code for curves and for other algebraic varieties as well, and can be obtained from:
http://www.risc.uni-linz.ac.at/software/casa
Return to Index of Example Worksheets
Download Help Document