The "MandelbrotMix#" iterations, critical points and the Fatou Theorem, somewhat Re: [philofractal] FOTD 30-04-04 (Gossamer Glory [5])
"Jim Muth" <jamth@mindspring.com> previously opined:
Unable to find any really good or bad features in the image for today, I rated it at an average 5.
After "Fractal Nonsense", which I think you also rated a 5, I don't put much credance in your ratings Jim. That one, which showed a morphologically sextic midget in the main filament of a fractal with a quartic generator, showed something fundamental about Mandeloid generation and thus ought to be ranked somewhere near the top of the scale regardless of whether your colorist's skills were in evidence that day or not.
The parent fractal was created by combining portions of Z^(-1.95) and Z^(-5.91), then adding (1/C).
Transforming the C part only in this kind of generator doesn't really generate a new fractal; it stretches the domain (the complex plane) so you get a distorted copy of what the fractal would look like if you used C instead. I think 1/C should give you an eversion with reflection across the real axis. I'm not sure whether this class of fractals should be called mixes either. That would make me think that they had features similar to the fractals generated from the monomials in the sum. "Fractal Nonsense" showed that not to be always true.
Also I believe you've used similar generating parameters for a series of FOTDs. There are some details of this that bother me though. A while back you chided Sherlok Merfy for not initializing z on a critical point in one of his fractals. That would seem to imply that you value the concept of purposeful intent in fractal creation, rather than just randomly trying a lot of parameter combinations in hope of hitting something interesting. In that instance I suppose you wanted Sherlok to understand how to apply the Fatou Theorem to generate a maximal set of fractal points. Which is commendable, and yet you've used the following deceptively simple formala and its brethren:
frm:MandelbrotMix2 {; Jim Muth a=real(p1), b=imag(p1), d=real(p2), f=imag(p2), g=1/f, h=1/d, j=1/(f-b), z=(((-a*b*g*h)^j)+(p4)), k=real(p3)+1, l=imag(p3)+100, c=fn1(pixel): z=k*((a*(z^b))+(d*(z^f)))+c, |z| < l }
many times. The initialization of z in the above appears to initialize z on a particular critical point of the generator. But as I understand the Fatou Theorem (please correct me if I'm wrong about this) it shows that every point which converges using a particular polynomial generator (rationals too?) for some initial z will converge for at least one z_init = a critical point of the generating function. Emphatically not that it will converge for any one of the critical points. So if you're trying to generate the full fractal as above, there is a problem. You didn't test the other critical points. In general, 0 will be one of them. The others will be the complex roots of your first derivative equation (in your variable names) z^(f-b) = -a*b*g*h . They do matter, as shown below. Actually testing them all could be time consuming when f-b gets far away from being an integer: today's FOTD has an exponent difference of 3.96 = 99/25, so for n/(99/25) = integer the least value of n is 99 and it looks to me like there are 100 critical points that need to be tested to get a maximal set of inside points. Otherwise you get a lot of perturbed set "eroded" boundaries. The fractals below illustrate the need to test all critical points; I've only used integer valued exponents so far but I see no reason it doesn't apply to fractional power generators too.
Also, you greatly overspecify the number of parameters in the generating formula. Notice that the expression
z_1 = k*(a*z_0^b+d*z_0^f)+C can take a change of variable z = k1*w where k1 = (k*a)^(1/(1-b)) to normalize it to
w_1 = w_0^b + k2*w_0^f + C/k1, where k2 is the constant k*d*(k*a)^((f-1)/(1-b))
Anyway, these fractals use a trick to render the different inside areas different colors according to whether the point converges for the "critical point of interest" or one of the other critical points but not the one of interest. Right before bailing out, the value of z is reset to a value that will be interpreted by the "inside=zmag" option as the desired color. I've found that this works well for the inside for things like viewing the intersection of two fractals to see if you can superimpose them. Does anyone know if there is a comparable way to do this for outside points? There isn't an "outside=zmag" option.
In these fractals, the red regions converge for the "critical point of interest" while the yellow and purple regions converge for other critical points but not the one of interest. To make the formula work the exponents have to be entered as a rational pair of integers, and the number of critical points (as well as which one (an integer) is the c.p.o.i.) have to be entered manually, though it ought to be possible to improve this situation by having the formula calculate the number of cps.
==========PARS FOLLOW================ AnOrder2sub2Mset { ; z->z^3+z^2+C, which has 2 critical points. Red areas are ; points which converge for one c.p. Yellow areas show ; where the other c.p. converges but the former one doesnt ; Fractint Version 2003 Patchlevel 1 reset=2003 type=formula formulafile=fatouthm.frm formulaname=RatnlExpMandelO2 passes=1 center-mag=-0.406646/1.0165e-005/1.041674/1/-90/3.88578058618804789e-016 params=3/1/2/1/1/0/5/2/0/0 float=y inside=zmag periodicity=0; colors=@2col_ins.map colors=000zG0jz00ee<103>022022011<2>000000010<132>SwSSwSTxT<3>UzU000000 }
AnOrder2sub3_Mset { ; z->z^3+(0+1i)*z^5+C. Iterations starting from all 3 ; critical points are necessary to generate the full set. ; Antisymmetry in the minibrots is interesting. ; Fractint Version 2003 Patchlevel 1 reset=2003 type=formula formulafile=fatouthm.frm formulaname=RatnlExpMandelO2 passes=1 center-mag=-1.905e-006/1.0165e-005/0.6666712 params=3/1/5/1/0/1/10/3/0/0 float=y maxiter=1000 inside=zmag periodicity=0; colors=@3col_ins.map
colors=000zG0jz0c0w0ee<102>022022011<2>000000010<132>SwSSwSTxT<3>UzU0000\
00 }
===========PARS END==================== ===========FRM FOLLOWS================ RatnlExpMandelO2{ ; normalized order 2 M-set with rational real exponents ; generator z -> z^A + k*z^B + C. p1=(A_num,A_denom) p_2=(B_num,B_denom) ; p3=k(complex) p4=(bailout-4,# crit pts) p5=(crit pt of interest(int),0) use ; inside=zmag,periodity=off.Ins cols: 1=cpoi converged >1=sequential number of ; cp after cpoi which converged IF(isinit==0) ; 0 default proxies: bailout = real(p4) + 4 p1 = trunc(p1), p2 = trunc(p2) IF(real(p1)==0), An = 3, ELSE, An = real(p1), ENDIF IF(imag(p1)==0), Ad = 1, ELSE, Ad = imag(p1), ENDIF IF(real(p2)==0), Bn = 2, ELSE, Bn = real(p2), ENDIF IF(imag(p2)==0), Bd = 1, ELSE, Bd = imag(p2), ENDIF ; end default proxies k = p3, A = An / Ad, B = Bn / Bd, cps = imag(p4), cpoi = real(p5) maxit = maxit diff = A - B angle = 2 * pi / diff ; angle to rotate critical points rfactor = cos(angle) + flip(sin(angle)) ; rotate by complex mult cpmod = ( -k*B / A ) ^ ( 1/diff ) ; real part only crit pt isnotdiff = 0, execseq = 0 ; flags IF(cpoi<0 || cpoi>=cps) isnotdiff = 1 ; flag to not do difference map execseq = 1 ; flag cp sequence 0 -> cpmod -> cpmod multiples cpfirst = 0 ELSEIF(cpoi == 0) execseq = 1 cpfirst = 0 ELSE ; ordinary cp sequence cpoi -> 0 -> cpoi multiples IF(cpoi == 1) cpfirst = cpmod ELSE angle1 = angle * (cpoi - 1) cpfirst = cpmod * ( cos(angle1) + flip(sin(angle1)) ) ENDIF ENDIF isinit = 1 ENDIF zp = cpcurr = cpfirst ; z proxy--inside z is used for rendering cpctr = 0, C = pixel, diverged = 0, iter = 1 : iter = iter + 1 IF(diverged) ; then go to next critical point cpctr = cpctr + 1 ; increment counter IF( (execseq==1 && cpctr>1) || (execseq==0 && cpctr>2) ) zp = cpcurr = cpcurr * rfactor ELSEIF(execseq==1) zp = cpcurr = cpmod ELSEIF(cpctr==1) zp = cpcurr = 0 ELSE zp = cpcurr = cpfirst * rfactor ENDIF ENDIF IF(cpctr<cps) zp = zp^A + k*zp^B + C diverged = ( |zp| > bailout ) ENDIF z = zp ; for outside rendering IF(diverged==0 && iter==maxit) ; inside point: set z for zmag rendering ins_col = cpctr + 1 z = sqrt( (ins_col*2-1) / maxit ) ENDIF cpctr<cps || diverged==0 }
============FRM ENDS=====================
Regards,
Hiram
participants (1)
-
Hiram Berry