Parameters :  A : ndarray, sparse matrix or LinearOperator
An array, sparse matrix, or LinearOperator representing
the operation A * x, where A is a real or complex square matrix.
k : int, optional
The number of eigenvalues and eigenvectors desired.
k must be smaller than N. It is not possible to compute all
eigenvectors of a matrix.
M : ndarray, sparse matrix or LinearOperator, optional
An array, sparse matrix, or LinearOperator representing
the operation M*x for the generalized eigenvalue problem
M must represent a real, symmetric matrix if A is real, and must
represent a complex, hermitian matrix if A is complex. For best
results, the data type of M should be the same as that of A.
Additionally:
If sigma is None, M is positive definite
If sigma is specified, M is positive semidefinite
If sigma is None, eigs requires an operator to compute the solution
of the linear equation M * x = b. This is done internally via a
(sparse) LU decomposition for an explicit matrix M, or via an
iterative solver for a general linear operator. Alternatively,
the user can supply the matrix or operator Minv, which gives
x = Minv * b = M^1 * b.
sigma : real or complex, optional
Find eigenvalues near sigma using shiftinvert mode. This requires
an operator to compute the solution of the linear system
[A  sigma * M] * x = b, where M is the identity matrix if
unspecified. This is computed internally via a (sparse) LU
decomposition for explicit matrices A & M, or via an iterative
solver if either A or M is a general linear operator.
Alternatively, the user can supply the matrix or operator OPinv,
which gives x = OPinv * b = [A  sigma * M]^1 * b.
For a real matrix A, shiftinvert can either be done in imaginary
mode or real mode, specified by the parameter OPpart (‘r’ or ‘i’).
Note that when sigma is specified, the keyword ‘which’ (below)
refers to the shifted eigenvalues w'[i] where:
 If A is real and OPpart == ‘r’ (default),
w'[i] = 1/2 * [1/(w[i]sigma) + 1/(w[i]conj(sigma))].
 If A is real and OPpart == ‘i’,
w'[i] = 1/2i * [1/(w[i]sigma)  1/(w[i]conj(sigma))].
If A is complex, w'[i] = 1/(w[i]sigma).
v0 : ndarray, optional
Starting vector for iteration.
ncv : int, optional
The number of Lanczos vectors generated
ncv must be greater than k; it is recommended that ncv > 2*k.
which : str, [‘LM’  ‘SM’  ‘LR’  ‘SR’  ‘LI’  ‘SI’], optional
Which k eigenvectors and eigenvalues to find:
‘LM’ : largest magnitude
‘SM’ : smallest magnitude
‘LR’ : largest real part
‘SR’ : smallest real part
‘LI’ : largest imaginary part
‘SI’ : smallest imaginary part
When sigma != None, ‘which’ refers to the shifted eigenvalues w’[i]
(see discussion in ‘sigma’, above). ARPACK is generally better
at finding large values than small values. If small eigenvalues are
desired, consider using shiftinvert mode for better performance.
maxiter : int, optional
Maximum number of Arnoldi update iterations allowed
tol : float, optional
Relative accuracy for eigenvalues (stopping criterion)
The default value of 0 implies machine precision.
return_eigenvectors : bool, optional
Return eigenvectors (True) in addition to eigenvalues
Minv : ndarray, sparse matrix or LinearOperator, optional
OPinv : ndarray, sparse matrix or LinearOperator, optional
See notes in sigma, above.
OPpart : {‘r’ or ‘i’}, optional
See notes in sigma, above
