日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Matlab】利用 LMI 解矩阵不等式方程

發布時間:2025/4/5 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Matlab】利用 LMI 解矩阵不等式方程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 解決步驟
  • 解決時遇到的問題
    • 1 矩陣負定
    • 2 公式(1)如何轉化為(2)
    • 3 根據公式(2)構建 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)

之所以要轉換成上述矩陣(2),我猜測是因為沒有辦法構建 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)

結果為:

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 矩陣負定

在矩陣中小于號 <<< 主要表示矩陣負定,矩陣負定可以通過判斷奇數階順序主子式小于零,和偶數階順序主子式大于零來判斷,這里附一張例題的圖。

更多矩陣負定可以參見百度百科的解釋。

2 公式(1)如何轉化為(2)

下面是關于公示(1)為什么能轉化為(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)

轉換為:
(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

注意,這里應該是 >\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 根據公式(2)構建 LMI 程序

根據公式(2)構建 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)

例如矩陣塊的第一部分,正確構建代碼為:

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)

因為你構建的是一個矩陣,也就是一個元素,而這個元素整體都在小于號的左邊,所以在 limterm([EquationNumber, 1, 1, P], A, B) 中的公式編號 EquationNumber 應該用正數。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的【Matlab】利用 LMI 解矩阵不等式方程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。