Another Iteration on Iterated Functions May 19th, 2009
Patrick Stein

Earlier, I started exploring iterated functions trying to make some way-points between Mandelbrot set iterations. In that post, I left off with the following: if g(x) = x\sqrt{a} + \frac{b}{1 + \sqrt{a}}, then g^2(x) = ax + b. Today, I am going to tackle the more general case of finding g(x) so that g^n(x) = ax + b.

First, a caveat

You can see already in the above that we had some arbitrary choices. We could have chosen either the positive or negative square root of a. This is essentially a death knell for my dream of coming up with an equation to do an arbitrary number of partial iterations in a completely natural way.

Okay, so it’s not the end-all-and-be-all. It’s not unique. At least, it is more natural than pretending like things proceed directly from one iteration to the next in a straight line or along some fitted curve.

In the end, what I really want is some way to define f^{\frac{1}{n}}(x) that isn’t too ugly compared to f(x) itself. I want f^{\frac{1}{n}}(x) to be continuous in the sense that if you pick some positive \delta, then I can come up with some n so that | f^{\frac{a+1}{n}}(x) - f^{\frac{a}{n}}(x) | < \delta for all a \in [ 0, 1, 2, \ldots, n-1 ] for every x in some useful region.

I believe there will be a large class of functions for which this is possible. With f(x) = x + b, defining f^{\frac{1}{n}}(x) = x + \frac{b}{n} is continuous in this sense.

Alright, back to work

We want to find g(x) so that g^n(x) = f(x) = ax + b. Again, we’re going to hope that it is of the form: \alpha{x} + \beta. (In light of the fact that things aren’t unique, maybe I should be saying we’re going to hope that something of this form works.) So, let’s assume we have such a g(x) = \alpha{x} + \beta.

Then, g^n(x) = \alpha\left( g^{n-1}(x) \right) + \beta = \alpha\left( \alpha\left( g^{n-2}(x) \right) + \beta\right) + \beta, and so on. We can show by induction on n that the general case is g^n(x) = \alpha^n x + \beta \sum_{k=0}^{n-1} \alpha^k. To get this to come out to ax + b we then need \alpha = \sqrt[n]{a} and \beta = \frac{b}{\sum_{k=0}^{n-1} \sqrt[n]{a^k}}. With a little playing with the summation, we can make this \beta = \frac{b\left(1 - \sqrt[n]{a}\right)}{1 - a}.

What about non-linear iterations?

The iteration in the Mandelbrot set uses f(z) = z^2 + c. Can we find a candidate for f^{\frac{1}{n}}(z)?

Let’s start with just f(z) = z^2 for a moment without the c involved. It’s going to be trickier to get something that comes out squared. With constant functions, you can feed the result back in as often as you like and still be constant. With linear functions, you can feed them back upon themselves as often as you like and still be linear. With something squared, you end up with something to the fourth power when you feed it back upon itself. But, maybe we can do with the exponents what we did with the constants in the previous section.

If we let g(z) = z^\alpha, then g^n(z) = \left(\left(z^\alpha\right)^\alpha\ldots\right)^\alpha = z^{\alpha^n}. So, if we let \alpha = \sqrt[n]{2}, then we have g^n(z) = f(z) = z^2. I believe this is continuous in the way that I want it to be. I will have to check that at some point though.

What happens now though if we add back in a constant? Let’s try g(z) = z^\alpha + \beta. Here is g^3(z): \left( \left( z^\alpha + \beta \right)^\alpha + \beta \right)\alpha + \beta. That is outright ugly. I’m not even sure where to start tackling that. So, I think I’ll call it a day here at the keyboard and start hitting the whiteboard.

Trying to Short-Stop Iterated Functions May 15th, 2009
Patrick Stein

If a function is pretty fun, why not do it again?

My post yesterday about the Mandelbrot set got me thinking again about iterated functions. With the Mandelbrot set, you start with some complex number c and with z_0 = 0. Then, you generate z_{i+1} by doing z_{i+1} = z_i^2 + c.

Here’s another way to write this iteration. Let f_c(z) = z^2 + c. Let z_0 = 0 and z_1 = f_c(z_0) and z_2 = f_c(z_1) = f_c(f_c(z_0)) = f_c^2(z_0). In general, we write f_c^n(z) to mean f_c(f_c(\ldots f_c(z))) when there are n copies of f_c. It is easy to verify then that f_c^{a}(f_c^{b}(z)) = f_c^{a+b}(x).

The Jam

fibers For that post, I generated the image linked at the right here. Each level of that image represents one iteration of f_c^{i+1}(0) = f_c(f_c^i(0)) with each strand made up of four different f_c functions with neighboring c‘s.

One of the annoying things about that image is that I went directly from one iteration to the next. I had pondered using conventional splines or other polynomials to interpolate between iterations in an effort to smooth out the transitions. I didn’t go to the trouble for it though because any straightforward interpolation would be every bit as fake as the linear version. There is no provision in the iteration for f_c^{\alpha} unless \alpha is a non-negative integer.

Now the question is, can we fake one? Can we make some other function g_c(z) so that g_c^2(z) = f_c(z)?

Faking easy functions

Let’s start with an easier function. In fact, let’s start with the easiest function: f(x) = 0. It is obvious that f^n(x) = f(x) for all positive integers n. As such, if we let g(x) = 0, it is trivially true that g^2(x) = f(x). But, that was too easy.

Maybe f(x) = x will be harder? No. Again, f^2(x) = f(f(x)) = f(x).

Faking translations

Let’s move up to something a little trickier. Let’s say that f(x) = x + c for some constant c. Now, we see that f^2(x) = f(f(x)) = f(x + c) = (x + c) + c = x + 2c. What are we going to try for g(x) then? Let’s try the obvious: g(x) = x + \frac{c}{2}. Hooray! g^2(x) = f(x). So, it makes sense then to think of f^{1/2}(x) as x + \frac{c}{2}. Similarly, we can think of f^{1/n}(x) as x + \frac{c}{n} for all positive integers n. In this way, we can make values f^q(x) for any positive rational number q.

Faking translations with scaling

Now, we’re cooking. Let’s up the ante. Let’s try f(x) = ax + b. What are we going to try for g(x) then? Let’s guess we can still use roughly the same form: g(x) = \alpha x + \beta. Then, g^2(x) = \alpha^2 x + \alpha \beta + \beta. If we want g^2(x) = f(x), then we need \alpha^2 = a and (\alpha + 1)\beta = b. This means that \alpha = \sqrt{a} and \beta = \frac{b}{1 + \sqrt{a}}. In particular, notice that if a and b are both real numbers with a less than zero, then \alpha is pure imaginary and \beta is complex.


I have much more to say about iterated functions, but I will save some for the next iteration. Next time, I will start with that last case and calculate f^q(x) for rational q.