Matlab eigs does not converge if the number of calculated eigenvalues ​​is large

I am trying to calculate the eigenvalues ​​λ ( lambda ) of a damped structure using the following equations of motion:

(λ² M + λ C + K ) x = 0 0,

where M , C, and K are sparse matrices. Using the MATLAB polyeig function works, but I would like to move to larger systems and take advantage of the sparseness of my matrices. I used the linearization of the state space to obtain a generalized eigenvalue problem as follows:

( A - λ B ) z = 0 0,

from

A = [ K , 0 0; 0 0, - M ],

B = [- C , - M ; - M , 0 0],

z = [ x ; λ x ]

We solve this using the MATLAB eigs function:

 lambda = eigs(A,B,10,'sm') 

Generates the following output:

 lambda = 1.0e+03 * -0.2518 - 1.3138i -0.2518 + 1.3138i -0.4690 - 1.7360i -0.4690 + 1.7360i -0.4690 - 1.7360i -0.4690 + 1.7360i -0.5387 - 1.8352i -0.5387 + 1.8352i NaN + NaNi NaN + NaNi 

The first eight eigenvalues ​​are correct, but it seems that the last two eigenvalues ​​could not converge. Increasing the number of Lanczos basis vectors does not seem to solve the problem.

Oddly enough, an increase in the number of calculated eigenvalues ​​( k ) allows an increasing number of eigenvalues ​​to converge:

  • k = 10 : The number of lambdas converges = 8
  • k = 20 : the number of lambdas converges = 8
  • k = 50 : the number of lambdas converges = 8
  • k = 100 : the number of lambdas converges = 20
  • k = 120 : number of lambdas converging = 80
  • k = 150 : number of lambdas converging = 150

It is also worth mentioning that many of the eigenvalues ​​that do not converge with lower k values ​​appear to be degenerate or at least very closely spaced.

I was wondering if anyone could come up with an explanation for this behavior? If so, is there a way to make all eigenvalues ​​converge without making k very large? Thanks!

+12
math matlab eigenvalue
source share

No one has answered this question yet.

See related questions:

7
Python numpy computes first eigenvalue and eigenvector
3
Eigenvalues ​​in octave with eig ()
3
Python: scipy.sparse.linalg.eigsh for complex Hermitian matrices
2
Why are eig () eigenvalues ​​sorted in ascending order?
2
Eigenvalues ​​using eig
one
calculating eigenvalues ​​using Theano
0
The same code works in Mathematica, but not in Matlab
0
matlab: eigs seem to produce inconsistent results
0
Calculation of eigenvalues ​​in parallel for a large matrix
-2
Finding eigenvalues ​​in MATLAB without using the eig function

All Articles