Logo by AGUS - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Check out the originating "3d Mandelbulb" thread here
 
*
Welcome, Guest. Please login or register. March 29, 2024, 01:28:52 AM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: 1 [2]   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: Metabrot  (Read 1296 times)
0 Members and 1 Guest are viewing this topic.
kram1032
Fractal Senior
******
Posts: 1863


« Reply #15 on: January 27, 2014, 05:33:28 PM »

I still didn't get a clear answer to how to even render at a critical point. I am only assuming right now that it means to initialize your 0th iteration not with x=y=0 but rather with (x+I y) = your critical point. Is this correct?

I now did a multiple hour render of the 20 iterations Buddhabrot set initialized only at (0,0). It's a bit weird to me that it does not at all resemble the shape of any of the sub-regions of the Metamandelbrot, but rather, it looks like a normal (low iteration) Mandelbrotset with details inside and an emphasis on the border region:

Logged
kram1032
Fractal Senior
******
Posts: 1863


« Reply #16 on: October 05, 2014, 12:17:19 AM »

I experimented with expanding the polynomial \left(\left(\left(...\right)^2+z\right)^2+z\right)^2+z and noticed a trend:
At iteration n, the first n coefficient of the expanded polynomial remain stable for all higher iterations.
So I turned to Mathematica and it kindly told me a Recurrence equation for a matching series.

a\left(n+1\right)=\frac{2 \left(2 n-1\right) a\left(n\right)}{n+1}

And then I asked it again and lo and behold, it even told me a closed form for this expression:

a\left(n\right)=\frac{4^{n-1}\left(\frac{1}{2}\right)_{n-1}}{\Gamma\left(n+1\right)}

where the \left(\frac{1}{2}\right)_{n-1}, it told me, is the Pochhammer symbol, the rising factorial.

So I put in one last inquiry:

\sum _{n=1}^{\infty }\frac{\left(4^{n-1}\left(\frac{1}{2}\right)_{n-1}\right)z^n}{\Gamma (n+1)}

and it swiftly responded

\frac{1}{2} \left(1-\sqrt{1-4 z}\right)

The series has a limit!

So if I got that right, for \lim_{n\to \infty} j_n \left( z \right) \to \frac{1}{2} \left(1-\sqrt{1-4 z}\right)

and thus,

z \to \frac{1}{2} \left(1-\sqrt{1-4 z}\right) + c

I'm not yet sure if that formula actually returns anything interesting. I'm pretty sure, however, that it doesn't given anything interesting. It's a little weird to me, for instance, that it does not contain any squaring term. But if I made no mistake, this is the formula of the "real" metabrot.

Split into real and imaginary parts, it instead becomes:

<br />\begin{array}{cc}<br />x \to \frac{1}{2}-\frac{1}{2} \sqrt[4]{\left(1-4x\right)^2+16 y^2} \: \cos \left(\frac{1}{2}\: \arg \left(-4 x-4 i y+1 \right)\right)+a \\<br />y \to -\frac{1}{2} \sqrt[4]{\left(1-4 x \right)^2+16y^2} \: \sin \left(\frac{1}{2} \: \arg \left(-4x-4 i y+1 \right)\right)+b<br />\end{array}<br />

The quadric root and arg function both are kinda annoying and will be slow, unfortunately.

Oh, one more thing. The differential of that function is \frac{1}{\sqrt{1-4 z}} which is nowhere 0. This would mean that there are no critical points, right? That could be problematic...

I wonder what went wrong here or why the dynamics of the system would actually disappear in the limit, giving a function the iterate of which behaves in the most boring possible manner.

For what it's worth, the function also has an inverse which should behave more interestingly, but obviously that has little to nothing to do with an actual Metabrot
z \to z-z^2+c
« Last Edit: October 05, 2014, 12:51:33 AM by kram1032 » Logged
kram1032
Fractal Senior
******
Posts: 1863


« Reply #17 on: October 05, 2014, 02:51:27 PM »

In trying to get fractals out of this, I now did this:

