趙海濱, 于清文, 劉 沖, 陸志國, 顏世玉
(東北大學(xué) 機(jī)械工程與自動(dòng)化學(xué)院, 沈陽 110819)
混沌是非線性動(dòng)力系統(tǒng)的固有特性,是非線性系統(tǒng)普遍存在的現(xiàn)象,廣泛存在于自然界和人類社會(huì)中[1]?;煦缈刂圃诠こ碳夹g(shù)上具有重大的研究價(jià)值和誘人的應(yīng)用前景,成為非線性科學(xué)研究的熱點(diǎn)之一,引起了廣泛的關(guān)注?;煦缤綉?yīng)用于保密通信[2-3]具有保密程度好,信息量大等優(yōu)點(diǎn),是目前研究的熱點(diǎn)。
越來越多的院校將蔡氏混沌電路[4-7]用于模擬混沌效應(yīng),取得了一定的效果,但是存在實(shí)驗(yàn)設(shè)計(jì)復(fù)雜,結(jié)果不夠形象和直觀,教學(xué)內(nèi)容呆板等問題。采用Matlab/Simulink軟件進(jìn)行混沌系統(tǒng)的建模和同步控制能夠克服這些缺點(diǎn),為混沌理論的教學(xué)和科研提供了一個(gè)新的輔助手段。
本文采用Matlab/Simulink軟件對(duì)Lorenz混沌系統(tǒng)進(jìn)行建模和同步控制。根據(jù)Lorenz混沌系統(tǒng)的微分方程,給出了4種建模方法進(jìn)行建模,并對(duì)這些方法進(jìn)行了分析。通過狀態(tài)線性反饋方法進(jìn)行了Lorenz混沌系統(tǒng)的同步控制。利用Matlab/Simulink軟件進(jìn)行混沌系統(tǒng)的建模和同步仿真實(shí)驗(yàn),彌補(bǔ)了傳統(tǒng)物理實(shí)驗(yàn)和混沌電路的不足,把抽象的混沌問題進(jìn)行簡明、直觀的展示,可以加深學(xué)生對(duì)混沌現(xiàn)象本質(zhì)的認(rèn)識(shí),了解混沌的同步控制方法,激發(fā)學(xué)生的學(xué)習(xí)興趣,為混沌理論和實(shí)驗(yàn)教學(xué)提供了新途徑。
隨著科學(xué)技術(shù)、仿真理論及計(jì)算機(jī)的不斷發(fā)展,仿真技術(shù)不斷提高,已經(jīng)成為現(xiàn)在科學(xué)研究不可缺少的手段。將仿真技術(shù)應(yīng)用于科學(xué)研究中,不僅能夠提高科學(xué)研究的水平,還能縮短科學(xué)研究的周期,最主要的是能降低科學(xué)研究的成本及風(fēng)險(xiǎn)。Matlab軟件功能強(qiáng)大、使用簡單方便,并且對(duì)問題的描述和求解符合人們的思維習(xí)慣和數(shù)學(xué)表達(dá)習(xí)慣,已經(jīng)廣泛應(yīng)用于動(dòng)態(tài)系統(tǒng)仿真[8-9]。Matlab軟件不僅可以用于連續(xù)系統(tǒng)和離散系統(tǒng),還可以用于線性系統(tǒng)和非線性系統(tǒng)。Simulink是Matlab軟件最重要的組件之一,能夠進(jìn)行系統(tǒng)建模、仿真和綜合分析等[10],通過和外界硬件的接口還可以建立半實(shí)物仿真和實(shí)時(shí)控制實(shí)驗(yàn)。利用Matlab軟件進(jìn)行混沌系統(tǒng)的仿真實(shí)驗(yàn)具有良好的可控性、重復(fù)性、易觀察和經(jīng)濟(jì)性等優(yōu)點(diǎn),有望為科研和教學(xué)工作提供新的輔助手段。Matlab/Simulink軟件非常適合進(jìn)行混沌系統(tǒng)的建模和仿真[11-13],因此本文采用Matlab/Simulink軟件建立混沌同步控制實(shí)驗(yàn)。
Lorenz系統(tǒng)作為第一個(gè)混沌的物理和數(shù)學(xué)模型,極大地激勵(lì)和推動(dòng)了混沌學(xué)的理論發(fā)展和后來混沌在許多工科學(xué)科中的應(yīng)用。Lorenz系統(tǒng)作為混沌的一個(gè)數(shù)學(xué)抽象,說明了一個(gè)確定性的系統(tǒng)能夠以最簡單的方式展現(xiàn)出非常復(fù)雜的形態(tài)。Lorenz系統(tǒng)的方程為:
(1)
式中:x、y和z為系統(tǒng)的狀態(tài)變量;a、b和c為固定值。當(dāng)a=10,b=8/3,c=28時(shí),Lorenz系統(tǒng)進(jìn)入混沌狀態(tài)。下面通過4種方法進(jìn)行Lorenz混沌系統(tǒng)的建模和仿真。
在Matlab軟件中,函數(shù)ode 45( )表示采用4-5階Runge-Kutta算法進(jìn)行常微分方程的數(shù)值求解。本文首先采用函數(shù)ode 45( )進(jìn)行Lorenz系統(tǒng)的建模,腳本程序?yàn)椋?/p>
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’);
在程序中用匿名函數(shù)來描述混沌系統(tǒng)的微分方程,然后采用函數(shù)ode 45( )對(duì)微分方程進(jìn)行數(shù)值求解。系統(tǒng)的仿真的時(shí)間為50 s, Lorenz系統(tǒng)的初始值為x(0)=2,y(0)=-2,z(0)=2。Lorenz混沌系統(tǒng)中,3個(gè)狀態(tài)變量的三維相空間曲線,如圖1所示;狀態(tài)變量x和y的二維相空間曲線,如圖2所示;狀態(tài)變量x隨時(shí)間t的變化曲線,如圖3所示。
圖1 Lorenz系統(tǒng)的三維相空間曲線
圖2 x和y的二維相空間曲線
圖3 x隨時(shí)間t的變化曲線
在Simulink中,采用基本的模塊進(jìn)行Lorenz系統(tǒng)的建模,如圖4所示。微分方程中的每一個(gè)微分量對(duì)應(yīng)一個(gè)積分模塊,并對(duì)積分模塊的初始值進(jìn)行設(shè)置。在圖4中,利用Simulink中的Scope模塊顯示各個(gè)狀態(tài)變量的響應(yīng)。系統(tǒng)的狀態(tài)變量保存到Matlab軟件的工作空間中,然后可以采用繪圖函數(shù)繪制相空間曲線。
圖4 采用基本模塊進(jìn)行Lorenz系統(tǒng)建模
在Simulink中很多模塊都支持向量化輸入,可以把多路信號(hào)用Mux模塊變?yōu)橐宦沸盘?hào),然后采用Simulink模塊庫中的Fcn模塊進(jìn)行建模。利用Fcn模塊和積分模塊對(duì)Lorenz系統(tǒng)進(jìn)行建模,如圖5所示,和圖4的模型相比更加的簡潔,而且不容易出錯(cuò),易于修改。
圖5 采用Fcn模塊進(jìn)行Lorenz系統(tǒng)建模
對(duì)于復(fù)雜的系統(tǒng),還可以采用Simulink中用戶自定義函數(shù)中的Matlab Function模塊。Matlab Function模塊簡稱M函數(shù)模塊,可以直接采用Matlab語言直接描述微分方程,更加的方便和簡潔。利用M函數(shù)模塊和積分模塊進(jìn)行Lorenz系統(tǒng)建模,如圖6所示。
在圖6中,Matlab Function模塊內(nèi)的程序代碼為:
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函數(shù)模塊進(jìn)行Lorenz系統(tǒng)建模
本文的同步控制實(shí)驗(yàn),采用狀態(tài)線性反饋方法。該方法是通過反饋差信號(hào)的調(diào)節(jié)作用,使響應(yīng)系統(tǒng)的演化軌道逐漸靠近驅(qū)動(dòng)系統(tǒng)的目標(biāo)軌道,直到兩者重合[14]。假設(shè)驅(qū)動(dòng)系統(tǒng)和響應(yīng)系統(tǒng),分別用(x1,x2,x3)和(y1,y2,y3)表示其狀態(tài)向量。驅(qū)動(dòng)系統(tǒng)的狀態(tài)方程表示為:
(2)
響應(yīng)系統(tǒng)的狀態(tài)方程表示為:
(3)
式中:u1、u2和u3為控制輸入。當(dāng)u1=u2=u3=0時(shí),由于混沌系統(tǒng)對(duì)初值的敏感性,當(dāng)初值不同時(shí)驅(qū)動(dòng)系統(tǒng)和響應(yīng)系統(tǒng)不能實(shí)現(xiàn)同步。
定義同步誤差為e1=y1-x1;e2=y2-x2;e3=y3-x3。當(dāng)u1=-k1e1;u2=-k2e2;u3=-k3e3時(shí),基于狀態(tài)線性反饋的響應(yīng)系統(tǒng)為:
(4)
采用M函數(shù)模塊和積分模塊等建立混沌同步控制實(shí)驗(yàn),如圖7所示。在圖7中,驅(qū)動(dòng)系統(tǒng)的初始狀態(tài)為x1(0)=2,x2(0)=-2,x3(0)=2,響應(yīng)系統(tǒng)的初始狀態(tài)為y1(0)=5,y2(0)=5,y3(0)=5。
圖7 混沌同步控制實(shí)驗(yàn)
在仿真過程中,采用變步長的ode 45算法,最大步長為1 ms,仿真時(shí)間為50 s?;煦缤娇刂茖?shí)驗(yàn)運(yùn)行后,混沌同步控制曲線如圖8所示(只顯示了前30 s),很快就實(shí)現(xiàn)了響應(yīng)系統(tǒng)和驅(qū)動(dòng)系統(tǒng)的同步,并具有很好的穩(wěn)定性。
(a) x1和y1的同步曲線
(b) x2和y2的同步曲線
(c) x3和y3的同步曲線
混沌同步控制實(shí)驗(yàn)運(yùn)行后,狀態(tài)變量的同步誤差如圖9所示(只顯示了前8 s)。
圖9 同步控制誤差
采用狀態(tài)線性反饋進(jìn)行兩個(gè)Lorenz混沌系統(tǒng)的同步控制,在0.8 s就實(shí)現(xiàn)了驅(qū)動(dòng)系統(tǒng)和響應(yīng)系統(tǒng)的同步,同步速度非???。
本文采用Matlab/Simulink軟件對(duì)Lorenz混沌系統(tǒng)進(jìn)行建模和同步控制。根據(jù)Lorenz系統(tǒng)的微分方程,給出了4種建模方法進(jìn)行Lorenz系統(tǒng)的建模,并對(duì)這些建模方法進(jìn)行了分析。通過狀態(tài)線性反饋方法進(jìn)行了Lorenz混沌系統(tǒng)的同步控制。通過利用Matlab/Simulink軟件進(jìn)行混沌系統(tǒng)的建模和同步仿真實(shí)驗(yàn),彌補(bǔ)了傳統(tǒng)物理實(shí)驗(yàn)的不足,把抽象的混沌問題進(jìn)行簡明、直觀的展示,可以加深學(xué)生對(duì)混沌現(xiàn)象本質(zhì)的認(rèn)識(shí),了解混沌的同步控制方法,為混沌理論和實(shí)驗(yàn)教學(xué)提供了新途徑。