Group Abstract Group Abstract

Message Boards Message Boards

Solve a system of ODE's with DSolve[ ]?

I'm new to Mathematica and would appreciate anyone with an experienced eye who would look at the following failed attempt to solve a system of ordinary differential equations and tell me what I'm doing wrong. The function is pasted below and a .nb file is attached.

I'm looking for general symbolic solution to a standard S,I,R (susceptible, infected, recovered) model. Then I'd like to learn how to play with parameters and plotting features. But first, I need a solution. This attached formulation has been running for a few hours without returning a result. What's wrong with its arguments? Is there a way to limit parameter intervals and independent variable interval?

Thanks.

eqns = {s'[t] == m (s0 + i0 + r0) - \[Beta] s[t] i[t] - m s[t], i'[t] == \[Beta] s[t] i[t] - m i[t] - g i[t], r'[t] == g i[t] - m r[t]}
sol = DSolve[eqns, {s, i, r}, t]
Attachments:
POSTED BY: Jay Gourley
4 Replies

Thanks, again Robert Nachbar.

POSTED BY: Jay Gourley

The Manipulate function will allow you to easily attach sliders to parameters and dynamically update the plot as the sliders are moved.

All the Wolfram Language documentation is available on-line. the landing page is here. Documentation for Manipulate is here. Depending on your prior coding experience, these two "tutorials" may be good starting points: An Elementary Introduction to the Wolfram Language (aka EIWL) and Wolfram Language: Fast Introduction for Programmers.

POSTED BY: Robert Nachbar
POSTED BY: Jay Gourley

This system of equations contains two nonlinear equations, and therefore cannot be solved in closed form.

They can be solved numerically with ParametricNDSolve that will allow you to play with the parameters.

{ss, ii, rr} = {s, i, r} /. 
  ParametricNDSolve[{eqns, {s[0] == s0, i[0] == i0, r[0] == r0}}, {s, 
    i, r}, {t, 0, 100}, {s0, i0, r0, \[Beta], g, m}]

The following Plot can be put inside of Manipulate

Plot[{ss[1000, 1, 0, 0.002, 0.2, 0.003][t], 
  ii[1000, 1, 0, 0.002, 0.2, 0.003][t], 
  rr[1000, 1, 0, 0.002, 0.2, 0.003][t]}, {t, 0, 30}]

enter image description here

POSTED BY: Robert Nachbar
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard