ml_icare_ric_fac
Continuous-time indefinite Riccati equation solver.
Contents
Syntax
[Z, info] = ml_icare_ric_fac(A, B1, B2, C1) [Z, info] = ml_icare_ric_fac(A, B1, B2, C1, []) [Z, info] = ml_icare_ric_fac(A, B1, B2, C1, [], opts)
[Z, info] = ml_icare_ric_fac(A, B1, B2, C1, E) [Z, info] = ml_icare_ric_fac(A, B1, B2, C1, E, opts)
Description
Computes the low-rank solutions of the standard Riccati equation with indefinite quadratic term
A'*X + X*A + X*(B1*B1' - B2*B2')*X + C1'*C1 = 0
or of the generalized Riccati equation with indefinite quadratic term
A'*X*E + E'*X*A + E'*X*(B1*B1' - B2*B2')*X*E + C1'*C1 = 0
with X = Z*Z', using the Low-Rank Riccati iteration. It is assumed that the eigenvalues of A (or s*E - A) lie in the open left half-plane.
Input
- A - matrix with dimensions n x n in (1) or (2)
- B1 - matrix with dimensions n x m1 in (1) or (2)
- B2 - matrix with dimensions n x m2 in (1) or (2)
- C - matrix with dimensions p x n in (1) or (2)
- E - matrix with dimensions n x n in (2), if empty the standard equation is solved
- opts - structure, containing the following optional entries:
Parameter | Meaning |
AbsTol | nonnegative scalar, tolerance for the absolute error in the last iteration step default: 0 |
CompTol | nonnegative scalar, tolerance for the row compression during the iteration default: 1.0e-02*sqrt(n*eps) |
Info | {0, 1}, used to disable/enable display of verbose status information during iteration steps default: 0 |
careopts | structure, containing the optional parameters for the computation of the continuous-time definite Riccati equations used in every iteration step, see ml_care_nwt_fac default: struct() |
MaxIter | positive integer, maximum number of iteration steps default: 100 |
RelTol | nonnegative scalar, tolerance for the relative error in the last iteration step default: 1.0e+02*n*eps |
StoreLQG | {0, 1}, used to disable/enable storing of low-rank solution factor to the corresponding LQG problem default: 0 |
Z0 | matrix of dimensions n x k, solution factor of the corresponding LQG problem such that X = Z*Z', A'XE + E'XA - E'XB2B2'XE + C'C = 0 default: [] |
Output
- Z - low-rank solution factor of (1) or (2), such that X = Z*Z'
- info - structure, containing the following information:
Entry | Meaning |
AbsErr | vector, containing the absolute error of the solution matrix in each iteration step |
infoCARE | array of structs, containing information about the used Riccati equations solver for every iteration step, see ml_care_nwt_fac |
IterationSteps | number of performed iteration steps |
RelErr | vector, containing the relative error of the solution matrix in each iteration step |
Z_LQG | low-rank solution factor of the corresponding LQG problem |
Reference
A. Lanzon, Y. Feng, B. D. O. Anderson, An iterative algorithm to solve algebraic Riccati equations with an indefinite quadratic term, in: 2007 European Control Conference (ECC), 2007, pp. 3033--3039. https://doi.org/10.23919/ecc.2007.7068239
See Also