Van Der Pol的lyapunov指数谱怎么是这样
我计算得到的Van Der Pol的lyapunov指数与一些资料上的不一样,各位大侠看看问题在哪里% 计算Van Der Pol吸引子的Lyapunov指数
%
% dx/dt = y
% dy/dt = a*(1 - x^2)*y - x^3 + b*cos(c*t)
% a = 0.2, b = 5.8, c = 3
clear all;
clc;
a = 0.15;b = 0.20;c = 10.0;y = zeros(6,1);
%初始值和正交化向量组
y(1:2) = ;
y(3:6) = ;
t0 = 0;
ts = 1e-3; % 时间步长
tw = 1e5; % 总的循环时间
st = 10; % 每次迭代的步数
times = tw/st; % 总迭代次数
mod = zeros(2,1);lp = zeros(2,1);
% 初始化Lyapunov指数
Lya1 = zeros(times,1);
Lya2 = zeros(times,1);
for i=1:times
tp = t0:ts:(t0 + ts*st);
= ode45('van', tp, y);
% 取最后一个时刻的值
y = Y(size(Y,1),:);
% 重新定义起始时刻
t0 = t0 + ts*st;
y0 = [y(3) y(5);
y(4) y(6) ];
%正交化
y0 = twoGS(y0);
% 取向量的模
mod(1) = sqrt(y0(:,1)'*y0(:,1));
mod(2) = sqrt(y0(:,2)'*y0(:,2));
y0(:,1) = y0(:,1)/mod(1);
y0(:,2) = y0(:,2)/mod(2);
lp = lp+log(abs(mod));
%Lyapunov指数
Lya1(i) = lp(1)/(t0);
Lya2(i) = lp(2)/(t0);
y(3:6) = y0';
end
% Lyapunov指数谱图
i = 1:times;
plot(i,Lya1,i,Lya2)
%Van Der Pol函数
function dX = van(t,X)
a=0.2; b=5.8; c=3;
x=X(1); y=X(2);
Y = [X(3), X(5);
X(4), X(6)];
dX = zeros(6,1);
dX(1)=y;
dX(2)=a*(1-x^2)*y-x^3+b*cos(c*t);
% (Jacobian)
J = [ 0, 1;
-2*a*x-3*x^2,a*(1-x^2)];
dX(3:6) = J*Y;
%二维向量的正交化函数
function A = twoGS(V)
v1 = V(:,1);
v2 = V(:,2);
a1 = zeros(2,1);
a2 = zeros(2,1);
a1 = v1;
a2 = v2-((a1'*v2)/(a1'*a1))*a1;
A = ; 参考资料上的是L1 = 0.32,L2 = -0.53是不是我的计算过程有问题,对于周期系数微分方程的lyapunov,是不是也可以按照常系数的方法计算? 确实出来的LE指数不怎么好,我得到的全部是0
楼主是不是要把这个非自治系统改为自治系统,然后再计算呢?
在论坛内有很多好的程序,你去看一下
[ 本帖最后由 xinyuxf 于 2007-4-26 17:20 编辑 ] 顶一下!
页:
[1]