Lyapunov指數(shù)的計算方法_第1頁
Lyapunov指數(shù)的計算方法_第2頁
Lyapunov指數(shù)的計算方法_第3頁
Lyapunov指數(shù)的計算方法_第4頁
Lyapunov指數(shù)的計算方法_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、【總結(jié)】Lyapunov指數(shù)的計算方法 非線性理論近期為了把計算LE的一些問題弄清楚,看了有79本書!下面以呂金虎?混沌 時間序列分析及其應用?、馬軍海?復雜非線性系統(tǒng)的重構(gòu)技術(shù)?為主線,把目前 已有的LE計算方法做一個匯總!1.關(guān)于連續(xù)系統(tǒng)Lyapunov指數(shù)的計算方法 連續(xù)系統(tǒng)LE的計算方法主要有定義 方法、Jacobian方法、QR分解方法、奇異值分解方法,或者通過求解系統(tǒng)的微分 方程,得到微分方程解的時間序列,然后利用時間序列即離散系統(tǒng)的 LE求解 方法來計算得到.關(guān)于連續(xù)系統(tǒng) LE的計算,主要以定義方法、Jacobian方法做主 要介紹內(nèi)容.1定義法對用維連塊動力系統(tǒng),二網(wǎng)力 在時刻

2、以孫為卬心,區(qū)為半徑膿一個 «維的球面.隨著時間的演化,在t時刻讀球面即變形為M縫的橢球面.設該橢球面的第i 個坐標軸方向的半軸長為氏與,那么該系統(tǒng)第i個L河皿3指數(shù)為*% = hm-inI.t網(wǎng)wM|阿有|此即連續(xù)系統(tǒng)LyaMnw指孩的定義.實際計向眇 取忸武飛,0|為d5為常敷,以中為球心,歐兒里痣范敬為d的正交 矢量集.,叫£為初始球,由非線性微分方程讓尸可以分別計菖出點Q町+如 孫理小、足+%經(jīng)過時間才后演化的軌跡,設具終了專分別為了如、際八、杭,那么令 那么國=6一 .加= W3歷L 那么可得新的矢量集? A4NJ由于各個矢量在演化過程中吉噲向著最大的UapurO

3、T指數(shù)方向31撥,因此需要通過Sthmidt正交化不斷地對新矢量進行置換,即Wulf的文章中提出的GSR方法.表述如下:必就,齒嚴一 <曲鏟及耀 >蠟,壯;時刃料叫vcn 5Km k4入出支 口>以 <>>以尸一附出叫排著以砒為球心,范毅為I的正交矢境惠心叫叱了;為新球繼續(xù)進行演 化,設演化至N步時,得到矢量罪化必乜匕巧,且N足夠大,這可以得到Lyapunov 才徽拊近做計皙公式.卜亨以各n4.4*一竽+$£貼.叫痛計亶時,可以將d取為1定義法求解 Lyapunov 指數(shù).JPG關(guān)于定義法求解的程序,和 matlab板塊的 連續(xù)系統(tǒng)LE求解程序差不

4、多.以Rossler系統(tǒng)為例Rossler系統(tǒng)微分方程定義程序function dX = Rossler_ly(t,X)% Rossler吸引子,用索計算Lyapunov指數(shù)%a=0.15,b=0.20,c=10.0%dx/dt =-y-z,%dy/dt =x+ay,%dz/dt =b+z(x-c),a = 0.15;b = 0.20;c = 10.0;x=X(1); y=X(2); z=X(3);%Y的三個列向量為相互正交的單位向量Y = X(4), X(7), X(10);X(5), X(8), X(11);X(6), X(9), X(12);%輸出向量的初始化,必不可少dX = zero

5、s(12,1);% Rossler版引子dX(1) = -y-z;dX(2) = x+a*y;dX(3) = b+z*(x-c);% Rossler吸引子的Jacobi矩陣Jaco = 0 -1 -1;1 a 0;z 0 x-c;dX(4:12) = Jaco*Y;求解LE代碼:%計算Rossler吸引子的Lyapunov指數(shù) clear;yinit = 1,1,1;orthmatrix = 1 0 0;0 1 0;0 0 1;a = 0.15;b = 0.20;c = 10.0;y = zeros(12,1);%初始化輸入y(1:3) = yinit;y(4:12) = orthmatrix

