Solving for ALL the eigenvectors of a sparse matrix

8 visualizaciones (últimos 30 días)
Joseph Feser
Joseph Feser el 18 de En. de 2021
Comentada: Christine Tobler el 22 de En. de 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 comentarios
Steven Lord
Steven Lord el 19 de En. de 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 el 22 de En. de 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.

Iniciar sesión para comentar.

Respuestas (1)

Christine Tobler
Christine Tobler el 19 de En. de 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 comentarios
Joseph Feser
Joseph Feser el 22 de En. de 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 el 22 de En. de 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.

Iniciar sesión para comentar.

Categorías

Más información sobre Sparse Matrices en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by