naginterfaces.library.lapackeig.dhseqr¶
- naginterfaces.library.lapackeig.dhseqr(job, compz, ilo, ihi, h, z)[source]¶
dhseqr
computes all the eigenvalues and, optionally, the Schur factorization of a real Hessenberg matrix or a real general matrix which has been reduced to Hessenberg form.For full information please refer to the NAG Library document for f08pe
https://support.nag.com/numeric/nl/nagdoc_30.2/flhtml/f08/f08pef.html
- Parameters
- jobstr, length 1
Indicates whether eigenvalues only or the Schur form is required.
Eigenvalues only are required.
The Schur form is required.
- compzstr, length 1
Indicates whether the Schur vectors are to be computed.
No Schur vectors are computed (and the array is not referenced).
The Schur vectors of are computed (and the array must contain the matrix on entry).
The Schur vectors of are computed (and the array is initialized by the function).
- iloint
If the matrix has been balanced by
dgebal()
, and must contain the values returned by that function. Otherwise, must be set to and to .- ihiint
If the matrix has been balanced by
dgebal()
, and must contain the values returned by that function. Otherwise, must be set to and to .- hfloat, array-like, shape
The upper Hessenberg matrix , as returned by
dgehrd()
.- zfloat, array-like, shape
Note: the required extent for this argument in dimension 1 is determined as follows: if : ; if : ; otherwise: .
Note: the required extent for this argument in dimension 2 is determined as follows: if : ; if : ; otherwise: .
If , must contain the orthogonal matrix from the reduction to Hessenberg form.
If , need not be set.
- Returns
- hfloat, ndarray, shape
If , the array contains no useful information.
If , is overwritten by the upper quasi-triangular matrix from the Schur decomposition (the Schur form) unless > 0.
- wrfloat, ndarray, shape
The real and imaginary parts, respectively, of the computed eigenvalues, unless > 0 (in which case see Exceptions). Complex conjugate pairs of eigenvalues appear consecutively with the eigenvalue having positive imaginary part first. The eigenvalues are stored in the same order as on the diagonal of the Schur form (if computed); see Further Comments for details.
- wifloat, ndarray, shape
The real and imaginary parts, respectively, of the computed eigenvalues, unless > 0 (in which case see Exceptions). Complex conjugate pairs of eigenvalues appear consecutively with the eigenvalue having positive imaginary part first. The eigenvalues are stored in the same order as on the diagonal of the Schur form (if computed); see Further Comments for details.
- zfloat, ndarray, shape
If or , contains the orthogonal matrix of the required Schur vectors, unless > 0.
If , is not referenced.
- Raises
- NagValueError
- (errno )
On entry, error in parameter .
Constraint: or .
- (errno )
On entry, error in parameter .
Constraint: , or .
- (errno )
On entry, error in parameter .
Constraint: .
- (errno )
On entry, error in parameter .
- (errno )
On entry, error in parameter .
- Warns
- NagAlgorithmicWarning
- (errno )
The algorithm has failed to find all the eigenvalues after a total of iterations.
- Notes
dhseqr
computes all the eigenvalues and, optionally, the Schur factorization of a real upper Hessenberg matrix :where is an upper quasi-triangular matrix (the Schur form of ), and is the orthogonal matrix whose columns are the Schur vectors . See Further Comments for details of the structure of .
The function may also be used to compute the Schur factorization of a real general matrix which has been reduced to upper Hessenberg form :
In this case, after
dgehrd()
has been called to reduce to Hessenberg form,dorghr()
must be called to form explicitly; is then passed todhseqr
, which must be called with .The function can also take advantage of a previous call to
dgebal()
which may have balanced the original matrix before reducing it to Hessenberg form, so that the Hessenberg matrix has the structure:where and are upper triangular. If so, only the central diagonal block (in rows and columns to ) needs to be further reduced to Schur form (the blocks and are also affected). Therefore, the values of and can be supplied to
dhseqr
directly. Also,dgebak()
must be called after this function to permute the Schur vectors of the balanced matrix to those of the original matrix. Ifdgebal()
has not been called however, then must be set to and to . Note that if the Schur factorization of is required,dgebal()
must not be called with or , because the balancing transformation is not orthogonal.dhseqr
uses a multishift form of the upper Hessenberg algorithm, due to Bai and Demmel (1989). The Schur vectors are normalized so that , but are determined only to within a factor .
- References
Bai, Z and Demmel, J W, 1989, On a block implementation of Hessenberg multishift iteration, Internat. J. High Speed Comput. (1), 97–112
Golub, G H and Van Loan, C F, 1996, Matrix Computations, (3rd Edition), Johns Hopkins University Press, Baltimore