public class SiegelReduction extends Object implements Serializable, Cloneable
σ(B) = 2πi(aB+2πib)(cB+2πid)-1,
where σ =
/ a b \
\ c d / ,
is any element of the ModularGroup
. This choice is one-to-one
related to that of the homology basis for a Riemann surface.
The question is now: which one is best? E.g. for which element of the
modular group (resp. homology basis) converges the Fourier series of the
Riemann theta function most rapidly? Siegel's Reduction algorithm is
an answer to this, although it is not optimal.
One major problem of its implementation is that it requires to perform
a lattice reduction, which is know to be NP hard.
However, an approximate algorithm due to Lenstra, Lenstra and Lovasz,
the so called LLL
algorithm
gives satisfactory and fast results.
ModularPropertySupport
,
ModularTransformation
,
LLL
,
Theta
,
Serialized FormConstructor and Description |
---|
SiegelReduction(de.jtem.blas.ComplexMatrix periodMatrix)
Creates instance with presribed period matrix and
performs Siegel's reduction algorithm.
|
Modifier and Type | Method and Description |
---|---|
ModularTransformation |
getModularTransformation()
Returns
σ , the element of the modular group,
determing σ(B) , the result of Siegel's reduction algorithm. |
de.jtem.blas.ComplexMatrix |
getPeriodMatrix()
Returns period matrix which was reduced.
|
de.jtem.blas.ComplexMatrix |
getReducedPeriodMatrix()
Returns the reduced period matrix
σ(B) . |
void |
setPeriodMatrix(de.jtem.blas.ComplexMatrix aPeriodMatrix)
Sets period matrix which will be reduces.
|
public SiegelReduction(de.jtem.blas.ComplexMatrix periodMatrix)
periodMatrix
- symmetric complex matrix with negative definite real partpublic ModularTransformation getModularTransformation()
σ
, the element of the modular group,
determing σ(B)
, the result of Siegel's reduction algorithm.
σ(B) = 2πi(aB+2πib)(cB+2πid)-1,
where σ =
/ A B \
\ C D / ,
σ
, the element of the modular group realizing the result
of the reductionpublic de.jtem.blas.ComplexMatrix getPeriodMatrix()
public de.jtem.blas.ComplexMatrix getReducedPeriodMatrix()
σ(B)
.
σ(B) = 2πi(aB+2πib)(cB+2πid)-1,
where σ =
/ A B \
\ C D / ,
σ(B)
, the reduced period matrix.public void setPeriodMatrix(de.jtem.blas.ComplexMatrix aPeriodMatrix)