Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

How to solve this Riccati equation?

  1. Jun 16, 2009 #1
    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!
  2. jcsd
  3. Jun 16, 2009 #2

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    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.
  4. Jun 18, 2009 #3
    If you write a little bit more prettier, you can define a new B matrix as
    \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
    Now, your [tex]\hat B[/tex] is going to be

    \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]

    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...
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook