This notebook demonstrates the Feigenbaum/Lanford doubling operator.  The doubling operator is a nonlinear functional T that transforms one function into another.  The domain of the functional is the space of D of continuous functions f:[-1, 1] ->[-1, 1] which satisfy 
(1) f(-1) = f(1) = -1
(2) f has a unique critical point, c, with f''(c) < 0.  (That is, f is a "one hump" map with a quadratic maximum.)
(3) f(x) = x has exactly two solutions, x = -1 and x = x* > c
(4) f(x) = x* has exactly two solutions, xl and x*.   
It follows that -1 < xl < c < x* < 1, and  f(f(xl) = f(f(x*) = x*.

Now, consider the linear function h that maps x* to -1 and xl to 1.  (Note that h as negative slope.)
Then we define
T[ f  ] = h∘f∘f∘hinv : [-1, 1] → R

This notebook shows the action of T graphically.  I specifically chose f to be non-even.  In the future, we will focus on even fuctions, since T maps even functions to even functions, and the formula for T restricted to even functions is simpler.

The last function defining f[x] wil be the one that is used.

a = 3.67857351; (* 2 to 1 band merging *)
a = 1 + Sqrt[5];  (* Superstable period 2 *)
f[x_] := -1 + a /2(1-x^2)
f[x_] := -1  - (x+1)(x-1)(3.5+x)/2  (* Non-even function *)

pf = Plot[{x,f[x]}, {x, -1, 1}, PlotStyle -> {Dashing[{.005, .02}], Blue },AspectRatio -> Automatic, Frame -> True, PlotRange ->{{-1,1}, {-1,1}}, Axes -> False, ImageSize -> 300]

xr = x/.FindRoot[f[x]==x, {x, .5}] (* xr is the fixed point, rather than x*. *)

xl = x/.FindRoot[f[x]==xr, {x, -.5}] (* xl is an inverse image of the fixed point *)

p1 = Plot[{x,f[f[x]]}, {x, -1, 1}, PlotStyle -> {Dashing[{.005, .02}], Red }, AspectRatio -> Automatic, Frame -> True, PlotRange ->{{-1,1}, {-1,1}}, Axes -> False];

pf2 = Show[pf, p1, Graphics[Line[{{xl, xl}, {xl, xr}, {xr, xr}, {xr, xl}, {xl, xl}}]] , ImageSize -> 300]

h[x_] = -1 + 2 ((xr - x)/(xr - xl))
hinv[y_] = xr -(y+1)( xr-xl)/2

Simplify[h[hinv[x]]]

pTf = Plot[{x, h[f[f[hinv[x]]]]}, {x, -1,1}, PlotStyle -> {Dashing[{.005, .02}], Red }, AspectRatio -> Automatic, Frame -> True, PlotRange ->{{-1,1}, {-1,1}}, Axes -> False, ImageSize ->300]