|
楼主 |
发表于 2008-1-11 18:29
|
显示全部楼层
您好!这是我修改后的程序和图。只画出了前三个参数的图形。
自己感觉相图应该没问题,可是poincare映射就不对了。为什么会这样呢?看书上的程序取值范围都是像我前面给的程序一样,从中间某个范围取值的.比如
for i=50000:1000:100000
plot(x(i,1),x(i,2),'k.');
end
下面是我的程序
clc;clear;
nt=[8, 8.13, 16, pi^2, 8., 8.5, 8.53];
eta=0.1; b=24.35*10^4; omega=2; gamma=1;T=2*pi/omega;
str{1}='庞加莱截面-周期1吸引子';
str{2}='庞加莱截面';
str{3}='庞加莱截面';
str{4}='庞加莱截面';
str{5}='庞加莱截面';
str{6}='庞加莱截面';
str{7}='庞加莱截面';
str{8}='庞加莱截面';
for j=1
[t,x]=ode45('nnn',[0:T/1000:200*T],[0.05,0.05],[],nt(j),eta,b,omega,gamma);
figure
subplot(2,1,1)
plot(t,x(:,1));
title('位移曲线')
xlabel('t');ylabel('x');
subplot(2,2,3)
plot(x(60000:end,1),x(60000:end,2));
axis([-0.03 0.03 -0.2 0.2])
xlabel('x');ylabel('dx/dt');
title('相图')
subplot(2,2,4)
axis([0 0.005 -0.002 0.002])
hold on
for i=60000:1000:200000
plot(x(i,1),x(i,2),'k.');
end
title(str{j});
end
for j=2
[t,x]=ode45('nnn',[0:T/1000:200*T],[0.05,0.05],[],nt(j),eta,b,omega,gamma);
figure
subplot(2,1,1)
plot(t,x(:,1));
title('位移曲线')
xlabel('t');ylabel('x');
subplot(2,2,3)
plot(x(60000:end,1),x(60000:end,2));
axis([-0.03 0.03 -0.2 0.2])
xlabel('x');ylabel('dx/dt');
title('相图')
subplot(2,2,4)
axis([0 0.01 -0.003 0.003])
hold on
for i=60000:1000:200000
plot(x(i,1),x(i,2),'k.');
end
title(str{j});
end
for j=3
[t,x]=ode45('nnn',[0:T/1000:200*T],[0.05,0.05],[],nt(j),eta,b,omega,gamma);
figure
subplot(2,1,1)
plot(t,x(:,1));
title('位移曲线')
xlabel('t');ylabel('x');
subplot(2,2,3)
plot(x(60000:end,1),x(60000:end,2));
axis([-0.05 0.05 -0.3 0.3])
xlabel('x');ylabel('dx/dt');
title('相图')
subplot(2,2,4)
axis([-0.05 0.05 -0.3 0.3])
hold on
for i=60000:1000:200000
plot(x(i,1),x(i,2),'k.');
end
title(str{j});
end |
|