During my regular recreational late night Desmos foolery, I came across this fractal parametric equation:

$$x(t)=\sum_{n=0}^\infty \frac{\cos(2^nt+cn)}{2^n}$$ $$y(t)=\sum_{n=0}^\infty \frac{\sin(2^nt+cn)}{2^n}$$

And decided to animate $c\rightarrow2\pi$ on a loop.

fractal string

I was fascinated by the series of loops around it's boundary that seemed to curl into existence then proceed to unwind back into thin air. If the gif doesn't do it justice, I highly recommend checking out the link to the graph.

I'm sure this phenomenon is actually just an example of a much simpler process, but I can't seem to wrap my head around these spiraling loops. What are your thoughts?

  • $\begingroup$ Have you tried playing with your parameters? E.g. changing some of the $2$'s to $3$'s or change some of the $2^n$ to $n^2$. I'd say there is nothing special about your function. It's just a "circle" which deforms in a cyclic way. $\endgroup$
    – WhatsUp
    Jul 23, 2020 at 13:09
  • $\begingroup$ this is the image of the unit circle under the function $f(z)=\sum_ {n=0}^\infty 2^{-n} z^{2^n+cn}$, which is a lacunary series $\endgroup$
    – Albert
    Jul 23, 2020 at 13:17
  • $\begingroup$ @WhatsUp I have, indeed I'm sure there's nothing special, as per my "I'm sure this phenomenon is actually just an example of a much simpler process". I'm curious to as what the cyclic deformation is actually a result of however. $\endgroup$
    – Graviton
    Jul 23, 2020 at 13:27
  • 3
    $\begingroup$ The problem is that you should translate this phenomenon into mathematical language, rather than a description such as "curl into existence" or "unwind back into thin air". $\endgroup$
    – WhatsUp
    Jul 23, 2020 at 13:50
  • 2
    $\begingroup$ @WhatsUp I agree. Believe me, if I could, I would. Otherwise, who says poetry and math don't overlap ;) $\endgroup$
    – Graviton
    Jul 25, 2020 at 6:17

1 Answer 1


This should really be a comment but it's way too long:

As the comments indicate, all we really have so far is a qualitative observation. It's quite interesting, but turning it into a precise question is nontrivial, and of course we have to do that before we can get an answer.

So let me take a stab at precisiating the phenomenon we see - or rather, precisiating one particular question about whether a general pattern we seem to observe actually holds. Specifically, I want to ask: "Do all the loops roll clockwise?"

There are a couple things we need to pay attention to:

  • We need a precise definition of "loop," and we then need a way to talk about the motion of a loop over time.

  • Whatever we whip up should be parameterization-invariant: we're really paying attention to the map $$\Gamma:c\mapsto\{(x,y):\exists t(x=\sum_{n=0}^\infty \frac{\cos(2^nt+cn)}{2^n}\quad\mbox{and}\quad y=\sum_{n=0}^\infty \frac{\sin(2^nt+cn)}{2^n})\},$$ or if you prefer "successive horizontal slices" of the surface $$\{(x,y,z):\exists t(x=\sum_{n=0}^\infty \frac{\cos(2^nt+zn)}{2^n}\quad\mbox{and}\quad y=\sum_{n=0}^\infty \frac{\sin(2^nt+zn)}{2^n})\}\subseteq\mathbb{R}^3.$$

So our definition will probably use the function $$F(t,c)=(\sum_{n=0}^\infty \frac{\cos(2^nt+cn)}{2^n},\sum_{n=0}^\infty \frac{\sin(2^nt+cn)}{2^n})$$ but it will ultimately "lose information."

OK, so let's start with the notion of a loop at time $c$. There are a couple things this could mean.

From algebraic topology we have the simple notion of a continuous function $S_1\rightarrow\Gamma(c)$ (or rather, an appropriate equivalence class of such functions). This notion is quite nice; for one thing, it produces a groupoid for each $c$, and so overall a "continuously varying groupoid."

However, that's a bit abstract; more importantly, it ignores details like direction of movement, which we definitely care about here. So while it's a very natural thing to look at, I'm not sure it's quite the right idea here.

Instead, I want to go a bit more concrete:

  • A loop at time $c$ is just a pair of numbers $a<b$ such that $F(a,c)=F(b,c)$ but for each $z\in (a,b)$ we have $F(z,c)\not=F(a,c)$. (Note that this does refer to the parameterization; that will go away later, however. The key feature here is that the parameterization $F$ is "locally injective in $c$," that is for each $t,c$ there is some $\epsilon>0$ such that $F\upharpoonright (t-\epsilon, t+\epsilon)\times\{c\}$ is injective.)

  • To talk about the motion of a loop over time, we'll introduce the notion of a bubble. Basically, a bubble is a "continuously varying nontrivial loop" which is maximal in the sense that if we could keep going either forward or backward in $c$ we do so. More precisely, we'll say that a prebubble consists of a tuple $(I,f,g)$ where $I$ is an open interval (which is allowed to extend infinitely in one or both directions) and $f,g$ are injective functions defined on $I$ such that $\langle f(c),g(c)\rangle$ is a loop for all $c\in I$. A prebubble doesn't necessarily "tell the whole story" of a loop's lifetime, and so we further define a bubble to be a prebubble $(I,f,g)$ such that there is no other prebubble $(\hat{I},\hat{f},\hat{g})$ with $I\subsetneq I'$ and $\hat{f}\upharpoonright I=f, \hat{g}\upharpoonright I=g$.

Now suppose I have a bubble $\beta:=(I,f,g)$. At each time $c\in I$ there is a "special point" in this bubble, $p_\beta(c)=F(f(c),c)=F(g(c),c)$. And via some polar coordinate tedium the following question can be phrased precisely:

If $\beta=(I,f,g)$ is a bubble, need $p_\beta(c)$ always be moving clockwise as $c$ increases?

(The tedium is basically that the argument of a point is many-valued. It's easily dealt with, though.)

Note that as desired, at this point everything is parameterization-free - the above works as long as we fix any parameterization which is locally injective in $c$.

Now that we have a precise question, I'm sure finding the answer will be basically trivial so I'll leave that as an exercise to the reader. :P


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .