Can You Reformulate a Riccati Equation for Standard Solver Compatibility?

  • Context: Graduate 
  • Thread starter Thread starter widemanzhao
  • Start date Start date
Click For Summary
SUMMARY

The discussion focuses on reformulating a Riccati equation for compatibility with standard solvers. The original equation presented is X*A + A'*X + X*(gamma*B1*B1' - B2*inv(R)*B2')*X + Q = 0. The user seeks to transform the term (gamma*B1*B1' - B2*inv(R)*B2') into a form suitable for the "care" function, specifically B*B'. A solution involves defining a new matrix \hat B, which incorporates the square roots of gamma and R, allowing for successful application of the "care" function.

PREREQUISITES
  • Understanding of Riccati equations in control theory
  • Familiarity with MATLAB functions such as "care" and "chol"
  • Knowledge of matrix decomposition techniques
  • Basic concepts of linear quadratic (LQ) theory
NEXT STEPS
  • Study the implementation of the "care" function in MATLAB for solving Riccati equations
  • Learn about matrix decomposition methods, particularly Cholesky decomposition
  • Explore the principles of linear quadratic regulator (LQR) design
  • Investigate the properties of positive definite matrices and their role in control theory
USEFUL FOR

Control engineers, researchers in systems and control theory, and anyone involved in solving Riccati equations for optimal control problems will benefit from this discussion.

widemanzhao
Messages
1
Reaction score
0
Here is a Riccati equation:
X*A + A'*X +X*(gamma*B1*B1' - B2*inv(R)*B2')*X + Q = 0, where A, gamma, B1, B2, R are given.
The function "care" can solve the problem like "A'*X + X*A - X*B*B'*X + Q = 0", the problem is: how can I change the term "(gamma*B1*B1' - B2*inv(R)*B2')" into "B*B'"?
I try to use the function "chol" to decompose the term "(gamma*B1*B1' - B2*inv(R)*B2')" in order to get B*B', but it does not work out with the message "chol : Matrix must be positive definite".
How can I solve that Riccati equation?
Thanks in advance!
 
Physics news on Phys.org
The quadratic form [itex]XBB^TX[/itex] is negated. The term [itex]X(\gamma B_1 B_1{}^T - B_2 R^{-1}B_2{}^T)X[/itex] is not.
 
If you write a little bit more prettier, you can define a new B matrix as
[itex] \hat B \hat B^T = \left[\begin{array}{cc}B_1 &B_2\end{array}\right]\left[\begin{array}{cc}\gamma &0\\0 &R^{-1}\end{array}\right]\left[\begin{array}{cc}B_1 &B_2\end{array}\right]^T[/itex]
Now, your [tex]\hat B[/tex] is going to be

[itex] \hat B = \left[\begin{array}{cc}B_1 &B_2\end{array}\right]\left[\begin{array}{cc}\sqrt{\gamma} &0\\0 &\sqrt{R^{-1}}\end{array}\right][/itex]

The squareroot of R exist anyway, because you have to choose as such from LQ theory anyway. You can now plug this new B matrix as an argument to your "care" function.

Edit: oops mixed up the minus sign... And another argument bites the dust...
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 10 ·
Replies
10
Views
3K
  • · Replies 9 ·
Replies
9
Views
7K
  • · Replies 30 ·
2
Replies
30
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
Replies
3
Views
2K
  • · Replies 6 ·
Replies
6
Views
5K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 10 ·
Replies
10
Views
3K