|
|
◆ dseupd()
| void dseupd |
( |
int |
rvec, |
|
|
char |
howmny, |
|
|
int |
select[], |
|
|
double |
d[], |
|
|
int |
ldz, |
|
|
double |
z[], |
|
|
double |
sigma, |
|
|
char |
bmat, |
|
|
int |
n, |
|
|
const char * |
which, |
|
|
int |
nev, |
|
|
double |
tol, |
|
|
double |
resid[], |
|
|
int |
ncv, |
|
|
int |
ldv, |
|
|
double |
v[], |
|
|
int |
iparam[], |
|
|
int |
ipntr[], |
|
|
double |
workd[], |
|
|
double |
workl[], |
|
|
int |
lworkl, |
|
|
int * |
info |
|
) |
| |
Approximate eigenvalues and eigenvectors of a symmetric sparse matrix from Lanczos factorization
- Purpose
- This routine computes the approximations to the eigenvalues (Ritz values) of eigenproblem A*z = λ*B*z and (optionally) the corresponding approximate eigenvectors (Ritz vectors).
These values are computed from the Lanczos factorization returned by dsaupd for a linear operator OP with respect to a matrix B (see Purpose paragraph of dsaupd manual for more details). dsaupd must be called before calling this routine.
The approximate eigenvalues are returned in ascending algebraic order.
The arguments bmat, n, which, nev, tol, resid, ncv, v, ldv, iparam, ipntr, workd, workl and lworkl must be passed to this routine following the last call to dsaupd without change. Two of these parameters, ipntr and workl, are changed by this routine.
- Parameters
-
| [in] | rvec | Specifies whether Ritz vectors corresponding to the Ritz value approximations to the eigenproblem A*z = λ*B*z are computed.
= false (0): Compute Ritz values only.
= true (1): Compute Ritz vectors. |
| [in] | howmny | Specifies how many Ritz vectors are wanted.
= 'A': Compute nev Ritz vectors. |
| [out] | select[] | Array select[lselect] (lselect >= ncv)
select[] is used as a workspace for reordering the Ritz values. |
| [out] | d[] | Array d[ld] (ld >= nev)
Contains the Ritz value approximations to the eigenvalues of A*z = λ*B*z. The values are returned in ascending order. If mode = 3, 4 or 5 then d[] represents the Ritz values of OP computed by dsaupd transformed to those of the original eigensystem A*z = λ*B*z. If mode = 1 or 2 then the Ritz values of OP are the same as the those of A*z = λ*B*z. |
| [in] | ldz | Leading dimension of the array z. (ldz >= max(1, n) if Ritz vectors are desired, ldz >= 1 otherwise) |
| [out] | z[] | Array z[ldz * lz] (lz >= nev)
Contains the B-orthonormal Ritz vectors of the eigensystem A*z = λ*B*z corresponding to the Ritz value approximations.
If rvec = 0 then z[] is not referenced. |
| [in] | sigma | sigma represents the shift, if mode = 3, 4 or 5. Not referenced if mode = 1 or 2. |
| [in] | bmat | Same as for dsaupd. Must be passed without modification following the last call to dsaupd. |
| [in] | n | Same as for dsaupd. Must be passed without modification following the last call to dsaupd. |
| [in] | which | Same as for dsaupd. Must be passed without modification following the last call to dsaupd. |
| [in] | nev | Same as for dsaupd. Must be passed without modification following the last call to dsaupd. |
| [in] | tol | Same as for dsaupd. Must be passed without modification following the last call to dsaupd. |
| [in] | resid[] | Array resid[lresid] (lresid >= n)
Same as for dsaupd. Must be passed without modification following the last call to dsaupd. |
| [in] | ncv | Same as for dsaupd. Must be passed without modification following the last call to dsaupd. |
| [in] | ldv | Same as for dsaupd. Must be passed without modification following the last call to dsaupd. |
| [in] | v[] | Array v[ldv * lv] (lv >= ncv)
Same as for dsaupd. Must be passed without modification following the last call to dsaupd. |
| [in] | iparam[] | Array iparam[liparam] (liparam >= 11)
Same as for dsaupd. Must be passed without modification following the last call to dsaupd. |
| [in,out] | ipntr[] | Array ipntr[lipntr] (lipntr >= 11)
[in] Same as for dsaupd. Must be passed without modification following the last call to dsaupd.
[out] ipntr[7] to ipntr[9] contain the pointer into workl.
ipntr[7]: Pointer to the ncv Ritz values of the original system.
ipntr[8]: Pointer to the ncv corresponding error bounds.
ipntr[9]: Pointer to the ncv by ncv matrix of eigenvectors of the tridiagonal matrix T. Only referenced if rvec = true (1). |
| [in] | workd[] | Array workd[lworkd] (lworkd >= 3*n)
Same as for dsaupd. Must be passed without modification following the last call to dsaupd. |
| [in,out] | workl[] | Array workl[lworkl]
[in] Same as for dsaupd. Must be passed without modification following the last call to dsaupd. workl[0] to workl[4*ncv - 1] contains information obtained in dsaupd. They are not changed by dseupd.
[out] workl[4*ncv] to workl[ncv^2 + 8*ncv - 1] holds the untransformed Ritz values, the computed error estimates, and the associated eigenvector matrix of H. |
| [in] | lworkl | Same as for dsaupd. Must be passed without modification following the last call to dsaupd. |
| [out] | info | Return code.
= 0: Successful exit.
< 0: The (-info)-th argument is invalid.
= 11: Initial residual vector is zero.
= 12: dsaupd did not find any eigenvalues to sufficient accuracy.
= 13: dseupd got a different count of the number of converged Ritz values than dsaupd got.
= 14: Error return from LAPACK eigenvalue calculation. |
- Reference
- ARPACK-NG (https://github.com/opencollab/arpack-ng)
|