回复 #60 octopussheng 的帖子
想请教学长关于用wolf法求解的问题,最近初学,在编程方面头很大,所以很希望学长指点一下。想用学长给的程序求解,首先是不是要储存分岔图或者相图的数据,那数据文件是‘11111.txt’这种文件形式呢?
运行程序就可以求出N,m,tau,p等参数值,然后就可以求出最大Lyapunov指数。 进行时间序列Lyapunov指数求解的步骤如下:
1)求解你的微分方程得到时间序列,一般选择位移作为时间序列,需要注意的是要对结果进行一定的处理,即去掉不稳定的解以及对序列进行采样!
2)将第一步的结果赋给一个变量(在matlab中操作),这就是你所说的数据文件
3)对该数据确定N,m,tau,p等值
4)调用wolf程序求解!
回复 62楼 的帖子
谢谢学长的指点,现在的问题是取位移时间序列,我该怎样储存这组时间序列,应该写成什么形式的语句才能利用Wolf法求解李氏指数呢,学长能不能再指点一下,比如应该储存时间-位移序列我该写成path_data=strcat(path,'data.txt');
...
fid=fopen(path_data,'w'); % 存储数据
fprintf(fid,'%g%g\n',);
fclose(fid); 你这个是什么语言?C么? 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
回复 65楼 的帖子
这两篇文章能否给出一些评价? 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. 无语,看不懂啊!回复 2楼 的帖子
感谢你的总结,对我的工作很有帮助,可是还是有个地方不太清楚。定义法计算Lyapunov指数是:
Lyapunov指数与演化到下一时刻的球的体积和当前演化时刻球体积的比值有关,
可是这个程序中似乎没有求体积的计算啊?还是存在什么近似计算?
还有,下面是为什么?
lp = lp+log(abs(mod));
Lyapunov1(i) = lp(1)/(tstart);
Lyapunov2(i) = lp(2)/(tstart);
Lyapunov3(i) = lp(3)/(tstart);
谢谢了!:@) 这四个语句其实就是计算LE的代码,请看一下LE的定义,然后和这几条语句进行比较即可明了了! 还是不能看到完整的代码阿 完整的代码?是什么意思?网速太慢了? 楼主,用wolf法计算lyapunov指数哪个程序是不是没有主函数,我这段时间做duffing方程的lyapunov指数,用matlab编了一个程序,可是运行出来的结果不对,能不能帮我看一下,错误出在那?
function []=lyapu()
N=2;
d0=0.0001;
x=;
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=;
=ode45(@duffing,tspan,x,options,F);
=ode45(@duffing,tspan,z,options,F);
=size(x);
x=x(m,:);
=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 =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 =duffing(t,x,F)
% global F;
w0=1.0;
gama=0.168;
dx=; 你的结果是多少?
可以结合LET工具箱的结果进行比较! 我是直接在matlab中把图形画出来了,画出的图和书上的差别很大,楼主能帮我看一下错在那里吗?谢谢