MATLAB: I’m very new to matlab and I’m doing this simulation for infectious diseases. I keep receiving an error message: Not enough input arguments.” Error in sird (line 47) dx(1)= -beta*(x(2​)*x(1))/x(​5)+x(1)*(d​r+br);” How to solve this

not enough argumentssir model

The code is shown below.
function dx = sird(t,x);
dx= [0; 0; 0; 0; 0];
% Parameters for Beta
dt=1/7; %time interval i.e., per day
d= 0.0018288; %transmission diameter
v= 8.04672*7; %velocity in km/week
p= 98111/56.81; %density in person/km^3
c= sqrt(2)*pi*d^2*v*p; %No. of contacs sigma in person/week
i= 0.569; %Infection probability
beta=c*i; %Beta
%Constants:
rp= 0.18125; %probability of recovery
dp= 0.173125; %probability of death
dr= -0.00790639/52; %death rate
br= 0.01296648/52; %birth rate per week
dx(1)= -beta*(x(2)*x(1))/x(5)+x(1)*(dr+br);
dx(2)= beta*((x(2)*x(1))/x(5))-rp*x(2)-dp*x(2)+x(2)*(dr+br);
dx(3)= rp*x(1)+x(3)*(dr+br);
dx(4)= dp*x(2);
dx(5)=x(5)+(x(5)*(dr+br)-dp*x(5));
options= odeset('RelTol', 1e-4, 'NonNegative', [1 2 3 4]);
[t,x] = ode45('sird', [0 dt 30], [100 2 0 0 102], options);
plot(t,x);
legend('S', 'I', 'R', 'D');

Best Answer

Try the following function file:
function main
tspan=linspace(0,30,210);
options= odeset('RelTol', 1e-4, 'NonNegative', [1 2 3 4]);
[t,x] = ode45(@sird, tspan, [100 2 0 0 102], options);
plot(t,x);
legend('S', 'I', 'R', 'D');
function dx = sird(t,x);
dx= zeros(5,1)
% Parameters for Beta
d= 0.0018288; %transmission diameter
v= 8.04672*7; %velocity in km/week
p= 98111/56.81; %density in person/km^3
c= sqrt(2)*pi*d^2*v*p; %No. of contacs sigma in person/week
i= 0.569; %Infection probability
beta=c*i; %Beta
%Constants:
rp= 0.18125; %probability of recovery
dp= 0.173125; %probability of death
dr= -0.00790639/52; %death rate
br= 0.01296648/52; %birth rate per week
dx(1)= -beta*(x(2)*x(1))/x(5)+x(1)*(dr+br);
dx(2)= beta*((x(2)*x(1))/x(5))-rp*x(2)-dp*x(2)+x(2)*(dr+br);
dx(3)= rp*x(1)+x(3)*(dr+br);
dx(4)= dp*x(2);
dx(5)=x(5)+(x(5)*(dr+br)-dp*x(5));