How to compute interior eigenvectors that exclude certain eigenvalues?
Show older comments
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 Comments
Lucas Banting
on 12 Nov 2021
Matt J
on 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
on 12 Nov 2021
Edited: Lucas Banting
on 12 Nov 2021
Matt J
on 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
on 12 Nov 2021
Accepted Answer
More Answers (1)
Matt J
on 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 Comment
Lucas Banting
on 12 Nov 2021
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!