Smallest non-zero eigenvalue for a generalized eigenvalue problem

6 visualizaciones (últimos 30 días)
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?

Respuesta aceptada

Andrew Knyazev
Andrew Knyazev el 12 de Ag. de 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...

Más respuestas (0)

Categorías

Más información sobre Linear Algebra en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by