Solving for ALL the eigenvectors of a sparse matrix

8 Ansichten (letzte 30 Tage)
Joseph Feser
Joseph Feser am 18 Jan. 2021
Kommentiert: Christine Tobler am 22 Jan. 2021
I'm trying to solve for all the eigenmodes of a large sparse matrix (symmetric and real too as it turns out) . 'eigs' can't do this, and 'eig' doesn't seem to take advantage of the fact that matrix is sparse (it actually goes faster when I make the same matrix 'full'). Are there any algorithms out there that quickly solve for all the modes, and can take advantage of sparsity to speed up the calculation?
  2 Kommentare
Steven Lord
Steven Lord am 19 Jan. 2021
What problem are you trying to solve where the algorithm you're using to solve it requires all the eigenmodes of the large sparse matrix? Perhaps there's an alternate approach that doesn't have that same requirement.
Joseph Feser
Joseph Feser am 22 Jan. 2021
I’m solving for the “phonon spectrum” of an extremely large unit cell with disorder (think of it as a giant system of vibrating masses and springs), and trying to classify the vibrational modes as propagons, diffusons, or locons. Suffice it to say I really do need ALL the modes.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Christine Tobler
Christine Tobler am 19 Jan. 2021
There isn't really an algorithm like this, unless you have a very specific structure (tridiagonal or banded matrix mostly).
The matrix of all eigenvectors of a large sparse matrix is going to be dense in nearly all cases - so since the output is going to be dense, it makes sense to just pass in a dense matrix on input.
A lot of sparse-specific algorithms like EIGS are mostly focused on cases where only the sparse matrix can be stored, because making it dense would not fit in memory. So in that case, you can't usually afford to compute all eigenvectors since they wouldn't fit in memory.
  2 Kommentare
Joseph Feser
Joseph Feser am 22 Jan. 2021
It is a banded matrix, too. If matrix is NxN, then the bandwidth is about N^(2/3). Does that help?
Christine Tobler
Christine Tobler am 22 Jan. 2021
That's probably too large a band to see any significant improvement from using a banded algorithm for EIG instead of just passing in a dense matrix directly.
You can give this a try by comparing performance of EIG with one output for your matrix when you pass it in as sparse matrix vs. a dense one. EIG is able to compute eigenvalues but not eigenvectors of a sparse real and symmetric matrix. This doesn't help you, but it can give some indication of how much could be gained from using a banded solver vs. the standard solver for a dense matrix.
Is the band densely filled? If not, you could try to apply symamd in the hope that this will reduce the bandwidth of your matrix.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Sparse Matrices finden Sie in Help Center und File Exchange

Produkte


Version

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by