Sparse Matrix Eigenvalue / Eigenvector for C++
By ghutchis at Tue, Jul 27 2010 9:31pm |
I'm aware of ARPACK / ARPACK++, but those are basically Fortran.
Does anyone know of any good sparse matrix libraries for huge eigenvalue/eigenvector problems? Usually, I'd like to say "here's my matrix, now solve for the X smallest eigenvalues..."
Thanks a lot in advance!




The question is hard to
The question is hard to answer in general without knowing details about your problem:
- Are your matrices real-symmetric, hermitian, non-hermitian, ...?
- Do you need to solve "ordinary" or generalized eigenvalue problems?
- Do you need only smallest/largest, or also interior eigenvalues?
- Is there some additional knowledge about the form of your matrices you could exploit? If you can, for instance, use spectral or split-operator methods, this could give you a considerable advantage over more general solvers (often orders of magnitude in computation time).
- And, out of curiosity, what does "huge" mean?
That said, the trilinos project provides some fairly general solvers, among them Block-KS, Block-Davidson and LOBPCG: http://trilinos.sandia.gov/packages/anasazi/. I have never used the library myself, though.
Boost provides pretty decent sparse matrix and vector classes, which are convenient in case you want to roll your own solver (that's what I have used so far, but I have to deal with one of the "have special knowledge about the matrix" cases).