声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

123
返回列表 发新帖
楼主: yufeiyfyf

[分形与混沌] 关于连续系统Lyapunov指数谱图怎么得出??

  [复制链接]
发表于 2011-4-24 02:27 | 显示全部楼层
本帖最后由 liliangbiao 于 2011-4-24 02:58 编辑

对于确定性动力系统,请参看Mathworks网站上的关于计算Lorenz系统的指数计算程序,尽管那只是一个在确定的参数条件下,计算Lyapunov指数谱的程序,(LET工具箱计算指数的部分也是用的那个程序哦)!要得到随一个参数变化的指数谱,只需要对这个参数做循环,记录下原来的程序中每个值对应的最后时间的三个数值即可,这是因为我们按照这个程序的思路,最后一刻的时间的三个指数才是准确的哦(这是这个程序的核心思想,时间序列的不断迭代,为了达到平衡状态,也就是某个attractor的指数谱平稳或者收敛状态,必须延长积分时间和缩小积分步长,达到这点你首先要明白积分时间和步长选择多少合适,比如看折这个attrator下的指数谱在设定的时间和步长的收敛情况,也就是指数谱的平滑情况),并且如果要想得到更为精确的最后的指数,需要对积分步长 tstep=0.5让它足够的小,例如取tstep=0.01,最后的时间tend=200足够的长,例如取tend=10000或者tend=10^8,但是这样会time-consuming!再有,一般的积分的时候,例如本程序利用的是ode45,那么就会产生transient response,也就是说从积分轨线从初始值出发到attracting on the orbits 需要一段时间,that is, transient response! (你要明白我们计算Lyapunov指数指的是某个attractor的指数,而不是某个轨线的指数,只有attracting on the orbits 才能用于计算哦),所以我们必须去掉这一块transient response,而只计算去掉transient response之后的部分,这样计算出来的平均数(Lyapunov指数就是\sigma(log(dx_n/dx_0))/n n\rightarrow inf, 这个计算公式对于任何的动力系统来说都是永远不变的哦) 才会更准确,但是很可惜,这个程序没有做到这一点(这就是为什么你看到在tend比较小的时候, 三条指数谱出现震荡的缘故,但是tend比较大的时候,就会出现平衡的,收敛的轨线的缘故。并且对于某些系统而言,如果取非常小的tend,往往会导致错误的结果,比如有些指数谱可能大于零的,但是一旦取tend非常大或者除掉transient response 之后,发现这条大于零的指数谱却趋向于0<limit cycles>或者穿越0变为负的<periodic>了,这样就会导致你的错误判断!!如果你的编程能力不错,你可以在源程序上改进这一点,甚至我认为你必须改正这一点!)。
注意:这里保存数组时需要做四列数值,假设例子如下:
参数 指数1 指数2 指数3
1       0.01    0       -14.00
1.1    0.011  0       -14.10
......
如何对这个程序修改看各位的编程能力,呵呵,说白了,其实是修改程序的能力!
网址是http://www.mathworks.com/matlabc ... v-exponents-for-ode
或者是google搜索:Lyapunov exponents matlab 第一项就是!
顺便说一下,很多优秀的程序都可以在mathworks这个网站的File Exchage 板块中找到!为何不试试呢?劝各位初学者不要一味的依赖于别人的程序,自己动手搜索,自己消化吸收别人的编程思想,这样入手更快一些!自己的永远是自己的!
欢迎各位评论我的个人的观点!

回复 支持 反对
分享到:

使用道具 举报

发表于 2011-4-24 02:46 | 显示全部楼层
回复 12 # yufeiyfyf 的帖子

这个程序的道理我实在是没有读懂,从我读研究生开始都有这个程序,我不知道这个程序是否正确!?
发表于 2012-2-29 09:37 | 显示全部楼层
我现在也遇到这个问题,不知你的问题解决没?可否提供一下随系统参数变化的指数谱?
发表于 2012-3-13 14:45 | 显示全部楼层
在做duffing方程的LE,怎么也弄不出来,谁的程序好使了发一个出来呀
发表于 2012-3-29 18:49 | 显示全部楼层
回复 26 # yufeiyfyf 的帖子

LZ 能把您完整的程序发我一份吗 我邮箱444802641@qq.com 多谢了
发表于 2012-5-9 10:39 | 显示全部楼层
楼主辛苦了,顶起来
发表于 2012-5-19 11:53 | 显示全部楼层
做LE随参数变化的曲线,如果最终时间稍微取长一点,会算的非常慢(PS:我的是11维的),现在我都不敢算了
发表于 2012-5-20 10:32 | 显示全部楼层
本帖最后由 微风breeze 于 2012-5-20 10:32 编辑

我觉着这程序有一点问题,
d=3;                          %维数
Sum=zeros(1,d);
n=0;   %总的迭代计数
k=0;   %对结果有作用的迭代计数
xData=[];
yData=[];
T1=InitialTime;
T2=T1+Iteration;
TSpan=[T1:TimeStep:T2];
options=odeset('RelTol',1e-5,'AbsTol',1e-6);
for B=linspace(0,40,100);
        lp=0;
这一句应该放在Sum=zeros(1,d);前面,这样每一个参数值对应的Lyapunov指数取出后,将循环中的数据重置为初始值。
回复 支持 1 反对 0

使用道具 举报

发表于 2012-9-1 21:46 | 显示全部楼层
有没有关于这个的fortran语言编写的,我是个菜鸟,其它的看不懂,谢谢
发表于 2014-5-17 10:48 | 显示全部楼层
yufeiyfyf 发表于 2011-3-27 20:34
经过不懈努力,今天晚上终于弄出来了,效果非常不错。看lorenz吸引子随参数R变化的指数谱图。

能给我发一份您的程序吗,看了很久没做出来,谢谢了2542015960@qq.com
发表于 2014-6-9 16:37 | 显示全部楼层
yufeiyfyf 发表于 2011-3-26 10:31
回复 7 # octopussheng 的帖子

你给我的这个链接程序,仍然只是求最大指数的,是随时间变化的指数图形,看 ...

您好   麻烦您能分享一下你的Lyapunov程序吗??  谢谢   邮箱 59061329@qq.com
发表于 2014-6-10 00:30 | 显示全部楼层
yufeiyfyf 发表于 2011-3-26 15:41
% 计算duffing吸引子的Lyapunov指数谱,随参数B变化
clear all;
clc;

12楼的duffing程序最后做出来没有??
发表于 2014-6-10 21:47 | 显示全部楼层
版主 能把你这个程序发给为我一份吗? 学习学习  谢谢   327105073@qq.com
发表于 2014-6-10 23:32 | 显示全部楼层
yufeiyfyf 发表于 2011-3-26 15:41
% 计算duffing吸引子的Lyapunov指数谱,随参数B变化
clear all;
clc;

请问你这个函数后来调试出来没有??能不能发我一份1600220306@qq.com,菜鸟,刚起步,很多不懂,望指教!!谢谢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-19 06:05 , Processed in 0.080904 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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