Minkowski's question mark function
In mathematics, the Minkowski question mark function (or the slippery devil's staircase), denoted by ?(x), is a function possessing various unusual fractal properties, defined by Hermann Minkowski (1904, pages 171–172). It maps quadratic irrationals to rational numbers on the unit interval, via an expression relating the continued fraction expansions of the quadratics to the binary expansions of the rationals, given by Arnaud Denjoy in 1938. In addition, it maps rational numbers to dyadic rationals, as can be seen by a recursive definition closely related to the Stern–Brocot tree.
Definition
If is the continued fraction representation of an irrational number x, then
whereas:
If is a continued fraction representation of a rational number x, then
Intuitive explanation
To get some intuition for the definition above, consider the different ways of interpreting an infinite string of bits beginning with 0 as a real number in [0,1]. One obvious way to interpret such a string is to place a binary point after the first 0 and read the string as a binary expansion: thus, for instance, the string 001001001001001001001001... represents the binary number 0.010010010010..., or 2/7. Another interpretation views a string as the continued fraction [0; a1, a2, … ], where the integers ai are the run lengths in a run-length encoding of the string. The same example string 001001001001001001001001... then corresponds to [0; 2, 1, 2, 1, 2, 1, …] = √3 − 1/2. If the string ends in an infinitely long run of the same bit, we ignore it and terminate the representation; this is suggested by the formal "identity":
- [0; a1, … ,an, ∞] = [0; a1, … ,an+1/∞] = [0; a1, … ,an+0] = [0; a1, … ,an].
The effect of the question mark function on [0,1] can then be understood as mapping the second interpretation of a string to the first interpretation of the same string,[1][2] just as the Cantor function can be understood as mapping a triadic base 3 representation to a base 2 representation. Our example string gives the equality
Recursive definition for rational arguments
For rational numbers in the unit interval, the function may also be defined recursively; if p/q and r/s are reduced fractions such that | ps − rq | = 1 (so that they are adjacent elements of a row of the Farey sequence) then[2]
Using the base cases
it is then possible to compute ?(x) for any rational x, starting with the Farey sequence of order 2, then 3, etc.
If and are two successive convergents of a continued fraction, then the matrix
has determinant ±1. Such a matrix is an element of SL(2,Z), the group of two-by-two matrices with determinant ±1. This group is related to the modular group.
Algorithm
This recursive definition naturally lends itself to an algorithm for computing the function to any desired degree of accuracy for any real number, as the following C function demonstrates. The algorithm descends the Stern–Brocot tree in search of the input x, and sums the terms of the binary expansion of y = ?(x) on the way. As long as the loop invariant remains satisfied there is no need to reduce the fraction since it is already in lowest terms. Another invariant is The for loop in this program may be analyzed somewhat like a while loop, with the conditional break statements in the first three lines making out the condition. The only statements in the loop that can possibly affect the invariants are in the last two lines, and these can be shown to preserve the truth of both invariants as long as the first three lines have executed successfully without breaking out of the loop. A third invariant for the body of the loop (up to floating point precision) is but since d is halved at the beginning of the loop before any conditions are tested, our conclusion is only that at the termination of the loop.
To prove termination, it is sufficient to note that the sum increases by at least 1 with every iteration of the loop, and that the loop will terminate when this sum is too large to be represented in the primitive C data type long. However, in practice, the conditional break when "y+d==y" is what ensures the termination of the loop in a reasonable amount of time.
/* Minkowski's question mark function */
double minkowski(double x) {
long p=x; if ((double)p>x) --p; /* p=floor(x) */
long q=1, r=p+1, s=1, m, n;
double d=1, y=p;
if (x<(double)p||(p<0)^(r<=0)) return x; /* out of range ?(x) =~ x */
for (;;) /* invariants: q*r-p*s==1 && (double)p/q <= x && x < (double)r/s */
{
d/=2; if (y+d==y) break; /* reached max possible precision */
m=p+r; if ((m<0)^(p<0)) break; /* sum overflowed */
n=q+s; if (n<0) break; /* sum overflowed */
if (x<(double)m/n) r=m, s=n;
else y+=d, p=m, q=n;
}
return y+d; /* final round-off */
}
Self-symmetry
The question mark is clearly visually self-similar. A monoid of self-similarities may be generated by two operators S and R acting on the unit square and defined as follows:
Visually, S shrinks the unit square to its bottom-left quarter, while R performs a point reflection through its center.
A point on the graph of ? has coordinates (x, ?(x)) for some x in the unit interval. Such a point is transformed by S and R into another point of the graph, because ? satisfies the following identities for all :
These two operators may be repeatedly combined, forming a monoid. A general element of the monoid is then
for positive integers . Each such element describes a self-similarity of the question mark function. This monoid is sometimes called the period-doubling monoid, and all period-doubling fractal curves have a self-symmetry described by it (the de Rham curve, of which the question mark is a special case, is a category of such curves). Note also that the elements of the monoid are in correspondence with the rationals, by means of the identification of with the continued fraction . Since both
and
are linear fractional transformations with integer coefficients, the monoid may be regarded as a subset of the modular group PSL(2,Z).
Properties of ?(x)
The question mark function is a strictly increasing and continuous,[3] but not absolutely continuous function. The derivative vanishes on the rational numbers. There are several constructions for a measure that, when integrated, yields the question mark function. One such construction is obtained by measuring the density of the Farey numbers on the real number line. The question mark measure is the prototypical example of what are sometimes referred to as multi-fractal measures.
The question mark function maps rational numbers to dyadic rational numbers, meaning those whose base two representation terminates, as may be proven by induction from the recursive construction outlined above. It maps quadratic irrationals to non-dyadic rational numbers. It is an odd function, and satisfies the functional equation ?(x + 1) = ?(x) + 1; consequently x → ?(x) − x is an odd periodic function with period one. If ?(x) is irrational, then x is either algebraic of degree greater than two, or transcendental.
The question mark function has fixed points at 0, 1/2 and 1, and at least two more, symmetric about the midpoint. One is approximately 0.42037.[3]
In 1943, Raphaël Salem raised the question of whether the Fourier-Stieltjes coefficients of the question mark function vanish at infinity.[4] In other words, he wanted to know whether or not
This was answered affirmatively by Jordan and Sahlsten,[5] as a special case of a result on Gibbs measures.
The graph of Minkowski question mark function is a special case of fractal curves known as de Rham curves.
Conway box function
The ? is invertible, and the inverse function has also attracted the attention of various mathematicians, in particular John Conway, who discovered it independently, and whose notation for ?−1(x) is x with a box drawn around it: x The box function can be computed as an encoding of the base two expansion of , where denotes the floor function. To the right of the point, this will have n1 0s, followed by n2 1s, then n3 0s and so on. For ,
- x = [n0; n1, n2, n3, … ],
where the term on the right is a continued fraction.
See also
Notes
Historical references
- Minkowski, Hermann (1904), "Zur Geometrie der Zahlen", Verhandlungen des III. internationalen Mathematiker-Kongresses in Heidelberg, Berlin, pp. 164–173, JFM 36.0281.01
- Denjoy, Arnaud (1938), "Sur une fonction réelle de Minkowski", J. Math. Pures Appl., IX. Sér. (in French) 17: 105–151, Zbl 0018.34602
References
- Alkauskas, Giedrius (2008), Integral transforms of the Minkowski question mark function, Ph.D. thesis, University of Nottingham.
- Bibiloni, L.; Paradis, J.; Viader, P. (1998), "A new light on Minkowski's ?(x) function", Journal of Number Theory 73 (2): 212–227, doi:10.1006/jnth.1998.2294, Zbl 0928.11006.
- Bibiloni, L.; Paradis, J.; Viader, P. (2001), "The derivative of Minkowski's singular function", Journal of Mathematical Analysis and Applications 253 (1): 107–125, doi:10.1006/jmaa.2000.7064, Zbl 0995.26005.
- Conley, R. M. (2003), A Survey of the Minkowski ?(x) Function, Masters thesis, West Virginia University.
- Conway, J. H. (2000), "Contorted fractions", On Numbers and Games (2nd ed.), Wellesley, MA: A K Peters, pp. 82–86.
- Finch, Steven R. (2003), Mathematical constants, Encyclopedia of Mathematics and Its Applications 94, Cambridge: Cambridge University Press, ISBN 0-521-81805-2, Zbl 1054.00001
- Jordan, Thomas; Sahlsten, Tuomas (2013), "Fourier transforms of Gibbs measures for the Gauss map", Mathematische Annalen (to appear), arXiv:1312.3619
- Pytheas Fogg, N. (2002), Substitutions in dynamics, arithmetics and combinatorics, Lecture Notes in Mathematics 1794, Editors Berthé, Valérie; Ferenczi, Sébastien; Mauduit, Christian; Siegel, A., Berlin: Springer-Verlag, ISBN 3-540-44141-7, Zbl 1014.11015
- Salem, Raphaël (1943), "On some singular monotonic functions which are strictly increasing" (PDF), Transactions of the American Mathematical Society 53 (3): 427–439, doi:10.2307/1990210
External links
- An extensive bibliography list
- Vepstas, L. (2004), The Minkowski Question Mark and the Modular Group SL(2,Z) (PDF)
- Weisstein, Eric W., "Minkowski's Question Mark Function", MathWorld.
- Simple IEEE 754 implementation in C++