cqzyy200818 发表于 2010-11-16 15:38

分岔图

请问下高手:我的这程序怎么画不出分插图,望高手等指导下,多谢了!!!
function dy=Untitled0(t,y)
global Alpha;
global Beta;
global Deta;
global Gamma;
global Eta;
global v0;
global c0;
global c1;
global c2;

Alpha=1.2;Beta=1.3;Deta=0.8;Gamma=3.0;Eta=0.25;
c0=0.01;c1=0.002;c2=0.002;v0=;

if ((abs(y(1)+Alpha*(y(1)-y(3))+c0*(y(2)-y(4))+c1*y(2))<1.0&&abs(y(2)-v0)<=1.0e-4) && (abs(y(3)+Alpha*(y(3)-y(1))+c0*(y(4)-y(2))+c2*y(4))<Beta && abs(y(4)-v0)<=1.0e-4))
       dy=zeros(4,1);
       dy(1)=y(2);
       dy(2)=0;
       dy(3)=y(4);
       dy(4)=0;
elseif (abs(y(1)+Alpha*(y(1)-y(3))+c0*(y(2)-y(4))+c1*y(2))>1.0||abs(y(2)-v0)~=1.0e-4)&&(abs(y(3)+Alpha*(y(3)-y(1))+c0*(y(4)-y(2))+c2*y(4))>Beta||abs(y(4)-v0)~=1.0e-4)
   dy=zeros(4,1);
   dy(1)=y(2);
   dy(2)=-y(1)-Alpha*(y(1)-y(3))-c0*(y(2)-y(4))-c1*y(2)-sign(y(2)-v0)*((1.0-Deta)/(1.0+Gamma*fabs(y(2)-v0))+Deta+Eta*(y(2)-v0)^2);
   dy(3)=y(4);
   dy(4)=-y(3)-Alpha*(y(3)-y(1))-c0*(y(4)-y(2))-c2*y(4)-sign(y(4)-v0)*((1.0-Deta)/(1.0+Gamma*fabs(y(4)-v0))+Deta+Eta*(y(4)-v0)^2);
elseif(abs(y(1)+Alpha*(y(1)-y(3))+c0*(y(2)-y(4))+c1*y(2))<1.0&&abs(y(2)-v0)<=1.0e-4) && (abs(y(3)+Alpha*(y(3)-y(1))+c0*(y(4)-y(2))+c2*y(4))>Beta||abs(y(4)-v0)~=1.0e-4)
       dy=zeros(4,1);
       dy(1)=y(2);
       dy(2)=0;
       dy(3)=y(4);
       dy(4)=-y(3)-Alpha*(y(3)-y(1))-c0*(y(4)-y(2))-c2*y(4)-sign(y(4)-v0)*((1.0-Deta)/(1.0+Gamma*fabs(y(4)-v0))+Deta+Eta*(y(4)-v0)^2);
elseif (abs(y(1)+Alpha*(y(1)-y(3))+c0*(y(2)-y(4))+c1*y(2))>1.0||abs(y(2)-v0)~=1.0e-4)&& (abs(y(3)+Alpha*(y(3)-y(1))+c0*(y(4)-y(2))+c2*y(4))<Beta&&abs(y(4)-v0)<=1.0e-4)
      dy=zeros(4,1);
      dy(1)=y(2);
      dy(2)=-y(1)-Alpha*(y(1)-y(3))-c0*(y(2)-y(4))-c1*y(2)-sign(y(2)-v0)*((1.0-Deta)/(1.0+Gamma*fabs(y(2)-v0))+Deta+Eta*(y(2)-v0)^2);
      dy(3)=y(4);
       dy(4)=0;
end


clear;
global F ;
v0=;
k=0;
YY2=[];
for F=v0
    y0=;
   F;
    k=k+1;
    % discard the first 60 periodic data;
    %除去前面60个周期的数据,并将最后的结果作为下一次积分的初值
    tspan=;
    =ode45(@Untitled0,tspan,y0);
    y0=Y(end,:);
    j=1;
    for i=60:200
      tspan=;
      =ode45(@Untitled0,tspan,y0);
      YY1(k,j)=Y(end,1);   % get the omega data from every period end
      j=j+1;               %取出每一个周期内的第一个解的最后一个值。
      y0=Y(end,:);
    end
end
bifdata=YY1(:,end-51:end);
plot(v0,bifdata,'k.','markersize',1);

octopussheng 发表于 2010-11-17 16:39

请给出报错提示,不然这么多代码,没法一行一行看的。

仅看出一个问题,tspan=;设置不对

cqzyy200818 发表于 2010-11-18 10:09

呵呵,非常感谢老师能在百忙中抽出时间审阅!下面模型及出错点我一一列举,敬请老师帮我看看。多谢了!

Vickyvictoria 发表于 2010-11-18 17:06

&&改为&看看

octopussheng 发表于 2010-11-18 19:33

公式较长,你的模型中有周期激励么?

cqzyy200818 发表于 2010-11-19 08:40

回复 5 # octopussheng 的帖子

呵呵,没有,是自激振动系统

cqzyy200818 发表于 2010-11-19 08:40

回复 4 # Vickyvictoria 的帖子

呵呵,多谢了!

octopussheng 发表于 2010-11-19 09:06

回复 6 # cqzyy200818 的帖子

那按照频闪取点似不大妥当

可结合庞加莱截面来取相点

Vickyvictoria 发表于 2010-11-26 09:03

同意楼上,自激振动周期没办法确定
页: [1]
查看完整版本: 分岔图