Carpet
Carpet

Reputation: 21

Wolfram Mathematica, entering differential equations

I am trying to model the spread of disease using the differential equations given on this site http://www.maa.org/press/periodicals/loci/joma/the-sir-model-for-spread-of-disease-the-differential-equation-model with Wolfram Mathematica.

I entered:

 NDSolve[{i'[t]== 1/2s[t]i[t]-1/3i[t], s[t]==-1/2s[t]i[t],r[t]==1/3i[t], r[0] ==0, s[0]==1, i[0]==1.27*10^-6,s'[0]==0} i, {t, 0, 100}]

and received the error NDSolve called with 2 arguments; 3 or more arguments are expected.

I also tried

NDSolve[{i'[t]== 1/2s[t]i[t]-1/3i[t], s[t]==-1/2s[t]i[t],r[t]==1/3i[t], r[0] ==0, s[0]==1, i[0]==1.27*10^-6,s'[0]==0} i, {t, 0, 100}]

and got the same error

I am a newcomer to both differential equations and Mathematica, so I'd be grateful if someone can help.

Upvotes: 2

Views: 992

Answers (1)

Daniel
Daniel

Reputation: 8657

As Bill told these was no coma. Second argument of NDSolve is set of function. You can type it without arguments or with arguments. Your code should look like this:

sol = NDSolve[
  {i'[t] == 1/2 s[t] i[t] - 1/3 i[t],
   s[t] == -1/2 s[t] i[t], r[t] == 1/3 i[t],
   r[0] == 0,
   s[0] == 1,
   i[0] == 1.27*10^-6,
   s'[0] == 0}, {i[t], s[t], r[t]}, {t, 0, 10}]

It generates error connected with numerical problems:

NDSolve::ivres: NDSolve has computed initial values that give a zero residual for the differential-algebraic system, but some components are different from those specified. If you need them to be satisfied, giving initial conditions for all dependent variables and their derivatives is recommended. >>

But you can print your results:

Plot[{Evaluate[i[t] /. sol], Evaluate[s[t] /. sol], 
  Evaluate[r[t] /. sol]}, {t, 0, 10}]

solution2.png

Upvotes: 1

Related Questions