趙海濱 顏世玉
摘 ?要:對二維Duffing混沌系統(tǒng)進行數(shù)值仿真和鎮(zhèn)定控制。通過SciPy庫中的odeint進行微分方程求解,采用wxPython建立圖形用戶界面,并采用Matplotlib進行繪圖。對Duffing混沌的參數(shù)進行設(shè)置,顯示狀態(tài)變量的二維相圖和響應(yīng)曲線。采用滑??刂破鬟M行Duffing混沌鎮(zhèn)定控制,顯示狀態(tài)變量、滑模面和滑??刂破黜憫?yīng)曲線。
關(guān)鍵詞:混沌系統(tǒng);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
混沌系統(tǒng)廣泛存在于自然界和人類社會,在很多領(lǐng)域都有著廣泛的應(yīng)用,例如圖形加密、人工智能和保密通信等[1]。Duffing混沌是典型的二階非線性系統(tǒng),結(jié)構(gòu)簡單,采用單一的控制器就能夠?qū)崿F(xiàn)系統(tǒng)的鎮(zhèn)定控制[2]。通過滑模面和指數(shù)趨近律設(shè)計滑??刂破鱗3],并采用滑??刂破鬟M行Duffing混沌系統(tǒng)的鎮(zhèn)定控制。
本文采用Python語言對Duffing混沌系統(tǒng)進行建模仿真,并設(shè)計滑??刂破鬟M行系統(tǒng)的鎮(zhèn)定控制。采用Python語言編程實現(xiàn),通過SciPy庫的odeint函數(shù)進行微分方程求解,通過wxPython建立圖形用戶界面,采用Matplotlib進行數(shù)據(jù)可視化[4]。設(shè)計的滑??刂破髂軌蜻M行Duffing混沌系統(tǒng)的鎮(zhèn)定控制,狀態(tài)變量漸進收斂到零。
1 Duffing混沌的滑??刂?/p>
Duffing混沌是典型的二階非線性系統(tǒng),狀態(tài)方程表示為
其中,x1和x2為系統(tǒng)的狀態(tài)變量,t為時間,a、b和c為常數(shù)。當a=-1,b=0.25,c=0.3時,系統(tǒng)處于混沌狀態(tài)。
設(shè)計滑??刂破鬟M行Duffing混沌系統(tǒng)的鎮(zhèn)定控制。帶有控制輸入的受控Duffing系統(tǒng),表示為:
其中,u為設(shè)計的滑??刂破??;C嬖O(shè)計為:
s=x2+k1x1 ? (3)
其中,k1為大于零的常數(shù)。
在滑??刂破髟O(shè)計中,采用的指數(shù)趨近律為:
(4)
其中,k2和k3為大于零的常數(shù)。
采用指數(shù)趨近律時,滑模控制器設(shè)計為:
(5)
其中,s為滑模面,sgn(·)為符號函數(shù)。為了削弱抖振,采用雙曲正切函數(shù)tanh(·)代替符號函數(shù)。
2 采用wxPython建立GUI界面
wxPython是Python語言的GUI圖形庫,可以方便的創(chuàng)建GUI用戶界面。wxPython是GUI庫wxWidgets的Python封裝,是一款優(yōu)秀的開源軟件,具有非常有限的跨平臺能力。采用SciPy庫中的odeint函數(shù)進行微分方程組的求解。odeint函數(shù)至少需要3個變量,分別是微分方程函數(shù)、初始值和時間變量。Matplotlib是Python語言的優(yōu)秀繪圖庫,非常方便進行數(shù)據(jù)的可視化。采用Matplotlib進行圖形的繪制。
根據(jù)Duffing混沌系統(tǒng)的狀態(tài)方程,進行仿真,并顯示狀態(tài)變量的二維相圖和響應(yīng)曲線。采用設(shè)計的滑模控制器進行Duffing混沌的鎮(zhèn)定控制,狀態(tài)變量漸進收斂到零。在wxPython庫中選擇wx.Notebook進行設(shè)計,可以通過單擊選項卡的標題,在2個頁面之間進行切換。采用wxPython設(shè)計的主界面,如圖1所示。
3 仿真實驗
在軟件的主界面中,單擊按鈕“Duffing混沌參數(shù)”,會出現(xiàn)如圖2所示的對話框,對Duffing混沌系統(tǒng)的參數(shù)和初始狀態(tài)進行設(shè)置。
在圖2中,對Duffing混沌系統(tǒng)的參數(shù)和初始狀態(tài)進行設(shè)置后,單擊按鈕“確定”,進行混沌仿真。Duffing混沌仿真后,可以顯示狀態(tài)變量的二維相圖和響應(yīng)曲線,狀態(tài)變量的二維相圖,如圖3所示。
圖3 狀態(tài)變量的二維相圖
在軟件的主界面中,選擇選項卡“Duffing混沌鎮(zhèn)定控制”,采用滑??刂破鬟M行Duffing混沌系統(tǒng)的鎮(zhèn)定控制。單擊按鈕“鎮(zhèn)定控制參數(shù)”,會出現(xiàn)如圖4所示的對話框,對控制器中的參數(shù)進行設(shè)置。
圖4 控制參數(shù)設(shè)置對話框
在圖4中,單擊按鈕“確認”,采用滑??刂破鬟M行Duffing混沌的鎮(zhèn)定控制。Duffing混沌的鎮(zhèn)定控制,可以顯示狀態(tài)變量、滑模面和滑??刂破鞯捻憫?yīng)曲線。Duffing混沌鎮(zhèn)定控制時,狀態(tài)變量的響應(yīng)曲線,如圖5所示,狀態(tài)變量漸進收斂到零。
圖5 控制器的響應(yīng)曲線
4 結(jié)束語
本文采用wxPython設(shè)計了Duffing混沌仿真和控制實驗系統(tǒng),能夠進行Duffing混沌系統(tǒng)的仿真和鎮(zhèn)定控制。仿真實驗系統(tǒng)可以對系統(tǒng)參數(shù)和控制參數(shù)進行設(shè)置,仿真結(jié)果采用Matplotlib進行圖形的繪制,非常的形象和直觀,對實驗教學有一定的參考價值。
參考文獻:
[1]孫克輝.混沌保密通信原理與技術(shù)[M].北京:清華大學出版社,2015.
[2]石建飛,張艷龍,王麗,等.Duffing系統(tǒng)的雙參數(shù)分岔與全局特性分析[J].噪聲與振動控制,2016,36(06):32-37.
[3]劉金琨.滑模變結(jié)構(gòu)控制MATLAB仿真(第3版)[M].北京:清華大學出版社,2015.
[4]張健,張良均.Python編程基礎(chǔ)[M].北京:人民郵電出版社,2018.