naginterfaces.library.lapackeig.zstein

naginterfaces.library.lapackeig.zstein(d, e, m, w, iblock, isplit)[source]

zstein computes the eigenvectors of a real symmetric tridiagonal matrix corresponding to specified eigenvalues, by inverse iteration, storing the eigenvectors in a complex array.

For full information please refer to the NAG Library document for f08jx

https://www.nag.com/numeric/nl/nagdoc_29.3/flhtml/f08/f08jxf.html

Parameters
dfloat, array-like, shape

The diagonal elements of the tridiagonal matrix .

efloat, array-like, shape

The off-diagonal elements of the tridiagonal matrix .

mint

, the number of eigenvectors to be returned.

wfloat, array-like, shape

The eigenvalues of the tridiagonal matrix stored in to , as returned by dstebz() with . Eigenvalues associated with the first sub-matrix must be supplied first, in nondecreasing order; then those associated with the second sub-matrix, again in nondecreasing order; and so on.

iblockint, array-like, shape

The first elements must contain the sub-matrix indices associated with the specified eigenvalues, as returned by dstebz() with . If the eigenvalues were not computed by dstebz() with , set to , for .

isplitint, array-like, shape

The points at which breaks up into sub-matrices, as returned by dstebz() with . If the eigenvalues were not computed by dstebz() with , set to .

Returns
zcomplex, ndarray, shape

The eigenvectors, stored as columns of ; the th column corresponds to the th specified eigenvalue, unless > 0 (in which case see Exceptions).

ifailvint, ndarray, shape

If , the first elements of contain the indices of any eigenvectors which have failed to converge. The rest of the first elements of are set to .

Raises
NagValueError
(errno )

On entry, error in parameter .

Constraint: .

(errno )

On entry, error in parameter .

Constraint: .

(errno -5)

On entry, error in parameter .

Constraint: .

(errno -6)

On entry, error in parameter .

Constraint: .

Warns
NagAlgorithmicWarning
(errno )

eigenvectors (as indicated by argument ) each failed to converge in five iterations. The current iterate after five iterations is stored in the corresponding column of .

Notes

zstein computes the eigenvectors of a real symmetric tridiagonal matrix corresponding to specified eigenvalues, by inverse iteration (see Jessup and Ipsen (1992)). It is designed to be used in particular after the specified eigenvalues have been computed by dstebz() with , but may also be used when the eigenvalues have been computed by other functions in submodule lapackeig or submodule eigen.

The eigenvectors of are real, but are stored by this function in a complex array. If has been formed by reduction of a full complex Hermitian matrix to tridiagonal form, then eigenvectors of may be transformed to (complex) eigenvectors of by a call to zunmtr() or zupmtr().

dstebz() determines whether the matrix splits into block diagonal form:

and passes details of the block structure to this function in the arrays and . This function can then take advantage of the block structure by performing inverse iteration on each block separately, which is more efficient than using the whole matrix.

References

Golub, G H and Van Loan, C F, 1996, Matrix Computations, (3rd Edition), Johns Hopkins University Press, Baltimore

Jessup, E and Ipsen, I C F, 1992, Improving the accuracy of inverse iteration, SIAM J. Sci. Statist. Comput. (13), 550–572