2.25 Bifurcation
(type=bifxxx)
The wonder of fractal geometry is that such complex forms can arise from
such simple generating processes. A parallel surprise has emerged in the
study of dynamical systems: that simple, deterministic equations can
yield chaotic behavior, in which the system never settles down to a
steady state or even a periodic loop. Often such systems behave normally
up to a certain level of some controlling parameter, then go through a
transition in which there are two possible solutions, then four, and
finally a chaotic array of possibilities.
This emerged many years ago in biological models of population growth.
Consider a (highly over-simplified) model in which the rate of growth is
partly a function of the size of the current population:
New Population = Growth Rate * Old Population * (1 - Old Population)
where population is normalized to be between 0 and 1. At growth rates
less than 200 percent, this model is stable: for any starting value,
after several generations the population settles down to a stable level.
But for rates over 200 percent, the equation's curve splits or
"bifurcates" into two discrete solutions, then four, and soon becomes
chaotic.
Type=bifurcation illustrates this model. (Although it's now considered a
poor one for real populations, it helped get people thinking about
chaotic systems.) The horizontal axis represents growth rates, from 190
percent (far left) to 400 percent; the vertical axis normalized
population values, from 0 to 4/3. Notice that within the chaotic region,
there are narrow bands where there is a small, odd number of stable
values. It turns out that the geometry of this branching is fractal;
zoom in where changing pixel colors look suspicious, and see for
yourself.
Three parameters apply to bifurcations: Filter Cycles, Seed Population,
and Function or Beta.
Filter Cycles (default 1000) is the number of iterations to be done
before plotting maxiter population values. This gives the iteration time
to settle into the characteristic patterns that constitute the
bifurcation diagram, and results in a clean-looking plot. However,
using lower values produces interesting results too. Set Filter Cycles
to 1 for an unfiltered map.
Seed Population (default 0.66) is the initial population value from
which all others are calculated. For filtered maps the final image is
independent of Seed Population value in the valid range (0.0 < Seed
Population < 1.0).
Seed Population becomes effective in unfiltered maps - try setting
Filter Cycles to 1 (unfiltered) and Seed Population to 0.001
("PARAMS=1/.001" on the command line). This results in a map overlaid
with nice curves. Each Seed Population value results in a different set
of curves.
Function (default "ident") is the function applied to the old population
before the new population is determined. The "ident" function calculates
the same bifurcation fractal that was generated before these formulae
were generalized.
Beta is used in the bifmay bifurcations and is the power to which the
denominator is raised.
Note that fractint normally uses periodicity checking to speed up
bifurcation computation. However, in some cases a better quality image
will be obtained if you turn off periodicity checking with
"periodicity=no"; for instance, if you use a high number of iterations
and a smooth colormap.
Many formulae can be used to produce bifurcations. Mitchel Feigenbaum
studied lots of bifurcations in the mid-70's, using a HP-65 calculator
(IBM PCs, Fractals, and Fractint, were all Sci-Fi then !). He studied
where bifurcations occurred, for the formula r*p*(1-p), the one
described above. He found that the ratios of lengths of adjacent areas
of bifurcation were four and a bit. These ratios vary, but, as the
growth rate increases, they tend to a limit of 4.669+. This helped him
guess where bifurcation points would be, and saved lots of time.
When he studied bifurcations of r*sin(PI*p) he found a similar pattern,
which is not surprising in itself. However, 4.669+ popped out, again.
Different formulae, same number ? Now, THAT's surprising ! He tried
many other formulae and ALWAYS got 4.669+ - Hot Damn !!! So hot, in
fact, that he phoned home and told his Mom it would make him Famous ! He
also went on to tell other scientists. The rest is History...
(It has been conjectured that if Feigenbaum had a copy of Fractint, and
used it to study bifurcations, he may never have found his Number, as it
only became obvious from long perusal of hand-written lists of values,
without the distraction of wild color-cycling effects !).
We now know that this number is as universal as PI or E. It appears in
situations ranging from fluid-flow turbulence, electronic oscillators,
chemical reactions, and even the Mandelbrot Set - yup, fraid so:
"budding" of the Mandelbrot Set along the negative real axis occurs at
intervals determined by Feigenbaum's Number, 4.669201660910.....
Fractint does not make direct use of the Feigenbaum Number (YET !).
However, it does now reflect the fact that there is a whole sub-species
of Bifurcation-type fractals. Those implemented to date, and the
related formulae, (writing P for pop[n+1] and p for pop[n]) are :
bifurcation P = p + r*fn(p)*(1-fn(p)) Verhulst Bifurcations.
biflambda P = r*fn(p)*(1-fn(p)) Real equivalent of Lambda Sets.
bif+sinpi P = p + r*fn(PI*p) Population scenario based on...
bif=sinpi P = r*fn(PI*p) ...Feigenbaum's second formula.
bifstewart P = r*fn(p)*fn(p) - 1 Stewart Map.
bifmay P = r*p / ((1+p)^b) May Map.
It took a while for bifurcations to appear here, despite them being over
a century old, and intimately related to chaotic systems. However, they
are now truly alive and well in Fractint!