求最大李雅普诺夫指数的matlab程序_第1页
求最大李雅普诺夫指数的matlab程序_第2页
求最大李雅普诺夫指数的matlab程序_第3页
求最大李雅普诺夫指数的matlab程序_第4页
求最大李雅普诺夫指数的matlab程序_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序一function dx=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;function lambda_1=lyapunov_wolf1(data,N,m,tau,P)% 该函数用来计算时间序列的最大 Lyapunov 指数 -Wolf 方法% m: 嵌入维数% tau: 时间延迟% data: 时间序列% N: 时间序列长度I,则演化相点% P: 时间序列的平均周期 ,选择演化相点距当前点的位置差

2、,即若当前相点为只能在 |IJ|>P 的相点中搜寻% lambda_1: 返回最大 lyapunov 指数值 %*% ode 计算整数阶系统的时间序列 %* delt_t1 = 0.001;t1 = 0:delt_t1: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=abs(fft(x).A2;NN=le

3、ngth(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% 求最大、最小和平均相点距离 max_d = 0; min_d = 1.0e+100; avg_dd = 0; Y=reconstitution(data,N,m,tau); M=N-(m-1

4、)*tau;for i = 1 : (M-1)for j = i+1 : M d = 0; for k = 1 : m%最大相点距离%最小相点距离% 相空间重构%重构相空间中相点的个数d = d + (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;end%平均相点距离enddlt_eps = (avg_d - min_d) * 0.02 ; 对 max_eps 的放宽幅度min_eps = mi

5、n_d + dlt_eps / 2 ;max_eps = min_d + 2 * dlt_eps ;avg_d = 2*avg_dd/(M*(M-1);%若在min_epsmax_eps中找不到演化相点时,%演化相点与当前相点距离的最小限%&& 演化相点与当前相点距离的最大限% 从 P+1 M-1 个相点中找与第一个相点最近的相点位置 (Loc_DK) 及其最短距离 DK DK = 1.0e+100;%第 i 个相点到其最近距离点的距离Loc_DK = 2;%第 i 个相点对应的最近距离点的下标for i = (P+1):(M-1)%限制短暂分离,从点P+1 开始搜索d = 0

6、;for k = 1 : md = d + (Y(k,i)-Y(k,1)*(Y(k,i)-Y(k,1);endd = sqrt(d);if (d < DK) & (d > min_eps)DK = d;Loc_DK = i;endend% 以下计算各相点对应的李氏数保存到 lmd() 数组中% i为相点序号,从1到(M-1),也是i-1点的演化点;Loc_DK为相点i-1对应最短距离 的相点位置, DK 为其对应的最短距离% Loc_DK+1 为 Loc_DK 的演化点, DK1 为 i 点到 Loc_DK+1 点的距离,称为演化距离% 前i个Iog2 ( DK1/DK )

7、的累计和用于求 i点的lambda值 sum_lmd = 0 ;% 存放前 i 个 log2( DK1/DK )的累计和for i = 2 : (M-1)% 计算演化距离DK1 = 0;for k = 1 : mDK1 = DK1 + (Y(k,i)-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个Iog2(DK1/DK )的累计和以及保存i点的李氏指数 if (DK1 = 0)&( DK = 0)sum_Imd = sum

8、_Imd + Iog(DK1/DK) /Iog(2); endImd(i-1) = sum_Imd/(i-1);% 以下寻找 i 点的最短距离:要求距离在指定距离范围内尽量短,与 DK1 的角度最小 point_num = 0 ; % && 在指定距离范围内找到的候选相点的个数 cos_sita = 0 ; %&& 夹角余弦的比较初值 要求一定是锐角 zjfwcs=0 ;%&& 增加范围次数whiIe (point_num = 0)% * 搜索相点 for j = 1 : (M-1)if abs(j-i) <=(P-1)%&&

9、; 候选点距当前点太近,跳过!continue;end%*计算候选点与当前点的距离dnew = 0; for k = 1 : m dnew = dnew + (Y(k,i)-Y(k,j)*(Y(k,i)-Y(k,j);enddnew = sqrt(dnew);if (dnew < min_eps)|( dnew > max_eps )%&& 不在距离范围,跳过!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

10、= DOT/(dnew*DK1);if acos(CTH) > (3.14151926/4)%&& 不是小于 45 度的角,跳过!continue;endif CTH > cos_sita %&& 新夹角小于过去已找到的相点的夹角,保留 cos_sita = CTH;Loc_DK = j;DK = dnew;endpoint_num = point_num +1;end if point_num <= min_pointmax_eps = max_eps + dlt_eps;zjfwcs =zjfwcs +1;if zjfwcs > MA

11、X_CISHU%&& 超过最大放宽次数,改找最近的点DK = 1.0e+100;for ii = 1 : (M-1)if abs(i-ii) <= (P-1) %&& 候选点距当前点太近,跳过! continue;endd = 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 ; %&&

12、; 扩大距离范围后重新搜索 cos_sita = 0;endendend%取平均得到最大李雅普诺夫指数 lambda_1=sum(lmd)/length(lmd)function X=reconstitution(data,N,m,tau) %该函数用来重构相空间% m 为嵌入空间维数% tau 为时间延迟% data 为输入时间序列% N 为时间序列长度% X 为输出 ,是 m*n 维矩阵M=N-(m-1)*tau;% 相空间中点的个数for j=1:M%相空间重构for i=1:mX(i,j)=data(i-1)*tau+j);endend以上是计算最大李氏指数的程序,可以运行。问题是里面

13、的时间延迟tau和嵌入维数 m该如何取值,程序里我是随便取的 3 和 11*程序二现我做了一个基于RHF算法的李氏指数计算方法,收敛速度很快,精确度也还可 以,现传上:Lya1=;Lya2=;Lya3=;V=eye(3);S=V;b1=0;a=0.4;c=0.2;gama=3.5;b=4.0;h=0.01;x(1)=0.1;y(1)=0;z(1)=0;n=0;while z<=200n=n+1;k1=h*y(n);m1=h*(-sin(x(n)-a*y(n)+b*cos(gama*z(n).*sin(x(n)+c);k2=h*(y(n)+m1/2); m2=h*(-sin(x(n)+k1

14、/2)-a*(y(n)+m1/2)+b*cos(gama*(z(n)+h/2).*sin(x(n)+k1/2)+c);k3=h*(y(n)+m2/2); m3=h*(-sin(x(n)+k2/2)-a*(y(n)+m2/2)+b*cos(gama*(z(n)+h/2).*sin(x(n)+k2/2)+c); k4=h*(y(n)+m3);m4=h*(-si n(x( n)+k3)-a*(y( n)+m3)+b*cos(gama*(z( n)+h).*si n(x( n)+k3)+c);x(n+1)=x( n)+(k1+2*k2+2*k3+k4)/6;y(n+1)=y( n)+(m1+2*m2+2*m3+m4)/6;z(n+1)=n*h;J = 0 1 0;b*cos(gama*z (n+1)*cos(x (n+1)-cos(x (n+1) -a -b*gama*s in( gama*z (n+1)*s in(x(n +1); 0 0 0;J=eye(3)+h*J;B=J*V*S;V,S,U=svd(B);a_max=max(diag(S);S=(1/a_max)*S;b1=b1+log(a_max);Lyapu no v1=(log(diag(S)+b1)/( n*h);Lya仁Lya1,Lyap uno v1(1,Lya2=Lya2,Lyapu nov1(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论