> Hi,
>
> I have very large tridiagonal positive matrices (dim > 10000)
> for which I need to find all eigenvalues. Matlab eig/eigs
> routines are desperately slow and memory consuming. Did
> anybody solve a similar problem?
There is a recipe for computing eigenvalues of tridiagonal
*symmetric* systems in section 8.5 of
Golub & van Loan: Matrix computations, 1996.
That book uses a nottaion which is very close to the
matlab syntax, so with a little bit of luck you might
be able to type the recipe almost straight off the book.
Rune
michael - 11 Jul 2008 17:14 GMT
Thanks for the hint, before I take a look there, is it
applicable to the triagonal matrices where the off-diagonal
'stripes' are farther from the diagonal (ie they are divided
by streams of zeros)?
michael
> There is a recipe for computing eigenvalues of tridiagonal
> *symmetric* systems in section 8.5 of
[quoted text clipped - 6 lines]
>
> Rune
Rune Allnor - 11 Jul 2008 17:50 GMT
> Thanks for the hint, before I take a look there, is it
> applicable to the triagonal matrices where the off-diagonal
> 'stripes' are farther from the diagonal (ie they are divided
> by streams of zeros)?
Ah. As I understand it, the term 'tridiagonal' means that the
non-zero elements are on the main diagonal and the subdiagonals
on either side. What you have seems to be a sparse matrix, which
is a different thing.
Rune
what version of matlab do you have? last time i checked
matlabs "eigs" function was much faster than any fortran90
code i tried. Im not sure if theres a much faster algorithm
for the matrix being tridiagonal but eigs should be up there
with the fastest.
michael - 11 Jul 2008 20:08 GMT
"Adnan Abdulally" <adnan.abdulally@tsc.com> wrote in message
<g587dl$kuv$1@fred.mathworks.com>...
> what version of matlab do you have? last time i checked
> matlabs "eigs" function was much faster than any fortran90
> code i tried. Im not sure if theres a much faster algorithm
> for the matrix being tridiagonal but eigs should be up there
> with the fastest.
My version is R2006b (some dual core but Matlab apparently
uses just one of them). For example, now I'm running eigs of
a (sparse and tridiagonal) matrix of dimension 40000 (just
the greatest 600 eigenvalues) and it takes years.