On Oct 2, 2012, at 6:28 AM, Leonardo Castelano <lkcastelano@Domain.Removed>
wrote:
I need to diagonalize a real symmetric tridiagonal matrix, which should be as
big as possible.
So my questions regarding this subject are:
(1) What is the biggest size of a matrix that LAPACK is able to diagonalize?
Depends if you want eigenvalues only or eigenvalues and eigenvectors. I assume
that by diagonalizing you want both (eigenvalues and eigenvectors) in which
case, you are essentially limited by your memory. (Since the matrix of
eigenvectors is dense, this will be your bottleneck.) Typically
20K starts to be big big matrices. You can always try to push. If the matrix is
symmetric tridiagonal and you only want the eigenvalues, 1) the
computation is extremely fast, and 2) the storage is low. I have no idea how
much people pushed LAPACK in these conditions. I
would assume we can handle eigenvalue computation for symmetric tridiagonal
matrices of size above one million without too much
problems.
(2) Which subroutine should I use?
You want to look at all the routines which starts by DSTE___ (or SSTE___ )
(DSTE stands for Double Presicion, Symmetric, Tridiagonal, Eigenvalue.)
We have four algorithms in place so there is quite a collection there.
DSTEQR, QR method
DSTEMR, MRRR method
DSTEDC, Divide and Conquer method
DSTEGR: deprecated
etc.
Cheers, Julien.
|