- MatrixBalance
- EigenVectorsBackward
- ReduceToHessenbergBalanced
- ReflectHessenbergBalancedToQ
- EigenHessenbergBalancedSchurQ
ReduceToHessenbergBalanced
Reduces a real or complex general n-by-n balanced matrix A to upper Hessenberg form B by an orthogonal similarity transformation: Q**T * A * Q = H. LAPACK function GEHRD.
Computing for type matrix<double>
bool matrix::ReduceToHessenbergBalanced(
|
Computing for type matrix<float>
bool matrixf::ReduceToHessenbergBalanced(
|
Computing for type matrix<complex>
bool matrixc::ReduceToHessenbergBalanced(
|
Computing for type matrix<complexf>
bool matrixcf::ReduceToHessenbergBalanced(
|
Parameters
ilo
[in] Subscript of the balanced matrix. As returned by MatrixBalance.
ihi
[in] Superscript of the balanced matrix. As returned by MatrixBalance.
H
[out] Upper Hessenberg matrix.
reflect_q
[out] Owerwritten balanced matrix A, the elements below the first subdiagonal, with the array tau_q, represent the orthogonal matrix Q as a product of elementary reflectors.
tau_q
[out] Vector of the scalar factors of the elementary reflectors which represent the orthogonal matrix Q.
Return Value
Return true if successful, otherwise false in case of an error.
Note
It is assumed that A is already upper triangular in rows and columns 1:ilo-1 and ihi+1:N. ilo and ihi are normally set by a previous call to MatrixBalance; otherwise they should be set to 1 and N respectively.
The matrix Q is represented as a product of (ihi-ilo) elementary reflectors
Q = H(ilo) H(ilo+1) . . . H(ihi-1).
Each H(i) has the form
H(i) = I - tau * v * v**T
where tau is a real scalar, and v is a real vector with v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) is stored on exit in reflect_q(i+2:ihi,i), and tau in tau_q(i)
The contents of reflect_q are illustrated by the following example, with n = 7, ilo = 2 and ihi = 6:
input matrix on entry, reflect_q on exit, ( a a a a a a a ) ( a a h h h h a ) ( a a a a a a ) ( a h h h h a ) ( a a a a a a ) ( h h h h h h ) ( a a a a a a ) ( v2 h h h h h ) ( a a a a a a ) ( v2 v3 h h h h ) ( a a a a a a ) ( v2 v3 v4 h h h ) ( a ) ( a )
|
where a denotes an element of the original matrix A, h denotes a modified element of the upper Hessenberg matrix H, and vi denotes an element of the vector defining H(i).
Matrix Q can be produced with ReflectHessenbergBalancedToQ method applied to the reflect_q matrix.