马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 牛小贱 于 2015-1-4 09:36 编辑
根据论坛前辈关于duffing方程分岔图的程序,自己变了一个,但是出现一些错误。错误和源程序如下、希望可以得到大家的帮助。谢谢!
Error using odearguments (line 36)
No default parameters in MASS_SPRING. Use ode45(MASS_SPRING,tspan,y0,...) instead.
Error in ode45 (line 114)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in mass_spring_bifur_k (line 20)
[t,Y]=ode45('mass_spring',tspan ,y0);
相关程序如下:
- %微分方程的程序%
- function dy=mass_spring(t,Y,flag,b,D,g,o,rum,cd,pf,vf)
- global k v p rw I;
- b=0.0028;g=9.807;o=5*pi/6;um=1.256*10^(-6);cd=0.44;pf=0.06;vf=100;rr=1.22;
- D=1/4+1/(1-cos(o))-2/(1-cos(o))^2*log(2/(1+cos(o)));
- dy=[y(2);(y(3)*g+um*(I^2)/4/pi*(log((3*y(3)/4/pi/p)^(1/3)*sin(o)/rw)-D)+cd*pi*((3*y(3)/4/pi/p)^(2/3)-rw^2)*pf*(vf^2)/2-b*y(2)-k*y(1))/y(3);v];
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %求解分岔图的程序%
- clear;
- global k v p rw I;
- T1=0.1347*10^(-3);
- T2=1.413*10^(-5);
- le=0.026;
- rw=0.8*10^(-3);
- VM=p*pi*rw^2*(T1*I+T2*le*I^2);
- v=VM;
- range=[2.7: 0.001: 3.1];
- period=2*pi./v;
- kk=0;
- YY1=[];
- step=2*pi/500;
- for a=range
- k;
- kk=kk+1;
- %出去前面60个周期的数据,并将最后的结果作为下一次积分的初值。
- tspan=[0:step:60*period];
- y0=[0 0 3e-5];
- [t,Y]=ode45('mass_spring',tspan ,y0);
- y0=Y(end,:);
- j=1;
- for i=60:200
- tspan=[i*period:step:(i+1)*period];
- [t,Y]=ode45(@mass_spring,tspan ,y0,options,b,D,g,o,rum,cd,pf,vf);
- YY1(kk,j)=Y(end,1);
- j=j+1;
- %取出每一个周期内的第一个解的最后一个值。
- y0=Y(end,:);
- end
- end
- bifdata=YY1(:,end-51:end);
- plot(range,bifdata,'k.','markersize',1);
复制代码
|