1. Chaos

The logistic map is the iteration

$$ x_{n+1} = r x_n (1-x_n), $$

where $r$ is a parameter in the interval $[0,4]$. An earlier Example called "The logistic map and chaos" looked at the behavior of this function for fixed $x_0$ as a function of $r$. Here we do the reverse: fix $r$ and vary $x_0$. The situation was considered previously in [1].

The interesting behavior happens for $r\in [3,4]$ -- the famous phenomenon of period doubling to chaos. Let's begin with the chaos, which you see, for example, for $r=3.75$. Here is what happens after ten iterations of the map:

tic
r = 3.75; x0 = chebfun('x',[0 1]);
n = 10; x = x0;
for k = 1:n, x = r*x.*(1-x); end
LW = 'linewidth'; FS = 'fontsize';
plot(x,LW,1)
ss = sprintf('r=%4.2f     n=%d     length(x)=%d', r, n, length(x));
title(ss,FS,12), axis([0 1 0 1])

Note that the length of the chebfun is slightly less than the mathematically exact value of $1025$. This appears to be due to an aliasing phenomenon, but we won't explore that here.

2. Period 2

Here is the same plot except for $r=3.25$, where this dynamical system is of period 2:

r = 3.25; x = x0;
for k = 1:n, x = r*x.*(1-x); end
plot(x,LW,1)
ss = sprintf('r=%4.2f     n=%d     length(x)=%d', r, n, length(x));
title(ss,FS,12), axis([0 1 0 1])

One can see that $x$ takes essentially just 2 values. If we truncate the interval a little bit to avoid the complexity at the edges, then Chebfun can take 20 steps without difficulty:

n = 20;
x0 = chebfun('x',[.02 .98]);
x = x0;
for k = 1:n, x = r*x.*(1-x); end
plot(x,LW,1)
ss = sprintf('r=%4.2f     n=%d     length(x)=%d', r, n, length(x));
title(ss,FS,12), axis([0 1 0 1])

Here are the two limiting values:

x(0.5), x(0.8)
ans =
   0.495265168245476
ans =
   0.812427139446847

Can you compute these analytically, or semi-analytically using Chebfun roots?

3. Period 4

For $r=3.5$, the system has period 4:

r = 3.5; x = x0;
for k = 1:n, x = r*x.*(1-x); end
plot(x,LW,1)
ss = sprintf('r=%4.2f     n=%d     length(x)=%d', r, n, length(x));
title(ss,FS,12), axis([0 1 0 1])

Here are the four limiting values, which again you may be able to compute with roots:

x(0.5), x(0.62), x(0.77), x(0.83)
ans =
   0.500884210318974
ans =
   0.382819683208548
ans =
   0.874997263532759
ans =
   0.826940706746710

Time for this example:

toc
Elapsed time is 3.709241 seconds.

Reference

  1. R. B. Platte and L. N. Trefethen, Chebfun: A new kind of numerical computing, in A. D. Fitt, et al., Progress in Industrial Mathematics at ECMI 2008, Springer, 2010.