< Prev           Iterated Dynamics Version 1.0          Page 58 Next >
 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!