声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1833|回复: 8

[稳定性与分岔] 分岔图

[复制链接]
发表于 2010-11-16 15:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请问下高手:我的这程序怎么画不出分插图,望高手等指导下,多谢了!!!
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=[0.02:0.01:0.05];

  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=[0.02:0.01:0.05];
k=0;
YY2=[];
for F=v0
    y0=[0.01 0.01 0.01 0.01];
   F;
    k=k+1;
    % discard the first 60 periodic data;
    %除去前面60个周期的数据,并将最后的结果作为下一次积分的初值
    tspan=[0:0.01:100];
    [t,Y]=ode45(@Untitled0,tspan,y0);
    y0=Y(end,:);
    j=1;
    for i=60:200
        tspan=[0:0.01:100];
        [t,Y]=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);
回复
分享到:

使用道具 举报

发表于 2010-11-17 16:39 | 显示全部楼层
请给出报错提示,不然这么多代码,没法一行一行看的。

仅看出一个问题,tspan=[0:0.01:100];设置不对
 楼主| 发表于 2010-11-18 10:09 | 显示全部楼层
系统的运动微分方程为.doc (51 KB, 下载次数: 21) 呵呵,非常感谢老师能在百忙中抽出时间审阅!下面模型及出错点我一一列举,敬请老师帮我看看。多谢了!
发表于 2010-11-18 17:06 | 显示全部楼层
  1. &&
复制代码
改为
  1. &
复制代码
看看
发表于 2010-11-18 19:33 | 显示全部楼层
公式较长,你的模型中有周期激励么?
 楼主| 发表于 2010-11-19 08:40 | 显示全部楼层
回复 5 # octopussheng 的帖子

呵呵,没有,是自激振动系统
 楼主| 发表于 2010-11-19 08:40 | 显示全部楼层
回复 4 # Vickyvictoria 的帖子

呵呵,多谢了!
发表于 2010-11-19 09:06 | 显示全部楼层
回复 6 # cqzyy200818 的帖子

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

可结合庞加莱截面来取相点
发表于 2010-11-26 09:03 | 显示全部楼层
同意楼上,自激振动周期没办法确定
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 17:47 , Processed in 0.077196 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表