XLPack 7.0
XLPack Numerical Library (C API) Reference Manual
Loading...
Searching...
No Matches

◆ 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]rvecSpecifies 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]howmnySpecifies 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]ldzLeading 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]sigmasigma represents the shift, if mode = 3, 4 or 5. Not referenced if mode = 1 or 2.
[in]bmatSame as for dsaupd. Must be passed without modification following the last call to dsaupd.
[in]nSame as for dsaupd. Must be passed without modification following the last call to dsaupd.
[in]whichSame as for dsaupd. Must be passed without modification following the last call to dsaupd.
[in]nevSame as for dsaupd. Must be passed without modification following the last call to dsaupd.
[in]tolSame 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]ncvSame as for dsaupd. Must be passed without modification following the last call to dsaupd.
[in]ldvSame 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]lworklSame as for dsaupd. Must be passed without modification following the last call to dsaupd.
[out]infoReturn 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)