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

조회 수: 10 (최근 30일)
Gaetano Miraglia
Gaetano Miraglia 2019년 12월 20일
댓글: Giuseppe Abbiati 2019년 12월 29일
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

답변 (1개)

Christine Tobler
Christine Tobler 2019년 12월 20일
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
Giuseppe Abbiati
Giuseppe Abbiati 2019년 12월 29일
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!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Linear Algebra에 대해 자세히 알아보기

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by