GS 2003/Math - Collins
Lab 3
Patterns from Difference Equations

In this lab we will use simulation to study various patterns
in sequences produced by difference equations of the form

      x(n+1) = f(x(n))

We will look at different types of DE: Linear and Non-linear.

For each type of DE you will:
   1. Write a script or function that accepts parameters and an
      initial value, produces 100 iterates of the DE and
      then plots the result.
   2. Run your program many times with different parameters to
      explore the behavior of the difference equation.
   3. Formulate a conclusion saying what ranges of values for
      the parameters and initial values produce what types of results.

I. Constant Linear DE: x(n+1) = ax(n) or x(n+1) = ax(n) + b

   Program Info

   The input to your script or function will be
       a, b, and x(1)    [Matlab can only start at 1, not 0]

   After you produce 100 iterates, plot the results as a series
   of points (n,x(n)) for n = 1 to 100  (use plot(x,'o')
   or plot(1:100,x,'o'))

   Look back at the script from Lab 2 to see how your script might
   look.  If you are still struggling, there is a script lindiff.m
   at the end of this file.

   Assignment I

   By experimenting with a, b and x(1) determine for what parameter
   ranges you get results that (a) stay bounded or (b) grow out
   of control (unbounded).  When it is bounded, does it tend
   toward one value?  What value?

II. Non-constant Linear DE: x(n+1) = a(n)x(n) + b(n)

   Program Info

   Several types of DEs in this category are listed below, for
   each write a script to explore it.  Your script or function
   should perform as described above. (You could/should copy the
   program you wrote above and modify it as needed).

   Assignment II

   For each DE below, experiment with the parameters to see when
   the sequence is (a) bounded and when it is (b) unbounded.  When
   it is bounded, what value does it tend toward?

   1. x(n+1) = a(1-1/n)x(n)
   2. x(n+1) = a(1+1/n)x(n)
   3. x(n+1) = a(1-1/n)x(n) + b
   4. x(n+1) = a(1-1/n)x(n) + n

III. Nonlinear DE: x(n+1) = f(x(n))

   Program Info

   Same procedure as above.

   Assignment III

   For each non-linear DE below, experiment with the parameter to see
   when the sequence is (a) bounded and when it is (b) unbounded.
   When it is bounded, does the sequence tend towards one value?

   1. x(n+1) = x(n)^2 + a,  use x(1) = 0
   2. x(n+1) = a x(n) (1-x(n)), use 0 < a < 4, x(1) = 1/2
   3. (Challenge) x(n+1) = a cos(x(n)), use x(1) = 0
   4. (Challenge) x(n+1) = a x(n)    if 0 < x(n) < 1/2
                           a(1-x(n)) if 1/2 < x(n) < 1
      Try a=2 then try other a < 2

IV. (Challenge) Complex-Valued Nonlinear DE: x(n+1) = f(x(n))

   Program Info

   Same as above except now the starting value and the parameters can
   be complex numbers.  MATLAB naturally does complex arithmetic so
   you don't need to change anything in your program.  To input
   complex numbers you write them as 1+4i, 0.3-0.2i, etc.  When
   MATLAB plots a complex number a+bi it plots it as the point (a,b),
   thus to see the behavior you should use plot(x) which
   will draw lines between the points.  'Bounded' in this case
   means 'stays near the origin (0,0)', 'unbounded' means 'tends away from the

   Assignment IV (Challenge)

   Classify the parameter ranges for bounded/unbounded for each:

   1. x(n+1) = x(n)^2 + a, use x(1) = 0, but make  a  complex
   2. x(n+1) = x(n) - abs(x(n))
   3. x(n+1) = a cos(x(n))

To Turn In:

For each assignement/problem write out what parameter
ranges you found for each type of result: bounded, 
unbounded, etc.

Sample Script lindiff.m % script file to simulate the difference equation x(n+1) = a x(n) + b a = input('Enter the value for a:'); b = input('Enter the value for b:'); x(1) = input('Enter the initial value (x(1)):'); for n = 1:100 x(n+1) = a*x(n) + b; end plot(x,'o') title(['Difference Equation with a = ',num2str(a),' and b = ',num2str(b)]) % end of script
Last Modified: June 17, 2003