草庐IT

Lorenz系统、简单的Rossler系统和Chua电路系统的混沌吸引子——MATLAB实现

MATLAB机器学习 2023-10-12 原文

1.Lorenz系统

美国著名气象学家E.N.Lorenz在1963年提出来的用来刻画热对流不稳定性的模型,即Lorenz混沌模型,可以简单描述如下:
{ x ˙ = a ( y − x ) y ˙ = c x − x z − y z ˙ = x y − b z \left\{ \begin{array}{l} \dot{x}=a\left( y-x \right)\\ \dot{y}=cx-xz-y\\ \dot{z}=xy-bz\\ \end{array} \right. x˙=a(yx)y˙=cxxzyz˙=xybz
当参数取值为 a = 10 , b = 8 3 , c = 28 a=10,b=\frac{8}{3},c=28 a=10,b=38,c=28时,Lorenz系统有一个混沌吸引子,如下图所示:

其数值仿真实现代码如下:

clear;clc;
[T,Y] = ode45(@Lorenz,[0 300],[0.1;0.1;0.1]);
hold on
plot3(Y(:,3),Y(:,1),Y(:,2),'b','LineWidth',0.5);
view(-30,40);
xlabel('z(t)','FontName','Times New Roman','FontSize',15);
ylabel('x(t)','FontName','Times New Roman','FontSize',15);
zlabel('y(t)','FontName','Times New Roman','FontSize',15);
hold off
function dy = Lorenz(~,y)
a=10;  
b=8/3; 
c=28;
dy = zeros(3,1);   
 % a column vector
dy(1) = a*(y(2) - y(1));
dy(2) = -y(1) * y(3)+c*y(1)-y(2);
dy(3) = y(1) * y(2)-b*y(3);
end

2.Rossler系统

O.E.Rossler构造了几个简单但具有混沌行为的非线性方程组,其中最具有代表性的是他在1976年提出的如下方程组:
{ x ˙ = − ( y + z ) y ˙ = x + a y z = z ( x − c ) + b \left\{ \begin{array}{l} \dot{x}=-\left( y+z \right)\\ \dot{y}=x+ay\\ z=z\left( x-c \right) +b\\ \end{array} \right. x˙=(y+z)y˙=x+ayz=z(xc)+b
其中参数 a = b = 0.2 a=b=0.2 a=b=0.2,而参数 c c c常取下列数值之一:
2 , 2.3 , 3.5 , 4.7 , 5.0 , 5.7 , 6 , 7 , 8 , 9 , 10 , 11 2,2.3,3.5,4.7,5.0,5.7,6,7,8,9,10,11 2,2.3,3.5,4.7,5.0,5.7,6,7,8,9,10,11
我们在此处取 c = 5.7 c=5.7 c=5.7,得到如下图所示的Rossler混沌吸引子。值得注意的是,Rossler系统比Lorenz系统简单,而且他们拓扑不等价,即不存在任何同胚变换把一个系统变成另一个系统。

其数值仿真实现代码如下:

clear;clc;
[T,Y] = ode45(@Rossler,[0 500],[0.1;0.1;0.1]);
hold on
plot3(Y(:,1),Y(:,2),Y(:,3),'b','LineWidth',0.5);
view(-30,40);
xlabel('x(t)','FontName','Times New Roman','FontSize',15);
ylabel('y(t)','FontName','Times New Roman','FontSize',15);
zlabel('z(t)','FontName','Times New Roman','FontSize',15);
hold off
function dy = Rossler(~,y)
a=0.2;  
b=0.2; 
c=5.7;
dy = zeros(3,1);   
 % a column vector
dy(1) = -(y(2) + y(3));
dy(2) = y(1) + a * y(2);
dy(3) = y(3) * (y(1)-c)+b;
end

Chua电路

L.O.Chua构造的Chua电路是第一个能够真正能够用物理手段实现的混沌系统。其电路方程可以改写成如下形式的无量纲标准型:
{ x ˙ = p ( − x + y − f ( x ) ) y ˙ = x − y + z z ˙ = − q y \left\{ \begin{array}{l} \dot{x}=p\left( -x+y-f\left( x \right) \right)\\ \dot{y}=x-y+z\\ \dot{z}=-qy\\ \end{array} \right. x˙=p(x+yf(x))y˙=xy+zz˙=qy这里: f ( x ) = m ~ 0 x + 1 2 ( m ~ 1 − m ~ 0 ) ( ∣ x + 1 ∣ − ∣ x − 1 ∣ ) f\left( x \right) =\tilde{m}_0x+\frac{1}{2}\left( \tilde{m}_1-\tilde{m}_0 \right) \left( \left| x+1 \right|-\left| x-1 \right| \right) f(x)=m~0x+21(m~1m~0)(x+1x1)
其中, m ~ 0 < 0 , m ~ 1 < 0 \tilde{m}_0<0,\tilde{m}_1<0 m~0<0,m~1<0,下图展示了Chua电路的双卷波混沌吸引子,其中参数为:
p = 10.0 , q = 14.87 , m ~ 0 = − 0.68 , m ~ 1 = − 1.27 p=10.0,q=14.87,\tilde{m}_0=-0.68,\tilde{m}_1=-1.27 p=10.0,q=14.87,m~0=0.68,m~1=1.27

其数值仿真实现代码如下:

clear;clc;
[T,Y] = ode45(@Chua,[0 500],[0.1;0.1;0.1]);
hold on
plot3(Y(:,3),Y(:,1),Y(:,2),'b','LineWidth',0.5);
view(-30,40);
xlabel('z(t)','FontName','Times New Roman','FontSize',15);
ylabel('x(t)','FontName','Times New Roman','FontSize',15);
zlabel('y(t)','FontName','Times New Roman','FontSize',15);
hold off
function dy = Chua(~,y)
p = 10;
q = 14.87;
m0 = -0.68;
m1 = -1.27;
dy = zeros(3,1); 

dy(1) = p*(-y(1)+y(2)-(m0*y(1)+0.5*(m1-m0)*(abs(y(1)+1)-abs(y(1)-1))));
dy(2) = y(1)-y(2)+y(3);
dy(3) = -q*y(2);
end

有关Lorenz系统、简单的Rossler系统和Chua电路系统的混沌吸引子——MATLAB实现的更多相关文章

  1. ruby - 简单获取法拉第超时 - 2

    有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url

  2. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  3. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  4. ruby - 使用 Ruby 通过 Outlook 发送消息的最简单方法是什么? - 2

    我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=

  5. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  6. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  7. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  8. postman——集合——执行集合——测试脚本——pm对象简单示例02 - 2

    //1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json

  9. Qt Designer的简单使用 - 2

    在前面两节的例子中,主界面窗口的尺寸和标签控件显示的矩形区域等,都是用C++代码编写的。窗口和控件的尺寸都是预估的,控件如果多起来,那就不好估计每个控件合适的位置和大小了。用C++代码编写图形界面的问题就是不直观,因此Qt项目开发了专门的可视化图形界面编辑器——QtDesigner(Qt设计师)。通过QtDesigner就可以很方便地创建图形界面文件*.ui,然后将ui文件应用到源代码里面,做到“所见即所得”,大大方便了图形界面的设计。本节就演示一下QtDesigner的简单使用,学习拖拽控件和设置控件属性,并将ui文件应用到Qt程序代码里。使用QtDesigner设计界面在开始菜单中找到「Q

  10. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

随机推荐