chunshui2003 发表于 2009-12-21 19:42

我的分岔程序无法运行(别人的可以),请大家看一下

别人的


function xdot=dddd(t,x,flag,omega)
eta=0.1 ;
a= -48.704;
b= 24.35e4;
gamma= 1;
xdot=;

%%%%%%%%%%%%%%%%%%%%%%%%

clear;
clc;
close all;
omega=0.01:0.01:1;
for h=1:length(omega)
%   omega(h)
    T=2*pi/omega(h);
    =ode45('dddd',,,[],omega(h));
    plot(omega(h),x(10000:100:end,2),'k.');hold on
end

可以运行,有结果

我的

function uu=fangcheng_x1(t,u,flag,omega);

m1=170;
m2=90;
e=0.0001;
r=0.0006;
k2=1154744;
omega0=15;
phi0=0.6/180*pi;         
theta0=0.4/180*pi;
xi=0.14;

phi=omega*2*pi*t+phi0;         
theta=omega*2*pi*t+theta0;

M=m1+m2;
A1=m1*e*omega^2*cos(phi);
A2=m2*r*omega.^2*cos(theta);
A3=k2*r*cos(theta);
B1=m1*e*omega.^2*sin(phi);
B2=m2*r*omega.^2*sin(theta);
B3=k2*r*sin(theta);

uu=zeros(4,1);
uu(1)=u(2);
uu(2)=(A1+A2-A3)./M-2*xi*omega0*u(2)-omega0.^2*u(1);
uu(3)=u(4);
uu(4)=(B1+B2-B3)./M-2*xi*omega0*u(4)-omega0.^2*u(3);

%%%%%%%%%%%%%%%%%%%

omega=5:40;
y0=;
for i=1:length(omega)
    period=1./omega(i);
    tspan=;
    =ode45(@fangcheng_x1,tspan,y0,[],omega(i));
    y0=u(end,:);
    plot(omega(i),u(4000:100:end,1),'b.','markersize',2);
    hold on;
end

运行之后

Input argument "omega" is undefined.
Error in ==> fangcheng_x1 at 20
phi=omega*2*pi*t+phi0;         
Error in ==> funfun\private\odearguments at 110
f0 = feval(ode,t0,y0,args{:});   % ODE15I sets args{1} to yp0.

真不知道是什么原因,觉得方程没有问题。因为单独赋予omega数值时,可以求得结果。但在这里不行。请大家给解释一下为什么,困扰我好久了!

无水1324 发表于 2009-12-24 09:35

我也不知道为什么,改为:
omega=5:40;
y0=;
for i=1:length(omega)
    period=1./omega(i);
    tspan=;
    =ode45('fangcheng_x1',tspan,y0,[],omega(i));
    y0=u(end,:);
    plot(omega(i),u(4000:100:end,1),'b.','markersize',2);
    hold on;
end
这样子就可以运行了

chunshui2003 发表于 2009-12-24 10:32

谢谢无水的回答。但是还是搞不懂,@和'   '有什么区别吗?
不过能运行就是好的。

chunshui2003 发表于 2009-12-24 11:14

另外,还有一个问题请教。在针对非自治系统的Poincare图上,如果周期为T,步长分为T/120(没有用100或者10之类的),那么在选取映射点时是否首先要过滤掉瞬态响应,也就是前面的N个周期不要,从第N+1个开始;并且映射点的选取要以整周期为间隔划分。

比如:
%%%% 庞加莱图
m=[];
n=[];
for i=100:500
   m(i,1)=u(120*i,1);
   n(i,1)=u(120*i,2);
end
plot(m,n,'b.','markersize',2)

而不是随意的100*i或者80*i,我说的对吗?

无水1324 发表于 2009-12-24 15:40

并且映射点的选取要以整周期为间隔划分。???
你的意思是去掉瞬态之后,要从一个整周期开始画图吗?
这个市没有必要的

chunshui2003 发表于 2009-12-24 19:33

哦,我的意思是去掉瞬态后随意选取一个点,而之后的点以整周期的形式出现。
比如画图的首点选取为第4000个点,而后的点选取第4120,第4240,第4360,第4480......到终止(如果周期T被分为120个步长的话)。
这样理解应该没有问题吧。

0810064 发表于 2011-12-23 19:19

向高手致敬{:{39}:}

live101 发表于 2011-12-25 12:12

非自治系统的Poincare图,是一个周期取一个点的,你的理解是正确的
页: [1]
查看完整版本: 我的分岔程序无法运行(别人的可以),请大家看一下