poincare映射定义比较抽象,简单理解就是每个原始周期取一个点,表现在程序中的思路如下:
以激励的周期T0为poincare的原始周期,设置1个周期取m个点,取N个周期设置T0/m为ode45的步长,每个周期的 i*m 个点处取一个点(i=0.0-1.0),把这些点画出来就行了。有几个点就是几倍周期。
(注意:ode45算法是变步长的算法,所以一定要之前自己设置步长,我在这个地方吃了很大一个亏。)
下面奉上一段程序(可运行)
这里考虑到后面500个周期系统才稳定,所以取后面500个周期绘制poincare
clear
close all
global f0 d R A MA
d=0.0260; A=6; f0=11;R=1e6;MA=0.96*10^6;phi12L2=-15.26109152;%系统参数
N=300+500; %800个周期 实际用取最后500个周期 1 设置周期个数
N_start=300;
m=200;%一个周期取200个点 2 设置每个周期的点数
T0=1/f0;%设置周期为激振周期
tspan=0:T0/m:N*T0;% 3 ode45步长设置
[t,y] = ode45(@func,tspan,[0 0 0]);
Tn=zeros(1,2);
i=1;
for n=N_start:N-1
Tn(i,1)= y(n*m+1+0.8*m,1);%%

Poincaré映射的概念通过选择周期T0并每隔m个点取点来简化,以N个周期的i*m点进行绘图。在ODE45中,需设定固定步长避免变步长带来的问题。程序示例展示了如何从系统稳定后的500个周期选取点,以展示混沌状态的Poincaré图。

5052

被折叠的 条评论
为什么被折叠?



