Student Projects in Maxima Vol 1, Num 4: ODE Systems for Epidemiological Models

Student Projects in Maxima is an online project to disseminate work by undergraduate students using Maxima to reproduce published results in the sciences and social sciences.

Volume 1, Number 4 (2017) is devoted to Systems of Ordinary Differential Equations for SIR models in epidemiology.

 

Contents:

Emenheiser, Anna, Virus Dynamics and Drug Therapy

Radermacher, Erin, A Model of the 2014 Ebola Outbreak

Rafai, Sagar, Analysis of Communicable Disease Models

 

Advertisements

Student Projects in Maxima Vol 1, Num 3: ODE Systems for Interacting Population Models

Student Projects in Maxima is an online project to disseminate work by undergraduate students using Maxima to reproduce published results in the sciences and social sciences.

Volume 1, Number 3 (2017) is devoted to Systems of Ordinary Differential Equations for non-chaotic predator-prey and other interacting population models

 

Contents:

Bhullar, Abhjeet,  Lions, Wildebeest and Zebras

Goodin Aunic, Parasitic Nematodes in Grouse

DeFore, Brandon, Breeding Suppression in Predator-Prey

Jerez, Emilio, Predator-Prey with Hawk and Dove Tactics

Bontrager, Eric, Predator-Prey with Prey Switching

Beatty, Ethan, Analysis of Logistic Growth Models

Rice, Gabriel, Pharmacokinetic Mechanism of Ethanol-Benzodiazepine Interactions

Kay, Ian, Radioactive Isotopes

Wile, Jessica, Ebola in Western Lowlands Gorillas

Bailey, John,  Kinetic Modeling for Interconnected Reactions

Piet, Joe, Elephant and Tree Population Dynamics

Kim, Judy, A Model for West Nile Virus

Kamalaldin, Kamalaldin, Infected Prey in Polluted Environment

Park, Kayla, Ratio-Dependent Predator Prey Model

Lundy, Liam, Predator Prey in a Single Species with Cannibalism

Orwin, Michael, Interactions of Model Neurons

Schultz, Pete, Photosynthetic Oscillations

Wadhwa, Raoul, Dynamics in an Inflammation Model

Del Olmo, Ricardo, Population Growth and Technological Change

Goodloe, Robert, Short-term Model of Cocaine Consumption in Spain

Kill, Sean, A Logistic Model with Varying Carrying Capacity 

McFadden-Keesling, Sophia,  Predator Prey Model with a Refuge

Samson, Tanush,  Lions and Wildebeest Model

Morales, Zach,  Game Theory Models

Student Projects in Maxima Vol 1, Num 1: Systems of ODEs and Chaos

Student Projects in Maxima is an online project to disseminate work by undergraduate students using Maxima to reproduce published results in the sciences and social sciences.

Volume 1, Number 1 (2017) is devoted to Chaotic Systems of Ordinary Differential Equations.

Contents:

Thornburg, Eric, Simple Pendulum and Chaos

Bhimani, Kevin, Chaos in a 3-Species Food Chain

York, Lily, A Lattice Model of Epilepsy

Andrews, Steven, 3D Chaotic Model

Rutledge, Tim,  A Model of Neuronal Bursting

 

 

Student Projects in Maxima Vol 1, Num 2: Systems of ODEs with Impulses and Switching Functions

Student Projects in Maxima is an online project to disseminate work by undergraduate students using Maxima to reproduce published results in the sciences and social sciences.

Volume 1, Number 2 (2017) is devoted to Systems of Ordinary Differential Equations with time-dependent forcing terms, non-continuous inputs, and forcing terms that require knowledge of a past state of the system.

Contents:

Chumley, Qynce, An Office Heating and Cooling Model

Williams, Nick, Baseball Pitch Dynamics

Rizzolo, Skylar, BAC Model for alcohol consumption

Barth, Eric, A model of bladder bacteria proliferation in prostate disease

Barth, Eric, A Model of Pulse Vaccination Strategyi

 

A pause() function for Maxima

In MATLAB, pause interrupts execution of a loop until the user strikes a key, and pause(<n>) pauses for <n> seconds before resuming execution.
Here’s my attempt at a pause() function for Maxima that works in a similar way to MATLAB.  It uses Maxima’s read() to stop everything and wait for user input, and it uses the lisp function sleep to stop for a fixed number of seconds.
**note that a lisp function
     (function-name argument)
can be called inside Maxima as
     ?function-name(argument)
I’m not happy that in order to resume after the pause, the user needs to enter a valid character (space or nothing results in an error) followed by CTRL-SHIFT.  I hope to either figure something else out or even better hear suggestions from other Maxima users!
pause([options]):=block([tsecs],
    tsecs:assoc('pausetime,options,0),
    if tsecs=0 then
       read("Execution Paused...enter any character then CTRL-ENTER")
    else(
        disp(sconcat("paused for ", tsecs," seconds")),
       ?sleep(tsecs)),
    return("")
);
call this either as
     pause();
or, for a three second pause
     pause(pausetime=3);

Multiple plots in a single Maxima figure

In MATLAB, I often use the subplot() command to make an array of multiple plots in a single figure.

In Maxima, we can achieve that by generating each of the subplots using gr2d(),  and then putting them all together with a call to draw() or wxdraw():

2scenes

There’s an optional columns argument — the subplots are drawn row-wise in an array with the specified number of columns:

3scenes

And of course all this works for 3d plots using gr3d():

3dscenes