I am trying to calculate a solution to a SIRD model using an ERK method but I keep getting a number of different errors no matter what I try to change. Can anyone see any way in which this programme will run and give me an answer? I have tried adding all the parameters to the stage values k1-4 but the programme just bombs and won't even come back with an error it will just never stop running.
This is my code:
clearclc% Define ODE function
f = @(t, y, N, beta, gamma, mu) [ -(beta*y(2)*y(1))/N, (beta*y(2)*y(1))/N-gamma*y(2)-mu*y(2), gamma*y(2), mu*y(2) ];% Define IVP
tspan = [ 0, 3 ];y0 = [ 4990000, 10000, 0, 0 ];h = 0.5;N = 5000000;beta = 0.4;gamma = 1/21;mu = 2/1000;% ERK
y(1, :) = y0;t(1)=tspan(1);nsteps = (tspan(2)-tspan(1)) / h;for n = 1 : nsteps k1 = f(t(n), y(n, :)); k2 = f(t(n) + h/2, y(n, :) + h*k1/2); k3 = f(t(n) + 3*h/4, y(n, :) + 3*h*k2/4); k4 = f(t(n) + h, y(n, :) + h*k3); y(n+1, :) = y(n, :) + (h/36)*(7*k1+18*k2+8*k3+3*k4); t(n+1) = t(n) + h;end
And this is my error:
Not enough input arguments.
Error in Q3b>@(t,y,N,beta,gamma,mu)[-(beta*y(2)*y(1))/N,(beta*y(2)*y(1))/N-gamma*y(2)-mu*y(2),gamma*y(2),mu*y(2)] (line
5)
f = @(t, y, N, beta, gamma, mu) [ -(beta*y(2)*y(1))/N, (beta*y(2)*y(1))/N-gamma*y(2)-mu*y(2), gamma*y(2), mu*y(2) ];
Error in Q3b (line 21)
k1 = f(t(n), y(n, :));
Best Answer