code: def tent_map(x, steps, mu=2):
    
    for _ in range(steps):
      x = mu * x if x < 0.5 else mu * (1 - x)
      yield x
docs: Generates a time series of the tent map.
  
    Characteristics and Background:
      The name of the tent map is derived from the fact that the plot of x_i vs
      x_i+1 looks like a tent. For mu > 1 one application of the mapping function
      can be viewed as stretching the surface on which the value is located and
      then folding the area that is greater than one back towards the zero. This
      corresponds nicely to the definition of chaos as expansion in one dimension
      which is counteracted by a compression in another dimension.
  
    Calculating the Lyapunov exponent:
      The lyapunov exponent of the tent map can be easily calculated as due to
      this stretching behavior a small difference delta between two neighboring
      points will indeed grow exponentially by a factor of mu in each iteration.
      We thus can assume that:
  
      delta_n = delta_0 * mu^n
  
      We now only have to change the basis to e to obtain the exact formula that
      is used for the definition of the lyapunov exponent:
  
      delta_n = delta_0 * e^(ln(mu) * n)
  
      Therefore the lyapunov exponent of the tent map is:
  
      lambda = ln(mu)
  
    References:
      .. [tm_1] https://en.wikipedia.org/wiki/Tent_map
  
    Args:
      x (float):
        starting point
      steps (int):
        number of steps for which the generator should run
  
    Kwargs:
      mu (int):
        parameter mu that controls the behavior of the map
  
    Returns:
      generator object:
        the generator that creates the time series