趙海濱, 于清文, 劉 沖, 陸志國, 顏世玉
(東北大學 機械工程與自動化學院, 沈陽 110819)
混沌是非線性動力系統的固有特性,是非線性系統普遍存在的現象,廣泛存在于自然界和人類社會中[1]。混沌控制在工程技術上具有重大的研究價值和誘人的應用前景,成為非線性科學研究的熱點之一,引起了廣泛的關注。混沌同步應用于保密通信[2-3]具有保密程度好,信息量大等優點,是目前研究的熱點。
越來越多的院校將蔡氏混沌電路[4-7]用于模擬混沌效應,取得了一定的效果,但是存在實驗設計復雜,結果不夠形象和直觀,教學內容呆板等問題。采用Matlab/Simulink軟件進行混沌系統的建模和同步控制能夠克服這些缺點,為混沌理論的教學和科研提供了一個新的輔助手段。
本文采用Matlab/Simulink軟件對Lorenz混沌系統進行建模和同步控制。根據Lorenz混沌系統的微分方程,給出了4種建模方法進行建模,并對這些方法進行了分析。通過狀態線性反饋方法進行了Lorenz混沌系統的同步控制。利用Matlab/Simulink軟件進行混沌系統的建模和同步仿真實驗,彌補了傳統物理實驗和混沌電路的不足,把抽象的混沌問題進行簡明、直觀的展示,可以加深學生對混沌現象本質的認識,了解混沌的同步控制方法,激發學生的學習興趣,為混沌理論和實驗教學提供了新途徑。
隨著科學技術、仿真理論及計算機的不斷發展,仿真技術不斷提高,已經成為現在科學研究不可缺少的手段。將仿真技術應用于科學研究中,不僅能夠提高科學研究的水平,還能縮短科學研究的周期,最主要的是能降低科學研究的成本及風險。Matlab軟件功能強大、使用簡單方便,并且對問題的描述和求解符合人們的思維習慣和數學表達習慣,已經廣泛應用于動態系統仿真[8-9]。Matlab軟件不僅可以用于連續系統和離散系統,還可以用于線性系統和非線性系統。Simulink是Matlab軟件最重要的組件之一,能夠進行系統建模、仿真和綜合分析等[10],通過和外界硬件的接口還可以建立半實物仿真和實時控制實驗。利用Matlab軟件進行混沌系統的仿真實驗具有良好的可控性、重復性、易觀察和經濟性等優點,有望為科研和教學工作提供新的輔助手段。Matlab/Simulink軟件非常適合進行混沌系統的建模和仿真[11-13],因此本文采用Matlab/Simulink軟件建立混沌同步控制實驗。
Lorenz系統作為第一個混沌的物理和數學模型,極大地激勵和推動了混沌學的理論發展和后來混沌在許多工科學科中的應用。Lorenz系統作為混沌的一個數學抽象,說明了一個確定性的系統能夠以最簡單的方式展現出非常復雜的形態。Lorenz系統的方程為:

(1)
式中:x、y和z為系統的狀態變量;a、b和c為固定值。當a=10,b=8/3,c=28時,Lorenz系統進入混沌狀態。下面通過4種方法進行Lorenz混沌系統的建模和仿真。
在Matlab軟件中,函數ode 45( )表示采用4-5階Runge-Kutta算法進行常微分方程的數值求解。本文首先采用函數ode 45( )進行Lorenz系統的建模,腳本程序為:
clear; close all;
a=10; b=8/3; c=28;
Lorenz=@(t, x) ([a*(x(2)-x(1)); …
c*x(1)-x(1)*x(3)-x(2); x(1)*x(2)-
b*x(3)]);
op=odeset(’RelTol’, 1e-5);
[t, xyz]=ode45(Lorenz,[0 50],[2,-2,2],op);
figure; plot3(xyz(:, 3), xyz(:, 2), xyz(:, 1));
xlabel(’z’); ylabel(’y’); zlabel(’x’);
figure; plot(xyz(:, 1), xyz(:, 2));
xlabel(’x’); ylabel(’y’);
figure; plot(t, xyz(:, 1));
xlabel(’t /s’); ylabel(’x’);
在程序中用匿名函數來描述混沌系統的微分方程,然后采用函數ode 45( )對微分方程進行數值求解。系統的仿真的時間為50 s, Lorenz系統的初始值為x(0)=2,y(0)=-2,z(0)=2。Lorenz混沌系統中,3個狀態變量的三維相空間曲線,如圖1所示;狀態變量x和y的二維相空間曲線,如圖2所示;狀態變量x隨時間t的變化曲線,如圖3所示。

