我的目標是解決方程稱爲Lyapunov方程,即發現在以下等式x的系統:求解系統
A*X + X*transpose(A) +Q = 0
加上另一個線性約束是X*v = 0
其中所有矩陣A,X,Q都是n×n矩陣,v是長度爲n的向量。
如何在matlab中找到這樣的X?
我的目標是解決方程稱爲Lyapunov方程,即發現在以下等式x的系統:求解系統
A*X + X*transpose(A) +Q = 0
加上另一個線性約束是X*v = 0
其中所有矩陣A,X,Q都是n×n矩陣,v是長度爲n的向量。
如何在matlab中找到這樣的X?
在Matlab中求解李雅普諾夫方程非常簡單。無論是連續和離散Lyapunov方程具有一個內置的功能:
連續Lyapunov方程:lyap
(see Matlab documentation here)
離散Lyapunov方程:dlyap
(see Matlab documentation here)
額外注意事項:如果鏈接不起作用,或者您想快速檢查Matlab函數的文檔offlin e,每個內置的Matlab函數都有一個可通過help NameOfTheFunction
訪問的簡短幫助頁面。 此外,通過在Matlab終端中鍵入doc NameOfTheFunction
,還可以通過示例離線檢索網頁上可見的擴展幫助頁面。
鑑於下列連續Lyapunov方程:
A*X + X*transpose(A) + Q = 0
一個穩定A
和正在Matlab將溶液明確Q
被給定爲:
X = lyap(A,Q)
在某些情況下方程略有不同:
A*X + X*B + C = 0
這個等式調用Sylvester方程,並與再解內置在Matlab的Lyapunov函數:
X = lyap(A,B,C)
同樣的模擬解決方案的步驟爲離散的情況下,李亞普諾夫和Sylvester方程看,其中存在略有不同:
A*X*transpose(A) -X + Q = 0 -> X = dlyap(A,Q)
A*X*B - X + C = 0 -> X = dlyap(A,B,C)
常見堆棧溢出約定是在答案中包含樣板解決方案代碼。外部鏈接可能會過期。雖然我同意這種情況在MATLAB官方文檔中不太可能,但一小段代碼確實可以幫助應對閃耀。 –
我會補充一點。 –
@ChristofVermeersch謝謝,我很清楚這一點。然而,lyap是針對矩陣A是滿秩的情況(即A的秩是n)。由於我的矩陣A的排名是n-1 lyap不起作用。但是,添加條件X * v = 0會導致X具有唯一的解決方案。但我在問我該怎麼做? – solver
您是否嘗試過使用Google尋找解算器?我相信你會找到許多有用的網站。如果你仍然有問題,請根據你的發現修改原來的問題,並嘗試。 [我如何問一個好問題?](http://stackoverflow.com/help/how-to-ask) – Arpi