Comments (3)
Hi @jdbancal,
For your first question, tol
is indeed the tolerance threshold for convergence, and m_prec
can be regarded as a number that is "approximately zero". m_prec
is used internally in the following scenarios:
- To judge whether an eigenvalue is complex or real. This is because the general eigen solver will return all eigenvalues as complex numbers, but usually there exist some real ones, and I use
m_prec
to filter them out. - To test orthogonality of vectors. When constructing an orthogonal basis of some linear space, the numerical orthogonality gradually breaks down as iterations go on. The algorithm will correct the orthogonality if its value goes beyond
m_prec
. - In convergence test,
tol
is the relative tolerance, andtol * m_prec
is the absolute tolerance, so actually the criterion is pretty stringent.
As for the value of m_prec
, it was taken directly from ARPACK, and I don't have a very strong reason why it is this specific number. I guess the rationale is that m_prec
should be of larger magnitude than eps
, for example the complex eigenvalues roughly have precision of similar order as eps
, and hence we need a looser threshold to filter out the real ones.
from spectra.
Thanks for your update on the source code regarding epsilons!
The precision of the eigenvalue decompositions is better now
from spectra.
Thanks for the testing. Let me first close this issue, and you can reopen it once you encounter any more in the future.
from spectra.
Related Issues (20)
- Eigen decomposition failing on a real symmetric (Laplacian) matrix HOT 3
- Spectra doesn't accept non-literal data types anymore HOT 2
- SymGEigsSolver does not produce an orthonormal system of EigenVectors HOT 4
- Spectra as a practical ARPACK replacement HOT 1
- Support eigenvalue condition number
- difficulty in linking spectra header to visual studio 2022 preventing Build HOT 1
- compilation issues with the 'Spectra::SymEigsSolver' constructor. The error message is... HOT 2
- Silence error while solving the eigenvalues of a 2-by-2 matrix. HOT 5
- Issue with low-rank matrices HOT 5
- Limit of the matrix size for sparse Eigendecomposition; memory or CPU? HOT 2
- expanded application of Spectra to complex-valued matrices: problem of inequality signs in Arnoldi.h HOT 3
- ArnoldiOp.h, negative vnorm HOT 2
- Eigen value and generalized eigen value of a Super Big Size Real Matrix(160000*160000) , Help!
- GenEigsComplexShiftSolver compilation error; std::complex is being instantiated with std::complex<double> HOT 3
- Puzzling performance with Spectra when solving a general eigen for large sparse matrix (real symmetric both L and M)
- How does spectra compare to Matlab eigs
- Support for complex-valued matrices
- build failed on epel-9 ppc64le, `/usr/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h:215:28: error: inlining failed in call to 'always_inline' 'Eigen::internal::ploadRhs<float, float __vector(4)>(float const*)float __vector(4)': target specific option mismatch`
- Generalized Eigenvalue - Support for positive semi-definite but singular matrices
- Shift-and-invert mode wrong result compared to Matlab HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from spectra.