XLPack 7.0
XLPack Numerical Library (Excel VBA) Reference Manual
Loading...
Searching...
No Matches

◆ Zneupd()

Sub Zneupd ( Rvec As  Long,
Howmny As  String,
Selct() As  Long,
D() As  Complex,
Z() As  Complex,
Sigma As  Complex,
Workev() As  Complex,
Bmat As  String,
N As  Long,
ByVal Which As  String,
Nev As  Long,
Resid() As  Complex,
Ncv As  Long,
V() As  Complex,
IParam() As  Long,
Ipntr() As  Long,
Workd() As  Complex,
Workl() As  Complex,
RWork() As  Double,
Info As  Long,
Optional Tol As  Double = 0 
)

Approximate eigenvalues and eigenvectors from Arnoldi factorization for a complex sparse matrix (Arpack)

Purpose
This routine computes the approximations to the eigenvalues of eigenproblem A*z = λ*B*z and (optionally) the corresponding approximate eigenvectors.

These values are computed from the Arnoldi factorization returned by Znaupd for a complex linear operator OP with respect to a matrix B (see Purpose paragraph of Znaupd manual for more details). Znaupd 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, Iparam, Ipntr, Workd, Workl and RWork must be passed to this routine following the last call to Dsaupd without change. Three of these parameters, V, Ipntr and Workl, are changed by this routine.
Parameters
[in]RvecSpecifies whether a basis for the invariant subspace corresponding to the converged Ritz value approximations for the eigenproblem A*z = lambda*B*z is computed.
= 0 (false): Compute Ritz values only.
= 1 (true): Compute Ritz vectors or Schur vectors.
[in]HowmnySpecifies the form of the basis for the invariant subspace corresponding to the converged Ritz values that is to be computed.
= "A": Compute Nev Ritz vectors.
= "P": Compute Nev Schur vectors.
= "S": Compute some of the Ritz vectors, specified by the logical array Select().
[out]Selct()Array Selct(LSelct - 1) (LSelct >= Ncv)
If Howmny = "S", Selct() specifies the Ritz vectors to be computed. To select the Ritz vector corresponding to a Ritz value D(j), Selct(j) must be set to 1 (True). If Howmny = "A" or "P", Selct() is used as internal workspace.
[out]D()Array D(LD - 1) (LD >= Nev)
Contains the Ritz value approximations to the eigenvalues of A*z = λ*B*z.
[out]Z()Array Z(Ldz - 1, LZ - 1) (Ldz >= N, LZ >= Nev)
If Rvec = 1 (True) and Howmny = "A", then the columns of Z() represent approximate eigenvectors (Ritz vectors) corresponding to the nconv (Iparam(4)) Ritz values for eigensystem A*z = λ*B*z.

If Rvec = 0 (False) or Howmny = "P" then Z() is not referenced.
[in]SigmaIf mode = 3, represents the real part of the shift. Not referenced if mode = 1 or 2.
[out]Workev()Array Workev[LWorkev] (LWorkev >= 2*Ncv)
Workspace.
[in]BmatSame as for Znaupd. Must be passed without modification following the last call to Znaupd.
[in]NSame as for Znaupd. Must be passed without modification following the last call to Znaupd.
[in]WhichSame as for Znaupd. Must be passed without modification following the last call to Znaupd.
[in]NevSame as for Znaupd. Must be passed without modification following the last call to Znaupd.
[in]TolSame as for Znaupd. Must be passed without modification following the last call to Znaupd.
[in]Resid()Array Resid(LResid - 1) (LResid >= N)
Same as for Znaupd. Must be passed without modification following the last call to Znaupd.
[in]NcvSame as for Znaupd. Must be passed without modification following the last call to Znaupd.
[in,out]V()Array V(Ldv - 1, LV - 1) (Ldv >= N, LV >= Ncv)
[in] Same as for Znaupd. Must be passed without modification following the last call to Znaupd. [out] If Rvec = 1 (True), the first nconv columns contain approximate Schur vectors that span the desired invariant subspace.
[in]Iparam()Array Iparam(LIparam - 1) (LIparam >= 11)
Same as for Znaupd. Must be passed without modification following the last call to Znaupd.
[in,out]Ipntr()Array Ipntr(LIpntr - 1) (LIpntr >= 14)
[in] Same as for Znaupd. Must be passed without modification following the last call to Znaupd. [out] Ipntr(8) to Ipntr(12) contain the pointer into Workl.
Ipntr(8): Pointer to the Ncv Ritz values of the original system.
Ipntr(9): Not used.
Ipntr(10): Pointer to the Ncv corresponding error estimates.
Ipntr(11): Pointer to the Ncv by Ncv upper triangular Schur matrix for H.
Ipntr(12): Pointer to the Ncv by Ncv matrix of eigenvectors of the upper Hessenberg matrix H. Only referenced if Rvec = 1 (True).
[in]Workd()Array Workd(LWorkd - 1) (LWorkd >= 3*N)
Same as for Znaupd. Must be passed without modification following the last call to Znaupd.
[in,out]Workl()Array Workl(LWorkl - 1) (LWorkl >= 3*Ncv^2 + 5*Ncv)
[in] Same as for Znaupd. Must be passed without modification following the last call to Znaupd. Workl(0) to Workl(ncv^2 + 2*ncv - 1) contains information obtained in Znaupd. They are not changed by this routine.
[out] Workl(Ncv^2 + 2*ncv) to Workl(3*ncv^2 + 4*ncv - 1) holds the real and imaginary part of the untransformed Ritz values, the upper quasi-triangular matrix for H, and the associated matrix representation of the invariant subspace for H.
[in]RWork()Array RWork[LRWork] (LRWork >= Ncv)
Same as for Znaupd. Must be passed without modification following the last call to Znaupd.
[out]InfoReturn code.
= 0: Successful exit.
< 0: The (-Info)-th argument is invalid.
= 11: Initial residual vector is zero.
= 12: Znaupd did not find any eigenvalues to sufficient accuracy.
= 13: Zneupd got a different count of the number of converged Ritz values than Znaupd got.
= 14: Error return from LAPACK eigenvalue calculation.
= 15: Error return from calculation of eigenvectors (LAPACK routine ZTREVC).
Reference
ARPACK-NG (https://github.com/opencollab/arpack-ng)