Minkowski's question-mark function

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Minkowski question-mark function.
Left: ?(x). Right: ?(x) − x.

In mathematics, the Minkowski question-mark function 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.


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[edit]

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[edit]

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 |psrq| = 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 2 × 2 matrices with determinant ±1. This group is related to the modular group.


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 */


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


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)[edit]

?(x) − 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[edit]

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-2 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[edit]


  1. ^ Finch (2003) pp. 441–442.
  2. ^ a b Pytheas Fogg (2002) p. 95.
  3. ^ a b Finch (2003) p. 442
  4. ^ Salem (1943)
  5. ^ Jordan and Sahlsten (2013)

Historical references[edit]

  • Minkowski, Hermann (1904), "Zur Geometrie der Zahlen", Verhandlungen des III. internationalen Mathematiker-Kongresses in Heidelberg, Berlin, pp. 164–173, JFM 36.0281.01, archived from the original on 4 January 2015
  • Denjoy, Arnaud (1938), "Sur une fonction réelle de Minkowski", J. Math. Pures Appl., Série IX (in French), 17: 105–151, Zbl 0018.34602


External links[edit]