Class LogisticMap

java.lang.Object
org.episteme.core.mathematics.analysis.chaos.LogisticMap
All Implemented Interfaces:
Function<Double,Double>, DiscreteMap<Double>, Function<Double,Double>, Relation<Double,Double>

public class LogisticMap extends Object implements DiscreteMap<Double>
The Logistic Map: x_{n+1} = r * x_n * (1 - x_n).

A classic example of how complex, chaotic behaviour can arise from very simple non-linear dynamical equations. The logistic map exhibits a period-doubling route to chaos as the parameter r increases.

Parameter Ranges:

  • 0 ≤ r ≤ 1: Population dies out
  • 1 invalid input: '<' r invalid input: '<' 3: Converges to (r-1)/r
  • 3 ≤ r invalid input: '<' 1+√6 ≈ 3.45: Oscillates between two values
  • r ≈ 3.57: Period-doubling cascade to chaos
  • r = 4: Fully chaotic on [0, 1]

References

  • May, Robert M. (1976). "Simple mathematical models with very complicated dynamics". Nature. 261 (5560): 459–467. doi:10.1038/261459a0
  • Wikipedia: Logistic map
Since:
1.0
Author:
Silvere Martin-Michiellot, Gemini AI (Google DeepMind)
  • Constructor Details

    • LogisticMap

      public LogisticMap(double r)
      Creates a Logistic Map with parameter r (double precision).

      For arbitrary precision, use LogisticMap(Real).

      Parameters:
      r - the growth rate parameter (typically [0, 4])
    • LogisticMap

      public LogisticMap(Real r)
      Creates a Logistic Map with parameter r (arbitrary precision).
      Parameters:
      r - the growth rate parameter (typically [0, 4])
  • Method Details

    • apply

      public Double apply(Double x)
      Description copied from interface: Function
      Java Function interface implementation - delegates to evaluate().
      Specified by:
      apply in interface Function<Double,Double>
      Specified by:
      apply in interface Function<Double,Double>
      Parameters:
      x - input value
      Returns:
      f(x)
    • evaluate

      public Double evaluate(Double x)
      Description copied from interface: Function
      Evaluates this function at the given point.
      Specified by:
      evaluate in interface Function<Double,Double>
      Parameters:
      x - the input point
      Returns:
      the value of the function at x
    • iterate

      public Real iterate(Real x)
      Iterates the logistic map (arbitrary precision).
      Parameters:
      x - current value
      Returns:
      next value: r * x * (1 - x)
    • getR

      public Real getR()
      Returns the growth rate parameter.
      Returns:
      r parameter
    • getDomain

      public String getDomain()
      Description copied from interface: Relation
      Returns the domain description.
      Specified by:
      getDomain in interface Relation<Double,Double>
      Returns:
      domain name (e.g., "ℝ", "ℕ", "ℂ")
    • getCodomain

      public String getCodomain()
      Description copied from interface: Relation
      Returns the codomain description.
      Specified by:
      getCodomain in interface Relation<Double,Double>
      Returns:
      codomain name
    • toString

      public String toString()
      Overrides:
      toString in class Object