Matlab ODE具有不同的参数

时间:2015-09-01 20:52:48

标签: matlab ode

我正在努力做到这里所解释的: How solve a system of ordinary differntial equation with time-dependent parameters(第2部分)。

这是我的代码。我不知道我哪里出错了。

function shi = shitry(t,y,b,bt)
b = interp1(bt, b, t)
a = 0.25; %loss of immunity rate
% b = 0.0002; %infectivity rate
q = 10; %population renewal
m = 0.012; %death rate
r = 0.14;  %recovery rate
shi(1) = q - m*y(1)-b*y(1)*y(2)+a*y(3);
shi(2) = (b*y(1))- (m + r)*y(2);
shi(3) = (r*y(2))-((m+a)*y(3));
shi = shi(:);
end

这是上面定义的功能。

bt = [5 9 12 17 19 24 28 27 22 17 10 7];
b = 0.00002*bt;

tspan = linspace(0, 12, 50);
yo = [200000 150 0];
[tv,Yv] = ode45(@(t,y) shitry(t, y, bt, b), tspan, yo);
plot(tv,Yv(:,1),'+',tv,Yv(:,2),'x',tv,Yv(:,3),'o');

当我运行代码时,出现以下错误:

  

使用griddedInterpolant时出错网格向量不严格   单调增加。

     

interp1错误(第191行)           F = griddedInterpolant(X,V,方法);

     

shitry错误(第2行)b = interp1(bt,b,t)

     

@(t,y)shitry(t,y,bt,b)

出错      

odearguments中的错误(第88行)f0 = feval(ode,t0,y0,args {:}); %   ODE15I将args {1}设置为yp0。

     

ode45错误(第114行)[neq,tspan,ntspan,next,t0,tfinal,tdir,   y0,f0,odeArgs,odeFcn,...

     

shigella的错误(第23行)[tv,Yv] = ode45(@(t,y)shitry(t,y,bt,   b),tspan,yo);

0 个答案:

没有答案