| Control System Toolbox | ![]() |
Solve continuous-time algebraic Riccati equations
Syntax
[X,L,G] = care(A,B,Q) [X,L,G] = care(A,B,Q,R,S,E) [X,L,G,report] = care(A,B,Q,...) [X1,X2,D,L] = care(A,B,Q,...,'factor')
Description
[X,L,G] = care(A,B,Q) computes the unique solution X of the continuous-time algebraic Riccati equation
The care function also returns the gain matrix,
.
[X,L,G] = care(A,B,Q,R,S,E) solves the more general Riccati equation
When omitted, R, S, and E are set to the default values R=I, S=0,and E=I. Along with the solution X, care returns the gain matrix
and a vector L of closed-loop eigenvalues, where
[X,L,G,report] = care(A,B,Q, ...) returns a diagnosis report with:
1 when the associated Hamiltonian pencil has eigenvalues on or very near the imaginary axis (failure)
2 when there is no finite stabilizing solution X
X exists and is finite.
This syntax does not issue any error message when X fails to exist.
[X1,X2,D,L] = care(A,B,Q,...,'factor') returns two matrices X1, X2 and a diagonal scaling matrix D such that X = D*(X2/X1)*D.
The vector L contains the closed-loop eigenvalues. All outputs are empty when the associated Hamiltonian matrix has eigenvalues on the imaginary axis.
Example 1
you can solve the Riccati equation

You can verify that this solution is indeed stabilizing by comparing the eigenvalues of a and a-b*g.
Finally, note that the variable l contains the closed-loop eigenvalues eig(a-b*g).
Example 2
To solve the
-like Riccati equation
rewrite it in the care format as
You can now compute the stabilizing solution
by
B = [B1 , B2] m1 = size(B1,2) m2 = size(B2,2) R = [-g^2*eye(m1) zeros(m1,m2) ; zeros(m2,m1) eye(m2)] X = care(A,B,C'*C,R)
Algorithm
care implements the algorithms described in [1]. It works with the Hamiltonian matrix when
is well-conditioned and
; otherwise it uses the extended Hamiltonian pencil and QZ algorithm.
Limitations
The
pair must be stabilizable (that is, all unstable modes are controllable). In addition, the associated Hamiltonian matrix or pencil must have no eigenvalue on the imaginary axis. Sufficient conditions for this to hold are
detectable when
and
, or
References
[1] Arnold, W.F., III and A.J. Laub, "Generalized Eigenproblem Algorithms and Software for Algebraic Riccati Equations," Proc. IEEE, 72 (1984),
pp. 1746-1754.
See Also
dare Solve discrete-time Riccati equations
lyap Solve continuous-time Lyapunov equations
| canon | chgunits | ![]() |
© 1994-2005 The MathWorks, Inc.