声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2219|回复: 7

[编程技巧] 计算李雅普诺夫指数,循环出错,请指点

[复制链接]
发表于 2011-7-5 21:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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);

回复
分享到:

使用道具 举报

 楼主| 发表于 2011-7-5 21:30 | 显示全部楼层
下面是得到的杜芬混沌吸引子,就是计算它的李雅普诺夫指数
4n5.jpg
 楼主| 发表于 2011-7-6 10:31 | 显示全部楼层
怎么没人帮我看看啊,急啊!就是一个循环的问题,我水平有限不知道原因!
 楼主| 发表于 2011-7-6 10:31 | 显示全部楼层
怎么没人帮我看看啊,急啊!就是一个循环的问题,我水平有限不知道原因!先
发表于 2011-7-7 00:43 | 显示全部楼层
help下continue!
若acos(cosine)<45*pi/180不成立时, 是不会执行循环里面内其他指令的!
若那句在循环外头, 就会执行, 这时没有lambda1
 楼主| 发表于 2011-7-7 22:15 | 显示全部楼层
回复 5 # ChaChing 的帖子

解决了,就是你说的问题,谢谢
发表于 2011-7-8 00:03 | 显示全部楼层
回复 6 # huazi071783 的帖子

专业不同, 帮助有限!
仅建议若解决问题, 与大伙分享经验!
回复 支持 0 反对 1

使用道具 举报

发表于 2013-2-28 10:16 | 显示全部楼层
楼主怎么解决的这个问题,把lambda1(ind1)=log(D2(ind1)/D1(ind1))/(h*delt_t);这句放在什么地方啊?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-8 11:02 , Processed in 0.058983 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表