|
回复 4 # lihaitao123 的帖子
我运行了你的程序,发现错误不是你所说的
??? Input argument "f" is undefined.
Error in ==> CQ at 11
du=[u(2);
错误是说你的“f”没有定义,其实你的f值没有传递到函数文件
对你的主程序进行了修改
clear all;
clc
global omega delta1 delta2 alpha1 xi1 alpha2 xi2 beta2 f ;
omega = 0.6283;
beta2 =151.4993;
delta1 =7.2858e+006;
alpha1 = 3.7452e+010;
xi1 = 37.8748;
alpha2 =23.4969;
delta2 =19.5807;
xi2 =3.7875e+003;
range=[1:0.05:10];
period=2*pi/omega; %
k=0;
YY1=[];
step=2*pi/10; %步长。
for f=range
disp(f)
y0=[0 0 0 0];
k=k+1;
% discard the first 60 periodic data;
%除去前面60个周期的数据,并将最后的结果作为下一次积分的初值
tspan=[0:step:60*period];
[t,Y]=ode45('CQ',tspan,y0,[],f);
y0=Y(end,:);
j=1;
for i=60:200
tspan=[i*period:step:(i+1)*period];
[t,Y]=ode45('CQ',tspan,u0,[],f);
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,'k.','markersize',1);
程序是通了,至于有警告,是因为你取的参数有问题,一般是方程本身造成的 |
|