How to compute interior eigenvectors that exclude certain eigenvalues?
Afficher commentaires plus anciens
I have a FEM matrix equation of the form:
(K - T)*x = T*b
Where T is a mass matrix and K is a stiffness matrix. I am using matlab's eigs function to compute the eigenvalues and eigenvectors of this system in a generalized eigenvalue problem where A = K-T and B = T.
The expected eigenspectrum is a flat line at
and then a linearly increasing slope for
. It seems as if avoiding the computation of
eigenvectors siginificantly increases the speed of the eigs function. I currently try to avoid the computation by using the sigma option for eigs. Is there a better way to exclude certain eigenvalues from the eigs computation?
6 commentaires
Lucas Banting
le 12 Nov 2021
Matt J
le 12 Nov 2021
Seems like a good idea. I assume you're using eigs(A<B,k,30) with k>1. What isn't working well with that approach?
Lucas Banting
le 12 Nov 2021
Modifié(e) : Lucas Banting
le 12 Nov 2021
Matt J
le 12 Nov 2021
But once you've done your piecewise linear fit to the spectrum, you should be able to avoid processing lambda=-1. Just set sigma and k to include only lambda>-1. Isn't that what you are already doing, and if so what's wrong with it?
Lucas Banting
le 12 Nov 2021
Réponse acceptée
Plus de réponses (1)
Matt J
le 12 Nov 2021
0 votes
If you'll be computing the majority of the eigenvalues anyway, it would be faster to use eig() than eigs().
1 commentaire
Lucas Banting
le 12 Nov 2021
Catégories
En savoir plus sur Linear Algebra dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!