ldyw 发表于 2007-4-25 20:40

求教:关于最大lyapunov指数的问题

我做出的最大lyapunov指数和分岔图老是对应不上,就是说单周期的时候,最大lyapunov指数也大于0,程序我用算例试过,也没问题。是不是和某个参数的选取有关啊,求高手指教!!!!!!

[ 本帖最后由 ldyw 于 2007-4-25 20:43 编辑 ]

hohoo 发表于 2007-4-26 09:18

程序贴出来 看看

shenyongjun 发表于 2007-4-26 10:32

本帖最后由 VibInfo 于 2016-5-11 15:57 编辑

原帖由 ldyw 于 2007-4-25 20:40 发表
单周期的时候,最大lyapunov指数也大于0,
那肯定是程序或者算法的问题!
据个人所知,目前流行的计算最大Lyapunov指数的方法,有些只能用于混沌系统,这样会得到比较准确的结果。相反,如果用这些方法计算非混沌的非线性系统,肯定会得到错误的结果。就像楼主所说的!

ldyw 发表于 2007-4-26 17:28

模型的方程如下:
double fun(double t, double y,double d,double xy)
{
doublem1,m2,d1,d2;
double k11,k12,k13,k14,k22,k21,k23,k24,k31,k32,k33,k34,k41,k42,k43,k44;
double wan,E1,E2,E,kr,delta,a,w3,w4,q1,q2,m11,m22;
double f;
double w,w1,w2;
f=0.12;
w=xy;
d1=d2=0.08;
m1=m2=102;
a=1;
q1=q2=0.2;
w3=q1/2;
w4=q2/2;
wan=61360/a/a/a/2;
k11=21*wan;k12=k21=3*a*wan;k13=k31=9*wan;k14=k41=-3*a*wan;
k22=13*a*a*wan;k23=k32=3*a*wan;k24=k42=-a*a*wan;k33=15*wan;
k34=k43=-9*a*wan;k44=7*a*a*wan;         
w1=sqrt(k11/m1);
w2=sqrt(k33/m2);
delta=0.003;
E1=E2=0.3;


d=y;
d=y;
d=y;
d=y;
d=y;
d=y;
d=y;
d=y;

E=sqrt(y*y+y*y);
if(E>1||E==1)
kr=4*k11;
else
kr=0;



d=-2*d1*w1*y/w-k11*y/m1/w/w-k12*y/m1/w/w/delta-k13*y/m1/w/w-k14*y/m1/w/w/delta+E1*cos(t);
d=2*y-k21*y*delta/m1/w/w/w3/w3-k22*y/m1/w/w/w3/w3-k23*y*delta/m1/w/w/w3/w3-k24*y/m1/w/w/w3/w3;
d=-2*d2*w2*y/w-k31*y/m2/w/w-k32*y/m2/w/w/delta-k33*y/m2/w/w-k34*y/m2/w/w/delta+E1*cos(t)-(E-1)*kr*(y-f*y)/E/m2/w/w;
d=2*y-k41*y*delta/m2/w/w/w4/w4-k42*y/m2/w/w/w4/w4-k43*y*delta/m2/w/w/w4/w4-k44*y/m2/w/w/w4/w4;
d=-2*d1*w1*y/w-k11*y/m1/w/w+k12*y/m1/w/w/delta-k13*y/m1/w/w+k14*y/m1/w/w/delta+E1*sin(t);
d=-2*y+k21*y*delta/m1/w/w/w3/w3-k22*y/m1/w/w/w3/w3+k23*y*delta/m1/w/w/w3/w3-k24*y/m1/w/w/w3/w3;
d=-2*d2*w2*y/w-k31*y/m2/w/w+k32*y/m2/w/w/delta-k33*y/m2/w/w+k34*y/m2/w/w/delta+E1*sin(t)-(E-1)*kr*(f*y+y)/E/m2/w/w;
d=-2*y+k41*y*delta/m2/w/w/w4/w4-k42*y/m2/w/w/w4/w4+k43*y*delta/m2/w/w/w4/w4-k44*y/m2/w/w/w4/w4;
return(1);
}
lyapunov指数程序如下:
doubleLyapunov_index(double y, double h,double xy )
{
int k;
long i,j,mm,zhou_shu,per_shu,zhou_shu0,zhou_shu1;
double d0=0.0000001, lnd0, d, sum_ln_di=0.0, t;
double z, y0, z0,hx,ht,dd=0;

zhou_shu1=50000;
for(k=0;k<N;K++)
      y0=y;

   for(k=0; k<N; k++)
   {                                       
    z=z0=y+d0;      
}

   dd=0;                                       
   for(k=0;k<N;K++)
    dd=dd+fabs((y-z)*(y-z));
   d0=sqrt(dd);
   lnd0=log(d0);
   
t=0;
for(j=0;j<ZHOU_SHU1;J++)
   {
    t=0;
    t=t+j*h;                        
    rkutta(t,h,y,xy);      
    rkutta(t,h,z,xy);
   
    dd=0;
    for(k=0;k<N;K++)
   {                                                   
    dd=dd+fabs((y-z)*(y-z));                     
    }
    d=sqrt(dd);      
    sum_ln_di+= log(d);         
    for (k=0; k<N; d;
      
}                        


d = sum_ln_di/(zhou_shu1);

d = (d - lnd0)/h;

   return(d);
}

请帮忙看看那里有问题,是方程那里有问题还是程序,谢谢。

我作出的结果: 分岔图从单周期进入多周期过程,lyapunov指数没有在分岔点对应正负的变化,
在单周期时就存在大于0的情况了。

yejet 发表于 2007-5-6 09:20

c语言?看不懂
页: [1]
查看完整版本: 求教:关于最大lyapunov指数的问题