Switching and Switch Formula Classes

 

 

Switching

Those who are already familiar with the mathematics and mechanics of switching from Mandelbrots to Julias may like to skip to the section on Switch Formula Classes.

If you're not into the mathematics, then the best way to explain switching is to simply say that most formulas can be viewed in one of two ways - as a Mandelbrot or as a Julia. (Note that the original Mandelbrot iteration replaces z by z2 + c; here we're using "Mandelbrot" and "Julia" in a more general sense as modes of iteration.)

What's interesting and artistically useful about this? For every location on a Mandelbrot there is a corresponding Julia, and the geometry of the Julia corresponding to a given point on a Mandelbrot matches the local geometry around the point on the Mandelbrot. Hence if you find an area of a Mandelbrot that's visually interesting, then you can get more of the same by switching to a Julia from that area of the Mandelbrot.

Another way to put this is that a Mandelbrot is like a "map" of the Julia for the same formula.

The mechanics of switching in Ultra Fractal are simple: just press F7 or click on the "Switch" icon in the top toolbar and then move your mouse pointer over a switchable Mandelbrot. Previews of the corresponding Julias will appear; to actually switch to one of the Julias click the left mouse button and a new fractal window will appear.

Let's backtrack a bit to review what UF formulas do and how do they do it. Formula iterations depend on two complex numbers, z and c. UF does the following for each pixel in the image.

  1. the maximum iteration limit is reached; or

  2. if Periodicity Checking (in the Formula tab) is On, periodicity is established; or

  3. z is such that the Bailout criterion is reached

