npstat is hosted by Hepforge, IPPP Durham
NPStat  5.10.0
emsunfold::EigenParameters Class Reference

#include <EigenParameters.hh>

Public Member Functions

 EigenParameters (double tolerance, double tailFraction, double increaseRate, int minEigenvalues, int maxEigenvalues, int lanczosBasisSize, int restartScheme, int maxOperatorCalls)
 
double tolerance () const
 
double tailFraction () const
 
double increaseRate () const
 
int minEigenvalues () const
 
int maxEigenvalues () const
 
int lanczosBasisSize () const
 
int restartScheme () const
 
int maxOperatorCalls () const
 

Detailed Description

Main parameters steering TRLAN behavior

Constructor & Destructor Documentation

◆ EigenParameters()

emsunfold::EigenParameters::EigenParameters ( double  tolerance,
double  tailFraction,
double  increaseRate,
int  minEigenvalues,
int  maxEigenvalues,
int  lanczosBasisSize,
int  restartScheme,
int  maxOperatorCalls 
)

This constructor has the following aruments:

tolerance – This parameter determines how closely the eigenvector equation must be satisfied. If the matrix is A, eigenvalue lambda, and eigenvector x, the condition is || A x - lambda x || < tolerance * || A ||, where || A || stands for the Frobenius norm of A. If tolerance is 0 or negative, a reasonable internal default will be used.

tailFraction – The code will attempt to determine the largest eigenvalues of the given covariance matrix. "tailFraction" is the stopping target: if the sum of the calculated eigenvalues is sufficiently close to the matrix trace, the calculation will stop. "tailFraction" is the ratio of the sum of eigenvalues not calculated to the matrix trace.

This cutoff affects entropy-based calculation of the number of degrees of freedom (NDoF) for covariance matrices. The relative precision of NDoF calculation for an N x N matrix will be roughly -tailFraction*log(tailFraction/N).

increaseRate – The code will increase the number of calculated eigenpairs gradually, starting from "minEigenvalues". This is the factor by which the number of calculated eigenpairs is increased during each subsequent attempt to satisfy the "tailFraction" criterion. This argument should probably be somewhere between 1.1 and 1.5.

minEigenvalues – The minimum number of eigenpairs to calculate.

maxEigenvalues – The code will not attempt to calculate more eigenpairs than "maxEigenvalues" even if the "tailFraction" target is not satisfied.

lanczosBasisSize – The size of the Lanczos basis. In principle, the larger the basis size, the better the algorithm will perform. It appears that making the basis size twice larger than the number of requested eigenpairs works really well. The main limitation is the amount of computer memory needed to store these basis vectors. Also, the cost of re-orthogonalization starts to contribute when the number of vectors becomes really large. See comments in the TRLAN user guide for more details about choosing the value of this parameter.

Note that "trlanEigensystem" function will ignore this parameter if it's value is unacceptably small. In particular, the basis size will be set to the smaller of 2*(# of desired eigenvectors) and (# of desired eigenvectors) + 6.

restartScheme – TRLAN restarting scheme: 1, 2, 3, 4, or 5. See the TRLAN user guide for the meaning of these arguments.

maxOperatorCalls – Hard limit on the number of matrix-vector multiplications in a single TRLAN run. The TRLAN user guide suggests 1000 per eigenvalue found (so something like 1000*maxEigenvalues).

Member Function Documentation

◆ tolerance()

double emsunfold::EigenParameters::tolerance ( ) const
inline

A simple inspector of object properties


The documentation for this class was generated from the following file: