jingjinghua 发表于 2010-12-9 13:37

我这个AFM的分岔图怎么画不出来呢

附上源程序大家帮我看看问题会出在哪里
function dx=AFMfencha(t,x)
global F;
delt=0.04;
sigma=0.3;
alpha=0.8;
fwan=2;
omega=1;
d=4/27;

fil=(sigma^6*d)/(30*(alpha+x(1))^8)-d/(alpha+x(1))^2;
fil=double(fil);

dx=zeros(3,1);
dx=[x(2)-F*x(1)
    -x(1)-delt*x(2)+fwan*cos(t)+fil-F*x(2)];



function AFM_bifur_F
clear;
global F ;

range=;
period=2*pi;
k=0;
YY1=[];
step=2*pi/100;%步长。
for F=range
    y0=;
    F
    k=k+1;
    % discard the first 60 periodic data;
    %除去前面60个周期的数据,并将最后的结果作为下一次积分的初值
    options = odeset('MaxStep',0.001);
    tspan=;
    =ode45(@AFMfencha,tspan,y0,options);
    y0=Y(end,:);
    j=1;
    for i=60:200
      tspan=;
      =ode45(@AFMfencha,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(range,bifdata,'b*','markersize',1);
下面是画出来的图,但感觉不对,因为当参数F之间仿真出来是混沌的,在F>2时应该是周期解的。


gghhjj 发表于 2010-12-10 10:43

不知道你这个程序具体的模型是什么样的
1.dx=zeros(3,1);
dx=[x(2)-F*x(1)
    -x(1)-delt*x(2)+fwan*cos(t)+fil-F*x(2)];请问你的系统是几维的?从程序上推测是2维的,但是dx为什么要定义成三维的呢?

2.
运行过程中,matlab提示:
In ode45 at 371
In AFM_bifur_F at 22
Warning: Failure at t=1.256689e+003.Unable to meet integration tolerances
without reducing the step size below the smallest value allowed (3.637979e-012)
at time t.
这说明计算并不能收敛,可能方程是刚性的,建议改用ode23s或者ode15s进行计算
3.
即便程序计算都没有问题,也不是所有的系统都会出现的分岔的,这和系统自身的特性及参数有关
页: [1]
查看完整版本: 我这个AFM的分岔图怎么画不出来呢