Purpose
To compute an additive spectral decomposition of the transfer- function matrix of the system (A,B,C) by reducing the system state-matrix A to a block-diagonal form. It is assumed that A is in a real Schur form, and the leading diagonal block of order NDIM has eigenvalues distinct from those of the trailing diagonal block. The system matrices are transformed as A <-- V*A*U, B <--V*B and C <-- C*U, where V = inv(U), preserving the spectra of the two diagonal blocks.Specification
SUBROUTINE TB01KX( N, M, P, NDIM, A, LDA, B, LDB, C, LDC, U, LDU, $ V, LDV, INFO ) C .. Scalar Arguments .. INTEGER INFO, LDA, LDB, LDC, LDU, LDV, M, N, NDIM, P C .. Array Arguments .. DOUBLE PRECISION A(LDA,*), B(LDB,*), C(LDC,*), U(LDU,*), V(LDV,*)Arguments
Input/Output Parameters
N (input) INTEGER The order of the state-space representation, i.e., the order of the matrix A. N >= 0. M (input) INTEGER The number of system inputs, or of columns of B. M >= 0. P (input) INTEGER The number of system outputs, or of rows of C. P >= 0. NDIM (input) INTEGER The dimension of the leading diagonal block of A having eigenvalues distinct from those of the trailing diagonal block. 0 <= NDIM <= N. A (input/output) DOUBLE PRECISION array, dimension (LDA,N) On entry, the leading N-by-N part of this array must contain the state dynamics matrix A in real Schur form. On exit, the leading N-by-N part of this array contains a block diagonal matrix inv(U) * A * U with two diagonal blocks in real Schur form, with the elements below the first subdiagonal set to zero. The leading block has dimension NDIM-by-NDIM. LDA INTEGER The leading dimension of the array A. LDA >= MAX(1,N). B (input/output) DOUBLE PRECISION array, dimension (LDB,M) On entry, the leading N-by-M part of this array must contain the input matrix B. On exit, the leading N-by-M part of this array contains the transformed input matrix inv(U) * B. LDB INTEGER The leading dimension of the array B. LDB >= MAX(1,N). C (input/output) DOUBLE PRECISION array, dimension (LDC,N) On entry, the leading P-by-N part of this array must contain the output matrix C. On exit, the leading P-by-N part of this array contains the transformed output matrix C * U. LDC INTEGER The leading dimension of the array C. LDC >= MAX(1,P). U (input/output) DOUBLE PRECISION array, dimension (LDU,N) On entry, the leading N-by-N part of this array must contain an initial transformation matrix U. On exit, the leading N-by-N part of this array contains the transformation matrix used to reduce A to the block- diagonal form. The first NDIM columns of U span the invariant subspace of A corresponding to the eigenvalues of its leading diagonal block. The last N-NDIM columns of U span the reducing subspace of A corresponding to the eigenvalues of the trailing diagonal block of A. LDU INTEGER The leading dimension of the array U. LDU >= max(1,N). V (output) DOUBLE PRECISION array, dimension (LDV,N) The leading N-by-N part of this array contains the inverse of the transformation matrix U used to reduce A to the block-diagonal form. LDV INTEGER The leading dimension of the array V. LDV >= max(1,N).Error Indicator
INFO INTEGER = 0: successful exit; < 0: if INFO = -i, the i-th argument had an illegal value; = 1: the separation of the two diagonal blocks failed because of very close eigenvalues.Method
A similarity transformation U is determined that reduces the given system state-matrix A to a block-diagonal form (with two diagonal blocks), so that the eigenvalues of the leading diagonal block of the resulting A are preserved. The determined transformation is applied to the system (A,B,C) as A <-- inv(U)*A*U, B <-- inv(U)*B and C <-- C*U.References
[1] Safonov, M.G., Jonckheere, E.A., Verma, M., Limebeer, D.J.N. Synthesis of positive real multivariable feedback systems. Int. J. Control, pp. 817-842, 1987.Numerical Aspects
3 The algorithm requires about N /2 + NDIM*(N-NDIM)*(2*N+M+P) floating point operations.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None