This is documentation for Mathematica 8, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.2)

RiccatiSolve

RiccatiSolve
gives the matrix that is the stabilizing solution of the continuous algebraic Riccati equation .
RiccatiSolve
solves the equation .
  • In , denotes the conjugate transpose.
  • The equation has a unique, symmetric, positive semidefinite solution if is stabilizable, is detectable, , and . Consequently, all eigenvalues of the matrix are negative and the solution is stabilizing.
  • The solution is positive definite when is controllable and is observable.
  • The eigenvalues of the Hamiltonian matrix must not contain any symbolic expressions.
"Eigensystem"use eigenvalue decomposition
"Schur"use Schur decomposition
  • By default, eigenvalue decomposition is used to obtain the solution.
  • The setting Method works only with approximate numerical matrices.
Solve a continuous algebraic Riccati equation:
Verify the solution:
Solve a continuous algebraic Riccati equation:
In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=
Verify the solution:
In[3]:=
Click for copyable input
Out[3]=
Solve a continuous Riccati equation:
Solve a Riccati equation with state-control coupling:
Solve the Riccati equation by extracting appropriate matrices from a state-space model object:
The eigenvalue decomposition method can be used for both exact and inexact systems :
For inexact systems, Schur decomposition may also be used:
Compute the cost associated with an optimal trajectory for a linearized inverted pendulum:
Obtain the cost by numerical integration:
Track the "cost to go" at each instant along the optimal trajectory:
Compute an optimal state-feedback gain that guarantees that all closed-loop poles are to the left of :
The closed-loop poles without any prescribed degree of stability:
Compute the minimum error covariance for a Kalman estimator:
RiccatiSolve is equivalent to RiccatiSolve {a-b.Inverse[r].ConjugateTranspose[p], b}, {q-p.Inverse[r].ConjugateTranspose[p], r}]:
If is stabilizable and is detectable, and q=Transpose[g].g, then the solution to the Riccati equation is positive semidefinite:
If is controllable and is observable, and q=Transpose[g].g, then the solution to the Riccati equation is positive definite:
The eigenvalues of the Hamiltonian matrix are pairs of the form :
and are similar matrices:
The Hamiltonian matrix must satisfy the stability and complementarity property to obtain a stabilizing solution to the Riccati equation:
Stability property:
Complementarity property:
The stabilizing solution:
The eigenvalues of the feedback system with are the stable eigenvalues of the Hamiltonian matrix:
Compute optimal state feedback gains using RiccatiSolve:
Use LQRegulatorGains to compute the same result directly:
Compute optimal output feedback gains using RiccatiSolve:
LQOutputRegulatorGains gives the same result:
Compute optimal estimator gains using RiccatiSolve:
Use LQEstimatorGains to compute this result directly:
If is not stabilizable and is not detectable, then the Riccati equation with has no stabilizing solution:
The Schur decomposition method works only with approximate numerical matrices:
New in 8