The mathematical difference between Mandelbrots and Julias is straightforward. For a Mandelbrot of the form z[n] = f(z[n-1],c), where f(z,c) is some function such as z2 + c, the initial value of z is the same fixed value for every pixel (often it's zero), and the initial value of c is the pixel value. The corresponding Julia uses the same f(z,c) but different initial values; the initial value of z is the pixel value and the initial value of c is the same for all pixels. The initial c value for a Julia is often called the seed.

In UF, when you use F7 or the Switch icon to switch from a Mandelbrot to a Julia, the place where you click in the Mandelbrot image is used for the Julia seed, the initial c. Similarly, when you switch from a Julia to a Mandelbrot, the place where you click is used for the initial value of z.

Switch Formula Classes

One of the limitations of UF5's new class formulas was that they did not allow the use of Ultrafractal's built-in switching facility. To get around this limitation, Dave Makin wrote mmf5.ufm:Generic Switch Formula, which makes it possible for formula authors to write class formulas that allow switching.

To use Switch Formula objects simply choose mmf5.ufm:Generic Switch Formula as the main fractal formula (instead of using Standard.ufm:Generic Formula) and then you can plug in any "Switch" class formula in the usual way. At the moment there are Switch formulas in mmf.ulb and jlb.ulb.

The following upr is a simple example. You'll see the usual Mandelbrot image, but it's generated in two ways. the bottom layer is Mandelbrot done the standard way. The upper layer uses Generic Switch Formula  and Switch Transform Formula from mmf.ulb to get the same result. (There's no reason why you would want to do that, except as a starting point.) Try switching using each of the layers and see that you get the same results (if the Julia seed in the Standard method matches the Julia Constant in the New method, of course).

Formula_Tutorial_1 {
::cYpm0jn2tX1SvtNMM47BI/HM0pNMUHbjmmsOoLdbdADoDFI9egqFdiw0DDJ58Y/6Hlsdbe4+
  4yuNgigKyvPSxPSRXZZlem86xjSS8CvEokbNWVjkt8hGvxKYyl5kktCufN9qLzSWDiVr90Ln
  nlIZ7BrjWE4WaBuw7okfyUgL5GZD8l8iJ5TnUklNnMeUEcMNlsavwopkfBbJJmaWpwvnmnll
  oA/aDniZ3LqZO34RKWdtQvqlHo9gleRW60JIW2KNNf8oq2bbEhitTEgEiVNYLXDl/maqqSqE
  SQjXMKRpqmm2UpIB8YAt7pkfAawKKXsV4LX3V9kk6l1LVGOQ3j1T/hcq2EP48MrnmNJLEnoB
  A40LyTLCXugBGfDTXiG7YoY6Gm0VyQNuzUoiswRRJ6OPtNENOwBMsOeKrHdq2CbEw2wFsnvl
  pXB0iI/Ol5rSUJjFeaj8xrv7ubX2WpPggdBQ9lcbQOkW6mlraFnWN9UndHDOHkMmUXMXHA8U
  U9KDWVDEjoX++umwJuOpJcq3D6Iv+tz3rEve9gCsZLOelNZgigx51idwLWG3wEyH2XD0vJ2A
  WUV9njxaMea+LUOhAYaQ/FzP35CFTKDIo5f/ipDy3HSOxv7D/5jfqkcufhW4NSO9ejTEefOY
  Q+TAxwCeZ43nmpOeg7+gudbjuMEYH5NZf8c37B+Ttw3LB8tl9MSVvKJMkaqgjtu3OB9zKFBt
  SodIt2dsREoDtRDJOjUwpXWMbe+nzw/GPC7wnjVK04D/D2itwjPKYWeaTpk0vGbhCHfWHXc9
  cqD3zHfeyJFNtyy4CkT7SVjSh/PugYhQVLhE07+4WokecpkEXM0xHhCNH2RzQiSD+UIEjWT4
  e+Oj5XNb2siccMsb5eMTdxA3d1Hi+V/FTnO43H6ry/NfkoYa2gKK+theF9O0GIf0a8BV90V+
  9i8xK8/72vnu9fh7q/9f
}


Formula Tutorial 1

 

Let's look more closely at the Formula tab on the New layer, at The Formula Method. The Fractal Type is tx(z)+c. This means that the iteration transforms z and adds c to get the next z. (There are other possibilities in the drop-down list. Try them.) The "Initial Zold" isn't of interest now. Below that is The Formula Transform, a plug-in; the current plug-in is Power. Power transforms z in two steps; first apply the function from the drop-down list to z, then raise the result to the power shown.

Since the function is the identity, ident, applying the function just gives z. Since the power is 2, the transform result is z2. Since the Fractal Type is tx(z)+c, the iteration formula is z2+c, the standard Mandelbrot formula.

Try changing the function and the power to see what happens. Try switching to Julia mode.

Here's an example where one layer is Mandelbrot mode and one is Julia mode. Note that the Mandelbrot layer has four-fold symmetry and the Julia has three-fold symmetry. In the Mandelbrot layer, try switching to Julia mode and see if you can duplicate the Julia layer. In the Julia layer, try switching to Mandelbrot mode; notice that the Mandelbrot Start value is no longer zero, and that the symmetry is lost for most start values.

Formula_Tutorial_2 {
::8Qp0Din2tbVyutNMQ07Gw/DE8ULKitkScdaK4lukgGADEAn7CMUU2MlLCkUJ25rvDpkSlXTQ
P0TGww2am3MDnHJnnKtUmnKva4AEyL8SOBftxqql087r9GrgKzzwonFF+lkPfRCaJXsYpncx
lJIJdN36IZhYZWehw7I4bpKuD9NZN/rpZjTnOOLJ5S8wBRwxywoVehRTwzo6Cu8BrxjUmCOG
ZqoMhfNJNJBp4+lmCCsS8iKqzNcgiWVJ0LayBX75WyZJjmMGwSXoJpDHU2syjIU0ViAkQuq4
W2SO73ETZJqUI5aYRSwKV5kR1lKcAPkQ7aC+GumbFs5PL8sltMBGVlXlHWik1Qv19QKRbiP4
8UrnkMOJknoBOvgcW6oswiLYgW8EVzAjtRoo6aq0xoAf3aK0RW+GZJ6OdUTKqdcHnC9xrVdj
nqs8nE8nDLwu4tU9COJLGfLz8dJwkxGfUt8hrmN768mO9eAsLAqrlbSS/wG9U+iGyphT32Z7
jBn7NYoouYt6BcbUdMD0V7JHRvFrb3E2y1WbCb7t3OyxXd+Om449DQwmnhjXJj3TTQLKqEr4
HsN+GVIvfdFn8DxTcLwq+dxYNGPJ9AtTIBmawf2l76cuiKlBEk0fe2k9GvPUcsf1He5jfih3
1vQL8GZB5OjTEuru3k8SAx+JcW47XPTt5Bu7C8211aWIxO8bG9mn7ePwfdL89GAc3yuTQlHN
IIlaCzof8tzf3RlzDUlQ7EF8mxtREgDtRzROjUUQuIb6lpfJB+McAsBvLWpQD377NEzyfAGi
xk7MEjKnrgzQLhRm53YpFCwZYrulOhxPdu7RT5s9fV/V7MjEEFOQMtV5oY2q2hY2qI+VUFcT
ezIVeRUbCuWVg+FMYnGO+g7hIMtXXrC6A9D0zoP4Ip9sUePflvGm1iLUPOJeu8HzuNH2wqmv
kWxvWS94NTSXIHkY6BA2qqch8AQSPYagS/XklQFbIrOKsRkzoUw/hB2zFqKJHBeXHVFQd4Gh
RNUZcooA0TXRSQxNgGGsxEoB3aM9zTnONLFGL0K2GrUbOAtkuU0JFnNZye1uvtWKo/ry2J/X
1s70cjS290HbUMgXh48znCyCjmA/0T+eX79Ux7yxRFyfDV8/+2CHQIfTV8dH0cSI/kQ+Jh8T
C5nEyPJk/+Ey/DwbVX4c
}

Formula Tutorial 2

 

Other Switch formulas can be plugged into the slot in Generic Switch Formula. Another from Dave Makin is Switch Formula Transformations, in mmf.ulb. (Don't confuse Switch Formula Transformations [SFT] with Switch Transform Formula [STF].)

SFT's iteration formula is in three parts, each a plug-in. SFT transforms z first by a transform, the Pre-Transform; then by a Switch
formula; and then by another transform, the Post-Transform. Either (or both) of Pre-Transform and Post-Transform can be Null Transforms, and do nothing.

The next upr is a Mandelbrot mode fractal with


Try zooming into this Mandelbrot mode fractal. You'll find various modification of mini-Mandelbrots throughout. Try changing the power in the Switch Standard formula and the parameters in the Newton transform.

Formula_Tutorial_3 {
::dUHj2jn2deVTvtNOQ07BI/HE496IpNuOtL4lsdTxG0UEAnieUgWakN7yPEooit/33hkSOyyK
OKFIIwiz7NzwZ4Q9UphlbZiPf5FRRWuVAUydajsRwyeqxqNcmI7vIRb5F2N0Pedc0Ggvejle
9NxRC2ewUTTcczNQB3WTJ3zkQd0tiG4vTSvKZxVpxx3Qu8CPYfYyZVWuWRJfH2Si0VscudPN
JOOSC2N6CKGdLviVXf5FSWVFXtOwDUWwQjvCByWrcxtMkqezS2Ouze684oKwkvBy/fqusMqk
LAFmVUiUWOfWTpk4wjezsnS+KoADPf5WuNfT7WnEVlVlJ1FAdPuZ6eIhq0+HqtMj1lIO/4XA
gC6HSmlOHTO3CsinZqccxWGSmqhJqzZYBudJ32xAH5Fv5kZBX0UD1AD3HHi6RPVZgn5wWXC2
x3wUrBa6sWH2Wc+HBWJ979ZNiVf+hHuL7oN7TItaH2fawiNYInye2zZrDlJfb6EjtP6MOK5c
t6ZwguwWwb/xbRBT3afW+u56L2F7b7cDMNozN0av245zq21td1utha35SJs/H6dDMVp3GOVP
KxGnbXx4CdDm3naX4Yfw+ougVUUx3BjH9bRqPtvCofpr6OqPMatlmcV84OwF7k0bGl5SJTIc
goJ/7HmPCkc3/f0AHOHSJ5apUr8HX/ejQcwCZK0P+w6EZcoR+O4gDom/EeKcLNJetDojN7u0
inxZmCybwdaFjXAf+RrBgn4A5AWhBo/Eu9GjmE0wlAvN0zdpwQon/GiBo7N592gXd2BpT88h
3vMhk2XxpP6uqYabxEa8E3ihbvu+1h+ou22b0+XiV+jy3/tbzw3/b1qfgjRTYCvvbm4I+AKT
bWdAppPkPg4IbupT3dm8c92hoffdhZG3V5TEKIY7aPN4EWwV18CIIX0DCjrSrgoatgXQvOdx
NJfKG/7yLwDzniVwVoMmeayMwKUTWu4ENZMxSJ+WnNo8vsvaYFc0oTYWbvHVT1ZuXdNLfc9K
HWPXLQRtvCn2ocWMDitjzggY3xkv8u42FlWuXbNedQR0/h6UZONwkeIciXVNygc6eeLntC1Y
3blyngd2GU6IpQ+r5+ppv8w9ZYPra5GWFcHqLhcsT6o8qFmeAwWVVtzPIkkX1NYofBZJGxQx
qrEGEsjvGH/NK+cJXWJgI06evI3oOczIRhSpXuGXVA4htIfDIUBDLhfDR7iJfcxiFpJoQi2P
cwHpWfgCc6cR3nVkOHh+bUomLWP=
}

Formula Tutorial 3



The above fractal is from a composite formula. In UF4, a formula writer would have had to write this. In UF5, a user of UF who is not a formula writer can generate such a formula. Knowing UF programming, or even knowing the mathematics of fractals, is not necessary. (Admittedly, knowing UF programming and mathematics does help.)

 From the previous upr, you can switch and find Julia fractals. Here's one. From here, you can use Explore on the Julia Constant (the seed) or change any of the formula parameters.

Formula_Tutorial_4 {
::v7MZtin2deVXvtpSQ03jU+Pg49gBi/q9q9lc7NV3omqI5U1HRrhB7td/AtsEb/vvzuAOEMxm
UpoIzOnzMzOzOLHy10UDl/5rvyzzwMcg4fvSLq40knrMKNjyTm67tjlZ2SmPN0bLw2s1QmuM
0jTPA6SSklbqGyYmSi/DUBU6dHvC+no4JRLmEHGu0/6rcgdhJlWYYKJx/Oa6v3oVVyMfPVBN
lZOQiCD9EgZrKjgJhhVQLLv+KBtogJ3UTHkGQTCngApbkkog4ZeU5GM1vZKmL51pvDrgunZB
HPL0rA0pbh0fTU55e5MOIxMl4LE5zCqyF+W8or1HI+fFkgmluaHzkutpc47VkUkIUZARqO+7
IyBo0y0uQphqNkwglzmEGEHOHzL3yAkRuJKIcR0tznP5mwgbDjmO7WnRa2LUZKCQqadjgKro
8yUK/Yos7ZN42zOP6she09UVJUCUcz1xHHXw9UhGehB7s5q7ZNWuAScQYN8mK2/yxatrgEUx
X/5Hf8+k3UBeGpVax+TN2OAt/psDeJZTdtz1IPxYzjWjDSOVJfB0oLMZsmfcJKY6W6yyPMXX
lO7QTVpnpme5khJ22SjnN5CZVz6m2a3u6a35SJs5X346ZqQtr+c/gErsudNlxVVYefqdul9R
7D6CaWWBbPMc0vDp+8hCg8l2q7g+QrUGS0kwhdgN2RxLHk5KBlztgIR/3NzGASq9/PphjnDJ
+pKhQJdHX/eFnf0i/Yo/2DrjkxxG5HgDOgq/b4Jxt0o41MgO0s7KDeGnqz8vA3xVMeF85Ht6
BekDk9YVPA93wtzY0ogWfJwlheuLF6D983Q0DdnJvLDe9ZHkOxz9e/yZTaXFn8k9qixtFjwX
3NutY9tXTffoPpKNdGt/Fft7o8Df7ukvD7MK5PwxoRMh31NjcEvHlxNr2j04Hy7RcgN34pbP
Teuebf0fsuQg2eV+IhCc6+mTDWhFMZJLDq1V6AhxVqkgXpizyITjXsM6Th4fXfFeY+UscmE1
w0RomGWjC1S5nIUjyXJw36sFFIm8VNNjhGtq1a69oUqWzdqrJpDrX546pKOq+9d40ElzipXs
tc6FEzeq413F3sowwciwxrDy8+fU8K1KW2vDCriWZloW3dHvlSXjix7sS+zweTFqb0PT8rZu
ppv84DJYPrY1WaBcPqLx/tOply7WY6AAbVFlW/gQieX3gh+Vk5YErLWtlwaJ94rxxfjiPXxE
FcwDtewJy1rFXgvXdp0JXjJzA8wmnrBUXBrXC/YjmFjmvYxi4IUIRznW4iUjPQBOtuo9DPin
hQ/Du9ol6B==
}

Formula Tutorial 4