double d,m,n,u; /*定义全局变量包括d,m,n及数学方程的各项系数*/ int i,j,k,r; main() /*主函数*/ {double x,y[10][200],l,e; /*定义表示点以及lyapunov指数的变量*/ scanf("d=%lf,m=%lf,n=%lf,u=%lf",&d,&m,&n,&u); /*输入变量d,m,n及数学方程各项系数的值*/ scanf("初始值=%lf",&x); /*输入初始值*/ l=0;e=0; for(i=0;i<m;i++) {for(j=0;j<n;j++) {r=10; y[i][j]=log(fabs(f(x,r)-x)/d); /*计算lyapunov指数,注意给定的迭代次数*/ x=f(x,r); /*计算x,注意给定的迭代次数*/ if(y[i][j]>e) e=y[i][j]; /*记住计算过程中最大指数值*/ l=l+y[i][j]; /*计算所有指数值得和*/ } r=1000; x=f(x,r); /*计算x,注意给定的迭代次数*/ } printf("计算得lyapunov指数=%lf",l/(m*n)); printf("计算中出现过的最大lyapunov指数为%lf",e); }
double f(a,b) double a;int b; {double c=a; for(k=0;k<b;k++) {c=u*c*(1-c); } return(c); }