查看“︁代數Riccati方程”︁的源代码
←
代數Riccati方程
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
'''代數Riccati方程'''(algebraic Riccati equation)是[[最优控制]]的非線性方程,和[[連續時間]]或是離散時間下,無限時間(infinite-horizon)的最优控制有關。 標準的代數Riccati方程如下: 連續時間代數Riccati方程(CARE): : <math>A^T P + P A - P B R^{-1} B^T P + Q = 0 \, </math> 離散時間代數Riccati方程(DARE): : <math>P = A^T P A -(A^T P B)(R + B^T P B)^{-1}(B^T P A) + Q.\,</math> ''P''是未知數的''n''×''n''對稱矩陣,''A''、''B''、''Q''及''R''是已知[[实数|实]]係數矩陣。 一般而言此方程式有許多的解,不過若有存在穩定解的話,希望可以找到穩定解。 ==名稱的起源== 此方程名稱中有Riccati,是因為和[[Riccati方程]]的關係。連續時間代數Riccati方程(CARE)可以由相關矩陣值的Riccati微分方程的非時變解來驗證。離散時間代數Riccati方程(DARE)可以由矩陣值的Riccati微分方程的非時變解來驗證(類似離散時間LQR下的Riccati微分方程)。 ==離散時間的代數Riccati方程== 在無限時間的最佳控制問題中,關注的是一些變數在相當時間之後的值,因此需在現在選定控制變數的值,讓系統在之後的時間都在最佳狀態下運作。控制變數在任意時間下的最佳值可以用Riccati方程的解以及狀態變數當時的觀測值求得。若觀測變數及控制變數都不只一個,Riccati方程就會是[[矩阵]]方程。 代數Riccati方程可以決定無限時間下非時變[[LQR控制器]]的解,以及無限時間下非時變[[LQG控制]]的解。這兩個是[[控制理论]]中的基礎問題。 典型的離散時間LQR問題,是要最小化以下的函數 :<math>\sum_{t=1}^T (y_t^T Qy_t + u_t^T Ru_t)</math> 其狀態方程如下 :<math>y_t = Ay_{t-1} + Bu_t,</math> 其中 ''y'' 是 ''n'' × 1 的狀態變數向量,''u'' 是 ''k'' × 1 的控制變數向量,''A'' 是 ''n'' × ''n'' 的狀態遞移矩陣,''B'' 是 ''n'' × ''k'' 的控制係數矩陣,''Q'' (''n'' × ''n'') 是對應[[正定矩陣|半正定]]狀態[[损失函数]]矩陣,''R'' (''k'' × ''k'') 是對應正定的控制損失函數矩陣。 [[貝爾曼方程|從最後時間往前的推導]]可以找到每一個時間的最佳控制解<ref>{{cite book |last=Chow |first=Gregory |title=Analysis and Control of Dynamic Economic Systems |url=https://archive.org/details/analysiscontrolo0000chow_o5u6 |location=New York |publisher=John Wiley & Sons |year=1975 |isbn=0-471-15616-7 }}</ref> :<math>u_t^*=-(B^TP_tB+R)^{-1}(B^TP_tA)y_{t-1},</math> 其中對應正定cost-to-go矩陣 ''P'' 會依下式,配合<math>P_T = Q</math>,以逆向時間推導 : <math> P_{t-1} = Q+A^TP_tA - A^TP_tB(B^TP_tB+R)^{-1}B^TP_tA, \,</math> 這個就是離散時間的代數Riccati方程。''P''的穩態解和和''T''趨近無限大時的無限時間問題有關,可以將動態方程反覆迭代直到收斂,來求得''P''的穩態解,之後再將動態方程中的時間標註移除,來確認穩態解是否正確。 ==求解== 若代數Riccati方程存在穩定解,求解器一般會設法找到唯一的穩定解。穩定解的意思是指用此解控制相關的LQR系統,可以使閉迴路的系統穩定。 針對CARE,其控制律為 :<math>K = R^{-1} B^T P</math> 閉迴路遞移矩陣為 : <math>A - BK = A - B R^{-1} B^T P</math> 其穩定的充份必要條件是所有的特徵值都有負的實部。 針對DARE,其控制律為 : <math>K = (R + B^T P B)^{-1} B^T P A</math> 閉迴路遞移矩陣為 : <math>A - BK = A - B (R + B^T P B)^{-1} B^T P A</math> 其穩定的充份必要條件是所有的特徵值在複數平面的單位圓內。 代數Riccati方程的解可以用Riccati方程的的迭代或是矩陣因式分解求得。離散時間問題的一種迭代方式是由有限時間問題下的動態Riccati方程,每一次迭代時,矩陣中的值都是從最終時間往前一段有限時間內的最佳解,若進行無限長的迭代。就會分斂到特定矩陣,是無限時間內的最佳解。 針對大型系統,也可以用找特徵分解的方式求解。針對CARE,可以定義[[漢彌爾頓矩陣]] : <math> Z = \begin{pmatrix} A & -B R^{-1} B^T \\ -Q & -A^T \end{pmatrix} </math> 因為<math>\scriptstyle Z </math>是漢彌爾頓矩陣,若在虛軸上沒有特徵值,則會有恰好一半的特徵值會有負的實部。若定義<math>\scriptstyle 2n \times n</math>矩陣,其纵排(column)形成對應子空間的基底,表示為區塊矩陣的形式,如下所示 : <math> \begin{pmatrix} U_1 \\ U_2 \end{pmatrix} </math> 則 : <math>P = U_2 U_1^{-1}</math> 是Riccati方程的解。而且<math>\scriptstyle A - B R^{-1} B^T P</math>的特徵值即為<math>\scriptstyle Z</math>特徵值中有負實部的特徵值。 針對DARE,若<math>A</math>是可逆矩陣,可以定義[[辛矩陣]] : <math> Z = \begin{pmatrix} A + B R^{-1} B^T (A^{-1})^T Q & -B R^{-1} B^T (A^{-1})^T \\ -(A^{-1})^T Q & (A^{-1})^T \end{pmatrix} </math> 因為<math>\scriptstyle Z </math>是辛矩陣,若在單位圓圓周上沒有特徵值,則會有恰好一半的特徵值會在單位圓內。若定義<math>\scriptstyle 2n \times n</math>矩陣,其纵排(column)形成對應子空間的基底,表示為區塊矩陣的形式,如下所示 則 : <math>P = U_2 U_1^{-1}</math> 是Riccati方程的解。而且<math>\scriptstyle A - B (R + B^T P B)^{-1} B^T P A</math>的特徵值即為<math>\scriptstyle Z</math>特徵值中,在單位圓內的特徵值。 ==相關條目== *[[李亞普諾夫方程]] ==參考資料== {{reflist}} *{{citation|author1=Peter Lancaster|author2=Leiba Rodman|title=Algebraic Riccati equations|publisher=<!-- [[Oxford University Press]] -->[[牛津大學出版社]]|pages=504|year=1995|isbn=0-19-853795-6}} *{{citation|author1=Alan J. Laub|title=A Schur method for solving algebraic RIccati equations|url=http://dspace.mit.edu/bitstream/handle/1721.1/1301/R-0859-05666488.pdf;jsessionid=8CCF9A002524048AFD0F91D1F15EB6AE?sequence=1|accessdate=2020-02-21|archive-date=2016-10-24|archive-url=https://web.archive.org/web/20161024222530/http://dspace.mit.edu/bitstream/handle/1721.1/1301/R-0859-05666488.pdf;jsessionid=8CCF9A002524048AFD0F91D1F15EB6AE?sequence=1|dead-url=no}} ==外部連結== * [https://www.mathworks.com/access/helpdesk/help/toolbox/control/ref/icare.html CARE solver help of MATLAB Control toolbox.] * [https://www.mathworks.com/access/helpdesk/help/toolbox/control/ref/idare.html DARE solver help of MATLAB Control toolbox.] * [https://web.archive.org/web/20130709010849/http://calculator-fx.com/calculator/linear-algebra/solve-riccati-equation Online CARE solver for arbitrary sized matrices.] * [https://python-control.readthedocs.io/en/latest/control.html#matrix-computations Python CARE and DARE solvers.]{{Wayback|url=https://python-control.readthedocs.io/en/latest/control.html#matrix-computations |date=20180810022605 }} * [https://reference.wolfram.com/mathematica/ref/RiccatiSolve.html Mathematica function to solve the continuous-time algebraic Riccati equation.]{{Wayback|url=https://reference.wolfram.com/mathematica/ref/RiccatiSolve.html |date=20140320214739 }} * [https://reference.wolfram.com/mathematica/ref/DiscreteRiccatiSolve.html Mathematica function to solve the discrete-time algebraic Riccati equation.]{{Wayback|url=https://reference.wolfram.com/mathematica/ref/DiscreteRiccatiSolve.html |date=20140320221947 }} [[Category:矩陣]] [[Category:方程]] [[Category:最佳控制]]
该页面使用的模板:
Template:Citation
(
查看源代码
)
Template:Cite book
(
查看源代码
)
Template:Reflist
(
查看源代码
)
Template:Wayback
(
查看源代码
)
返回
代數Riccati方程
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息