前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Matlab求解混沌系统最大李雅普诺夫指数

Matlab求解混沌系统最大李雅普诺夫指数

作者头像
用户9925864
发布2022-07-27 09:36:05
1.8K0
发布2022-07-27 09:36:05
举报
文章被收录于专栏:算法工程师的学习日志

李雅普诺夫指数(Lyapunov)是一个较为典型的判断一个系统是否具有混沌特性以及混沌的程度分析方法。

李雅普诺夫指数:在相空间中初始时无限接近的两个轨道,随着时间的不断推移按指数收敛或发散的平均变化率,它可以定量描述混沌系统在局部范围里系统轨道间的分离程度。

假设在一维动力系统 Xn+1=F(Xn),为了表示从整体上看相邻两状态分离的情况,必须对时间(或迭代次数)取平均,不妨设平均每次迭代所引起的指数分离中的指数为λ,原 来相距为ε的两点经过n次迭代后[相距为]:

如果λ>0,运动轨道的局部不稳定,相邻点的轨道的终按指数方式分离,则在 此作用下反复折叠,形成混沌吸引子。

在n维连续动力学系统中,将一个无穷小n维的球作为系统的初始条件,随着动力 系统的演化向相空间的各个方向作伸展或收缩,球将变为椭球,将椭球的所有主轴按其长度顺序徘列,那么第i个李雅普诺夫指数根据第i个主轴的长度pi(t)的增加速率定义为:

将这n 个李雅普诺夫指数按照从大到小进行排序,得到李雅普诺夫指数谱:

λ1>=λ2>=λ3>=…>=λn。对于混沌系统,必须有一个正的李雅普诺夫数,所以通常采用计算最大李雅普诺夫指数的方法来判断系统是否是混沌的。

以sine函数为例,求其最大李指数

子函数:

代码语言:javascript
复制
function newx=sine_f1(x)
newx=x(2)*sin(pi*x(1))/4;

主函数:

代码语言:javascript
复制
clc;
clear
d0=1e-7;
Z=[]; 
r=0.5;
for u=linspace(0,8,800)
   le=0;
   lsum=0;
   x=[r;u];
   x1=[r+d0;u];
   for k=1:800
       x=sine_f1(x);
       x1=sine_f1(x1);
       d1=sqrt((x(1)-x1(1))^2);%1范数
       x1=x+(d0/d1)*(x1-x);
       if k>100
           lsum=lsum+log(d1/d0);
       end
       x=[x(1);u];
       x1=[x1(1);u];
   end
   le=lsum/(k-100);
   Z=[Z,u+le*1i]; 
end
plot(Z,'-') 
xlabel('k','fontsize',12,'FontAngle','italic');
ylabel('Lyapunov exponent','fontsize',12,'FontAngle','italic');
grid on;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法工程师的学习日志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档