Genfract 3.1 ------------------ A minor revision mainly issued to correct some small errors, squash some little bugs and make some minor improvements. A redrawn Mandelbrot now regains all its capabilities. Traditional Inverse Julias have more options and can be coloured by weight. Also, if the random walk is drawn by entering sgn(rnd-a1)sqrt(z-c), 0< a1 <1, 'Orbit only' with 180 deg symmetry, it can be coloured provided you have checked 'Strange attractor'. Genfract 3.0 ------------------ The program now contains a parser to enable the user to input their own functions. The functions must be explicit and unconditional (no If ... Else ... structures) but they can be complex of the form new Z = f ( Z , c ) or real of the form new x = f ( x , y , c1 ), new y = g ( x , y , c2 ) and may be indirectly defined by using introduced intermediate variables. The parser is very 'free form' and allows the functions to be typed in in the same way as they may ordinarily be written as well as accepting a more formal syntax. The range of mathematical functions which can be called on is very comprehensive. The program allows for the complete Mandelbrot for the user function to be drawn, but this can be a very slow business. The problem is finding the critical values. The program can usually manage to do this and there is no problem when the critical values are constant, i.e. not dependent on c, meaning that the sequence is generated by an equation of the form Z = f ( Z ) + g ( c) or c * f ( Z ) or f ( z ) / c. I have not yet dealt with Z = g ( c ) * f ( z ) and I don't promise that I will. But when the critical values do depend on c, the equation being genuinely of the form Z = f ( Z , c ), then the critical values have to be re-calculated for every new sequence ... and that takes time, a lot of time! There does not appear to be any way round this but I believe that these complete figures are so important for the proper understanding of what the associated Julias are like that the serious investigator will think the result is worth it. A 'normal' partial Mandelbrot (calculated from just one critical value, or even worse from some other single start point) is just that - partial and obviously an incomplete figure telling just a part of the full story and quite misleading in its role as an index to the Julias. Sometimes it will not be possible to find critical values - there are never such things for real equations. An alternative is to use a fairly large number of test values scattered around a likely looking region of the Julias, trying to cover all the possible basins of attraction. This option is incorporated. It could be sensible to draw a few Julias first to see where usefully to place the area of test points. This is the method which has been used for the Volterra-Lotka map from the earliest days of Genfract. Unfortunately this method is also very slow depending on the number of test points. I thought it would now possible to draw the convergence fractals for the inverses of Julias, provided that you can write the inverse of the function. So for the traditional Julias, Z = Z^2 + c, the inverse is Z = sqr ( Z - c ) or alternatively Z = - sqr ( Z - c ). I was a little surprised to find that either choice of inverse function gives sequences which converge to one of the fixed points of the transformation (or to a periodic cycle if c lies inside the cardioid of the Mandelbrot, in which case one of the two fixed points is an interior attractor of the Julia). So in terms of the binary tree formed by the two choices of root at each point, keeping left (or right) all the time does not lead to the Julia boundary. To get there, you could take the full tree or alternatively take the branches at random. The random walk works O.K. using sgn(rand-areal)*sqrt(z-c), 0