function dx=Duffing(t,x); % Duffing方程 % dx=Duffing(t,[x;y]) % t-时间,x,y-为自变量 % eg: dx=Duffing(10,[0;0;39]) % % 方程如下: % dx=y % dy=-r*y-x^3+b*cos(t) % r=0.3 b=39 % % Example(Duffing图象): % [T,Y]=ode45('Duffing',50,[0;0;39]); % plot(Y(:,1),Y(:,2)); % % Example(分岔图): % % Z=[]; % for p=linspace(6,13,280); % [T,Y]=ode45('Duffing',10,[3;0;p]); % [T,Y]=ode45('Duffing',100,Y(end,:)); % for k=2:length(Y) % f=k-1; % y=1; % if Y(k,1)<0 % if Y(f,1)>0 % y=Y(k,2)-Y(k,1)*(Y(f,2)-Y(k,2))/(Y(f,1)-Y(k,1)); % end % else % if Y(f,1)<0 % y=Y(k,2)-Y(k,1)*(Y(f,2)-Y(k,2))/(Y(f,1)-Y(k,1)); % end % end % if y<0 % Z=[Z p+y*i]; % end % end % end % plot(Z,'.','markersize',2) % title('Duffing映射分岔图(x=0,dx<0)'),xlabel('b'),ylabel('y') % % Author's email: ustb03-07@yahoo.com.cn % r=0.3; b=x(3); dx(1,1)=x(2); dx(2,1)=-r*x(2)-x(1)^3+b*cos(t); dx(3,1)=0;
|