|
The values of an L-series are computed numerically and the precision
required in these computations can be specified using the Precision
parameter when an L-function is created. For example,
> K := CyclotomicField(3);
> L := LSeries(K: Precision:=60);
> Evaluate(L,2);
1.28519095548414940291751179869957460396917839702892124395133
computes ζ(K, 2) to 60 digits precision.
The default value Precision:=0 is equivalent to
the precision of the default real field at the time of the LSeries
initialization call. If the user only wants to check numerically whether
an L-function vanishes at a given point s and the value itself is not
needed, it might make sense to decrease the precision (to 9 digits, say)
to speed up the computations.
> E := EllipticCurve([0,0,1,-7,6]);
> RootNumber(E);
-1
> L := LSeries(E: Precision:=9);
> Evaluate(L, 1: Derivative:=1);
1.50193628E-11
> Rank(E);
3
This example checks numerically that L'(E, 1)=0 for the elliptic curve
E of conductor 5077 from Example H139E19.
The precision may be changed at a later time using LSetPrecision.
CoefficientGrowth: UserProgram Default:
ImS: FldReElt Default: 0
Asymptotics: BoolElt Default: true
Change the number of digits to which the L-values are going to be computed
to precision. The parameter CoefficientGrowth is described below in
Section L-series with Unusual Coefficient Growth.
The parameter CoefficientGrowth is the name f of a function f(x)
(or f(L, x), where L is an L-series) which is an increasing
function of a real positive variable x such that |an|≤f(n).
This is used to truncate various infinite series in computations.
It is set by default to the function f(x)=1.5.xρ - 1 where ρ
is the largest real part of a pole of L * (s) if L * (s) has poles and
f(x)=2x(weight - 1)/2 if L * (s) has no poles.
The user will most likely leave this setting untouched.
If s is a complex number having a large imaginary part, a great deal
of cancellation occurs while computing L(s), resulting in a loss
of precision.
(The time when all the precision-related parameters are
pre-computed is when the function LSeries is invoked, and at that
time Magma has no way of knowing whether L(s) is to be evaluated
for complex numbers s having large imaginary part.) If this happens,
a message is printed, warning of a precision loss. To avoid this, the
user may specify the largest Im(s) for which the L-values are to be
calculated as the value of the ImS parameter at the time of the
L-series initialization or, later, with a call to LSetPrecision:
> C<i> := ComplexField();
> L := RiemannZeta();
> Evaluate(L, 1/2+40*i); // wrong
Warning: Loss of 13 digits due to cancellation
0.793044952561928671982128851045 - 1.04127461465106502007452195086*i
> LSetPrecision(L, 30: ImS:=40);
> Evaluate(L, 1/2+40*i); // right
0.793044952561928671964892588898 - 1.04127461465106502005189059539*i
The optional parameter Asymptotics in LSetPrecision and in
the general LSeries function specifies the method by which the
special functions needed for the L-series evaluation are computed.
If set to false, Magma will use only Taylor expansions at the origin
and these are always known to be convergent. With the default behaviour
(Asymptotics:=true) Magma will use both the Taylor expansions
and the continued fractions of the asymptotic expansions at infinity.
This is much faster, but these continued fractions are not proved to
be convergent in all cases.
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|