圖1 Lorenz系統的三維相空間曲線

圖2 x和y的二維相空間曲線

圖3 x隨時間t的變化曲線
在Simulink中,采用基本的模塊進行Lorenz系統的建模,如圖4所示。微分方程中的每一個微分量對應一個積分模塊,并對積分模塊的初始值進行設置。在圖4中,利用Simulink中的Scope模塊顯示各個狀態變量的響應。系統的狀態變量保存到Matlab軟件的工作空間中,然后可以采用繪圖函數繪制相空間曲線。

圖4 采用基本模塊進行Lorenz系統建模
在Simulink中很多模塊都支持向量化輸入,可以把多路信號用Mux模塊變為一路信號,然后采用Simulink模塊庫中的Fcn模塊進行建模。利用Fcn模塊和積分模塊對Lorenz系統進行建模,如圖5所示,和圖4的模型相比更加的簡潔,而且不容易出錯,易于修改。

圖5 采用Fcn模塊進行Lorenz系統建模
對于復雜的系統,還可以采用Simulink中用戶自定義函數中的Matlab Function模塊。Matlab Function模塊簡稱M函數模塊,可以直接采用Matlab語言直接描述微分方程,更加的方便和簡潔。利用M函數模塊和積分模塊進行Lorenz系統建模,如圖6所示。
在圖6中,Matlab Function模塊內的程序代碼為:
function dxyz = fcn(xyz)
x=xyz(1); y=xyz(2); z=xyz(3);
a=10; b=8/3; c=28;
dx=a*(y-x);
dy=c*x-x*z-y;
dz=x*y-b*z;
dxyz=[dx; dy; dz];

圖6 采用M函數模塊進行Lorenz系統建模
本文的同步控制實驗,采用狀態線性反饋方法。該方法是通過反饋差信號的調節作用,使響應系統的演化軌道逐漸靠近驅動系統的目標軌道,直到兩者重合[14]。假設驅動系統和響應系統,分別用(x1,x2,x3)和(y1,y2,y3)表示其狀態向量。驅動系統的狀態方程表示為:
(2)
響應系統的狀態方程表示為:
(3)
式中:u1、u2和u3為控制輸入。當u1=u2=u3=0時,由于混沌系統對初值的敏感性,當初值不同時驅動系統和響應系統不能實現同步。
定義同步誤差為e1=y1-x1;e2=y2-x2;e3=y3-x3。當u1=-k1e1;u2=-k2e2;u3=-k3e3時,基于狀態線性反饋的響應系統為:
(4)

采用M函數模塊和積分模塊等建立混沌同步控制實驗,如圖7所示。在圖7中,驅動系統的初始狀態為x1(0)=2,x2(0)=-2,x3(0)=2,響應系統的初始狀態為y1(0)=5,y2(0)=5,y3(0)=5。

圖7 混沌同步控制實驗
在仿真過程中,采用變步長的ode 45算法,最大步長為1 ms,仿真時間為50 s。混沌同步控制實驗運行后,混沌同步控制曲線如圖8所示(只顯示了前30 s),很快就實現了響應系統和驅動系統的同步,并具有很好的穩定性。

(a) x1和y1的同步曲線

(b) x2和y2的同步曲線

(c) x3和y3的同步曲線
混沌同步控制實驗運行后,狀態變量的同步誤差如圖9所示(只顯示了前8 s)。

圖9 同步控制誤差
采用狀態線性反饋進行兩個Lorenz混沌系統的同步控制,在0.8 s就實現了驅動系統和響應系統的同步,同步速度非常快。
本文采用Matlab/Simulink軟件對Lorenz混沌系統進行建模和同步控制。根據Lorenz系統的微分方程,給出了4種建模方法進行Lorenz系統的建模,并對這些建模方法進行了分析。通過狀態線性反饋方法進行了Lorenz混沌系統的同步控制。通過利用Matlab/Simulink軟件進行混沌系統的建模和同步仿真實驗,彌補了傳統物理實驗的不足,把抽象的混沌問題進行簡明、直觀的展示,可以加深學生對混沌現象本質的認識,了解混沌的同步控制方法,為混沌理論和實驗教學提供了新途徑。