How to compute interior eigenvectors that exclude certain eigenvalues?
Mostrar comentarios más antiguos
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 comentarios
Lucas Banting
el 12 de Nov. de 2021
Matt J
el 12 de Nov. de 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
el 12 de Nov. de 2021
Editada: Lucas Banting
el 12 de Nov. de 2021
Matt J
el 12 de Nov. de 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
el 12 de Nov. de 2021
Respuesta aceptada
Más respuestas (1)
Matt J
el 12 de Nov. de 2021
0 votos
If you'll be computing the majority of the eigenvalues anyway, it would be faster to use eig() than eigs().
1 comentario
Lucas Banting
el 12 de Nov. de 2021
Categorías
Más información sobre Linear Algebra en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!