| Products & Services | Industries | Academia | Support | User Community | Company |
| Download Product Updates | | | Get Pricing | | | Trial Software |
| Documentation → Control System Toolbox |
| Contents | Index |
| Learn more about Control System Toolbox |
[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')
[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
L=eig(A-B*G,E)
[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
The Frobenius norm of the relative residual if 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.
Given
![]()
you can solve the Riccati equation
![]()
by
a = [-3 2;1 1] b = [0 ; 1] c = [1 -1] r = 3 [x,l,g] = care(a,b,c'*c,r)
This yields the solution
x
x =
0.5895 1.8216
1.8216 8.8188
You can verify that this solution is indeed stabilizing by comparing the eigenvalues of a and a-b*g.
[eig(a) eig(a-b*g)]
ans =
-3.4495 -3.5026
1.4495 -1.4370
Finally, note that the variable l contains the closed-loop eigenvalues eig(a-b*g).
l l = -3.5026 -1.4370
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)
care implements the algorithms described
in [1]. It works with the Hamiltonian
matrix when R is well-conditioned and
; otherwise it
uses the extended Hamiltonian pencil and QZ algorithm.
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
![]()
[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
![]() | canon | chgunits | ![]() |

Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.
| © 1984-2009- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |