离歌527 发表于 2019-5-9 08:46

龙格库塔法画的相图与分岔图对应不上





离歌527 发表于 2019-5-9 08:46

第一个图是用四阶龙格库塔法画的分岔图的部分放大,omiga=1.288从图上看应该是单周期,第三个图是用扫频法做的poincare映射图,确实是只有一个点,第二个图是四阶龙格库塔做的相图,从数据对应看的确实是一个周期画出这么个东西,但是单周期对应的不应该就是个圈吗,这个看起来怎么像双倍周期对应的相图呢?求大佬解答。下面是程序(只是求解过程部分,输入未知量以及求解是用的另一个m文件)
分岔图程序:
function qiujie(omigab,omigae,v0,v1,nx,n,m,path1)
clc;
ad=cd;
omiga1=omigab:(omigae-omigab)/n:omigae;
omiga=omiga1*(2*pi);
options=odeset('RelTol',1e-7);
path=;
filename=['ox1',num2str(omigab),'_',num2str(omigae),'----v0.',num2str(v0),' & v1.',num2str(v1),' & nx.',num2str(nx),'.dat'];
filename2=['ox2',num2str(omigab),'_',num2str(omigae),'----v0.',num2str(v0),' & v1.',num2str(v1),' & nx.',num2str(nx),'.dat'];
mkdir(path);
fileID=fopen(,'w+');
fclose(fileID);
fileID=fopen(,'a+');
fileID2=fopen(,'w+');
fclose(fileID2);
fileID2=fopen(,'a+');

%%循环部分,每个循环解一个方程
for j=1:length(omiga)
t3=clock;
tt=2*pi/omiga(j);
[~,y]=ode45(@fangcheng,0:tt/100:800*tt,,options,v0,v1,nx,omiga(j));

fprintf(fileID,'%g\t',omiga1(j));
fprintf(fileID,'%g\t',y(35000-500+m:100:80001-500+m,1));
fprintf(fileID,'\n');
fprintf(fileID2,'%g\t',omiga1(j));
fprintf(fileID2,'%g\t',y(35000-500+m:100:80001-500+m,3));
fprintf(fileID2,'\n');

l=j/length(omiga);
t4=clock;
t=(length(omiga)-j)*etime(t4,t3)/60;
['进度:',num2str(l*100),'%| 预计剩时:',num2str(t)]
end

fclose(fileID);
fclose(fileID2);


相图与poincare映射图程序:
function qiujie(omiga,v0,v1,nx,path1)
clc;
ad=cd;
options=odeset('RelTol',1e-7);
path=;
mkdir(path);
fileID=fopen(,'w+');
fclose(fileID);
fileID=fopen(,'a+');
tt=2*pi/omiga;
[~,y]=ode45(@fangcheng,0:tt/100:800*tt,,options,v0,v1,nx,omiga);
a=;
=size(a);
for p=1:1:m
    for q=1:1:n
       if q==n
         fprintf(fileID,'%g\n',a(p,q));
      else
      fprintf(fileID,'%g\t',a(p,q));
       end
    end
end
fclose(fileID);
clear fileID m n a p q;
fileID=fopen(,'w+');
fclose(fileID);
fileID=fopen(,'a+');
a=;
=size(a);
for p=1:1:m
    for q=1:1:n
       if q==n
         fprintf(fileID,'%g\n',a(p,q));
      else
      fprintf(fileID,'%g\t',a(p,q));
       end
    end
end
fclose(fileID);
clear fileID m n a;
end

方程:
function y=fangcheng(t,x,v0,v1,nx,omiga)   
y=[x(2);(-0.3-0.084*(v0+v1*sin(omiga*t)))*x(2)+...
      (-0.22+0.021*(v0+v1*sin(omiga*t)))*x(4)+...
      (-4.71525-0.0337*nx+0.2*(v0+v1*sin(omiga*t))+...
      0.0523143*(v0+v1*sin(omiga*t))*(v0+v1*sin(omiga*t))-0.042*omiga*v1*cos(omiga*t))*x(1)+...
      (8.13643-0.00475639*nx+1.0368434*(v0+v1*sin(omiga*t))+...
      0.451728*(v0+v1*sin(omiga*t))*(v0+v1*sin(omiga*t))+0.01*omiga*v1*cos(omiga*t))*x(3)-...
      936734*x(1)*x(3)*x(3)+...
      245204*x(1)*x(1)*x(3)-...
      76525.7*x(1)*x(1)*x(1)+...
      69499.7*x(3)*x(3)*x(3);
x(4);(-0.2216-0.20235*(v0+v1*sin(omiga*t)))*x(2)+...
   (-0.685-0.0978405*(v0+v1*sin(omiga*t)))*x(4)+...
   (9.36946-0.0047564*nx-0.59457*(v0+v1*sin(omiga*t))+...
   0.0814*(v0+v1*sin(omiga*t))*(v0+v1*sin(omiga*t))-0.1*omiga*v1*cos(omiga*t))*x(1)+...
   (-181.568-0.255393*nx+0.2393*(v0+v1*sin(omiga*t))+...
   0.836227*(v0+v1*sin(omiga*t))*(v0+v1*sin(omiga*t))-0.0489203*omiga*v1*cos(omiga*t))*x(3)+...
   208499*x(1)*x(3)*x(3)-...
   936734*x(1)*x(1)*x(3)+...
   81734.6*x(1)*x(1)*x(1)-3863660*x(3)*x(3)*x(3)];


                       

博博士 发表于 2019-12-11 17:34

单周期还是倍周期,与相图几个圈是没关系的,相图中两个圈,poincare映射是一个点,那就是单周期的

meiyongyuandeze 发表于 2020-3-2 09:47

这种现象多半是和你选择的Poincare截面的方式,也就是你建立的映射相关。对于第二个图所示的系统运动而言,选择不一样的映射方法将会导致完全不一样的结果,可能映射出一个点,两个非对称性点等。
页: [1]
查看完整版本: 龙格库塔法画的相图与分岔图对应不上