Most of the functions described in this chapter were contributed by A. Scottedward Hodel @email{A.S.Hodel@eng.auburn.edu} and R. Bruce Tenison @email{Bruce.Tenison@eng.auburn.edu}. They have also written a larger collection of functions for solving linear control problems. It is currently being updated for Octave version 2, with snapshots of the sources available from @url{ftp://ftp.eng.auburn.edu/pub/hodel}.
dx/dt = a x + b u y = c x + d u
or a similar discrete-time system.
If the matrices are compatibly dimensioned, then abcddim
returns
Otherwise abcddim
returns n = m = p = -1.
Return the solution, x, of the algebraic Riccati equation
a' * x + x * a - x * b * x + c = 0
for identically dimensioned square matrices a, b, and
c. If b is not square, are
attempts to use
b*b'
instead. If c is not square, are
attempts to use c'*c
) instead.
To form the solution, Laub's Schur method (IEEE Transactions on Automatic Control, 1979) is applied to the appropriate Hamiltonian matrix.
The optional argument opt is passed to the eigenvalue balancing
routine. If it is omitted, a value of "B"
is assumed.
dx/dt = a x + b u
into a discrete time equivalent model
x[k+1] = Ad x[k] + Bd u[k]
via the matrix exponential assuming a zero-order hold on the input and sample time t.
Return the solution, x of the discrete-time algebraic Riccati equation
a' x a - x + a' x b (r + b' x b)^(-1) b' x a + c = 0
for matrices with dimensions:
If c is not square, then the function attempts to use
c'*c
instead.
To form the solution, Laub's Schur method (IEEE Transactions on Automatic Control, 1979) is applied to the appropriate symplectic matrix.
See also Ran and Rodman, Stable Hermitian Solutions of Discrete Algebraic Riccati Equations, Mathematics of Control, Signals and Systems, Volume 5, Number 2 (1992).
The optional argument opt is passed to the eigenvalue balancing
routine. If it is omitted, a value of "B"
is assumed.
x[k+1] = A x[k] + B u[k] y[k] = C x[k] + D u[k]
For example, dgram (a, b)
returns the discrete
controllability gramian and dgram (a', c')
returns
the observability gramian.
x[k+1] = A x[k] + B u[k] + G w[k] y[k] = C x[k] + D u[k] + w[k]
where w, v are zero-mean gaussian noise processes with
respective intensities sigw = cov (w, w)
and
sigv = cov (v, v)
.
If specified, z is cov (w, v)
. Otherwise
cov (w, v) = 0
.
The observer structure is
z[k+1] = A z[k] + B u[k] + k(y[k] - C z[k] - D u[k])
The following values are returned:
x[k+1] = A x[k] + B u[k]
to minimize the cost functional
J = Sum (x' Q x + u' R u)
z omitted or
J = Sum (x' Q x + u' R u + 2 x' Z u)
z included.
The following values are returned:
a x a' - x + b = 0
for square matrices a, b. If b is not square, then the
function attempts to solve either
An Algorithm for Solving the Matrix Equation X =
FXF' + S,
International Journal of Control, Volume 25, Number 5, pages 745--753
(1977); column-by-column solution method as suggested in
Hammerling, Numerical Solution of the Stable, Non-Negative
Definite Lyapunov Equation, IMA Journal of Numerical Analysis, Volume
2, pages 303--323 (1982).
The optional argument tol is a roundoff parameter. If it is
omitted, a value of 2*eps
is used.
Currently, is_controllable
just constructs the controllability
matrix and checks rank.
Return 1 if the pair (a, c) is observable. Otherwise, return 0.
The optional argument tol is a roundoff parameter. If it is
omitted, a value of 2*eps
is used.
dx -- = a x + b u dt y = c x + d u
where w and v are zero-mean gaussian noise processes with respective intensities
sigw = cov (w, w) sigv = cov (v, v)
The optional argument z is the cross-covariance
cov (w, v)
. If it is omitted,
cov (w, v) = 0
is assumed.
Observer structure is dz/dt = A z + B u + k (y - C z - D u)
The following values are returned:
dx -- = A x + B u dt
to minimize the cost functional
infinity / J = | x' Q x + u' R u / t=0
z omitted or
infinity / J = | x' Q x + u' R u + 2 x' Z u / t=0
z included.
The following values are returned:
If a, b, and c are specified, then lyap
returns
the solution of the Sylvester equation
a x + x b + c = 0
If only (a, b)
are specified, then lyap
returns the
solution of the Lyapunov equation
a' x + x a + b = 0
If b is not square, then lyap
returns the solution of either
a' x + x a + b' b = 0
or
a x + x a' + b b' = 0
whichever is appropriate.
The optional argument opt is passed to the eigenvalue balancing
routine. If it is omitted, a value of "B"
is assumed.
Go to the first, previous, next, last section, table of contents.