代數Riccati方程

代數Riccati方程（algebraic Riccati equation）是最优控制的非線性方程，和連續時間或是離散時間下，無限時間（infinite-horizon）的最优控制有關。

標準的代數Riccati方程如下：

連續時間代數Riccati方程（CARE）：



離散時間代數Riccati方程（DARE）：



P是未知數的n×n對稱矩陣，A、B、Q及R是已知实係數矩陣。

一般而言此方程式有許多的解，不過若有存在穩定解的話，希望可以找到穩定解。

名稱的起源
此方程名稱中有Riccati，是因為和Riccati方程的關係。連續時間代數Riccati方程（CARE）可以由相關矩陣值的Riccati微分方程的非時變解來驗證。離散時間代數Riccati方程（DARE）可以由矩陣值的Riccati微分方程的非時變解來驗證（類似離散時間LQR下的Riccati微分方程）。

離散時間的代數Riccati方程

在無限時間的最佳控制問題中，關注的是一些變數在相當時間之後的值，因此需在現在選定控制變數的值，讓系統在之後的時間都在最佳狀態下運作。控制變數在任意時間下的最佳值可以用Riccati方程的解以及狀態變數當時的觀測值求得。若觀測變數及控制變數都不只一個，Riccati方程就會是矩阵方程。

代數Riccati方程可以決定無限時間下非時變LQR控制器的解，以及無限時間下非時變LQG控制的解。這兩個是控制理论中的基礎問題。

典型的離散時間LQR問題，是要最小化以下的函數

其狀態方程如下

其中 y 是 n × 1 的狀態變數向量，u 是 k × 1 的控制變數向量，A 是 n × n 的狀態遞移矩陣，B 是 n × k 的控制係數矩陣，Q (n × n) 是對應半正定狀態损失函数矩陣，R (k × k) 是對應正定的控制損失函數矩陣。

從最後時間往前的推導可以找到每一個時間的最佳控制解

其中對應正定cost-to-go矩陣 P 會依下式，配合，以逆向時間推導



這個就是離散時間的代數Riccati方程。P的穩態解和和T趨近無限大時的無限時間問題有關，可以將動態方程反覆迭代直到收斂，來求得P的穩態解，之後再將動態方程中的時間標註移除，來確認穩態解是否正確。

求解
若代數Riccati方程存在穩定解，求解器一般會設法找到唯一的穩定解。穩定解的意思是指用此解控制相關的LQR系統，可以使閉迴路的系統穩定。

針對CARE，其控制律為

閉迴路遞移矩陣為

其穩定的充份必要條件是所有的特徵值都有負的實部。

針對DARE，其控制律為

閉迴路遞移矩陣為

其穩定的充份必要條件是所有的特徵值在複數平面的單位圓內。

代數Riccati方程的解可以用Riccati方程的的迭代或是矩陣因式分解求得。離散時間問題的一種迭代方式是由有限時間問題下的動態Riccati方程，每一次迭代時，矩陣中的值都是從最終時間往前一段有限時間內的最佳解，若進行無限長的迭代。就會分斂到特定矩陣，是無限時間內的最佳解。

針對大型系統，也可以用找特徵分解的方式求解。針對CARE，可以定義漢彌爾頓矩陣

因為是漢彌爾頓矩陣，若在虛軸上沒有特徵值，則會有恰好一半的特徵值會有負的實部。若定義矩陣，其纵排（column）形成對應子空間的基底，表示為區塊矩陣的形式，如下所示

則

是Riccati方程的解。而且的特徵值即為特徵值中有負實部的特徵值。

針對DARE，若是可逆矩陣，可以定義辛矩陣

因為是辛矩陣，若在單位圓圓周上沒有特徵值，則會有恰好一半的特徵值會在單位圓內。若定義矩陣，其纵排（column）形成對應子空間的基底，表示為區塊矩陣的形式，如下所示
則

是Riccati方程的解。而且的特徵值即為特徵值中，在單位圓內的特徵值。

相關條目
李亞普諾夫方程

參考資料

外部連結
 CARE solver help of MATLAB Control toolbox.
 DARE solver help of MATLAB Control toolbox.
 Online CARE solver for arbitrary sized matrices.
 Python CARE and DARE solvers.
 Mathematica function to solve the continuous-time algebraic Riccati equation.
 Mathematica function to solve the discrete-time algebraic Riccati equation.

Category:矩陣
Category:方程
Category:最佳控制