###
Pole placement for systems of order 1 or 2

**[Specification]**
**[Arguments]**
**[Method]**
**[References]**
**[Comments]**
**[Example]**
**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**
None

**Example**
**Program Text**

None

**Program Data**
None

**Program Results**
None

**Return to Supporting Routines index**