shangqingyun 发表于 2010-4-4 22:15

请教一个延迟系统的分岔程序问题

下面是我修改最大值法分岔程序得到的延迟系统的分岔程序为什么作关于c变量时会出现 问题提示
??? Subscripted assignment dimension mismatch.
Error in ==> dde_chen_yuanchengxu at 27
    y(:,1)=sol.y(1,:)
而作关于k变量分岔时候出现的问题提示是
??? Attempted to access y(14054.5,1); index must be a positive integer or logical.
Error in ==> getmax at 5
    b=(y(i,1)-y(i-2,1))/2;
Error in ==> dde_chen_yuanchengxu at 27
    =getmax(y(:,1));

请教各位师兄问题出现在哪
谢谢
下面是我的程序

function dde_chen
%延迟Chen系统
%
% 方程如下:
%   dx/dt=a*(y-x)
%   dy/dt=(c-a)*x+c*y-x*z+k*(y(t-tau)-y)
%   dz/dt=x*y-b*z
%a=35 ,b=3 ,c=28;tau=0.15,k=2.8
%
clear all
%bifurcation
for k=linspace(1,10,10);%r的变化精度
    history = [-3;-4;14];
tspan = ;
opts = ddeset('RelTol',1e-5,'AbsTol',1e-8);
a = 35;b = 3;c = 28;
%k = 2.8;
tau = .15;
sol = dde23(@dde_chenf,tau,history,tspan,opts,a,b,c,k);
    y(:,1)=sol.y(1,:)
    =getmax(y(:,1));
    plot(k,Xmax,'b','markersize',1)
    hold on
    clear Xmax
end

function dydt = dde_chenf(t,y,Z,a,b,c,k)
% Differential equations function for Chen.
ylag = Z(:,1);
dydt = [ a*(y(2)-y(1))
    (c-a-y(3))*y(1)+c*y(2)+k*(ylag(2)-y(2))
    y(1)*y(2)-b*y(3)      ];

function = getmax(y)
a=length(y);
j=1;
for i=(a-1)/2:a
    b=(y(i,1)-y(i-2,1))/2;
    c=(y(i,1)+y(i-2,1))/2-y(i-1,1);
    if y(i-2,1)<=y(i-1,1)&y(i-1,1)>=y(i,1)&c==0
      Xmax(j)=y(i-1,1);
      j=j+1;
    elseif y(i-2,1)<=y(i-1,1)&y(i-1,1)>=y(i,1)
      Xmax(j)=y(i-1,1)-b^2/(4*c);
      j=j+1;
    end
end

因为是调程序参量的变化精度没有取太大
我觉得最大值法的分岔是利用数值解来作图 那么常规系统和延迟系统应该没有太大区别
可就是做不出来 很困惑
希望高手能指点一二
谢谢

shangqingyun 发表于 2010-4-4 23:29

我是想利用分岔图像来找到 1周期 2周期等对应的参数数值

f13130959905 发表于 2011-6-23 16:17

楼主问题解决了么
页: [1]
查看完整版本: 请教一个延迟系统的分岔程序问题