【Matlab】利用 LMI 解矩阵不等式方程
文章目錄
- 解決步驟
- 解決時遇到的問題
- 1 矩陣負定
- 2 公式(1)如何轉(zhuǎn)化為(2)
- 3 根據(jù)公式(2)構(gòu)建 LMI 程序
解決步驟
利用 LMI 工具箱解如下矩陣不等式:
PA+ATP?PBBTP+βP<0(1)PA + A^\text{T}P - P B B^\text{T} P + \beta P < 0 \tag{1}PA+ATP?PBBTP+βP<0(1)
等價于如下矩陣形式:
(ATP+PA+βP?PBBTP?I)<0(2)\left(\begin{matrix} A^\text{T}P + PA +\beta P & -PB \\ B^\text{T}P & -I \\ \end{matrix}\right) < 0 \tag{2}(ATP+PA+βPBTP??PB?I?)<0(2)
之所以要轉(zhuǎn)換成上述矩陣(2),我猜測是因為沒有辦法構(gòu)建 PBBTPPBB^\text{T}PPBBTP 這部分。
先給出代碼如下
clear clcA = [0 0 0 1 0 00 0 0 0 1 00 0 0 0 0 10 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0]; B = [0 0 0 1 0 00 0 0 0 1 00 0 0 0 0 1]'; beta = 3;setlmis([]) P = lmivar(2, [6 6]);lmiterm([1 1 1 P], 1, A, 's') lmiterm([1 1 1 P], beta, 1) lmiterm([1 1 2 P], 1, -B) lmiterm([1 2 1 P], B', 1) lmiterm([1 2 2 0], -1)lmis1 = getlmis;% solve [tmin, xfeas] = feasp(lmis1); P = dec2mat(lmis1, xfeas, P)結(jié)果為:
P =-0.6607 0 0 0.2202 0 00 -0.6607 0 0 0.2202 00 0 -0.6607 0 0 0.22020.2202 0 0 -0.8076 0 00 0.2202 0 0 -0.8076 00 0 0.2202 0 0 -0.8076驗證一下特征值:
>> eig(P*A + A'*P - P*B*B'*P + beta*P)ans =-1.9822-2.6829-1.9822-2.6829-2.6829-1.9822解決時遇到的問題
1 矩陣負定
在矩陣中小于號 <<< 主要表示矩陣負定,矩陣負定可以通過判斷奇數(shù)階順序主子式小于零,和偶數(shù)階順序主子式大于零來判斷,這里附一張例題的圖。
更多矩陣負定可以參見百度百科的解釋。
2 公式(1)如何轉(zhuǎn)化為(2)
下面是關(guān)于公示(1)為什么能轉(zhuǎn)化為(2)的過程。
所求式子為:
PA+ATP?PBBTP+βP<0(1)PA + A^\text{T}P - P B B^\text{T} P + \beta P < 0 \tag{1}PA+ATP?PBBTP+βP<0(1)
轉(zhuǎn)換為:
(ATP+PA+βP?PBBTP?I)<0(2)\left(\begin{matrix} A^\text{T}P + PA +\beta P & -PB \\ B^\text{T}P & -I \\ \end{matrix}\right) < 0 \tag{2}(ATP+PA+βPBTP??PB?I?)<0(2)
對(2)按照負定拆解一下:
(ATP+PA+βP)(?I)?(?PB)(BTP)>0(A^\text{T}P + PA +\beta P)(-I)-(-PB)(B^\text{T}P) \red{>} 0(ATP+PA+βP)(?I)?(?PB)(BTP)>0
注意,這里應(yīng)該是 >\red{>}> 零。
化簡一下公式:
(ATP+PA+βP)(?I)?(?PB)(BTP)>0(ATP+PA+βP)+(?PB)(BTP)<0ATP+PA+βP?PBBTP<0\begin{aligned} (A^\text{T}P + PA +\beta P)(-I)-(-PB)(B^\text{T}P) &\red{>} 0 \\ (A^\text{T}P + PA +\beta P)+(-PB)(B^\text{T}P) &\blue{<} 0 \\ A^\text{T}P + PA +\beta P - PB B^\text{T}P &\blue{<} 0 \end{aligned}(ATP+PA+βP)(?I)?(?PB)(BTP)(ATP+PA+βP)+(?PB)(BTP)ATP+PA+βP?PBBTP?>0<0<0?
即等價于公式(1)。
3 根據(jù)公式(2)構(gòu)建 LMI 程序
根據(jù)公式(2)構(gòu)建 LMI 程序時,不需要考慮負定的問題,程序會自動處理。
(ATP+PA+βP?PBBTP?I)<0(2)\left(\begin{matrix} A^\text{T}P + PA +\beta P & -PB \\ B^\text{T}P & -I \\ \end{matrix}\right) < 0 \tag{2}(ATP+PA+βPBTP??PB?I?)<0(2)
例如矩陣塊的第一部分,正確構(gòu)建代碼為:
lmiterm([1 1 1 P], 1, A, 's') lmiterm([1 1 1 P], beta, 1)而不是下邊的錯誤形式:\red{錯誤形式}:錯誤形式:
lmiterm([-1 1 1 P], 1, A, 's') lmiterm([-1 1 1 P], beta, 1)因為你構(gòu)建的是一個矩陣,也就是一個元素,而這個元素整體都在小于號的左邊,所以在 limterm([EquationNumber, 1, 1, P], A, B) 中的公式編號 EquationNumber 應(yīng)該用正數(shù)。
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的【Matlab】利用 LMI 解矩阵不等式方程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Paper】2021_Robust N
- 下一篇: 【Paper】2020_Event-Tr