前言
混沌是确定性系统中,有限相空间内的高度不稳定运动。自1963年Lorenz证明大气对流模型中存在混沌,非线性系统的混沌被广泛研究。人们一方面希望电路产生混沌,另一方面又希望混沌是可控的,以此来达到混沌通信或者混沌控制的目的,因此混沌同步是必不可少的。1991年,美国海军实验室的Pecora和Carroll研究 𝑛 维动态系统驱动同步问题时,得出了子系统同步的必要条件:子系统分量的李亚普诺夫指数全为负。本文是非线性系统混沌同步的MATLAB仿真。
一、非线性系统的扩散耦合
首先考虑典型参数的Lorenz系统和Rossler系统,系统设置详见以往的文章MATLAB混沌系统仿真其一:Lorenz系统和Rossler系统。根据文章的研究结果,典型参数下,使用y分量驱动的罗斯系统、使用x或z分量驱动的Lorenz系统可以同步。采用扩散耦合的方式使用Rossler系统驱动Lorenz系统:
Rossler系统 | Lorenz系统 |
---|
d
x
1
=
?
(
y
1
+
z
1
)
dx_1=-\left(y_1+z_1\right)
dx1?=?(y1?+z1?) |
d
x
2
=
?
σ
(
x
2
?
y
2
)
dx_2\mathrm{=}-\sigma\left(x_2-y_2\right)
dx2?=?σ(x2??y2?) |
d
y
1
=
x
1
+
a
y
1
dy_1=x_1+ay_1
dy1?=x1?+ay1? |
d
y
2
=
r
x
2
?
y
2
?
x
2
z
2
+
K
(
y
2
?
y
1
)
dy_2\mathrm{=}rx_2-y_2-x_2z_2+K(y_2-y_1)
dy2?=rx2??y2??x2?z2?+K(y2??y1?) |
d
z
1
=
b
+
z
(
x
1
?
c
)
dz_1=b+z\left(x_1-c\right)
dz1?=b+z(x1??c) |
d
z
2
=
?
β
?
z
2
+
x
2
y
2
dz_2\mathrm{=}-\beta\ z_2+x_2y_2
dz2?=?β?z2?+x2?y2? |
其中
K
K
K是耦合强度。 驱动系统直接使用定步长的ode45函数计算,方便简洁
y0=[1;0;1];%初值矩阵
tspan=0:0.001:200;
k=40;%耦合强度
t0=100;%注入时间
[t,y]=ode45(@rossler,tspan,y0);
v=y(:,2);
[t1,y1] = rk4(t,y0,v,k,t0);
而对于从系统,只需要在MATLAB混沌系统仿真其一:Lorenz系统和Rossler系统的基础上,修改Lorenz系统公式,加入上述Rossler系统
y
y
y分量。当然,如果要求有更高的要求,可以修改以前写的rk4函数,增加动态显示,实时加入等功能。这里展示了使用两个Lorenz函数,一个不耦合,另一个耦合,使得可以输出实时可控。
function [t,y]=rk4(t,y0,v,k,t0)
if(~exist('t0','var'))
t0 = 0; % 默认不分割
end
y=zeros(length(y0),length(t)); %储存结果的矩阵
y(:,1)=y0; %加入初值
spl=ceil(length(t)*t0/max(t));
for n=2:length(t)
% 龙格库塔四阶算法
if n<spl
d0 = v(n-1) - y(2,n-1);
dt = t(2)-t(1);
k1 = dt * lorenz(t(n-1), y(:,n-1), d0);
k2 = dt * lorenz(t(n-1) + dt/2, y(:,n-1) + k1 /2, d0);
k3 = dt * lorenz(t(n-1) + dt/2, y(:,n-1) + k2 /2, d0);
k4 = dt * lorenz(t(n-1) + dt, y(:,n-1) + k3, d0);
y(:,n)=y(:,n-1)+(k1+2*k2+2*k3+k4)/6;
else
d0 = v(n-1) - y(2,n-1);
dt = t(2)-t(1);
k1 = dt * C_lorenz(t(n-1), y(:,n-1), d0, k);
k2 = dt * C_lorenz(t(n-1) + dt/2, y(:,n-1) + k1 /2, d0, k);
k3 = dt * C_lorenz(t(n-1) + dt/2, y(:,n-1) + k2 /2, d0, k);
k4 = dt * C_lorenz(t(n-1) + dt, y(:,n-1) + k3, d0, k);
y(:,n)=y(:,n-1)+(k1+2*k2+2*k3+k4)/6;
end
end
y=y';
function dy_dt=lorenz(t,y)
%lorez方程
p=10;
r=40;
b=8/3;
dx_dt= p*(y(2)-y(1));
dy_dt= r*y(1)-y(2)-y(1)*y(3);
dz_dt=y(1)*y(2)-b*y(3);
dy_dt=[dx_dt;dy_dt;dz_dt];
end
function dy_dt=C_lorenz(t,y,d,k)
%Lorenz方程
p=10;
r=40;
b=8/3;
dx_dt= p*(y(2)-y(1));
dy_dt= r*y(1)-y(2)-y(1)*y(3)+k*d;
dz_dt=y(1)*y(2)-b*y(3);
dy_dt=[dx_dt;dy_dt;dz_dt];
end
end
再加入动态图像的输出,输出如下图形:
可以看出,在非线性系统中,使用子系统驱动另一个非线性系统(就像此处的使用Rossler系统的
y
y
y分量驱动Lorenz的
y
y
y分量),在耦合强度
K
K
K足够大,超过临界耦合条件,可以达成两系统的同步。
不同的驱动方式和不同的系统在混沌同步中具有不同的表现,耦合方式也不仅有扩散耦合,如Deniz Eroglu在17年的论文里直接使用两个初值不同的Lorenz系统,但两个系统的
x
x
x分量相同。本文的混沌同步是不完全的同步(因为驱动-响应并非相同的系统),实际上的混沌同步也分为完全同步和广义同步。在光通信系统、电路系统都能达成混沌同步,由于带宽限制和衰减,电路的混沌通信受到严重限制,全光混沌通信在未来更具有潜力。
|