The iterated Logistic map is widely used to demonstrate and study chaotic oscillations. As an ecological model the iterated Logistic map has some unfortunate properties. If x>1, the population is above its carrying capacity, then at the next iteration x<0.  Stephen Wolfram has proposed closed form solutions for the map for a=2 and a=4. I will demonstrate that by completing the square that the iterated Logistic map can be written such that x only occurs once in the expression.

In[12]:=

OriginalMap = a x (1 - x)

Out[12]=

a (1 - x) x

First the map will be algebraically rewritten so the square can be completed.

In[13]:=

a (x - x^2)

Out[13]=

a (x - x^2)

In[14]:=

-a (x^2 + x)

Out[14]=

-a (x + x^2)

In[15]:=

-a (-x + x^2)

Out[15]=

-a (-x + x^2)

By completing the square the logistic map can be rewritten so x will occur only a single time in the expression .

-a (-1/4 + 1/4 - x + x^2)

-a (-1/4 + (1/4 - x + x^2))

In[16]:=

-a (-1/4 + (1/2 - x)^2)

Out[16]=

-a (-1/4 + (1/2 - x)^2)

In[17]:=

LogisticMap = %

Out[17]=

-a (-1/4 + (1/2 - x)^2)

Because x occurs once in the expression when the Logistic map is iterated the expression will have only one occurrence of x.

In[18]:=

LogisticMap /. x LogisticMap

Out[18]=

-a (-1/4 + (1/2 + a (-1/4 + (1/2 - x)^2))^2)

In[19]:=

LogisticMap /. x LogisticMap /. x LogisticMap

Out[19]=

-a (-1/4 + (1/2 + a (-1/4 + (1/2 + a (-1/4 + (1/2 - x)^2))^2))^2)

In[20]:=

LogisticMap4 = LogisticMap /. x LogisticMap /. x LogisticMap /.x-> LogisticMap

Out[20]=

-a (-1/4 + (1/2 + a (-1/4 + (1/2 + a (-1/4 + (1/2 + a (-1/4 + (1/2 - x)^2))^2))^2))^2)

Compare this to the original Logistic map iterated 4 time steps.

In[21]:=

OriginalMap4 = OriginalMap /. x OriginalMap /. x OriginalMap /.x-> OriginalMap

Out[21]=

a^4 (1 - x) x (1 - a (1 - x) x) (1 - a^2 (1 - x) x (1 - a (1 - x) x)) (1 - a^3 (1 - x) x (1 - a (1 - x) x) (1 - a^2 (1 - x) x (1 - a (1 - x) x)))

One can argue which of the two expressions is simpler. Aesthetics is subjective. The advantage of an expression with a single occurrence is that with interval arithmetic the exact range of the function can be computed. See, for example, R.E. Moore (1979) Methods and Applications of Interval Analysis, SIAM.

In[22]:=

LogisticMap4 /. {xInterval[{0.5, 0.51}], a3.9}

Out[22]=

Interval[{0.869465, 0.875227}]

If interval analysis is applied to the original iterated Logistic map then the computed bounds will be overly conservative.  

In[23]:=

OriginalMap4 /. {xInterval[{0.5, 0.51}], a3.9}

Out[23]=

Interval[{0.0878706, 2.40131}]

Computing bounds on the iterated Logistic map allows us to compute how long it takes for rounding of the floating point numbers to effect the results. Starting with exact knowledge x=0.5 and a=3.9 it takes 67 iterations before the bounds on the model output are non-informative.

In[32]:=

LogisticMapF[a_, x_] = LogisticMap

Out[32]=

-a (-1/4 + (1/2 - x)^2)

In[33]:=

LogisticMapF1[x_] := LogisticMapF[3.9, x]

In[47]:=

NestList[LogisticMapF1, Interval[{0.5, 0.5}], 68]

Out[47]=

{Interval[{0.5, 0.5}], Interval[{0.975, 0.975}], Interval[{0.0950625, 0.0950625}], Interval[ ... 7094}], Interval[{0.328671, 0.975}], Interval[{0.0950625, 0.975}], Interval[{0.0950625, 0.975}]}


Created by Mathematica  (July 5, 2005) Valid XHTML 1.1!