Z=[]; [T,Y]=ode45('Lorenz',[0,1000],[1;1;1;16;4;49.52]); Y(:,3)=Y(:,3)-30; for k=1:(length(Y)-1) if Y(k,3)<0 if Y(k+1,3)>0 % 用直线连接位于截面两侧的相邻离散点,近似得到穿过截面的点 x=Y(k,1)-Y(k,3)*(Y(k+1,1)-Y(k,1))/(Y(k+1,3)-Y(k,3)); y=Y(k,2)-Y(k,3)*(Y(k+1,2)-Y(k,2))/(Y(k+1,3)-Y(k,3)); Z=[Z x+i*y]; end
% 如果只画从一侧穿过截面的图象,以下的if-end语句可删去 else if Y(k+1,3)<0 x=Y(k,1)-Y(k,3)*(Y(k+1,1)-Y(k,1))/(Y(k+1,3)-Y(k,3)); y=Y(k,2)-Y(k,3)*(Y(k+1,2)-Y(k,2))/(Y(k+1,3)-Y(k,3)); Z=[Z x+i*y]; end
end end plot(Z,'.','markersize',2) title('Lorenz 系统的 Poincare 映像 z=30') xlabel('x'),ylabel('y')
|
No comments:
Post a Comment