实验报告:混沌同步控制与图像加密
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
混沌同步控制与图像加密
――― 《混沌实验教学平台的设计与实现》中期期报告
(华南师范大学物理与电信工程学院指导老师:李军学生:王龙杰、张丹伟、杨土炎)摘要:基于混沌系统的某些独特性质,如初值敏感性,本文讨论了混沌理论的两个重要运用,即基于Lorenz 混沌系统的同步控制和基于Logistic 混沌映射的图像加密。在讨论与分析的基础上,利用MA TLAB 软件进行数值计算与模拟,得到较好的效果。
关键词:Lorenz 混沌系统;同步控制;Logistic 混沌映射;图像加密;MATLAB
基于Lorenz 混沌系统的同步控制
一.引言
混沌是自然界及人类社会中的一种普遍现象,至今为止,在学术界对“混沌”还没有统一的被普遍接受的定义。混沌运动是确定性和随机性的对立统一, 即它具有确定性和随机性, 所谓确定性是指混沌运动是在确定性系统中发生的,可以用动力学方程形式表述, 这与完全随机运动有着本质的区别; 所谓运动具有随机性, 是指不能像经典力学中的机械运动那样由某时刻状态可以预言以后任何时刻的运动状态, 混沌运动倒是像其他随机运动或噪声那样, 其运动状态是不可预言的, 换言之, 混沌运动在相空间中没有确定的轨道。混沌运动对初始状态(条件)具有敏感的依赖性, 只要对系统施加非常微小的扰动,就可能把系统从一个不稳定的周期运动转变到另一个不稳定的周期运动上去,也可能转变到另一稳定的运动状态上, 通
过这个特性, 我们可以利用混沌有意义的一面, 而避其有害的一面。Lorenz 系统作为第一个混沌模型,是混沌发展史上的一个里程碑, 具有举足轻重的地位。对Lorenz 系统的深入研究无疑已经极大地推动了混沌学的发展。
人们发现混沌控制在众多领域中有着广阔的应用前景, 尤其在电子学、电力系统、保密
通信和振荡发生器设计等领域有着巨大的应用前景, 因此引起了广泛的重视。由于混沌行为对初始状态的敏感依赖性, 受到噪声、干扰以及系统不稳定的影响, 特别是在混沌同步中, 实
际系统中很难观测到混沌同步。自从1990 年, Pecora 和Carroll 提出了混沌同步的概念和
方法以后,随着混沌同步研究的不断深入, 混沌控制与同步的研究工作得到了长足的发展, 并
逐渐成为混沌与控制领域研究的热点。对于相近的混沌轨道, 通过相同的非线性系统控制, 最终可能导致完全不相关的状态。但在实际应用中, 往往要求控制得到相关的状态或所需要的同步结果, 本文采用了加入反馈控制量的方法使其耦合, 最终达到所要求的同步。在计算机上的仿真结果显示, 能在短时间内实现耦合同步控制。
Lorenz 系统同步控制
1963年,Lorenz 在研究大气对流时,在三维自治系统中发现了第一个混沌吸引子。
用动
力学变量连续反馈来控制和驱动系统的运动是力学与电子工程中常用的方法。
取驱动信号为Lorenz 系统产生的变量x ,构成响应系统:
d
^ = _c(u 「V )u 0 dt dv
au — v — uw v 0 dt dw , z 、
b(uv - w) w 0 dt
可以看出,由于系数(u o ,V o ,W o )的存在,两个系统的初始值是不同的。我们知道,
当Lorenz 系统方程中参数取值为: a = 28,b 二&3,c=10时,系统经过一段时间演化
后将会进入混沌状态,
那么,如果能够实现这两个系统的同步控制,
则相应系统最终也会进
入同样的混沌,当然我们希望所需时间越短越好。下面,我们利用 MATLAB 软件进行数值
模拟,程序如下:
1.驱动系统微分方程:
fun cti on dY=Lore nz_drive n( T,Y) a=28;b=8/3;c=10;
dY=[-c*(Y (1)-Y (2) );a*Y(1)-Y (2)-Y(1)*Y(3);b*(Y(1)*Y( 2)-Y (3))];
2•响应系统:
fun cti on
[Y1] = Lore nz_resp on se(tspa n);
global Y; global T; yi nit = [0.1,0.1,20]; y(1:3) = yi nit;
tstart = 0; tstep = 0.1; wholetimes = 200; steps = 1; iteratetimes = wholetimes/steps; S=output; for i=1:iteratetimes
现在我们用一
个混沌信号去驱动另一个混沌系统。设驱动系统为
Lorenz 系统:
dx
dt dy
dt dz
dt
--c(x - y) =ax -y - xz = b(xy _z)
tspan = tstart:0.5*tstep:(tstart + tstep*steps);
[t,Y1] = ode45(@Lorenz_driven,tspan,y);
y = Y1(3,:); y(1)=S(i+1,2);
tstart = tstart + tstep*steps;
results(i,:)=Y1(3,:);
end
subplot(3,1,2); plot(results(:,1),results(:,3), 'b-' ); title( ' 响应' );
subplot(3,1,3);
plot(Y(:,1),Y(:,3), 'k-' ,results(:,1),results(:,3), 'b-' ); title( ' 驱动- 响应叠加' );
for i=1:iteratetimes
TT(1,i)=i*tstep;
end
figure(2);
subplot(2,1,1);
plot(T,Y(:,3), 'k-' );title( ' 驱动' );
subplot(2,1,2);
plot(TT,results(:,3), 'k-' );title( ' 响应' );
3. 驱动系统的输出:
function s=output;
global Y; global T;
tstart = 0; tstep = 0.1; wholetimes = 200; tspan=tstart:tstep:wholetimes*tstep; [T,Y] = ode45(@Lorenz_driven,tspan,[0.1 0.1 0.1]); s=[T,Y];
figure(1); subplot(3,1,1);
plot(Y(:,1),Y(:,3), 'k-' );
title( ' 驱动' );
其中,我们设置驱动系统的初值为[0.1,0.1,0.1], 而响应系统的初值为
显然Z的初值相差很大。在MATLAB界面窗口输入指令:Lorenz_response X-Z 相图图像:
[0.1,0.1,20], ,可以看到以下