Code:
z[0, _, _] := 0
z[n_, c_, -1] := {1/2 (1 - Sqrt[1 - 4 z[n - 1, c, -1]]) + c, 1/2 (1 + Sqrt[1 - 4 z[n - 1, c, -1]]) + c}
z[n_, c_, 1] := {1/2 (1 - Sqrt[1 - 4 z[n - 1, c, 1]]) + c, 1/2 (1 + Sqrt[1 - 4 z[n - 1, c, 1]]) + c}
z[n_, c_] := {z[n, c, -1], z[n, c, 1]}
ListPlot[Flatten[Transpose[ParallelTable[Transpose[{Re[#], Im[#]} & @ N[Flatten[z[12, r E^(I \[Pi] x) - 1/4]]]], {r, 0, 2, 1/4}, {x, -1, 1, 1/4}]], 1], AspectRatio -> Automatic, Axes -> None, PlotStyle ->PointSize[0.001], Background -> Black]
Which resulted in that:

But if I'm not mistaken, this simply is the inverse Mandelbrot iteration method, right?
It's hard to tell and this method sadly is too slow to do this for much more points, but it doesn't look like it approaches the Metabrot. It looks more like the default Mandelbrot set. (shifted by \frac{1}{4} on the real axis)

I added the second inverse of y-y^2=z and just generated all possible iterated inverses up to a given iteration level using both inverses. That's all the code above does, besides plotting the whole thing.
« Last Edit: October 05, 2014, 02:55:43 PM by kram1032 » Logged
laser blaster
Iterator
*
Posts: 178


« Reply #18 on: October 06, 2014, 09:53:01 PM »

Wow, nice going finding the limit! It's very interesting that the limit turns out to be a fractional power formula. I wouldn't call it boring- fractional power formulas are even more complex than integer power ones due to the way the way the function branches at each iteration, and your plot seems to reflect that.

The limit being a multi-branch formula makes a lot of sense, intuitively. The number of critical points of j increases exponentially with j, so as you increase j, the fractal becomes composed of more and more overlapping parts- one for each critical point. it. So it makes sense that when j=infinity, the fractal would be an composed of an infinite number of sets, one for each possible branch in the iteration tree.

So I would say this is a pretty interesting result! Your picture looks nice, too. It's too bad it's not practical to get detailed images of it due to the large number of branches. And since it has no critical point, does that mean it's impossible to draw it by forward iteration? Even if the derivative is nowhere zero, there still might be some critical value that you can begin at, then forward iterate, taking each possible branch, to draw out the full fractal shape. For example, the derivative of e^x is nowhere zero, but 0 is still a "critical value" of e^x, as far as determining what points escape (I think it has something to do with being an "asymptotic value"; I read an academic paper on it once but didn't really understand it).

Also, I'm sure you've seen it, but this reminds me a lot of that article where someone rendered all the branches of z^2.5 + c:
http://www.righto.com/2011/12/new-multi-branch-algorithm-to-render.html

The one thing that's puzzling me is that when I was playing around with the metabrot formulas for different j,  the even and odd values of j seemed to converge towards very different shapes as I increased j. The critical points also were distributed differently for even and odd j. So it surprises me that the function has one single limit at all. I would have expected two different limits for even and odd j, based on my quick experiments.
Logged
kram1032
Fractal Senior
******
Posts: 1863


« Reply #19 on: October 07, 2014, 01:04:45 AM »

all I did was keep expanding the polynomial and looking out for patterns.

Iterations:

0: 0
1: z
2: z+z^2
3: z+z^2+2z^3+z^4
4: z + z^2 + 2 z^3 + 5 z^4 + 6 z^5 + 6 z^6 + 4 z^7 + z^8
5:z + z^2 + 2 z^3 + 5 z^4 + 14 z^5 + 26 z^6 + 44 z^7 + 69 z^8 + 94 z^9 + 114 z^{10} + 116 z^{11} + 94 z^{12} + 60 z^{13} + 28 z^{14} + 8 z^{15} + z^{16}

etc.
Look at the first n positions for the nth step:

0: 0
1: z
2: z+z^2
3: z+z^2+2z^3
4: z + z^2 + 2 z^3+ 5 z^4
5: z + z^2 + 2 z^3 + 5 z^4 + 14 z^5

I tried this up to iteration 14 or so and it kept holding true.
The rest I explained in my previous post.

Note, however, that this series explicitly gives me just that one thing z \to \frac{1}{2} \left(1-\sqrt{1-4 z}\right), not the other one \frac{1}{2} \left(1+\sqrt{1-4 z}\right).
The only connection between those two is that they are both inverses of the inverse function to the first one: z=y-y^2.
I can't say whether that second one actually has anything to do with it.
What I /can/ say is that it does give rise to nice fractal orbits.
Note, however, that none of those orbits resemble an entire Mandelbrot set like you'd hope for the limit Metabrot. (some are pretty close, however, like the bulb-tracing orbits towards the antenna or the green inverse Mandelbrot inside the main circle)

Sadly, beyond being sheer unfeasible to do with high precision, this rendering method has another problem. I tried sampling more points. The whole thing just becomes too cluttered to see anything and it looks like I'm filling the entire plane.
Part of that is because I do not stay within the actual closed bounds of the fractal. I'm tracing points of dust-regions too. Not /quite/ sure how to fix that in this case. Something like "if any point in this sub-sequence has a distance from the point (1/4,0) greater than 2, do not render anything in this sequence or iterate it deeper" would, I take it, be the equivalent of the normal Mandelbrot set bailout. I'm unsure whether that would work for this particular method.
Also I'm not sure how I'd implement that into Mathematica.

Perhaps rendering this buddhabrot style would be preferable, giving all the points the same color, but have them accumulate to give a density map instead of a map of each individual orbit. That way one could probably remove some of the clutter.

Oh and e^0 is a fixed point in that that is 1 and 1 \times 1=1.
e^{x: Re \left(x\right) \lt 0} will keep shrinking if you multiply such values repeatedly, while things like e^{x: Re \left(x \right) \gt 0} will grow indefinitely. As such, 1 is an unstable multiplicative fixed point. Unstable because any small deviation from 1 (along the real axis) will quickly cause accumulated errors.

I don't think a similar situations arises in a square-root, and that kind of fixed point probably works differently from other fixed points.
e^x also is a fixed point of derivation with \frac{d}{dx} e^x = e^x, but that's an entirely different situation.

And yeah I have seen those multibranch renders. Still really nice to look at smiley
« Last Edit: October 07, 2014, 01:11:12 AM by kram1032 » Logged
kram1032
Fractal Senior
******
Posts: 1863


« Reply #20 on: October 10, 2014, 12:17:40 AM »

Small update: I believe, this method is faster. But it also gives me quite a bit more flexibility in how to render my points. For instance, I can randomly sample a given number of starting points instead of doing a regular grid pattern. And I could (but I don't in this example) do coloring dependent on things like the coordinates of said starting point.

Code:
Code:
z[0, _, _] := 0
z[n_, c_, -1] := {1/2 (1 - Sqrt[1 - 4 z[n - 1, c, -1]]) + c,
                  1/2 (1 + Sqrt[1 - 4 z[n - 1, c, -1]]) + c}
z[n_, c_,  1] := {1/2 (1 - Sqrt[1 - 4 z[n - 1, c,  1]]) + c,
                  1/2 (1 + Sqrt[1 - 4 z[n - 1, c,  1]]) + c}
z[n_, c_] := {z[n, c, -1], z[n, c, 1]}
sample[n_] :=
 Complex @@@ RandomVariate[UniformDistribution[{{-2, 2 }, {-2, 2}}], n]
MetaBrot[n_, iter_] :=
 Show[ParallelTable[
   ListPlot[Transpose[{Re[#], Im[#]} & @N[Flatten[z[iter, i - 1/4]]]],
     AspectRatio -> Automatic, Background -> Black, Axes -> None,
    PlotStyle ->
     Directive[AbsolutePointSize[0.0001],
      RGBColor[RandomVariate[UniformDistribution[{0, 1}]],
       RandomVariate[UniformDistribution[{0, 1}]],
       RandomVariate[UniformDistribution[{0, 1}]],
       RandomVariate[UniformDistribution[{0, 1}]]]]], {i, sample[n]}]]
MetaBrot[256, 10]

Sample result:
Logged
lkmitch
Fractal Lover
**
Posts: 238



« Reply #21 on: October 10, 2014, 06:58:42 PM »

Just to be pedantic, the function does have a critical point, at z = 0.25.  Critical point are where the first derivative = 0 or fails to exist.
Logged
kram1032
Fractal Senior
******
Posts: 1863


« Reply #22 on: October 10, 2014, 09:56:43 PM »

oh, well that makes sense. That would indeed be a special point for this map.

I'll also try doing something like removing points that go beyond some radius from said critical point by adding a bailout value. If I just include all the points, as the number of samples increases, things just become more and more cluttered and all the individual patterns get overshadowed by what basically looks like something that will eventually fill the entire plane. I guess that isn't actually that surprising.

One more thought occurred to me though: doing the reverse sampling for the normal M-set basically is done just like it is here, but by using the inverse of the square function, i.e. using +\sqrt{z} and -\sqrt{z}, right?
If so, it should be easy enough to just use the inverse inverse function, in this case z \to z-z^2+c, for forward sampling of this set.
Or would that be incorrect?
Logged
Pages: 1 [2]   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
Metabrot Images Showcase (Rate My Fractal) laser blaster 1 354 Last post January 25, 2014, 12:51:29 AM
by cKleinhuis

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.17 seconds with 24 queries. (Pretty URLs adds 0.006s, 2q)