MATH 454: Dynamical Systems


MATLAB resources

Matlab Primer (PDF) This will help you get started using MATLAB.

Simple phase portrait m-file
This is a script which plots 2-d phase portraits and sample trajectories. It is small and easy to customize, but requires some MATLAB knowledge.

PPLANE7 (courtesy John Polking) This is a sophisticated tool for generating 2-D phase diagrams which can identify fixed points and plot trajectories.
It has a user-friendly interface, but cannot be easily customized. You'll need two files: pplane7.m and dfield7.m You only need to run pplane7. There is also a stand alone version (google pplane to find it).

Bifurcation tool (m-file)
This script will plot a bifurcation diagram for one dimensional systems. It requires the user to edit the function definition and provide bounds for the parameter and dependent variable.

MATLAB animations of the basic bifurcations:
  • bif1.m (normal form saddle-node)
  • bif2.m (normal form transcritical)
  • bif3.m (normal form supercritical pitchfork)
  • bif4.m (normal form subcritical pitchfork)


  • Suggested Homework

    These homework problems are recommended. Every 2-3 classes, a quiz will be given, based upon problems corresponding to the most recent lectures. Note that the order of the problems listed may not be the same as the lecture order.

    2.1.1-4
    2.2.4-6,10
    2.3.2-3
    2.4.3-6,9
    2.5.3-4
    2.7.1,6,7

    3.1.2,4,5
    3.2.2-4
    3.4.1,5,9,11
    3.5.4,7
    3.6.3-4

    4.1.5-7
    4.3.7,10

    5.1.3-5
    5.2.3,5,7,9,12

    6.1.2,4,6
    6.2.2
    6.3.1-4,10(a-c)
    6.4.4,7
    6.5.1,2,8,9,19 (Hint on part c- compute dy/dx, solve by separation of variables)
    6.8.3,4,7,12

    7.1.1,3
    7.2.9,12
    7.3.1,7,10
    7.5.1,3

    8.1.1,3,7,11
    8.2.1,5,12

    10.1.6,10
    10.3.3,4,7
    10.5.1-3

    9.2.1,3,6
    9.3.1,8

    11.1.2,6
    11.2.3.6
    11.3.1,7
    11.4.1,3,7

    12.1,3,5
    12.3.2

    Projects

    Due dates for these will be posted as necessary.

    Project #1: An introduction to MATLAB and numerical solutions (DUE Sept 11)

    This project is meant to be a gentle introduction to some of the features of MATLAB, as well as getting some experience with numerical solutions of dynamical systems. First, look at this Matlab Runge-Kutta implementation . Read the code carefully to see what's going on.
    Notice that many things are done for you. You will need to edit two things:
    (1) The loop over initial conditions. You need to select a sensible range which demonstrates features like fixed point solutions.
    (2) The function f(x) in the ODE dx/dt = f(x). Once you understand what the code is doing, launch MATLAB, and type 'rk' to run the script.
    Do problems 2.8.2 (a-d) in Strogatz. For each problem, identify the fixed points and stability. Finally, look at the MATLAB tutorial on this web site to get a more in-depth look at what MATLAB does. We will not, of course, use most of the features, but it's nice to see what can be done.


    Project #2: Finding bifurcations in a fishery model (DUE Oct 4)


    This project is based on Exercise 3.7.4, which involves a model that has logistic growth (for example in a fish population) together with a harvesting term.

    The parts of this project are as follows:
    (1) Include exercise parts (a)-(e) in your write-up. These involve some analytic work, but you might find computations helpful to identify bifurcations.
    (2) Obtain the MATLAB function bifurcation.m , which has already been set up for the model with a = 1/2 and "h" as the bifurcation parameter. This program plots the bifurcation digram for you (!) and lets you interactively see how this corresponds to the phase portrait. Read the beginning of the program for more information.
    Play with the code a little to see how it works. Include the bifurcation plot in your write-up, identifying the bifurcations and types.
    (3) If the parameter "a" is changed to 1, the two bifurcations happen to merge, creating a different bifurcation type. What is this type? Show a picture to justify.
    (4) Finally, a little science-based policy-making: What rate of harvesting should be allowed? Consider the effects of fluctuations that would reset the initial conditions.




    Project #3: Chemical oscillators (DUE Nov 1)


    There are a number of chemical reactions which are known to produce oscillations.
    The oldest and most famous is the Belousov-Zhabotinsky reaction. You can view a
    laboratory demonstration of it here.

    This project deals with the oscillating chemical system known as the "Brusselator",
    which has the form

    dx/dt = 1 - (b+1) x + a x^2 y
    dy/dt = bx - a x^2 y

    Here x,y,a,b are all >0.

    Part A. Find all fixed points and classify them using the Jacobian.

    Part B. (You'll want to use PPLANE for this and part D) Sketch the nullclines and the vector field, and draw in a "trapping region" by hand.

    Part C. Show that a Hopf bifurcation occurs at some critical value of b (which will depend on the parameter a). Does the limit cycle exist for b larger or smaller than this critical value?

    Part D. Plot some sample trajectories for b larger and smaller than the critical value. Identify the limit cycle using pplane when it exists.

    Part E. Approximate (analytically) the period of the limit cycle when b is near its critical value.

    Project #4: Maps: period doubling, chaos, Lyapunov exponents (Due Nov. 29)

    Here is Matlab code for plotting that groovy bifurcation diagram associated with the logistic map.
    A1. Change the code to compute the sin map (see text for this), and BE SURE TO ALSO CHANGE THE RANGE of the parameter r,
    so that the results look similar to the logistic map. Show labeled plot(s) of your results.
    A2. Explain why things look different when r > 1 (does it map to [0,1]?)
    A3. Find the values of the parameter $r$ where the period doubling bifurcations occur (use the zoom feature to get these accurately). Compute the ratio of their successive differences (see text) to see how close you can get to the Feigenbaum constant.
    A4. Find the point where chaos sets in, and other features, such as a window where 3-cycles live. Label these on your plot(s).


    Part B: Here is Matlab code for finding the Lyapunov exponent of the attractor. It plots out a graph whose LIMIT tends toward the exponent for the logistic map.
    B1. Set r=3.6 and determine the Lyapunov exponent. Show that you get the same result independent of the initial data that you use. Why is the result positive?
    B2. Determine the exponent for a stable 2-cycle and 4-cycle, indicating the value of r you are using. Why are the exponents negative?