Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
See the recommended documentation of this function
eigs
calculates largest eigenvalues and eigenvectors of matrices
Syntax
d = eigs(A) d = eigs(Af, n) d = eigs(.., B) d = eigs(.., B, k) d = eigs(.., B, k, sigma) d = eigs(.., B, k, sigma, opts) [d, v] = eigs(..)
Arguments
- A
- a full or sparse, real or complex, symmetric or non-symmetric square matrix 
- B
- a sparse, real or complex, square matrix with same dimensions as - A
- k
- positive integer: number of eigenvalues to be computed. By default, - k=min(n-1, 6)(- Areal symetric) or- k=min(n-2, 6)(otherwise) eigen values are computed, with n=size(A,1).
- sigma
- a real scalar or a string of length 2 
- opts
- a structure 
- Af
- a function 
- n
- a scalar, defined only if - Ais a function
- d
- a real or complex eigenvalues vector or diagonal matrix (eigenvalues along the diagonal) 
- v
- real or complex eigenvector matrix 
Description
The purpose of the eigs function is to compute the largest eigenvalues of sparse, large matrices.
- d = eigs(A) or d = eigs(Af, n)
- solves the eigenvalue problem - A * v = lambda * v. This calling returns a vector- dcontaining the six largest magnitude eigenvalues.- Ais either a square matrix, which can be symmetric or non-symmetric, real or complex, full or sparse.- Ashould be represented by a function- Af. In this instance, a scalar- ndesignating the length of the vector argument, must be defined. It must have the following header :- function y=A(x) - This function - Afmust return one of the four following expressions :- A * x
                                if sigma is not given or is a string other than 'SM'. 
- A \ x
                                if sigma is 0 or 'SM'. 
- (A - sigma * I) \ x
                                for the standard eigenvalue problem, where I is the identity matrix. 
- (A - sigma * B) \ x
                                for the generalized eigenvalue problem. 
 
- A * x
                                
- [d, v] = eigs(A) or [d, v] = eigs(Af, n)
- returns a diagonal matrix - dcontaining the six largest magnitude eigenvalues on the diagonal.- vis a n by six matrix whose columns are the six eigenvectors corresponding to the returned eigenvalues.
- d = eigs(A, B)
- solves the generalized eigenvalue problem - A * v = lambda * B * vwith positive, definite matrix- B.- if - Bis not specified,- B = []is used.
- if - Bis specified,- Bmust be the same size as A.
 
- d = eigs(A, B, k)
- returns in vector - dthe- keigenvalues.
- d = eigs(A, B, k, sigma)
- returns in vector - dthe- keigenvalues determined by- sigma.- sigmacan be either a real or complex including 0 scalar or string. If sigma is a string of length 2, it takes one of the following values :- 'LM'compute the- klargest in magnitude eigenvalues (by default).
- 'SM'compute the- ksmallest in magnitude eigenvalues (same as sigma = 0).
- 'LA'compute the- kLargest Algebraic eigenvalues, only for real symmetric problems.
- 'SA'compute the- kSmallest Algebraic eigenvalues, only for real symmetric problems.
- 'BE'compute- keigenvalues, half from each end of the spectrum, only for real symmetric problems.
- 'LR'compute the- keigenvalues of Largest Real part, only for real non-symmetric or complex problems.
- 'SR'compute the- keigenvalues of Smallest Real part, only for real non-symmetric or complex problems.
- 'LI'compute the- keigenvalues of Largest Imaginary part, only for real non-symmetric or complex problems.
- 'SI'compute the- keigenvalues of Smallest Imaginary part, only for real non-symmetric or complex problems.
 
- d = eigs(A, B, k, sigma, opts)
- If the - optsstructure is specified, different options can be used to compute the- keigenvalues :- tol - required convergence tolerance. By default, - tol = %eps.
- maxiter - maximum number of iterations. By default, - maxiter = 300.
- ncv - number of Lanzcos basis vectors to use. For real non-symmetric problems, the - ncvvalue must be greater or equal than- 2 * k + 1and, by default,- ncv = min(max(2 * k + 1, 20), nA). For real symmetric or complex problems,- ncvmust be greater or equal- 2 * kand, by default,- ncv = min(max(2 * k, 20), nA)with- nA = size(A, 2).
- resid - starting vector whose contains the initial residual vector, possibly from a previous run. By default, - residis a random initial vector.
- cholB - if - chol(B)is passed rather than- B. By default,- cholBis %f.
- isreal - if - Afis given,- isrealcan be defined. By default,- isrealis %t. This argument must not be indicated if- Ais a matrix.
- issym - if - Afis given,- issymcan be defined. By default,- issymis %f. This argument must not be indicated if- Ais a matrix.
 
