Solving continuous algebraic Riccati equation using MATLAB

680 Views Asked by At

I'm working on passivity preserving techniques for frequency weighted model order reduction. In my case I have to solve an algebraic Riccati equation using MATLAB. But in MATLAB function reference the equation must be something like this: $$A^TX+XA-XBB^TX+Q =0$$ but my equation is something like this:$$A^TX+XA+XBB^TX+Q =0$$ I have to use "care" command of MATLAB but I'm having difficulty here. Any help would be appreciated.

1

There are 1 best solutions below

4
On BEST ANSWER

By multiplying your equation with $-1$ we get \begin{aligned} A^TX+XA+XBB^TX+Q &= 0 \implies\\ -A^TX-XA -XBB^TX -Q &= 0 \implies\\ A^T(-X)+(-X)A -(-X)BB^T(-X) -Q &= 0 \end{aligned}

Hence you can solve $$A^T Y +YA-YBB^TY+R=0 $$ where $Y = -X$ (hence, after solving for $Y$ you need to reverse its sign to get $X$) and $R = -Q$.

(This is assuming that there are not some requirements on the matrices that are invalidated when reversing the sign. It's been a while since I worked on Riccati equations)