How to compute interior eigenvectors that exclude certain eigenvalues?
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Lucas Banting
am 12 Nov. 2021
Kommentiert: Lucas Banting
am 15 Nov. 2021
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 Kommentare
Matt J
am 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?
Akzeptierte Antwort
Matt J
am 14 Nov. 2021
Bearbeitet: Matt J
am 14 Nov. 2021
I was basically wondering if there was an eigenvalue algorithm where I could just specify as inputs (a, b) to compute all eigen values within the range (a, b).
It doesn't appear that there is, however, a faster way to compute the lambda=-1 eigenvectors might be to recognize that they are the null vectors of K, and so you can do,
[~,S,nullVectors]=svds(K,800,'smallest');
Not only should this find you the lambda=-1 eigenvectors, but also inspection of diag(S) should also tell you were the up-slope in your attached figure begins.
Together with the maximum eigenvectors,
eigmax=eigs(A,B,10,'largestabs')
you should be able to fit the slope more accurately than with sigma=30.
Weitere Antworten (1)
Matt J
am 12 Nov. 2021
If you'll be computing the majority of the eigenvalues anyway, it would be faster to use eig() than eigs().
Siehe auch
Kategorien
Mehr zu Linear Algebra finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!