Bifurcation


Nice Image Basic bifurcation fractal

(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!


Back to The Fractint Home Page. or back to The Fractint Index Page.

This page maintained by

Noel Giffin,
noel@triumf.ca