Does the input matrix R in the CARE function have to non-singular? How do I solve Ricatti equation with a singular R in Control System Toolbox?

2 views (last 30 days)
I am trying to solve a Continuous-time Algebraic Riccati Equation using the CARE function in the Control Systems Toolbox. I use the form:
[X,L,G] = care(A,B,Q,R,S,E)
specifying the A,B,Q,R,S and E matrices. In the documentation for the CARE function, it mentions the condition R > 0 for the A-B system to be stabilizable and hence for the existence of a solution to the Riccati equation.
Theoretically, there can be cases where R is singular and yet there is a solution to the Ricatti equation. But in the code of the CARE function, there is a check for singularity of R and the function gives an error if R is singular.
Why is the singularity condition not specified in the documentation and how do I solve the Ricatti equation for a singular R?

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 27 Jun 2009
It is mentioned in the documentation that the condition R > 0 must be satisfied for the A-B system to be stabilizable. If R > 0, i.e. symmetric positive definite, then R cannot be singular since all its eigen values are strictly positive. Hence the conditions R > 0 and R is non-singular are equivalent. It is isn't explicitly mentioned in the documentation but they mean the same thing and hence the check for singularity in the code is an expected behavior.
To solve the case where R is singular and yet the solution to the Ricatti equation exists, please refer to the GCARE function. The CARE function is only meant for the more usual case of non-singular R where as GCARE can handle the exception cases.

More Answers (0)

Categories

Find more on Matrix Computations in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!