|
- clear all
- global r
- t0=[0 150];%积分时间
- y0=[1,0,0];
- %bifurcation
- for r=20:0.05:30 %r的变化精度
- [t,y]=ode45('Lorenz',t0,y0);
- [Xmax]=getmax(y);
- plot(r,Xmax,'b','markersize',1)
- hold on
- clear Xmax
- end
- xlabel('r')
- ylabel('Xmax')
- function [Xmax] = getmax(y)
- a=length(y);
- j=1;
- for i=(a-1)/2:a
- b=(y(i,1)-y(i-2,1))/2;
- c=(y(i,1)+y(i-2,1))/2-y(i-1,1);
- if y(i-2,1)<=y(i-1,1)&y(i-1,1)>=y(i,1)&c==0
- Xmax(j)=y(i-1,1);
- j=j+1;
- elseif y(i-2,1)<=y(i-1,1)&y(i-1,1)>=y(i,1)
- Xmax(j)=y(i-1,1)-b^2/(4*c);
- j=j+1;
- end
- end
- function dy = Lorenz(t,y)
- global r
- dy=zeros(3,1);
- dy(1)=-10*(y(1)-y(2));
- dy(2)=-y(1)*y(3)+r*y(1)-y(2);
- dy(3)=y(1)*y(2)-8*y(3)/3;
复制代码
仅供参考!要想图漂亮一点,可以把积分时间和r的变化精度增大,但是计算时间会变长。 |
|