6、;tstart = 0; %時間初始值tstep = 1e-3; %時間步長wholetimes = 1e5; %總的循環(huán)次數(shù)steps = 10; %每次演化的步數(shù)iteratetimes = wholetimes/steps; %寅化的次數(shù) mod = zeros(3,1);lp = zeros(3,1);%初始化三個Lyapunov指數(shù)Lyapunov1 = zeros(iteratetimes,1);Lyapunov2 = zeros(iteratetimes,1);Lyapunov3 = zeros(iteratetimes,1);for i=1:iteratetimestspan

7、= tstart:tstep:(tstart + tstep*steps);T,Y = ode45('Rossler_ly', tspan, y);%取積分得到的最后二不時刻的值y = Y(size(Y,1),:);%重新定義起始時刻tstart = tstart + tstep*steps;y0 = y(4) y(7) y(10);y(5) y(8) y(11);y(6) y(9) y(12);%正交化y0 = ThreeGS(y0);%取三個向量的模mod=sqrt(y0(:,1)'*y0(:,1);mod(2) = sqrt(y0(:,2)'*y0(:,2

8、);mod(3) = sqrt(y0(:,3)'*y0(:,3);y0(:,1) = y0(:,1)/mod(1);y0(:,2) = y0(:,2)/mod(2);y0(:,3) = y0(:,3)/mod(3);Ip = lp+log(abs(mod);%三個Lyapunov指數(shù)Lyapunovl(i) = lp(1)/(tstart);Lyapunov2(i) = lp(2)/(tstart);Lyapunov3(i) = lp(3)/(tstart);y(4:12) = y0'end %作Lyapunov指數(shù)譜圖i = 1:iteratetimes;plot(i,Lya

9、punov1,i,Lyapunov2,i,Lyapunov3)程序中用到的ThreeGS程序如下:%G-S正交化function A = ThreeGS(V) % V 為 3*3 向量v1 = V(:,1);v2 = V(:,2);v3 = V(:,3);a1 = zeros(3,1);a2 = zeros(3,1);a3 = zeros(3,1);a1 = v1;a2 = v2-(a1'*v2)/(a1'*a1)*a1;a3 = v3-(a1'*v3)/(a1'*a1)*a1-(a2'*v3)/(a2'*a2)*a2;A = a1,a2,a3;

10、計算得到的 Rossler系統(tǒng)的 LE 為0.063231 0.092635 -9.8924Wolf文章中計算得到的 Rossler系統(tǒng)的LE為0.09 0 -9.77需要注意的是一一定義法求解的精度有限,對有些系統(tǒng)的計算往往出現(xiàn)計果和理論 值有偏差的現(xiàn)象.正交化程序可以根據(jù)上面的擴展到 N*N向量,這里就不加以說明了,對 matlab用 戶來說應該還是比擬簡單的!Jacobian方法通過資料檢索,發(fā)現(xiàn)論壇中用的較多的LET工具箱的算法原理就是Jacobian方法.根本原理就是首先求解出連續(xù)系統(tǒng)微分方程的近似解,然后對系統(tǒng)的 Jacobian 矩陣進行QR分解,計算Jacobian矩陣特征值的

11、乘積,最后計算出 LE和分數(shù)維. 經(jīng)過計算也證實了這種方法精度較高,對目前常見的混沌系統(tǒng),如Lorenz、Henon、Duffing等的Lyapunov指數(shù)的計算精度都很高,而且程序編寫有一定的規(guī) 范,個人很推薦使用.雖然我自己要做的系統(tǒng)并不適用于 孑LET工具箱可以在網(wǎng)絡上找到,這里就不列出了!關(guān)于 LET工具箱如果有問題, 歡送參加本帖討論!Jacobian法求解 Lyapunov 指數(shù).JPG對離散動力系統(tǒng),或者說是非線性時間序列,往往不需要計算出所有的Lyapunov指數(shù),通常只需計算出其最大的 Lyapunov指數(shù)即可.“198弈,格里波 基證實了只要最大Lyapunov指數(shù)大于零,

12、就可以肯定混沌的存在 目前常用的計算混沌序列最大 Lyapunov指數(shù)的方法主要有一下幾種:(1)由定義法延伸的Nicolis方法(2) Jacobian方法(3) Wolf 方法(4) P范數(shù)方法(5) 小數(shù)據(jù)量方法其中以Wolf方法和小數(shù)據(jù)量方法應用最為廣泛,也最為普遍.下面對Nicolis方法、Wolf方法以及小數(shù)據(jù)量方法作介紹.(1) Nicolis 方法這種方法和連續(xù)系統(tǒng)的定義方法類似,而且目前應用很有限制,因此只對其理論 進行介紹,編程應用方面就省略了Nicolis方法求最大LE.JPG(2) Wolf方法Wolf方法求最大LE.JPGWolf方法的Matlab程序如下: func

13、tion lambda_1=lyapunov_wolf(data,N,m,tau,P)%該函數(shù)用來計算時間序列的最大 Lyapunov指數(shù)-Wolf方法% m:嵌入維數(shù)! 一般選大于等于10% tau:時間延遲! 一般選與周期相當,如我選 2000% data:時間序列!可以選1000;% N:時間序列長度滿足公式:M=N-(m-1)*tau=24000-(10-1)*1000=5000% P:時間序列的平均周期,選擇演化相點距當前點的位置差,即假設當前相點為 I,那么 演化相點只能在|I J卜P的相點中搜尋 ! P=周期=600% lambda_1:返回最大lyapunov指數(shù)值min_po

14、int=1 ;%&&要求最少搜索到的點數(shù)MAX_CISHU=5 ; %&&最大增加搜索范圍次數(shù) %FLYINGHAWK%求最大、最小和平均相點距離max_d = 0;min_d = 1.0e+100;腺大相點距離 %ft小相點距離avg_dd = 0;Y=reconstitution(data,N,m,tau);咐目空間重構(gòu)可將此段程序加到整個程序中,在時間循環(huán)內(nèi),可以保存時間序列的地方.見完整程序M=N-(m-1)*tau;%重構(gòu)相空間中相點的個數(shù)for i = 1 : (M-1)for j = i+1 : Md = 0;for k = 1 : md = d

15、+ (Y(k,i)-Y(k,j)*(Y(k,i)-Y(k,j);endd = sqrt(d);if max_d < d max_d = d;endif min_d > d min_d = d;endavg_dd = avg_dd + d;endendavg_d = 2*avg_dd/(M*(M-1);% 平均相點距離dlt_eps = (avg_d - min_d) * 0.02 ; 點時,對max_eps的放寬幅度min_eps = min_d + dlt_eps / 2 ;max_eps = min_d + 2 * dlt_eps ;%)?f在min_epsmax_eps中找不

16、至U演化相項化相點與當前相點距離的最小限%&&演化相點與當前相點距離的最大限% 從P+1M-1個相點中找與第一個相點最近的相點位置(Loc_DK)及其最短距 離DKDK = 1.0e+100;%第i個相點到其最近距離點的距離Loc_DK = 2;%第i個相點對應的最近距離點的下標for i = (P+1):(M-1)%限制短暫別離,從點P+1開始搜索d = 0;for k = 1 : md = d + (Y(k,i)-Y(k,1)*(Y(k,i)-Y(k,1); end d = sqrt(d);if (d < DK) & (d > min_eps)DK =

17、d;一Loc_DK = i; end end%以下計算各相點對應的李氏數(shù)保存到lmd()數(shù)組中% i為相點序號,從1至iJ(M-1),也是i-1點的演化點;Loc_DK為相點i-1對應最 短距離的相點位置,DK為其對應的最短距離% Loc_DK+1為Loc_DK的演化點,DK1為i點到Loc_DK+1點的距離,稱為演化距離% 前i個log2 ( DK1/DK )的累計和用于求i點的lambda值sum_lmd = 0 ;%存放前i個log2 (DK1/DK )的累計和for i = 2 : (M-1)%計算演化距離DK1 = 0;for k = 1 : mDK1 = DK1 + (Y(k,i)

18、-Y(k,Loc_DK+1)*(Y(k,i)-Y(k,Loc_DK+1);endDK1 = sqrt(DK1);old_Loc_DK = Loc_DK ;%保存原最近位置相點old_DK=DK; 一% 計算前i個log2 (DK1/DK )的累計和以及保存i點的李氏指數(shù)if (DK1 = 0)&( DK = 0)sum_lmd = sum_lmd + log(DK1/DK) /log(2); endlmd(i-1) = sum_lmd/(i-1);此處可以保存不同相點i對應的李氏指數(shù),見完整程 序.%以下尋找i點的最短距離:要求距離在指定距離范圍內(nèi)盡量短,與DK1的角度最小point_

19、num = 0; % &&在指定距離范圍內(nèi)找到的候選相點的個數(shù)cos_sita = 0 ;%&&夾角余弦的比擬初值要求一定是銳角zjfwcs=0 ;%&&增加范圍次數(shù)while (point_num = 0)%*搜索相點for j = 1 : (M-1)if abs(j-i) <=(P-1)%&&候選點距當前點太近,跳過!continue;end %*計算候選點與當前點的距離dnew = 0;for k = 1 : mdnew = dnew + (Y(k,i)-Y(k,j)*(Y(k,i)-Y(k,j);enddnew =

20、sqrt(dnew);if (dnew < min_eps)|( dnew > max_eps ) %&環(huán)在距離范圍,跳過! continue;end%*計算夾角余弦及比擬DOT = 0;for k = 1 : mDOT = DOT+(Y(k,i)-Y(k,j)*(Y(k,i)-Y(k,old_Loc_DK+1); endCTH = DOT/(dnew*DK1);if acos(CTH) > (3.14151926/4)%&&不是小于 45 度的角,跳過!continue;endif CTH > cos_sita%&&新夾角小于過

21、去已找到的相點的夾角,保存cos_sita = CTH;Loc_DK = j;DK = dnew;endpoint_num = point_num +1;endif point_num <= min_point max_eps = max_eps + dlt_eps;zjfwcs =zjfwcs +1;if zjfwcs > MAX_CISHU %&& 超過最大放寬次數(shù),改找最近的點DK = 1.0e+100;for ii = 1 : (M-1)if abs(i-ii) <= (P-1)%&&候選點距當前點太近,跳過!continue;endd

22、 = 0;for k = 1 : md = d + (Y(k,i)-Y(k,ii)*(Y(k,i)-Y(k,ii);endd = sqrt(d);if (d < DK) & (d > min_eps)DK = d;一Loc_DK = ii;endendbreak;endpoint_num = 0 ;%&&擴大距離范圍后重新搜索cos_sita = 0;endendend%取平均得到最大李雅普諾夫指數(shù)(此處只有一個值,假設為正說明體系是混沌的, 假設為負那么說明體系是周期性確實定性運動) lambda_1=sum(lmd)/length(lmd);程序中用到的

23、reconstitution函數(shù)如下:此段程序可直接放在時間循環(huán)內(nèi)部,即 可以保存時間序列的地方.見完整程序范例.function X=reconstitution(data,N,m,tau)%該函數(shù)用來重構(gòu)相空間% m 為嵌入空間維數(shù)% tau為時間延遲% data為輸入時間序列% N為時間序列長度% X 為輸出,是m*n維矩陣M=N-(m-1)*tau;%相空間中點的個數(shù)for j=1:M%相空間重構(gòu)for i=1:mX(i,j)=data(i-1)*tau+j);endend這里聲明一下,這些程序并非我自己編寫的,均是轉(zhuǎn)載,其使用我已經(jīng)驗證過,絕對可以運行!(3)小數(shù)據(jù)量方法說小數(shù)據(jù)量方

24、法是目前最實用、應用最廣泛的方法應該不為過吧,呵呵!小數(shù)據(jù)量方法求最大Lyapunov指數(shù).JPG上面兩種方法,即 Wolf方法和小數(shù)據(jù)量方法,在計算 LE之前,都要求對時間 序列進行重構(gòu)相空間,重構(gòu)相空間的優(yōu)良對于最大 LE的計算精度影響非常大!因 此重構(gòu)相空間的幾個參數(shù)確實定就非常重要.(1)時間延遲主要推薦兩種方法 自相關(guān)函數(shù)法、CC方法自相關(guān)函數(shù)法一一對一個混沌時間序列,可以先寫出其自相關(guān)函數(shù),然后作出自 相關(guān)函數(shù)關(guān)于時間t的函數(shù)圖像.根據(jù)數(shù)值試驗結(jié)果,當自相關(guān)函數(shù)下降到初始值 的1 1/e時,所得的時間t即為重構(gòu)相空間的時間延遲.CC方法一一可以同時計算出時間延遲和時間窗口,個人推薦

25、使用這種方法!(2)平均周期平均周期的計算可以采用FFT方法.在matlab幫助中有一個太陽黑子的例子,現(xiàn) 摘錄如下:load sunspot.dat濮載數(shù)據(jù)文件year = sunspot(:,1);% 取年份信息wolfer = sunspot(:,2); plot(year,wolfer) title('Sunspot Data')Y = fft(wolfer);%讀取黑子活動數(shù)據(jù)%繪制原始數(shù)據(jù)圖%快速FFT變換N = length(Y);%FFT變換后數(shù)據(jù)長度Y(1) = ;%去掉Y的第一個數(shù)據(jù),它是所有數(shù)據(jù)的和power = abs(Y(1:N/2).A2;%求功率譜

26、nyquist = 1/2;freq = (1:N/2)/(N/2)*nyquist;% 求頻率plot(freq,power), grid on% 繪制功率譜圖xlabel('cycles/year')title('Periodogram')period = 1./freq;%?份(周期)plot(period,power), axis(0 40 0 2e7), grid on%繪制年份功率譜曲線ylabel('Power')xlabel('Period(Years/Cycle)')mp,index = max(power);%

27、求最高譜線所對應的年份下標period(index)%i下標求出平均周期(3)嵌入維數(shù)目前嵌入維數(shù)的主要計算方法是采用Grassberge和Procaccia提出的GP算法計算出序列的關(guān)聯(lián)維數(shù)d,然后利用嵌入維數(shù) m>=2d+1,選取適宜的嵌入維數(shù).GP算法程序如下: function ln_r,ln_C=G_P(data,N,tau,min_m,max_m,ss)% the function is used to calculate correlation dimention with G-P algorithm% 計算關(guān)聯(lián)維數(shù)的GP算法時間序列長度時間延遲最小的嵌入維數(shù)% data:

28、the time series時間序歹 U % N: the length of the time series% tau: the time delay% min_m:the least embedded dimention m % max_m:the largest embedded dimention m 最大的嵌入維數(shù)% ss:the stepsize of r的步長%skyhawkfor m=min_m:max_mY=reconstitution(data,N,m,tau);%reconstitute state spaceM=N-(m-1)*tau;%the number of p

29、oints in state spacefor i=1:M-1for j=i+1:Md(i,j)=max(abs(Y(:,i)-Y(:,j);%calculate the distance of each twoend%points in state spacd算狀態(tài)空間中每兩點之間的距離endmax_d=max(max(d);%the max distance of all points 得到所有點之間的最大距離 d(1,1)=max_d;min_d=min(min(d);%the min distance of all points 彳馬至 U所有點間的最短距離 delt=(max_d-m

30、in_d)/ss;%the stepsize of r得至U r 的步長for k=1:ssr=min_d+k*delt;C(k)=correlation_integral(Y,M,r);%calculate the correlation integral ln_C(m,k)=log(C(k);%lnC(r) ln_r(m,k)=log(r);%lnrfprintf('%d/%d/%d/%dn',k,ss,m,max_m);endplot(ln_r(m,:),ln_C(m,:);hold on;endfid=fopen('lnr.txt,w,);fprintf(fid

31、,'%6.2f %6.2fn',ln_r);fclose(fid);fid = fopenClnC.txt'.'w');fprintf(fid,'%6.2f %6.2fn',ln_C);fclose(fid);程序中的correlation_integral函數(shù)如下:function C_I=correlation_integral(X,M,r)%the function is used to calculate correlation integral%C_I:the value of the correlation integral%X:the reconstituted state space,M is a m*M matrix%m:the embedding demention%M:M is the number of embedded points in m-dimensional sapce%r:the radius of the Heaviside function,sigma/2<r<2sigma%calculate the sum of all the values of He

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論