马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 relou 于 2011-7-12 21:38 编辑
- function s=rk45(t,q,flag,w)
- %global m c k ks e g mb cb kc d f
- m=0.5;
- c=120;
- k=4e4;
- ks=40e4;
- e=0.5e-3;
- g=9.8;
- mb=1;
- cb=108;
- kc=80e4;
- d=1e-3;
- f=0.05;
- r=sqrt((q(1)-q(5))^2+(q(3)-q(7))^2);
- %r=sqrt(q(1)^2+q(3)^2);
- if r<d
- fx=0;
- fy=0;
- else
- %fx=-(q(1)-q(5))*kc*(1-d/r)+(q(3)-q(7))*f*kc*(1-d/r);
- fx=-kc*(1-d/r)*(q(1)-f*q(3));
- %fy=-(q(3)-q(7))*kc*(1-d/r)-(q(1)-q(5))*f*kc*(1-d/r);
- fy=-kc*(1-d/r)*(f*q(1)+q(3));
- end
- s=zeros(8,1)
- s(1)=q(2);
- s(2)=fx/(m*w^2)-c*q(2)/(m*w)-k*q(1)/(m*w^2)-ks*(q(1)^2+q(3)^2)*q(1)/(m*w^2)+e*cos(t);
- s(3)=q(4);
- s(4)=fy/(m*w^2)-c*q(4)/(m*w)-k*q(3)/(m*w^2)-ks*(q(1)^2+q(3)^2)*q(3)/(m*w^2)+e*sin(t)-g/(w^2);
- s(5)=q(6);
- s(6)=-fx/(mb*w^2)-cb*q(6)/(mb*w)-kc*q(5)/(mb*w^2);
- s(7)=q(8);
- s(8)=-fy/(mb*w^2)-cb*q(8)/(mb*w)-kc*q(7)/(mb*w^2)-g/(w^2);
- end
复制代码- function nonlinear
- q0=[0;0;0;0;0;0;0;0]
- w=linspace(2200,3001,100)
- options=odeset('RelTol',1e-6,'AbsTol',1e-6)
- y=[]
- for n=1:length(w)
- T=2*pi
- ts=[0:T/200:500*T]
- [tt,z]=ode45('rk45',ts,q0,options,w(n))
- q0=z(end,:)
- %figure(1)
- subplot(2,1,1)
- plot(w(n),z(90000:200:end,1),'r.','markersize',1)
- hold on
- subplot(2,1,2)
- plot(w(n),z(90000:200:end,3),'k.','markersize',1)
- hold on
- end
- %figure(2)
- %subplot(2,1,1)
- %plot(tt(50000:end),z(50000:end,1),'k-')
- %%hold on
- y=z(end,:)
- save 'end_data.txt'y-ascii
- save 'time.txt'tt-ascii
- 我参考刘长春、吴敬东的《非线性转子-机匣系统的动力学特性》的文章写的一个程序,但是结果就和原文章的对不上,请各位前辈指点迷津,不胜感激
复制代码 |