References
This function is based on the ARPACK package written by R. Lehoucq, K. Maschhoff, D. Sorensen, and C. Yang.
- DSAUPD and DSEUPD routines for real symmetric problems, 
- DNAUPD and DNEUPD routines for real non-symmetric problems. 
- ZNAUPD and ZNEUPD routines for complex problems. 
Example for real symmetric problems
clear opts A = diag(10*ones(10,1)); A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(9,1)); A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(9,1)); B = eye(10,10); k = 8; sigma = 'SM'; opts.cholB = %t; d = eigs(A) [d, v] = eigs(A) d = eigs(A, B, k, sigma) [d, v] = eigs(A, B, k, sigma) d = eigs(A, B, k, sigma, opts) [d, v] = eigs(A, B, k, sigma, opts) // With sparses AS = sparse(A); BS = sparse(B); d = eigs(AS) [d, v] = eigs(AS) d = eigs(AS, BS, k, sigma) [d, v] = eigs(AS, BS, k, sigma) d = eigs(AS, BS, k, sigma, opts) [d, v] = eigs(AS, BS, k, sigma, opts) // With function clear opts function y=fn(x) y = A * x; endfunction opts.isreal = %t; opts.issym = %t; d = eigs(fn, 10, [], k, 'LM', opts) function y=fn(x) y = A \ x; endfunction d = eigs(fn, 10, [], k, 'SM', opts) function y=fn(x) y = (A - 4 * eye(10,10)) \ x; endfunction d = eigs(fn, 10, [], k, 4, opts)
Example for real non-symmetric problems
clear opts A = diag(10*ones(10,1)); A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(9,1)); A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(9,1)); B = eye(10,10); k = 8; sigma = 'SM'; opts.cholB = %t; d = eigs(A) [d, v] = eigs(A) d = eigs(A, B, k, sigma) [d, v] = eigs(A, B, k, sigma) d = eigs(A, B, k, sigma, opts) [d, v] = eigs(A, B, k, sigma, opts) // With sparses AS = sparse(A); BS = sparse(B); d = eigs(AS) [d, v] = eigs(AS) d = eigs(AS, BS, k, sigma) [d, v] = eigs(AS, BS, k, sigma) d = eigs(AS, BS, k, sigma, opts) [d, v] = eigs(AS, BS, k, sigma, opts) // With function clear opts function y=fn(x) y = A * x; endfunction opts.isreal = %t; opts.issym = %f; d = eigs(fn, 10, [], k, 'LM', opts) function y=fn(x) y = A \ x; endfunction d = eigs(fn, 10, [], k, 'SM', opts) function y=fn(x) y = (A - 4 * eye(10,10)) \ x; endfunction d = eigs(fn, 10, [], k, 4, opts)
Example for complex problems
clear opts A = diag(10*ones(10,1) + %i * ones(10,1)); A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(9,1)); A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(9,1)); B = eye(10,10); k = 8; sigma = 'LM'; opts.cholB = %t; d = eigs(A) [d, v] = eigs(A) d = eigs(A, B, k, sigma) [d, v] = eigs(A, B, k, sigma) d = eigs(A, B, k, sigma, opts) [d, v] = eigs(A, B, k, sigma, opts) // With sparses AS = sparse(A); BS = sparse(B); d = eigs(AS) [d, v] = eigs(AS) d = eigs(AS, BS, k, sigma) [d, v] = eigs(AS, BS, k, sigma) d = eigs(AS, BS, k, sigma, opts) [d, v] = eigs(AS, BS, k, sigma, opts) // With function clear opts function y=fn(x) y = A * x; endfunction opts.isreal = %f; opts.issym = %f; d = eigs(fn, 10, [], k, 'LM', opts) function y=fn(x) y = A \ x; endfunction d = eigs(fn, 10, [], k, 'SM', opts) function y=fn(x) y = (A - 4 * eye(10,10)) \ x; endfunction d = eigs(fn, 10, [], k, 4, opts)
See also
- spec — eigenvalues, and eigenvectors of a matrix or a pencil
History
| Version | Description | 
| 5.4.0 | Function introduced. | 
| 6.1.1 | dnaupd, dneupd, dsaupd, dseupd, znaupd and zneupd become internal. | 
| Report an issue | ||
| << bdiag | Eigenvalue and Singular Value | pbig >> |