|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 huazi071783 于 2011-7-5 22:10 编辑
Y.rar
(74.62 KB, 下载次数: 18)
我要计算杜芬混沌吸引子的李雅普诺夫指数,循环老是出错,请指点,下面是我的程序
a=2;R=10;h=100;delt_t=0.01
load('Y.mat') %Y是5001*2的杜芬混沌时间序列,plot(Y(:,1),Y(:,1))就得到相空间曲线
lambda=lyapunov(delt_t,Y,h,a,R)
%下面是计算李氏指数的函数
function lambda=lyapunov(delt_t,Y,h,a,R)
M=length(Y); %Y的第1列是横坐标,第2列是纵坐标
date_N1=a/delt_t; %限制不是同一条轨道
date_N2=R/delt_t; %限制不是离的很远的轨道,减少计算量
for i=1:M-h
for j=1:M-h
num=0;
if (abs(j-i)>date_N1)&(abs(j-i)<date_N2) %寻找相空间中每个点的最近距离点,并记下该点下标
num=num+1;
index(num)=j;
d_s(num)=((Y(j,1)-Y(i,1))^2+(Y(j,2)-Y(i,2))^2)^0.5; % 求最短距离
else
continue
end
end
[d_s,ind]=sort(d_s); %求最近的临近点
for k=1:h
turn=1;
jj=index(ind(turn));
d1=((Y(i,:)-Y(i+turn,:))*(Y(i,:)-Y(i+turn,:))')^0.5;
d2=((Y(jj+turn,:)-Y(jj,:))*(Y(jj+turn,:)-Y(jj,:))')^0.5;
cosine=(Y(i+turn,:)-Y(i,:))*(Y(jj+turn,:)-Y(jj,:))'/(d1*d2); %求夹角
ind1=0;
if acos(cosine)<45*pi/180 %限制夹角小于45°
ind1=ind1+1;
D1(ind1)=((Y(i,:)-Y(jj,:))*(Y(i,:)-Y(jj,:))')^0.5;
D2(ind1)=((Y(i+k,:)-Y(jj+k,:))*(Y(i+k,:)-Y(jj+k,:))')^0.5;
lambda1(ind1)=log(D2(ind1)/D1(ind1))/(h*delt_t);
else
turn=turn+1;
continue
end
%lambda(i)=max(lambda1); %如果把这一行放这里,在循环里面就能计算,但不是我要的结果,我想循环后求最大值
end
lambda(i)=max(lambda1); %这句报错,
end
下面是报错,前面不是有lambda1吗?为什说没有定义呢?请指教
??? Undefined function or variable "lambda1".
Error in ==> lyapunov at 36
lambda(i)=max(lambda1);
|
|