声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

楼主: gghhjj

[共享资源] matlab编写的Lyapunov指数计算程序汇总

  [复制链接]
发表于 2006-10-11 13:07 | 显示全部楼层
序列我用的是lorenz的x坐标序列,还有henon序列都试过,在另外一个C-C程序中可以正常运行并画图的,这里这个程序出现了上面的错误,
回复 支持 反对
分享到:

使用道具 举报

发表于 2006-10-12 14:33 | 显示全部楼层
我算了几步好像没有什么问题(没有运行完)
序列是由http://forum.vibunion.com/forum/viewthread.php?tid=10359提供的程序产生的

[ 本帖最后由 ChaChing 于 2010-5-11 10:38 编辑 ]
发表于 2006-10-13 15:44 | 显示全部楼层
suffer您好!谢谢您的帮助,我后来把序列转换了一下也可以运行了,不过碰到了一个新的问题,当程序运行到t=15,m=4时,程序出现了错误,‘reconstitution函数的参数出现问题’,我算了一下,发现这个时候的N_r已经小于0了,
    拆分后的序列的延时t和拆分前的延时t是不是一样的?还是要变一下?如果是相同的t的话按照这个程序运行下去肯定到不了t=200的,请您再帮我看下 谢谢

[ 本帖最后由 ChaChing 于 2010-5-11 10:41 编辑 ]

评分

1

查看全部评分

发表于 2006-10-18 11:16 | 显示全部楼层
C_CMethod.m中调用reconstitution.m的过程中有问题。我认为,主要问题在于子序列的相空间重构后的空间点个数有时候会小于零!!
所以出现了问题。
我认为,解决问题有以下几个办法:
1、严格保证原序列的数据个数很大,从而确保子序列重构后的点个数不出现小于0的情况
2、增加限制条件,保证只有在重构后的点个数大于0的情况下才能进行其他计算
3、今天早上做梦时候想到的,是否可行还得大家一起讨论:修改循环,把t=1:20改为t=20:1或者更小,也就是说把循环倒过来,实现m增大的同时t减小,从而确保(m-1)t大小适当或者不变。原理见吕金虎《混沌时间序列分析及应用》一书的67页。
非常欢迎大家能和我一起探讨!!互相学习,共同进步!!!

[ 本帖最后由 ChaChing 于 2010-5-11 10:40 编辑 ]

评分

1

查看全部评分

发表于 2006-10-18 17:15 | 显示全部楼层
刚才又想到了一个方法.只要时间延迟t或者子序列数量t小于总序列数据个数的平方根就能保证不出现 reconstitutin调用出问题.
不好意思,上面说错了!!!!!!!!!!!!!!

终于知道了,令时间延迟t小于总序列数据个数的一半的平方根,即t<squrt(N/(m-1)),并且t=max_d:1
就不会出现以上错误了
已经上机运行过了  好使
但是,t的范围被严重地缩小了
大家还有其他的好方法么

[ 本帖最后由 ChaChing 于 2010-5-11 10:45 编辑 ]

评分

1

查看全部评分

发表于 2006-10-20 15:15 | 显示全部楼层
前一段时间有点事没有来,不过不错大家把问题初步解决了,好好学习一下
发表于 2006-10-21 21:56 | 显示全部楼层
当我用
"小数据量法计算 Lyapunov 指数的 Matlab 程序 - (mex 函数,超快)"
的自身带的例子时,Matlab6.5报错说调用的主程序lyapunov_luzhenbo.dll中出现错误,
请问各问试过没有,是否能正常运行?
另外这里的
m=最小嵌入维数;
tau为时间延迟
P为平均周期
都该如何确定哪,还请指教
发表于 2006-10-23 09:27 | 显示全部楼层
可以正常运行,需要将所有文件都拷贝的同一目录下,我是把六个文件全都放到work目录下

具体参数的设置你可以找一下程序提供者提供的参考文献,上面应该有说明:
Michael T.Rosenstein,
"A practical method for calculating largest lyapunov exponents from small sets",
Physica D,1993,65: 117-134

[ 本帖最后由 ChaChing 于 2010-5-11 10:47 编辑 ]
发表于 2006-10-24 20:14 | 显示全部楼层
liutuo你好,我已经加你了,我参考了一下其他的CC方法的程序,发现它们在这个问题上采取的方法是把拆分后的子序列的t值取为定值1, 对应我们这个程序需要把主程序的36、37行改为
                                      X=reconstitution(Y,N_d,m,1);%相空间重构
                                      N_r=N_d-(m-1)*1;
这样就可以一直运行下去了,但是当t=200时N的值还是要大于1000左右才能运行到底,但这样就跟CC方法的原理不同了,不知道是CC方法本来就存在这个问题还是我的理解出了错误,不知道大家是怎么看的

[ 本帖最后由 ChaChing 于 2010-5-11 10:49 编辑 ]
发表于 2006-10-25 01:38 | 显示全部楼层
吕金虎方法中的:P为平均周期.这个变量如何设置啊?

主要是if abs(j-jj)>P

WOLF方法里面有同样的问题:for i = (p+1):(M-1)  
if abs(j-i) <=(P+1)

运行以后显示为??? Reference to a cleared variable P.
on line 24  ==>        if abs(j-jj)>P   

希望有人能对这个问题进行一下说明,谢谢了啊!~~
发表于 2006-10-26 18:16 | 显示全部楼层
在你调用lyapunov_wolf_dll的时候自己设置P

[ 本帖最后由 ChaChing 于 2010-5-11 10:49 编辑 ]
发表于 2006-10-29 21:31 | 显示全部楼层
这个平均周期是个什么概念啊?可以说一下怎么求这个值么?谢谢了
发表于 2006-11-7 10:29 | 显示全部楼层
轨道的平均周期,可用自相关函数法和互信息方法来实现

[ 本帖最后由 ChaChing 于 2010-5-11 10:50 编辑 ]

评分

1

查看全部评分

发表于 2006-11-22 08:56 | 显示全部楼层

哪位师兄(姐)有henon映射的Lyapunov指数的程序吗,可否发一份

发表于 2006-11-22 10:02 | 显示全部楼层
二维Henon映射的Lyapunov指数的计算

http://forum.vibunion.com/forum/viewthread.php?tid=22173

[ 本帖最后由 eight 于 2007-1-25 10:01 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-25 23:55 , Processed in 0.067632 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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