资源描述:
《求最大李雅诺夫指数的matlab程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、程序一functiondx=Lorenz(t,x);dx(1,1)=10*(x(2)-x(1));dx(2,1)=x(1)*(30-x(3))-x(2);dx(3,1)=x(1)*x(2)-8/3*x(3);dx(4,1)=0;dx(5,1)=0;dx(6,1)=0;functionlambda_1=lyapunov_wolf1(data,N,m,tau,P)% 该函数用来计算时间序列的最大Lyapunov指数--Wolf方法% m:嵌入维数% tau:时间延迟% data:时间序列% N:时间序列长度% P:时间
2、序列的平均周期,选择演化相点距当前点的位置差,即若当前相点为I,则演化相点只能在
3、I-J
4、>P的相点中搜寻% lambda_1:返回最大lyapunov指数值%**************************************************************************% ode计算整数阶系统的时间序列%******************************************************************delt_t1=0.001;t1=0:delt_t1
5、:60;[tt1,y1]=ode45(@lorenz,t1,[-1,0,1]);xx1=y1(:,1)';x1=spline(tt1,xx1,t1);data=x1(20000:10:60000);%采样N=length(data);m=3;tau=11;%*****************************************************%FFT计算平均周期%**********************************************************x=data;xPower=a
6、bs(fft(x)).^2;NN=length(xPower);xPower(1)=[];%去除直流分量NN=floor(NN/2);xPower=xPower(1:NN);freq=(1:NN)/NN*0.5;[mP,index]=max(xPower);P=index;%*************************************************************min_point=1 ;%&&要求最少搜索到的点数MAX_CISHU=5; %&&最大增加搜索范围次数%FLYINGHAWK%
7、 求最大、最小和平均相点距离 max_d=0; %最大相点距离 min_d=1.0e+100; %最小相点距离 avg_dd=0; Y=reconstitution(data,N,m,tau); %相空间重构 M=N-(m-1)*tau; %重构相空间中相点的个数 fori=1:(M-1) forj=i+1:M d=0;
8、 fork=1:m d=d+(Y(k,i)-Y(k,j))*(Y(k,i)-Y(k,j)); end d=sqrt(d); ifmax_dd min_d=d; end avg_dd=avg_dd+d; end end avg_d=2*avg_dd/(M*(M-1)); %平均相点距离
9、dlt_eps=(avg_d-min_d)*0.02; %若在min_eps~max_eps中找不到演化相点时,对max_eps的放宽幅度 min_eps=min_d+dlt_eps/2; %演化相点与当前相点距离的最小限 max_eps=min_d+2*dlt_eps ; %&&演化相点与当前相点距离的最大限 % 从P+1~M-1个相点中找与第一个相点最近的相点位置(Loc_DK)及其最短距离DK DK=1.0e+100; %第i个相
10、点到其最近距离点的距离 Loc_DK=2; %第i个相点对应的最近距离点的下标 fori=(P+1):(M-1) %限制短暂分离,从点P+1开始搜索 d=0; fork=1:m