|
[____]
A Riemann surface object is defined by an affine plane equation f(x, y) = 0
in the following way. The Riemann surface X associated to the equation
f(x, y) = 0, denoted X : f = 0 is the set of complex points of the
non-singular model of the projective closure C of the affine curve defined
by f(x, y) = 0, i.e., X = C(C).
There are two different types of Riemann surface in Magma for which two
different sets of algorithms are used, depending on the defining equation
f = 0.
- (i)
- The general Riemann surface type is defined by a geometrically
irreducible function f ∈K[x, y] over a number field K and an embedding
σ : K -> C;
- (ii)
- The superelliptic Riemann surface type defined by an affine
equation ym = p(x) where p ∈K[x] is separable, K ⊆C and
m > 1.
Note that, in practice, increasing the precision heavily impacts the running
time of the algorithms. The algorithms for a general Riemann surface work
reasonably well for up to a precision of several hundred digits, say up to
D ~500, while the superelliptic case is considerably more efficient
so that working to a precision of several thousand digits is possible, say
up to D ~2000. Higher precisions are possible, but the computation may
take considerable time.
The main application of this Riemann surface package is to numerically
approximate a period matrix Ω that describes the analytic Jacobian
J(C) = Cg / Ω Z2g of the curve C and associated
Abel--Jacobi map A : X -> J up to some prescribed precision D,
where the number of decimal digits D can be specified by the user. The aim
is that numerical computations should be correct up to an absolute error of
10 - D + 1 using heuristic error estimates.
The Riemann surface type is called RieSrf.
The algorithms for general Riemann surfaces are described in
[Neu18, Chapter 4]. The algorithms for the superelliptic
case are based on a paper by Molin and Neurohr [MN17];
more details can be found in [Neu18, Chapter 5]. Finally,
the algorithms used for numerical integration are described in more detail
in [Neu18, Chapter 3].
For those who are interested in seeing what is happening behind the scenes,
there is a verbose flag called RieSrf which has verbose levels in the
range [0..3].
[Next][Prev] [Right] [____] [Up] [Index] [Root]
|