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?