sir_simulation


sir_simulation, a Python code which simulates the spread of a disease through a hospital room of M by N beds, using the Susceptible/Infected/Recovered (SIR) model.

We consider the evolution of a disease in a hospital in which patients are arranged on an array of beds.

We assume that the beds form an array of M rows and N columns, so that there are a total of M * N patients.

We assume that the patients can be classified as Susceptible, Infected or Recovering, with the properties that:

We set up an M by N array A to represent the patients. A(I,J) contains information on the patient in row I, column J. A(I,J) will be

The rules for transmission of the disease essentially update the patient array once a day. If patient A(I,J) was:

Quantities of interest include an animation of the day to day status of patients in the hospital (the "geometry") and the values of S, I, and R, that is, the total number of patients in each category, as it evolves over time.

Since this problem contains a probabilistic element in the transmission of disease, the outcome of any single run has limited meaning. It is much more valuable to run many simulations, and thus to get both average or "expected" values, as well as a feeling for the variance of the data from these averages.

Licensing:

The computer code and data files described and made available on this web page are distributed under the MIT license

Languages:

sir_simulation is available in a MATLAB version and a Python version.

Related Data and codes:

brownian_motion_simulation, a MATLAB code which simulates Brownian motion in an M-dimensional region.

chuckaluck_simulation, a MATLAB code which simulates the Chuck-a-Luck gambling game.

duel_simulation, a MATLAB code which simulates N repetitions of a duel between two players, each of whom has a known firing accuracy.

fire_simulation, a MATLAB code which simulates a forest fire over a rectangular array of trees, starting at a single random location.

fly_simulation, a Python code which simulates an experiment in which a fly lands on a plate of radius 1. By repeating the experiment many times, the average distance of the fly from the center is to be estimated.

full_deck_simulation, a MATLAB code which simulates a process in which a random card is drawn from a deck of 52, and then replaced, continuing until every card has been seen at least once.

high_card_simulation, a Python code which simulates a situation in which you see the cards in a deck one by one, and must select the one you think is the highest and stop.

percolation_simulation, a Python code which simulates a percolation system. A rectangular region is decomposed into a grid of MxN squares. Each square may be porous or solid. We are interested in a path of porous squares connecting the top and bottom, or the left and right boundaries. The original MATLAB code was written by Ian Cooper.

snakes_and_ladders_simulation, a MATLAB code which simulates the game of Snakes and Ladders.

truel_simulation, a MATLAB code which simulates N repetitions of a duel between three players, each of whom has a known firing accuracy.

urn_simulation, a Python code which simulates the experiment of sampling K balls from an urn containing N balls of various colors.

Reference:

  1. Dianne OLeary,
    Models of Infection: Person to Person,
    Computing in Science and Engineering,
    Volume 6, Number 1, January/February 2004.
  2. Dianne OLeary,
    Scientific Computing with Case Studies,
    SIAM, 2008,
    ISBN13: 978-0-898716-66-5,
    LC: QA401.O44.

Source Code:


Last revised on 07 July 2022.