Solving for ALL the eigenvectors of a sparse matrix

13 vues (au cours des 30 derniers jours)
Joseph Feser
Joseph Feser le 18 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 commentaires
Steven Lord
Steven Lord le 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 le 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.

Connectez-vous pour commenter.

Réponses (1)

Christine Tobler
Christine Tobler le 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 commentaires
Joseph Feser
Joseph Feser le 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 le 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.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Sparse Matrices dans Help Center et File Exchange

Produits


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by