The function returns the eigenvalues, , for , and can optionally return the corresponding right eigenvectors, and/or left eigenvectors, as well as estimates of the condition numbers of the computed eigenvalues and backward errors of the computed right and left eigenvectors. A left eigenvector satisfies the equation
where is the complex conjugate transpose of .
is represented as the pair , such that . Note that the computation of may overflow and indeed may be zero.
The function may be called by the names: f02jcc or nag_eigen_real_gen_quad.
3Description
The quadratic eigenvalue problem is solved by linearizing the problem and solving the resulting generalized eigenvalue problem. The linearization is chosen to have favourable conditioning and backward stability properties. An initial preprocessing step is performed that reveals and deflates the zero and infinite eigenvalues contributed by singular leading and trailing matrices.
The algorithm is backward stable for problems that are not too heavily damped, that is .
Fan H -Y, Lin W.-W and Van Dooren P. (2004) Normwise scaling of second order polynomial matrices SIAM J. Matrix Anal. Appl. 26, 1 252–256
Gaubert S and Sharify M (2009) Tropical scaling of polynomial matrices Lecture Notes in Control and Information Sciences Series389 291–303 Springer–Verlag
Hammarling S, Munro C J and Tisseur F (2013) An algorithm for the complete solution of quadratic eigenvalue problems ACM Trans. Math. Software.39(3):18:1–18:119http://eprints.maths.manchester.ac.uk/2061/
5Arguments
1: – Nag_ScaleTypeInput
On entry: determines the form of scaling to be performed on , and .
No scaling.
(the recommended value)
Fan, Lin and Van Dooren scaling if and no scaling otherwise where is the Frobenius norm of .
On entry: determines whether, or not, condition numbers and backward errors are computed.
Do not compute condition numbers, or backward errors.
Just compute condition numbers for the eigenvalues.
Just compute backward errors for the left eigenpairs.
Just compute backward errors for the right eigenpairs.
Compute backward errors for the left and right eigenpairs.
Compute condition numbers for the eigenvalues and backward errors for the left eigenpairs.
Compute condition numbers for the eigenvalues and backward errors for the right eigenpairs.
Compute condition numbers for the eigenvalues and backward errors for the left and right eigenpairs.
Constraint:
, , , , , , or .
5: – doubleInput
On entry: tol is used as the tolerance for making decisions on rank in the deflation procedure. If tol is zero on entry then is used in place of tol, where machine precision is as returned by function X02AJC. A diagonal element of a triangular matrix, , is regarded as zero if , or when tol is zero, where is based on the size of the absolute values of the elements of the matrix containing the matrix . See Hammarling et al. (2013) for the motivation. If tol is on entry then no deflation is attempted. The recommended value for tol is zero.
6: – IntegerInput
On entry: the order of the matrices , and .
Constraint:
.
7: – doubleInput/Output
Note: the dimension, dim, of the array a
must be at least
.
The th element of the matrix is stored in .
On entry: the matrix .
On exit: a is used as internal workspace, but if or , a is restored on exit.
8: – IntegerInput
On entry: the stride separating matrix row elements in the array a.
Constraint:
.
9: – doubleInput/Output
Note: the dimension, dim, of the array b
must be at least
.
The th element of the matrix is stored in .
On entry: the matrix .
On exit: b is used as internal workspace, but is restored on exit.
10: – IntegerInput
On entry: the stride separating matrix row elements in the array b.
Constraint:
.
11: – doubleInput/Output
Note: the dimension, dim, of the array c
must be at least
.
The th element of the matrix is stored in .
On entry: the matrix .
On exit: c is used as internal workspace, but if or , c is restored on exit.
12: – IntegerInput
On entry: the stride separating matrix row elements in the array c.
Constraint:
.
13: – doubleOutput
On exit: , for , contains the real part of for the th eigenvalue pair of the quadratic eigenvalue problem.
14: – doubleOutput
On exit: , for , contains the imaginary part of for the th eigenvalue pair of the quadratic eigenvalue problem. If is zero then the th eigenvalue is real; if is positive then the th and th eigenvalues are a complex conjugate pair, with negative.
15: – doubleOutput
On exit: , for , contains the second part of the th eigenvalue pair of the quadratic eigenvalue problem, with . Infinite eigenvalues have set to zero.
16: – doubleOutput
Note: the dimension, dim, of the array vl
must be at least
when .
where appears in this document, it refers to the array element
.
On exit: if , the left eigenvectors are stored one after another in vl, in the same order as the corresponding eigenvalues. If the th eigenvalue is real, then , the th column of VL. If the th and th eigenvalues form a complex conjugate pair, then and . Each eigenvector will be normalized with length unity and with the element of largest modulus real and positive.
On entry: the stride separating matrix row elements in the array vl.
Constraint:
.
18: – doubleOutput
Note: the dimension, dim, of the array vr
must be at least
when .
where appears in this document, it refers to the array element
.
On exit: if , the right eigenvectors are stored one after another in vr, in the same order as the corresponding eigenvalues. If the th eigenvalue is real, then , the th column of VR. If the th and th eigenvalues form a complex conjugate pair, then and . Each eigenvector will be normalized with length unity and with the element of largest modulus real and positive.
On entry: the stride separating matrix row elements in the array vr.
Constraint:
.
20: – doubleOutput
Note: the dimension, dim, of the array s
must be at least
when , , or .
also: computing the condition numbers of the eigenvalues requires that both the left and right eigenvectors be computed.
On exit: if , , or , contains the condition number estimate for the th eigenvalue (large condition numbers imply that the problem is near one with multiple eigenvalues). Infinite condition numbers are returned as the largest model double number (X02ALC).
The NAG error argument (see Section 7 in the Introduction to the NAG Library CL Interface).
6Error Indicators and Warnings
NE_ALLOC_FAIL
Dynamic memory allocation failed.
See Section 3.1.2 in the Introduction to the NAG Library CL Interface for further information.
NE_ARRAY_SIZE
On entry, and . Constraint: .
On entry, and . Constraint: .
On entry, and . Constraint: .
On entry, , and . Constraint: when , .
On entry, , and . Constraint: when , .
NE_BAD_PARAM
On entry, argument had an illegal value.
NE_INT
On entry, . Constraint: .
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
See Section 7.5 in the Introduction to the NAG Library CL Interface for further information.
NE_INVALID_VALUE
On entry, and . Constraint: when , or , when , , , , , or .
On entry, and . Constraint: when , or , when , , , , , or .
NE_ITERATIONS_QZ
The iteration failed in f08wcc. iwarn returns the value of info returned by f08wcc. This failure is unlikely to happen, but if it does, please contact NAG.
The iteration failed in f08xcc. iwarn returns the value of info returned by f08xcc. This failure is unlikely to happen, but if it does, please contact NAG.
NE_NO_LICENCE
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library CL Interface for further information.
NE_SINGULAR
The quadratic matrix polynomial is nonregular (singular).
7Accuracy
The algorithm is backward stable for problems that are not too heavily damped, that is .
8Parallelism and Performance
f02jcc is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
f02jcc makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.
Please consult the X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this function. Please also consult the Users' Note for your implementation for any additional implementation-specific information.
9Further Comments
None.
10Example
To solve the quadratic eigenvalue problem
where
The example also returns the left eigenvectors, condition numbers for the computed eigenvalues and backward errors of the computed right and left eigenpairs.