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