声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

楼主: octopussheng

[分形与混沌] 【总结】Lyapunov指数的计算方法

 关闭 [复制链接]
发表于 2008-1-8 11:11 | 显示全部楼层

回复 #60 octopussheng 的帖子

想请教学长关于用wolf法求解的问题,最近初学,在编程方面头很大,所以很希望学长指点一下。
想用学长给的程序求解,首先是不是要储存分岔图或者相图的数据,那数据文件是‘11111.txt’这种文件形式呢?
运行程序就可以求出N,m,tau,p等参数值,然后就可以求出最大Lyapunov指数。
回复 支持 反对
分享到:

使用道具 举报

 楼主| 发表于 2008-1-8 18:22 | 显示全部楼层
进行时间序列Lyapunov指数求解的步骤如下:

1)求解你的微分方程得到时间序列,一般选择位移作为时间序列,需要注意的是要对结果进行一定的处理,即去掉不稳定的解以及对序列进行采样!

2)将第一步的结果赋给一个变量(在matlab中操作),这就是你所说的数据文件

3)对该数据确定N,m,tau,p等值

4)调用wolf程序求解!

评分

1

查看全部评分

发表于 2008-1-11 16:18 | 显示全部楼层

回复 62楼 的帖子

谢谢学长的指点,现在的问题是取位移时间序列,我该怎样储存这组时间序列,应该写成什么形式的语句才能利用Wolf法求解李氏指数呢,学长能不能再指点一下,比如应该储存时间-位移序列我该写成
path_data=strcat(path,'data.txt');
...        
fid=fopen(path_data,'w');      % 存储数据
fprintf(fid,'%g  %g\n',[t, x(:,1)]);
fclose(fid);
 楼主| 发表于 2008-1-14 07:50 | 显示全部楼层
你这个是什么语言?C么?
发表于 2008-2-17 00:45 | 显示全部楼层
On the computation of Lyapunov exponents
for forced vibration of a Lennard–Jones oscillator
Guolai Yang a, Jia Lu b,*, Albert C.J. Luo c
Chaos, Solitons and Fractals 23 (2005) 833–841

Computing Lyapunov exponents of continuous
dynamical systems: method of Lyapunov vectors
Jia Lu a,*, Guolai Yang b, Hyounkyun Oh c, Albert C.J. Luo d
Chaos, Solitons and Fractals 23 (2005) 1879–1892
 楼主| 发表于 2008-2-25 15:10 | 显示全部楼层

回复 65楼 的帖子

这两篇文章能否给出一些评价?
发表于 2008-3-1 08:17 | 显示全部楼层
You may ask Professor Yang from Nanjing? It is better to read it by yourself.  So far, two papers presented a better way to compute maximum Lyapunov' exponent. You may learn the reasoning better than the results. You may use this reasoning to solve the other problems.
 楼主| 发表于 2008-3-2 21:47 | 显示全部楼层
无语,看不懂啊!
发表于 2008-3-5 10:04 | 显示全部楼层

回复 2楼 的帖子

感谢你的总结,对我的工作很有帮助,可是还是有个地方不太清楚。
定义法计算Lyapunov指数是:
Lyapunov指数与演化到下一时刻的球的体积和当前演化时刻球体积的比值有关,
可是这个程序中似乎没有求体积的计算啊?还是存在什么近似计算?
还有,下面是为什么?
lp = lp+log(abs(mod));
Lyapunov1(i) = lp(1)/(tstart);
Lyapunov2(i) = lp(2)/(tstart);
Lyapunov3(i) = lp(3)/(tstart);
谢谢了!:@)
 楼主| 发表于 2008-3-5 16:23 | 显示全部楼层
这四个语句其实就是计算LE的代码,请看一下LE的定义,然后和这几条语句进行比较即可明了了!
发表于 2008-3-20 10:33 | 显示全部楼层
还是不能看到完整的代码阿
 楼主| 发表于 2008-3-20 13:45 | 显示全部楼层
完整的代码?是什么意思?网速太慢了?
发表于 2008-3-23 15:32 | 显示全部楼层
楼主,用wolf法计算lyapunov指数哪个程序是不是没有主函数,我这段时间做duffing方程的lyapunov指数,用matlab编了一个程序,可是运行出来的结果不对,能不能帮我看一下,错误出在那?
function []=lyapu()
N=2;
d0=0.0001;
x=[0,0];
d=0;
sum=0;
dt=0.01;
for i=1:N
z(i)=x(i)+d0;
end
d0=distance(x,z);
lnd0=log(d0);
p=0;
q=p+dt;
F=0.15;
options=odeset('AbsTol',1e-6,'RelTol',1e-3);
while F<=0.25
     for i=1:N
            x(i)=x(i);
            z(i)=x(i)+d0;
        end
    for ii=1:20000
      
        tspan=[p,q];
        [t,x]=ode45(@duffing,tspan,x,options,F);
        [t,z]=ode45(@duffing,tspan,z,options,F);
        [m,n]=size(x);
        
        x=x(m,:);
        [h,s]=size(z);
        z=z(h,:);
        d=distance(x,z);
        sum=sum+log(d)-lnd0;
        for i=1:N
            x(i)=x(i);
            z(i)=x(i)+d0*(z(i)-x(i))/d;
        end
        
    end
   
    p=p+dt;
    q=q+dt;
    ly=sum/ii;
     ly=(ly)/dt;
    figure(1);
    hold on
    plot(F,ly);
    F=F+0.01;
%     hold off
end








function [dist]=distance(p,h)
dist=0;
for i=1:2
    D=h(i)-p(i);
    D=D*D;
    dist=dist+D;
end
dist=sqrt(dist);








function [dx]=duffing(t,x,F)
% global F;
w0=1.0;
gama=0.168;
dx=[x(2);F*sin(w0*t)-gama*x(2)+1/2*x(1)*(1-x(1)^2)];
 楼主| 发表于 2008-3-23 17:31 | 显示全部楼层
你的结果是多少?

可以结合LET工具箱的结果进行比较!
发表于 2008-3-23 17:37 | 显示全部楼层
我是直接在matlab中把图形画出来了,画出的图和书上的差别很大,楼主能帮我看一下错在那里吗?谢谢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-3 21:36 , Processed in 0.088654 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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