# Fractal-ish monotone functions

There are several ways to construct a strictly increasing continuous function which has zero derivative almost everywhere. I like the explicit construction given by R. Salem, On some singular monotonic functions which are strictly increasing (1943).

Here is a streamlined version of the construction.

Fix ${\lambda\in (0,1/2)}$ (on the above picture ${\lambda=1/4}$). Let ${f_0(x)=x}$, and inductively define ${f_{n+1}}$ so that

1. ${f_{n+1} (x) = f_n(x)}$ when ${x\in 2^{-n}\mathbb Z}$.
2. If ${x\in 2^{-n}\mathbb Z}$, let ${f_{n+1}(x+2^{-n-1}) =\lambda f_n(x) + (1-\lambda) f_n(x+2^{-n})}$.
3. Now that ${f_{n+1}}$ has been defined on ${2^{-n-1}\mathbb Z}$, extend it to ${\mathbb R}$ by linear interpolation.
4. Let ${f=\lim f_n}$.

Since ${f(x+1)=f(x)+1}$ by construction, it suffices to understand the behavior of ${f}$ on ${[0,1]}$.

Each ${f_n}$ is piecewise linear and increasing. At each step of the construction, every line segment of ${f_n}$ (say, with slope ${s}$) is replaced by two segments, with slopes ${2(1-\lambda)s}$ and ${2\lambda s}$. Since ${\lambda f_n(x+2^{-n-1})}$. Hence, ${f_{n+1}\ge f_n}$.

Since ${f(x)=f_n(x)}$ when ${x\in 2^{-n}\mathbb Z}$, it is easy to understand ${f}$ by considering its values at dyadic rationals and using monotonicity. This is how one can see that:

• The difference of values of ${f}$ at consecutive points of ${2^{-n}\mathbb Z}$ is at most ${(1-r)^{n}}$. Therefore, ${f}$ is Hölder continuous with exponent ${\alpha = - \frac{\log (1-r)}{\log 2}}$.
• The difference of values of ${f}$ at consecutive points of ${2^{-n}\mathbb Z}$ is at least ${r^{n}}$. Therefore, ${f}$ is strictly increasing, and its inverse is Hölder continuous with exponent ${\alpha = - \frac{\log r}{\log 2}}$.

It remains to check that ${f'=0}$ almost everywhere. Since ${f}$ is monotone, it is differentiable almost everywhere. Let ${x}$ be a point of differentiability (and not a dyadic rational, though this is automatic). For each ${n}$ there is ${x_n\in 2^{-n}\mathbb Z}$ such that ${x_n < x< x_n+2^{-n}}$. Let ${s_n = 2^{n} (f_n(x_n+2^{-n})-f_n(x_n))}$; this is the slope of ${f_n}$ on the ${2^{-n}}$-dyadic interval containing ${x}$. Since ${f'(x)}$ exists, we must have ${f'(x) = \lim_{n\rightarrow\infty} s_n}$. On the other hand, the ratio of consecutive terms of this sequence, ${s_{n+1}/s_n}$, is always either ${2 (1-\lambda )}$ or ${2\lambda}$. Such a sequence cannot have a finite nonzero limit. Thus ${f'(x)=0}$.

Here is another ${f}$, with ${\lambda=1/8}$.

By making ${\lambda}$ very small, and being more careful with the analysis of ${f'}$, one can make the Hausdorff dimension of the complement of ${\{x \colon f'(x)=0\}}$ arbitrarily small.

An interesting modification of Salem’s function was introduced by Tukia in Hausdorff dimension and quasisymmetric mappings (1989). For the functions considered above, the one-sided derivatives at every dyadic rational are zero and infinity, which is a rather non-symmetric state of affair. In particular, these functions are not quasisymmetric. But Tukia showed that if one alternates between ${\lambda}$ and ${1-\lambda}$ at every step, the resulting homeomorphism of ${\mathbb R}$ becomes quasisymmetric. Here is the picture of alternating construction with ${\lambda=1/4}$; preliminary stages of construction are in green.

This is quite similar to how the introduction of alternating signs turns Takagi curve (blancmange curve) into a quasiarc (i.e., a curve without cusps); see Sweetened and flavored dessert made from gelatinous or starchy ingredients and milk. But the fractal curves in this post are relatively mild-mannered: they are rectifiable (and thus, not really fractal).

Here is the simple Scilab code I used for the above plots.

r = 1/4
t = [0 1]
f = t
for i = 1:10
t = [t, t(1:$-1)+2^(-i)] f = [f, r*f(1:$-1)+(1-r)*f(2:\$)]
[t, ind] = gsort(t,'g','i')
f = f(ind)
end
plot(t,f)


To have preliminary stages shown as well, move plot(t,f) into the loop. For Tukia’s alternating version, insert the line r = 1-r into the loop.

This site uses Akismet to reduce spam. Learn how your comment data is processed.