/** * @file EigValues.cpp * @brief EigValues Class * @author Michael Koch * @date 08/19/2008 */ #ifdef NOVISUAL #include #else #include #endif #include #include "EigValues.h" using namespace OBJREC; #define DEBUG_ARNOLDI // #undef DEBUG_ARNOLDI using namespace std; // refactor-nice.pl: check this substitution // old: using namespace ice; using namespace NICE; void EVArnoldi::getEigenvalues(const GenericMatrix &data,Vector &eigenvalues,Matrix &eigenvectors,uint k) { if(data.rows()!=data.cols()) { throw("EVArnoldi: matrix has to be quadratic"); } if(k<=0) { throw("EVArnoldi: please use k>0."); } #ifdef DEBUG_ARNOLDI fprintf(stderr,"Initialize Matrices\n"); #endif uint n=data.cols(); NICE::Matrix rmatrix=Matrix(n,k,0);//=eigenvectors NICE::Matrix qmatrix=Matrix(n,k,0);//saves data =eigenvectors eigenvalues.resize(k); NICE::Vector q=Vector(n); NICE::Vector r=Vector(n); #ifdef DEBUG_ARNOLDI fprintf(stderr,"Random Initialization\n"); #endif //random initialisation for(uint i=0;imindelta &&iteration