趙海濱 顏世玉



摘 ?要:對二維Duffing混沌系統進行數值仿真和鎮定控制。通過SciPy庫中的odeint進行微分方程求解,采用wxPython建立圖形用戶界面,并采用Matplotlib進行繪圖。對Duffing混沌的參數進行設置,顯示狀態變量的二維相圖和響應曲線。采用滑模控制器進行Duffing混沌鎮定控制,顯示狀態變量、滑模面和滑??刂破黜憫€。
關鍵詞:混沌系統;wxPython;仿真實驗;Python語言
中圖分類號:TP273 文獻標志碼:A ? ? ? ? 文章編號:2095-2945(2020)31-0016-02
Abstract: Numerical simulation and stabilization control of two-dimensional Duffing chaotic system are carried out. The differential equation is solved by odeint in SciPy library, the graphical user interface is established by wxPython, and the drawing is done by Matplotlib. The parameter of Duffing chaotic systemisset to display the two-dimensional phase diagram and response curve of state variables. Sliding mode controller is used to stabilize Duffing chaotic system, and the response curves of state variables, sliding surface and sliding mode controller are displayed.
Keywords: chaotic system; wxPython; simulation experiment; Python language
混沌系統廣泛存在于自然界和人類社會,在很多領域都有著廣泛的應用,例如圖形加密、人工智能和保密通信等[1]。Duffing混沌是典型的二階非線性系統,結構簡單,采用單一的控制器就能夠實現系統的鎮定控制[2]。通過滑模面和指數趨近律設計滑??刂破鱗3],并采用滑??刂破鬟M行Duffing混沌系統的鎮定控制。
本文采用Python語言對Duffing混沌系統進行建模仿真,并設計滑??刂破鬟M行系統的鎮定控制。采用Python語言編程實現,通過SciPy庫的odeint函數進行微分方程求解,通過wxPython建立圖形用戶界面,采用Matplotlib進行數據可視化[4]。設計的滑??刂破髂軌蜻M行Duffing混沌系統的鎮定控制,狀態變量漸進收斂到零。
1 Duffing混沌的滑??刂?/p>
Duffing混沌是典型的二階非線性系統,狀態方程表示為
其中,x1和x2為系統的狀態變量,t為時間,a、b和c為常數。當a=-1,b=0.25,c=0.3時,系統處于混沌狀態。
設計滑??刂破鬟M行Duffing混沌系統的鎮定控制。帶有控制輸入的受控Duffing系統,表示為:
其中,u為設計的滑??刂破鳌;C嬖O計為:
s=x2+k1x1 ? (3)
其中,k1為大于零的常數。
在滑??刂破髟O計中,采用的指數趨近律為:
(4)
其中,k2和k3為大于零的常數。
采用指數趨近律時,滑??刂破髟O計為:
(5)
其中,s為滑模面,sgn(·)為符號函數。為了削弱抖振,采用雙曲正切函數tanh(·)代替符號函數。
2 采用wxPython建立GUI界面
wxPython是Python語言的GUI圖形庫,可以方便的創建GUI用戶界面。wxPython是GUI庫wxWidgets的Python封裝,是一款優秀的開源軟件,具有非常有限的跨平臺能力。采用SciPy庫中的odeint函數進行微分方程組的求解。odeint函數至少需要3個變量,分別是微分方程函數、初始值和時間變量。Matplotlib是Python語言的優秀繪圖庫,非常方便進行數據的可視化。采用Matplotlib進行圖形的繪制。
根據Duffing混沌系統的狀態方程,進行仿真,并顯示狀態變量的二維相圖和響應曲線。采用設計的滑模控制器進行Duffing混沌的鎮定控制,狀態變量漸進收斂到零。在wxPython庫中選擇wx.Notebook進行設計,可以通過單擊選項卡的標題,在2個頁面之間進行切換。采用wxPython設計的主界面,如圖1所示。
3 仿真實驗
在軟件的主界面中,單擊按鈕“Duffing混沌參數”,會出現如圖2所示的對話框,對Duffing混沌系統的參數和初始狀態進行設置。
在圖2中,對Duffing混沌系統的參數和初始狀態進行設置后,單擊按鈕“確定”,進行混沌仿真。Duffing混沌仿真后,可以顯示狀態變量的二維相圖和響應曲線,狀態變量的二維相圖,如圖3所示。
圖3 狀態變量的二維相圖
在軟件的主界面中,選擇選項卡“Duffing混沌鎮定控制”,采用滑模控制器進行Duffing混沌系統的鎮定控制。單擊按鈕“鎮定控制參數”,會出現如圖4所示的對話框,對控制器中的參數進行設置。
圖4 控制參數設置對話框
在圖4中,單擊按鈕“確認”,采用滑模控制器進行Duffing混沌的鎮定控制。Duffing混沌的鎮定控制,可以顯示狀態變量、滑模面和滑??刂破鞯捻憫€。Duffing混沌鎮定控制時,狀態變量的響應曲線,如圖5所示,狀態變量漸進收斂到零。
圖5 控制器的響應曲線
4 結束語
本文采用wxPython設計了Duffing混沌仿真和控制實驗系統,能夠進行Duffing混沌系統的仿真和鎮定控制。仿真實驗系統可以對系統參數和控制參數進行設置,仿真結果采用Matplotlib進行圖形的繪制,非常的形象和直觀,對實驗教學有一定的參考價值。
參考文獻:
[1]孫克輝.混沌保密通信原理與技術[M].北京:清華大學出版社,2015.
[2]石建飛,張艷龍,王麗,等.Duffing系統的雙參數分岔與全局特性分析[J].噪聲與振動控制,2016,36(06):32-37.
[3]劉金琨.滑模變結構控制MATLAB仿真(第3版)[M].北京:清華大學出版社,2015.
[4]張健,張良均.Python編程基礎[M].北京:人民郵電出版社,2018.