Can You Reformulate a Riccati Equation for Standard Solver Compatibility?

  • Context: Graduate 
  • Thread starter Thread starter widemanzhao
  • Start date Start date
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
2 replies · 6K views
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
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...