|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
下面是我修改最大值法分岔程序得到的延迟系统的分岔程序为什么作关于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
[Xmax]=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 = [0,100];
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,:)
[Xmax]=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 [Xmax] = 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
因为是调程序参量的变化精度没有取太大
我觉得最大值法的分岔是利用数值解来作图 那么常规系统和延迟系统应该没有太大区别
可就是做不出来 很困惑
希望高手能指点一二
谢谢 |
|