我这个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时应该是周期解的。
不知道你这个程序具体的模型是什么样的
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]