SharedBifurcations_in_homeomorphisms_of_R.ipynbOpen in CoCalc

Bifurcations in homeomorphisms of R\mathbb R.

We will consider the family of maps fc(x)=12(ex+xc).f_c(x) = \frac{1}{2} (e^x + x - c). We can see this is a homeomorphism of R\mathbb R because the derivative is everywhere in the interval [12,+)[\frac{1}{2},+\infty). Another nice property of the map is that fc(0)=1f_c'(0)=1 for all cc. Also ff' is increasing so that this is the only point where fcf'_c is zero.

# This function returns the map f_c.
def f(c):
    m(x) = 1/2*(e^x + x - c)
    return m
f_1 = f(1)
x = var("x")
1/2*x + 1/2*e^x - 1/2
# The identity map
identity(x) = x

A bifurcation occurs at the value c=1c=1. Here we plot some nearby values

# Plot of f_0.9
plot(f(0.9),-1,1,aspect_ratio=1)+plot(identity, color="red")
# Plot of f_1
plot(f(1),-1,1,aspect_ratio=1)+plot(identity, color="red")
# Plot of f_1.1
plot(f(1.1),-1,1,aspect_ratio=1)+plot(identity, color="red")

A bifurcation is a sudden change in the dynamics as we change the parameters of a family of dynamical systems. In this case, a bifurcation occurs at the value c=1c=1:

  • For values of c<1c<1: For every xRx \in \mathbb R, limn+fcn(x)=+\lim_{n \to +\infty} f_c^n(x)=+\infty. That is, Ws(+)=RW^s(+\infty)=\mathbb R.
  • At the value c=1c=1: The map f1f_1 has a single fixed point, f1(0)=0f_1(0)=0. For values of x<0x<0, we have limn+f1n(x)=0\lim_{n \to +\infty} f_1^n(x)=0. For values of x>0x>0, we have limn+f1n(x)=+\lim_{n \to +\infty} f_1^n(x)=+\infty. That is, Ws(0)=(,0]andWs(+)=(0,+).W^s(0)=(-\infty,0] \quad \text{and} \quad W^s(+\infty)=(0,+\infty).
  • At values of c>1c>1: The map fcf_c has two fixed points, denote them by aa and bb with $a

Visualizing the maps through a vector field.

We can visualize this bifurcation in the (x,c)(x,c) plane, where dynamics in the horizontal line of height cc represent the action of fcf_c. First, let us compute the fixed points.

Observe that the xx value of a fixed point uniquely determines the cc value:

[c == -x + e^x]
c_value_of_fixed_point(x) = e^x - x
fixed_point_plot = plot(c_value_of_fixed_point, -2, 1.25, aspect_ratio=1)

Since cc is a parameter, it is constant under iteration. We define the map F(x,c)=(fc(x),c).F(x,c) = \big(f_c(x), c\big).

F(x,c) = (f(c)(x), c)
(-1/2*c + 1/2*x + 1/2*e^x, c)

We can visualize FF as a vector field. At each point (x,c)(x,c), we join (x,c)(x,c) to its image F(x,c)F(x,c) by a displacement vector with value F(x,c)(x,c)F(x,c)-(x,c). We just compute this to be:

V(x,c) = (-1/2*c + 1/2*x + 1/2*e^x - x, 0)
fixed_point_plot + plot_vector_field(V(x,c), (x,-2,1.25), (c,0,2.2))