Smallest non-zero eigenvalue for a generalized eigenvalue problem
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Zoltán Csáti
am 27 Apr. 2018
Beantwortet: Andrew Knyazev
am 12 Aug. 2018
I have two matrices, A and B, for which I want to solve the generalized eigenvalue problem Ax=lambda* Bx. In fact I only need the smallest non-zero eigenvalue. The properties of the matrices:
A is symmetric, singular with known nullity (but no a-priori known kernel), sparse
B is symmetric, singular, positive semi-definite with known kernel, sparse, even the linearly independent part is ill-conditioned
The smallest non-zero eigenvalue (due to ill-conditioning) would numerically result something like 1e-15. However, I know that the eigenvalue I am interested in is not near the round-off plateau. If I knew this value approximately, I could use
lambda = eigs(A, B, k, guess);
where k is the number of eigenvalues I request and guess is close to the smallest non-zero eigenvalue I am looking for.
Since I have no information about the guess, currently I convert A and B to full matrices and call eig on it:
lambda = eig(full(A), full(B));
However, this is very slow. Any ideas?
0 Kommentare
Akzeptierte Antwort
Andrew Knyazev
am 12 Aug. 2018
Since both matrices A and B are singular, it is not an easy problem numerically. Even eig(full(A), full(B)) may give you wrong answers. EIGS in the call eigs(A, B, k, guess) is not probably going to work, since it relies on computing the inverse of the matrix A - guess B, which is singular in your case.
If the kernel of B is a subset of the kernel of A, and the difference in dimensions is not too large, you may want to try https://www.mathworks.com/matlabcentral/fileexchange/48-lobpcg-m with the constraint blockVectorY being the set of vectors spanning the known kernel of B. LOBPCG gives you k smallest, no matter zeros, or not, however, so you may need to choose k large enough to get to where you need. The value of k in LOBPCG is the number of the linearly independent initial approximate eigenvectors. If k is too large, relative to the matrix size, it will not work well...
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Linear Algebra finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!