声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2627|回复: 6

[分形与混沌] 时滞系统的最大lyapunov指数估算?

[复制链接]
发表于 2015-12-18 17:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
]{3KCU`4I9%US}QQQB6]MLF.png

第二,如果不一样,那一般应用什么方法去求时滞系统的最大lyapunov指数?


本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2015-12-19 17:12 | 显示全部楼层
两者没有关系,你给出的是运动微分方程,一般的处理思路是现对微分方程进行求解,求的方程的时间序列,然后再用你所说的wolf法等方法对相关序列进行分析求解lyapunov指数
 楼主| 发表于 2015-12-19 19:15 | 显示全部楼层
你有什么好的带有程序的参考资料吗?
 楼主| 发表于 2015-12-19 21:03 | 显示全部楼层
我把写的程序发上来,但是有问题,请问怎么修改?
  1. function dx=loren(t,x,z)
  2. %global r k4 b d1 a A B u mu1 C d2 tau
  3. xlag=z(:,1);
  4. s=zeros(4,1);
  5. %% 模型形式
  6. s(1)=50+1000.*x(2).*x(4)-0.000098.*x(3).*x(1)-0.011.*x(1);
  7. s(2)=0.000098.*x(3).*x(1)-0.1.*x(2)-1200.*x(2).*x(4);
  8. s(3)=200.*x(2)-0.67.*x(3);
  9. s(4)=exp(-0.5).*0.05.*xlag(2).*xlag(4)-0.3.*x(4);
复制代码

  1. function lambda_1=lyapunov_wolf(data,N,m,tau,p)
  2. %  该函数用来计算时间序列的最大Lyapunov 指数--Wolf 方法
  3. %  m: 嵌入维数
  4. %  tau:时间延迟
  5. %  data:时间序列
  6. %  N:时间序列长度
  7. %  lambda_1:返回最大lyapunov指数值
  8. %**************************************************************************
  9. %ode计算整数阶系统的时间序列
  10. %******************************************************************
  11. Delays=[1];
  12. delt_t1 = 0.001;
  13. t1 = 0:delt_t1:60;  
  14. y1=dde23('loren',Delays,[537.35;16.31;12.17;0.01],t1);
  15. xx1 = y1(:,1)';  
  16. x1 = spline(y1.x, xx1, t1);  
  17. data= x1(20000:10:60000);                                %采样
  18. N=length(data);
  19. m=4;
  20. tau=3;
  21. %*****************************************************
  22. % FFT计算平均周期  
  23. %**********************************************************
  24. x=data;  
  25. xPower=abs(fft(x)).^2;
  26. NN=length(xPower);  
  27. xPower(1)=[];                                           %去除直流分量
  28. NN=floor(NN/2);  
  29. xPower=xPower(1:NN);
  30. freq=(1:NN)/NN*0.5;
  31. [mP,index]=max(xPower);
  32. P=index;  
  33. %*************************************************************
  34. min_point=1  ; %&&要求最少搜索到的点数
  35. MAX_CISHU=5 ;  %&&最大增加搜索范围次数
  36. %FLYINGHAWK
  37. %   求最大、最小和平均相点距离
  38.     max_d = 0;                                         %最大相点距离
  39.     min_d = 1.0e+100;                                  %最小相点距离
  40.     avg_dd = 0;
  41.     Y=reconstitution(data,N,m,tau);                    %相空间重构
  42.     M=N-(m-1)*tau;                                     %重构相空间中相点的个数
  43.     for i = 1 : (M-1)
  44.         for j = i+1 : M
  45.             d = 0;
  46.             for k = 1 : m
  47.                 d = d + (Y(k,i)-Y(k,j))*(Y(k,i)-Y(k,j));
  48.             end
  49.             d = sqrt(d);
  50.             if max_d < d
  51.                max_d = d;
  52.             end
  53.             if min_d > d
  54.                min_d = d;
  55.             end
  56.             avg_dd = avg_dd + d;
  57.         end
  58.     end
  59.     avg_d = 2*avg_dd/(M*(M-1));                %平均相点距离
  60.      
  61.     dlt_eps = (avg_d - min_d) * 0.02 ;         %若在min_eps~max_eps中找不到演化相点时,对max_eps的放宽幅度
  62.     min_eps = min_d + dlt_eps / 2 ;            %演化相点与当前相点距离的最小限
  63.     max_eps = min_d + 2 * dlt_eps  ;           %&&演化相点与当前相点距离的最大限
  64.      
  65. %     从P+1~M-1个相点中找与第一个相点最近的相点位置(Loc_DK)及其最短距离DK
  66.     DK = 1.0e+100;                             %第i个相点到其最近距离点的距离
  67.     Loc_DK = 2;                                %第i个相点对应的最近距离点的下标
  68.     for i = (P+1):(M-1)                        %限制短暂分离,从点P+1开始搜索
  69.         d = 0;
  70.         for k = 1 : m
  71.             d = d + (Y(k,i)-Y(k,1))*(Y(k,i)-Y(k,1));
  72.         end
  73.         d = sqrt(d);
  74.         if (d < DK) & (d > min_eps)  
  75.            DK = d;
  76.            Loc_DK = i;
  77.         end
  78.     end
  79. %     以下计算各相点对应的李氏数保存到lmd()数组中
  80. %     i 为相点序号,从1到(M-1),也是i-1点的演化点;Loc_DK为相点i-1对应最短距离的相点位置,DK为其对应的最短距离
  81. %     Loc_DK+1为Loc_DK的演化点,DK1为i点到Loc_DK+1点的距离,称为演化距离
  82. %     前i个log2(DK1/DK)的累计和用于求i点的lambda值
  83.     sum_lmd = 0 ;                              % 存放前i个log2(DK1/DK)的累计和
  84.     for i = 2 : (M-1)                          % 计算演化距离      
  85.         DK1 = 0;
  86.         for k = 1 : m
  87.             DK1 = DK1 + (Y(k,i)-Y(k,Loc_DK+1))*(Y(k,i)-Y(k,Loc_DK+1));
  88.         end
  89.         DK1 = sqrt(DK1);
  90.         old_Loc_DK = Loc_DK ;                  % 保存原最近位置相点
  91.         old_DK=DK;

  92. %     计算前i个log2(DK1/DK)的累计和以及保存i点的李氏指数
  93.         if (DK1 ~= 0)&( DK ~= 0)
  94.            sum_lmd = sum_lmd + log(DK1/DK) /log(2);
  95.         end
  96.         lmd(i-1) = sum_lmd/(i-1);
  97. %     以下寻找i点的最短距离:要求距离在指定距离范围内尽量短,与DK1的角度最小
  98.         point_num = 0  ; % &&在指定距离范围内找到的候选相点的个数
  99.         cos_sita = 0  ; %&&夹角余弦的比较初值 ——要求一定是锐角
  100.         zjfwcs=0     ;%&&增加范围次数
  101.          while (point_num == 0)
  102.            % * 搜索相点
  103.             for j = 1 : (M-1)
  104.                 if abs(j-i) <=(P-1)      %&&候选点距当前点太近,跳过!
  105.                    continue;      
  106.                 end
  107.                  
  108.                 %*计算候选点与当前点的距离
  109.                 dnew = 0;
  110.                 for k = 1 : m
  111.                    dnew = dnew + (Y(k,i)-Y(k,j))*(Y(k,i)-Y(k,j));
  112.                 end
  113.                 dnew = sqrt(dnew);
  114.                  
  115.                 if (dnew < min_eps)|( dnew > max_eps )   %&&不在距离范围,跳过!
  116.                   continue;              
  117.                 end
  118.                                 
  119.                 %*计算夹角余弦及比较
  120.                 DOT = 0;
  121.                 for k = 1 : m
  122.                     DOT = DOT+(Y(k,i)-Y(k,j))*(Y(k,i)-Y(k,old_Loc_DK+1));
  123.                 end
  124.                 CTH = DOT/(dnew*DK1);
  125.                  
  126.                 if acos(CTH) > (3.14151926/4)      %&&不是小于45度的角,跳过!
  127.                   continue;
  128.                 end
  129.                  
  130.                 if CTH > cos_sita   %&&新夹角小于过去已找到的相点的夹角,保留
  131.                     cos_sita = CTH;
  132.                     Loc_DK = j;
  133.                     DK = dnew;
  134.                 end

  135.                 point_num = point_num +1;
  136.                  
  137.             end         
  138.          
  139.             if point_num <= min_point
  140.                max_eps = max_eps + dlt_eps;
  141.                zjfwcs =zjfwcs +1;
  142.                if zjfwcs > MAX_CISHU    %&&超过最大放宽次数,改找最近的点
  143.                    DK = 1.0e+100;
  144.                    for ii = 1 : (M-1)
  145.                       if abs(i-ii) <= (P-1)      %&&候选点距当前点太近,跳过!
  146.                        continue;      
  147.                       end
  148.                       d = 0;
  149.                       for k = 1 : m
  150.                           d = d + (Y(k,i)-Y(k,ii))*(Y(k,i)-Y(k,ii));
  151.                       end
  152.                       d = sqrt(d);
  153.          
  154.                       if (d < DK) & (d > min_eps)  
  155.                          DK = d;
  156.                          Loc_DK = ii;
  157.                       end
  158.                    end
  159.                    break;  
  160.                end
  161.                point_num = 0          ;     %&&扩大距离范围后重新搜索
  162.                cos_sita = 0;
  163.             end
  164.         end
  165.    end

  166. %取平均得到最大李雅普诺夫
  167. lambda_1=sum(lmd)/length(lmd);
  168. plot(lmd)
复制代码
  1. function X=reconstitution(data,N,m,tau)
  2. %该函数用来重构相空间
  3. % m      为嵌入空间维数
  4. % tau    为时间延迟
  5. % data   为输入时间序列
  6. % N      为时间序列长度
  7. % X       为输出,是m*n维矩阵
  8. M=N-(m-1)*tau;     %相空间中点的个数
  9. for j=1:M          %相空间重构
  10.   for i=1:m
  11.       X(i,j)=data((i-1)*tau+j);
  12.   end
  13. end
复制代码
暂时运行结果图:
{EIRPJOTWO59R]ZU%KP}S%M.png
 楼主| 发表于 2015-12-20 21:56 | 显示全部楼层
结果还是我自己搞出来啦。
 楼主| 发表于 2015-12-21 10:28 | 显示全部楼层
1. wolf计算的最大lyapunov指数值,请问下图的横坐标是表示什么?

QQ图片20151220235922.jpg


2. 下图t1的初值与末值应怎样取最好?这个是否求数值解的时间的初值与末值有关?
QQ图片20151220235931.png


3. 为什么下图这个只取y1(:,1)',而不取y1(:,2)',y1(:,3)'?
QQ图片20151220235939.png




发表于 2017-8-25 08:17 | 显示全部楼层
可以分享一下吗,
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-18 22:09 , Processed in 0.128548 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表