⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mdata_lya.txt

📁 以下是从一维数据计算最大Lyapunov指数的算法源程序
💻 TXT
字号:
以下是从一维数据计算最大Lyapunov指数的算法源程序,在Visual C++中通过。
其中number一数据总量,dimension一重构维,delay-重构延迟,maxsplit一最大分离量
minsplit一最小分离量,iterates一迭代次数,resource-一维数据序列。
double cal single(long int number,int dimension,int delay,double maxsplit,double minsplit,in
iterates,double *resource){
double distance,sum,*ptl,*pt2,temp,result,zmult,anglmx,mines angle,temp2,distance2,
new一 distance,angle,mines distance;
long int i,positionl,position2,total_ iterates,j,old}osition2;
boolbian,ok=true,havees choice;
ptl=(double *)malloc(dimension*sizeof(double));
pt2=(double}*)malloc(dimension*sizeof(double));
number-number-dimension*delay-iterates;
total iterates=0;
position 1=0;
position2=10;
sum=0.0;
distance=1.Oe38;
for(i=10;i<number;i++){
temp=0_0;
for(j=O;j <dimension;j++)temp+=((*(resource+position1 +j *de lay))-
(*(resource+i+j *delay)))* ((* (resource+position1 +j *delay))一(*(resource+i+j*delay)));
temp=sqrt(temp);
if((temp<=distance)&&(temp>=minsplit)) {
distance=temp;
position2=i;
}
}
do{
for(i=O;i<dimension;i++) {
pt1[i]=(*(resource+positionl+iterates+i*delay));
Pt2[i]=(*(resource+position2+iterates+i*delay));
}
distance2=0.0;
for(i=O;i<dimension;i++)distance2+=(ptl [i]-pt2[i])*(ptl[i]-pt2[i]);
distance2=sqrt(distance2);
total iterates++;
sum+=log(distance2/distance);
zmult=1.0
anglmx=0.l ;
have choice=false;
min一 angle=0.1;
old-position2}osition2;
do{
i=0;
minee distance=100;
do{
if(abs(i-position1-iterates}>9) {
new distance}.0;
for}j=O;j<dimension}j++)new distance=(ptl[j]一(*(resource+i+j*delay)))*(ptl[j]-
(*(resource+i+j *delay)));
new distance=sqrt(newes distance);
if((newse distance<=min一istance)&&(new distance=zmult*maxsplit)&&(newee distance
>=minsplit)){
tempt=0.0;
for(j=O}j <dimension}j++)temp2+=(pt1[j]-(* (resource+i+j *delay)))*(pt1[j]-pt2[j] );
temp=fabs(temp2/(newse distance*distance2));
if(temp> 1.0)temp=1.0;
angle=acos(temp);
if(angle<=min_ angle){
have choice=true;
min_ distance=new- distance;
position2=i;
}
}
}
i++;
}while(i<number);
bian=false;
if(!have_ choice){
bias=true;
min_ angle=1.5*min_ angle;
}
}while((min_angle<3.14)&&(bian));
if(min_angle=3.14){
position2=old}osition2+iterates;
min distance=distance2;
}
position 1 +=iterates;
distance=min distance;
}while(position1 <number);
result=sumi(iterates*total_iterates);
free(pt1);
free(pt2);
return result;
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -