mechanic05 发表于 2008-1-11 09:21

mechanic05--关于分岔程序的探讨2

各位新年好!!
1)我把上面分岔图特殊部分放大了.现在传上来,麻烦前辈给看看.从图上看,当参数取8.05以前时应该是1周期运动;当参数取8.13时应该是多周期运动;当参数取8.5时系统应该是混沌运动,对吧?
2)我把参数取4时的各图形及程序贴上来,麻烦前辈高人给看看,程序有无不妥之处.为什么当我取参数为8.13时(程序其他部分不动)并不是想象的多周期运动,而是和参数取4时结果相似?问题是否是画图点数取的范围有技巧?麻烦指点.非常感谢!!

clc;clear;
nt=4;
eta=0.1; b=24.35*10^4; omega=2; gamma=1;T=2*pi/omega;
str{1}='庞加莱截面-周期1吸引子';
    =ode23('nnn',,,[],nt,eta,b,omega,gamma);
    figure
    subplot(2,1,1)
    plot(t,x(:,1));
    title('位移曲线')
    xlabel('t');ylabel('x');
   
    subplot(2,2,3)
    plot(x(50000:end,1),x(50000:end,2));
    axis([-0.02 0.02 -0.2 0.2])
    xlabel('x');ylabel('dx/dt');
    title('相图')
   
   subplot(2,2,4)
   axis([-0.06 0.06 -0.05 0.05])
   hold on
   for i=50000:1000:100000
       plot(x(i,1),x(i,2),'k.');
   end
   title(str{1});
end

咕噜噜 发表于 2008-1-11 16:14

你得到的应该是poincare映射而不是截面
还有就是你把所取时间点改动一下看看所得的映射是什么样的,感觉你现在得到的有点不太对,不过相图比较有意思

mechanic05 发表于 2008-1-11 17:40

回复 2楼 的帖子

谢谢了!!
如果我想把上面的poincare映射程序,改成poincare截面,那我应该怎摸该呢?
正在修改、画图。

咕噜噜 发表于 2008-1-11 18:20

那就比较麻烦了啊,我也很少画poincare截面的,你搜索论坛看看吧,不好意思了
你这个程序改动会很大

mechanic05 发表于 2008-1-11 18:29

您好!这是我修改后的程序和图。只画出了前三个参数的图形。
自己感觉相图应该没问题,可是poincare映射就不对了。为什么会这样呢?看书上的程序取值范围都是像我前面给的程序一样,从中间某个范围取值的.比如
for i=50000:1000:100000
       plot(x(i,1),x(i,2),'k.');
   end

下面是我的程序
clc;clear;
nt=;
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
    =ode45('nnn',,,[],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()
   hold on
   for i=60000:1000:200000
       plot(x(i,1),x(i,2),'k.');
   end
   title(str{j});
end

for j=2
    =ode45('nnn',,,[],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()
   hold on
   for i=60000:1000:200000
       plot(x(i,1),x(i,2),'k.');
   end
   title(str{j});
end

for j=3
    =ode45('nnn',,,[],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

咕噜噜 发表于 2008-1-11 19:23

这么看你给出的这几个参数是混沌的,主要是看poincare映射

无水1324 发表于 2008-1-14 13:31

,omega一直没有变吧

咕噜噜 发表于 2008-1-14 14:21

她变动的是其他参数吧

无水1324 发表于 2008-1-14 15:06

回复 8楼 的帖子

怎么是 “她”呢
我在看了一下程序,确实是没有变化的,这个问题比较奇怪了
初值也没有变化,怎么会这样呢

咕噜噜 发表于 2008-1-14 15:44

恩,是不是程序没给全啊

mechanic05 发表于 2008-1-14 15:55

回复 10楼 的帖子

程序给全了的.本来当参数nt<pi^2时画出的图应该是周期的.但我发现这好象与画图的区间有关.如果把时间取的足够大,再消去前面足够长的瞬态响应,画出的图反而不好.

mechanic05 发表于 2008-1-14 15:58

回复 9楼 的帖子

不好意思,我变动的是参数nt呀.间接:@) 看就是参数a的变化.

mechanic05 发表于 2008-1-14 22:25

回复 7楼 的帖子

从我5楼的帖子中nt=8.jpg的poincare图可以看出,系统的振幅几乎没变化,对吧?只是dx/dt值有变化.这能说明系统处于周期运动吗?我的系统解析分析结果是:当nt<pi^2时系统只有周期解.

无水1324 发表于 2008-1-15 09:30

回复 13楼 的帖子

是的
这个个可能还是要靠楼主仔细地分析一下系统、以及程序

mechanic05 发表于 2008-1-15 10:09

回复 14楼 的帖子

谢谢!!:@)
我发现彭老师书上的van der pol 系统的poincare映射,当计算的区间取到时,也会发生和我的类似的情况.(注:彭老师取的).不知道该如何解释?
我的程序应该不会有问题吧?我觉得可能的情况是:
1)初始值的选取会影响吗?;
2)计算的时间段是否越长越好呢?照理,给定参数系统经过足够长的时间会趋近一个稳定状态,要摸周期运动,要摸概周期,要摸混沌,对吗?
我对这两个问题一直很疑惑.希望讨论!!
页: [1] 2
查看完整版本: mechanic05--关于分岔程序的探讨2