Main Content


(Not recommended) Generalized solver for continuous-time algebraic Riccati equation

gcare is not recommended. Use icare instead. For more information, see Compatibility Considerations.


[X,L,report] = gcare(H,J,ns)
[X1,X2,D,L] = gcare(H,...,'factor')


[X,L,report] = gcare(H,J,ns) computes the unique stabilizing solution X of the continuous-time algebraic Riccati equation associated with a Hamiltonian pencil of the form


The optional input ns is the row size of the A matrix. Default values for J and ns correspond to E = I and R = [ ].

Optionally, gcare returns the vector L of closed-loop eigenvalues and a diagnosis report with value:

  • -1 if the Hamiltonian pencil has jw-axis eigenvalues

  • -2 if there is no finite stabilizing solution X

  • 0 if a finite stabilizing solution X exists

This syntax does not issue any error message when X fails to exist.

[X1,X2,D,L] = gcare(H,...,'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.

Version History

Introduced before R2006a

expand all

Not recommended starting in R2019a

See Also