Logistic Chaos
1
The Logistic
driver calculates samples using the logistic equation.
Where the control parameter λ ranges from 3 (exclusive) to 4 (exclusive). The process makes no use of the random generator and is thus unaffected by changes to the shared random seed.
The other driver implementing a chaotic process is
Baker
.
Figure 1 illustrates five examples of Logistic
output with a sequence of 200 samples generated. All five examples were generated using a random seed of 1, an initial value of
0.5, and a rolloff
parameter of 1.5. The only difference is the
lambda
parameter, which varies as indicated.
Logistic.next()
with
representative λ settings. The left
graph in each row displays samples in time-series while the right graph in the same row presents a histogram analyzed from the same samples.
The vertical x axes for the two graphs in each row represent the driver domain from zero to unity; the horizontal k axis of the time-series graph (left) plots ordinal sequence numbers; the horizontal f(x) axis of the histogram (right) plots the relative concentration of samples at each point in the driver domain.
The most characteristic of the sequences in Figure 1 is the first, which has samples clustering in various regions of the driver domain.
As the λ parameter dials down to zero, the behavior comes to resemble uniform randomness (i.e., that produced by
Lehmer
).
Figures 3 (a) through 3 (e) plot the range of sample-to-sample differences along the vertical Δx axis against the relative concentrations of these values along the horizontal f(Δx) axis.
Logistic.next()
with
lambda
λ=3.9299 after 10,000 samples per pattern.
Figure 4 presents a trend graph of histogram tallies for 4-nibble patterns generated using
Logistic.next()
. My analysis program decided to exclude low-frequency
patterns by limiting the graph to all but the 200 largest tallies. The most frequent patterns were:
13 | 8 | 15 | 1 |
13 | 7 | 15 | 1 |
15 | 1 | 4 | 12 |
7 | 15 | 1 | 4 |
The tallies for these four patterns descended in equal increments from under 3% to under 2% presence.
The conclusion from Figure 4 is that the Logistic
driver
fails the 4-nibble independence test.
Logistic
implementation class.
The type hierarchy for Logistic
is:
DriverBase
extends WriteableEntity
implements Driver
Logistic
extends DriverBase
Listing 1 provides the source code for the Logistic
class. The sequential process described at the top of this page is implemented by
generate()
, which is not public facing. Instead,
generate()
is
called by DriverBase.next()
.
DriverBase
.next() also
takes care to store the new sample in the field
DriverBase
.value, where
generate()
can employ
DriverBase.getValue()
to pick this
(now previous) sample up for the next sample iteration.
DriverBase
also offers
setValue()
and randomizeValue()
methods to establish the initial sequence value.
© Charles Ames | Page created: 2022-08-29 | Last updated: 2022-08-30 |