39#ifndef MAT_LANCZOSLARGESTMAGNITUDEEIG
40#define MAT_LANCZOSLARGESTMAGNITUDEEIG
45 template<
typename Treal,
typename Tmatrix,
typename Tvector>
47 :
public Lanczos<Treal, Tmatrix, Tvector> {
77 if(this->
A.get_nrows() == 5) {
133 template<
typename Treal,
typename Tmatrix,
typename Tvector>
144 template<
typename Treal,
typename Tmatrix,
typename Tvector>
147 delete[] eigVectorTri;
152 int const lMax = this->j - 1;
178 template<
typename Treal,
typename Tmatrix,
typename Tvector>
182 assert(eigVectorTri);
183 this->getEigVector(eVec, eigVectorTri);
187 template<
typename Treal,
typename Tmatrix,
typename Tvector>
190 bool conv = accTmp < absTol;
202 template<
typename Treal,
typename Tmatrix,
typename Tvector>
235 template<
typename Treal,
typename Tmatrix,
typename Tvector>
240 return convAccuracy || (!eigIsSmall);
259 template<
typename Tmatrix,
typename Treal>
264 typename Tmatrix::VectorType *
const eVecPtr = 0,
279 maxIter = M.get_nrows() * 100;
280 typename Tmatrix::VectorType
guess;
293 if (
lan.largestMagEigIsSmall()) {
295 lan.getLargestMagnitudeEigPair(eVal, *
eVecPtr, acc);
297 lan.getLargestMagnitudeEig(eVal, acc);
Class for building Krylov subspaces with the Lanczos method.
Describes dimensions of matrix and its blocks on all levels.
Definition SizesAndBlocks.h:45
Definition LanczosLargestMagnitudeEig.h:204
virtual void run()
Definition LanczosLargestMagnitudeEig.h:215
virtual bool converged() const
Definition LanczosLargestMagnitudeEig.h:237
LanczosLargestMagnitudeEigIfSmall(Tmatrix const &AA, Tvector const &startVec, Treal const maxAbsVal, int maxIter=100, int cap=100)
Definition LanczosLargestMagnitudeEig.h:207
bool largestMagEigIsSmall()
Definition LanczosLargestMagnitudeEig.h:213
virtual void update()
Definition LanczosLargestMagnitudeEig.h:227
bool eigIsSmall
Definition LanczosLargestMagnitudeEig.h:226
Treal const maxAbsValue
Definition LanczosLargestMagnitudeEig.h:225
Definition LanczosLargestMagnitudeEig.h:47
void computeEigenPairTri()
Definition LanczosLargestMagnitudeEig.h:146
void setRelTol(Treal const newTol)
Definition LanczosLargestMagnitudeEig.h:55
Treal eValTmp
Definition LanczosLargestMagnitudeEig.h:128
void setAbsTol(Treal const newTol)
Definition LanczosLargestMagnitudeEig.h:56
Tvector eVec
Definition LanczosLargestMagnitudeEig.h:115
virtual void run()
Definition LanczosLargestMagnitudeEig.h:66
Treal eVal
Definition LanczosLargestMagnitudeEig.h:114
virtual ~LanczosLargestMagnitudeEig()
Definition LanczosLargestMagnitudeEig.h:110
LanczosLargestMagnitudeEig(Tmatrix const &AA, Tvector const &startVec, int maxIter=100, int cap=100)
Definition LanczosLargestMagnitudeEig.h:49
void getLargestMagnitudeEigPair(Treal &eValue, Tvector &eVector, Treal &accuracy)
Definition LanczosLargestMagnitudeEig.h:135
Treal absTol
Eigenvector to the tridiagonal matrix length: this->j.
Definition LanczosLargestMagnitudeEig.h:120
Treal acc
Definition LanczosLargestMagnitudeEig.h:116
void getLargestMagnitudeEig(Treal &ev, Treal &accuracy)
Definition LanczosLargestMagnitudeEig.h:58
virtual bool converged() const
Definition LanczosLargestMagnitudeEig.h:189
virtual void update()
Definition LanczosLargestMagnitudeEig.h:124
Treal relTol
Definition LanczosLargestMagnitudeEig.h:121
void rerun()
Definition LanczosLargestMagnitudeEig.h:84
void computeEigVec()
Definition LanczosLargestMagnitudeEig.h:180
Treal accTmp
Definition LanczosLargestMagnitudeEig.h:129
Treal * eigVectorTri
Definition LanczosLargestMagnitudeEig.h:117
Class template for building Krylov subspaces with Lanczos.
Definition Lanczos.h:59
virtual void run()
Definition Lanczos.h:87
void restart(Tvector const &startVec)
Definition Lanczos.h:74
int maxIter
Current step.
Definition Lanczos.h:114
Tmatrix const & A
Definition Lanczos.h:104
mat::SizesAndBlocks cols
Definition test.cc:52
Definition allocate.cc:39
static Treal getMachineEpsilon()
Definition matInclude.h:147
Xtrans< TX > transpose(TX const &A)
Transposition.
Definition matrix_proxy.h:131
Interval< Treal > euclIfSmall(Tmatrix const &M, Treal const requestedAbsAccuracy, Treal const requestedRelAccuracy, Treal const maxAbsVal, typename Tmatrix::VectorType *const eVecPtr=0, int maxIter=-1)
Returns interval containing the Euclidean norm of the matrix M.
Definition LanczosLargestMagnitudeEig.h:260
static Treal getRelPrecision()
Definition matInclude.h:152
Treal template_blas_sqrt(Treal x)
Treal template_blas_fabs(Treal x)
static Treal template_blas_get_num_limit_max()
Definition template_blas_num_limits.h:85