Purpose
To solve an N-by-N pole placement problem for the simple cases N = 1 or N = 2: given the N-by-N matrix A and N-by-M matrix B, construct an M-by-N matrix F such that A + B*F has prescribed eigenvalues. These eigenvalues are specified by their sum S and product P (if N = 2). The resulting F has minimum Frobenius norm.Specification
SUBROUTINE SB01BY( N, M, S, P, A, B, F, TOL, DWORK, INFO ) C .. Scalar Arguments .. INTEGER INFO, M, N DOUBLE PRECISION P, S, TOL C .. Array Arguments .. DOUBLE PRECISION A(N,*), B(N,*), DWORK(*), F(M,*)Arguments
Input/Output Parameters
N (input) INTEGER The order of the matrix A and also the number of rows of the matrix B and the number of columns of the matrix F. N is either 1, if a single real eigenvalue is prescribed or 2, if a complex conjugate pair or a set of two real eigenvalues are prescribed. M (input) INTEGER The number of columns of the matrix B and also the number of rows of the matrix F. M >= 1. S (input) DOUBLE PRECISION The sum of the prescribed eigenvalues if N = 2 or the value of prescribed eigenvalue if N = 1. P (input) DOUBLE PRECISION The product of the prescribed eigenvalues if N = 2. Not referenced if N = 1. A (input/output) DOUBLE PRECISION array, dimension (N,N) On entry, this array must contain the N-by-N state dynamics matrix whose eigenvalues have to be moved to prescribed locations. On exit, this array contains no useful information. B (input/output) DOUBLE PRECISION array, dimension (N,M) On entry, this array must contain the N-by-M input/state matrix B. On exit, this array contains no useful information. F (output) DOUBLE PRECISION array, dimension (M,N) The state feedback matrix F which assigns one pole or two poles of the closed-loop matrix A + B*F. If N = 2 and the pair (A,B) is not controllable (INFO = 1), then F(1,1) and F(1,2) contain the elements of an orthogonal rotation which can be used to remove the uncontrollable part of the pair (A,B).Tolerances
TOL DOUBLE PRECISION The absolute tolerance level below which the elements of A and B are considered zero (used for controllability test).Workspace
DWORK DOUBLE PRECISION array, dimension (M)Error Indicator
INFO INTEGER = 0: successful exit; = 1: if uncontrollability of the pair (A,B) is detected.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None