eigs for generalized eigenvalue problem ( [V,D] = eigs(A,B) ) with spars matrix

8 views (last 30 days)
Hi,
I know that there is a bug in the eisg command when we get eigenvalues = 0 (zero)
For standard eigenvalue problem ( [V,D] = eigs(A) ) there is a patch to fix the problem, however I do not find a solution in case of generalized eigenvalue problem ( [V,D] = eigs(A,B) ) with sparse matrix.
Do you know if a solution to this problem exist? , Do you have any idea/suggestion on how to solve the problem?
Thank you

Answers (1)

Christine Tobler
Christine Tobler on 20 Dec 2019
A bug was introduced in R2017b in eigs for matrices with exact zero eigenvalues. This bug has been fixed in R2019a, the fix applies to both simple and generalized eigenvalue problems.
sigma = 1; % Any value which is not an exact eigenvalue of A
[U, D] = eigs(sp_matrix - sigma*speye(size(sp_matrix)), 1, 'smallestreal');
D = D + sigma*speye(size(D)); % Revert the shift
can be adapted to a generalized problem (A, B) as follows:
sigma = 1; % Any value which is not an exact eigenvalue of (A, B)
[U, D] = eigs(A - sigma*B, 1, 'smallestreal');
D = D + sigma*B; % Revert the shift
  1 Comment
Giuseppe Abbiati
Giuseppe Abbiati on 29 Dec 2019
I think there is something wrong in the proposed bug fix. I am interested in solving the following modal analysis problem:
K*U = M*U*D
where K and M are stiffness and mass matrices of a structural system computed e.g. with the finite-element method. Both K and M are full matrices. K is positive or semi-positive definite while M is positive definite. U is a generic eigenvector and D is the corresponding eigenvalue (greater or equal than zero). K corresponds to A while M corresponds to B in your example.
In case sigma is greater than zero, the non-diagonal mass matrix M would be added to the diagonal matrix of eigenvalue D to revert the shift, which makes no sense. Or maybe I miss something.
Moreover, in case the structural system described by M and K has no rigid body modes (no zero eigenvalues) a value of sigma = 0 is allowed. However, in this case, the calculation of eigenvalues completely ignores the mass distribution determined by the matrix M. Again, it seems not to make sense. Or maybe I miss something.
Thanks a lot for your help!

Sign in to comment.

Categories

Find more on Linear Algebra in Help Center and File Exchange

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!