混沌系统的电路实现与仿真分析
1. 设计思路
混沌系统模块化设计方法的主要思路是,根据系统的无量纲状态方程,用模块化设计理念设计相应的混沌电路,其中主要的模块包括:反相器模块、积分器模块、反相加法比例运算模块和非线性函数产生模块。 2. 设计过程
第一步,对混沌系统采用Matlab进行数值分析,观察状态变量的时序图、相图,观察系统状态变量的动态范围;
第二步,对变量进行比例压缩变换。我们通常取电源电压为±15V,集成运放的动态范围为±13.5V,如果系统状态变量的动态范围超过±13.5,则状态变量的动态范围超过了集成运放的线性范围,需要进行比例压缩变换,如没有超出,则不需要进行变换。 举例:变换的基本方法
?x?k1u?y?kv?2 代入原状态方程,然后重新定义u?x,v?y,w?z得到的状态方程即??z?k3w???为变量压缩后的状态方程。
第三步,作时间尺度变换。将状态方程中的t变换为?0t,其中?0为时间尺度变换因子,设?0=1/R0C0,从而将时间变换因子与积分电路的积分时间常数联系起来。
第四步,作微分-积分变换。
第五步,考虑到模块电路中采用的是反相加法器,将积分方程作标准化处理。 第六步,根据标准积分方程,可得到相应的实现电路。
第七步,采用Pspice仿真软件或Multisim仿真软件对电路进行仿真分析。
3. 设计举例:Lorenz系统的电路设计与仿真
Lorenz系统的无量纲归一化状态方程为
???ax?ayx??cx?xz?y (1) y???xy?bzz其中当a=10,b=8/3,c=28时,该系统可以展现出丰富的混沌行为。
MATLAB仿真程序如下:
function dx=lorenz(t,x) %?¨ò?oˉêy a=10; b=8/3;c=28; %?¨ò??μí32?êy %***************************************** dx=zeros(3,1); dx(1)=a*(x(2)-x(1));
dx(2)=c*x(1)-x(1).*x(3)-x(2); dx(3)=x(1).*x(2)-b*x(3);
%*********************************?¨ò?×′ì?·?3ì clear;
options=odeset('RelTol',1e-6,'AbsTol',[1e-6,1e-6,1e-6]); t0=[0 500]; x0=[1,0,0];
[t,x]=ode45('Lorenz',t0,x0,options); n=length(t);
n1=round(n/2);
figure(1);
plot(t(n1:n),x(n1:n,1)); %×′ì?xμ?ê±Dòí?
xlabel('t','fontsize',20,'fontname','times new roman','FontAngle','normal'); ylabel('x1','fontsize',20,'fontname','times new roman','FontAngle','normal');
figure(2);
plot(x(n1:n,1),x(n1:n,3)); %x-z?àí?
xlabel('x','fontsize',20,'fontname','times new roman','FontAngle','italic'); ylabel('Z','fontsize',20,'fontname','times new roman','FontAngle','italic');
figure(3);
plot3(x(n1:n,1),x(n1:n,2),x(n1:n,3)); %x-y-z?àí?
xlabel('x','fontsize',20,'fontname','times new roman','FontAngle','italic'); ylabel('y','fontsize',20,'fontname','times new roman','FontAngle','italic');
zlabel('z','fontsize',20,'fontname','times new roman','FontAngle','italic');
20151055045403530252015x1-5-10z300350400450500010-15-2025050-20-15-10-505101520tx
504030z2010040200-20-10-40-2010020yx
图1 lorenz系统的时序图和相图
由于状态变量的范围超过了±13.5,所以先必须进行变量压缩,按均匀压缩10倍进行处理
后得到的状态方程为
???10x?10yx??28x?10xz?y (2) y??10xy?(8/3)zz作时间尺度变换,令?=?0t,?0=100,得
???1000x?1000x(?y)???2800 y(?x)?1000xz?100y (3)???1000z(?x)y?(800/3)z