|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
混沌同步模型
驱动系统和响应系统都是Lorenz System,只不过初值不同。
驱动系统: dx/dt=a*(y-x)
dy/dt=r*x-y-xz
dz/dt=x*y-b*z
初值(0.1,0.1,0.1)
输出信号 令S(t)=x(t)
响应系统:将S(t)代替x(t)作为激励信号
dx/dt=a*(y-x)
dy/dt=r*x-y-xz
dz/dt=x*y-b*z
初值(0.1,0.1,1)
最后求响应系统的输出x(t),y(t),z(t)
程序:
function [Y1] = Lorenz_response(tspan);%%计算处于响应地位的Lorenz系统的数值解,并由此画出其相图
yinit = [0.1,0.1,1];% 初始化输入
y(1:3) = yinit;
tstart = 0; % 时间初始值
tstep = 1e-1; % 时间步长
wholetimes = 1e2; % 总的循环次数
steps = 1; % 每次演化的步数
iteratetimes = wholetimes/steps; % 演化的次数
S=output;
for i=1:iteratetimes;
tspan = tstart:tstep:(tstart + tstep*steps);
[T,Y1] = ode45(@Lorenz_driven, tspan, y);
y = Y1(size(Y1,1),:);
y(1)=S(i,1);
% 重新定义起始时刻
tstart = tstart + tstep*steps;
end
figure(1)
plot3(Y1(:,1),Y1(:,2),Y1(:,3))
function s=output;
tstart = 0; % 时间初始值
tstep = 1e-1; % 时间步长
wholetimes = 1e2; % 总的循环次数
% options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
tspan=tstart:tstep:wholetimes*tstep
[T,Y] = ode45(@Lorenz_driven,tspan,[0.1 0.1 0.1]);
s=Y
figure(3)
plot3(Y(:,1),Y(:,2),Y(:,3))
function dY=Lorenz_driven(t,Y);
a=10;
b=8/3;
r=60;
dY=zeros(3,1);
dY=[a*(Y(2)-Y(1));-Y(1)*Y(3)+r*Y(1)-Y(2);Y(1)*Y(2)-b*Y(3)]
画出的两个图,见附件。
问题:1、驱动系统和响应系统取得积分步长是一样的,画出的图差别却很大。
2、在程序中用S(:,1)取代了Y1(:,1),但是显示的Y(:,1)和Y1(:,1)却不相同。
请各位高手指教。:@)
[ 本帖最后由 luran312 于 2008-5-5 16:21 编辑 ] |
-
-
评分
-
1
查看全部评分
-
|