ミンコフスキーの疑問符関数

数学において、ミンコフスキー疑問符関数（英: Minkowski question-mark function）は、Hermann Minkowski (1904, pages 171–172) によって定義された ?(x) と表される関数であり、さまざまな奇妙なフラクタル特性を持つ。この関数は、二次無理数（英語版）を有理数の二進展開に連分数展開する関係式を介して、二次無理数を単位区間内の有理数に写す。この関係式は1938年にアルノー・ダンジョワ（英語版）(Arnaud Denjoy)によって与えられた。 また、スターン・ブロコット木（英語版）(Stern–Brocot tree)に密接に関連する再帰的な定義でわかるように、この関数は有理数を二進有理数（英語版）に写す。 x が無理数の場合、x の連分数表現を [a0; a1, a2, …] とすると、疑問符関数は次のように定義される。 ? ⁡ ( x ) = a 0 + 2 ∑ n = 1 ∞ ( − 1 ) n + 1 2 a 1 + ⋯ + a n {\displaystyle \operatorname {?} (x)=a_{0}+2\sum _{n=1}^{\infty }{\frac {\left(-1\right)^{n+1}}{2^{a_{1}+\cdots +a_{n}}}}} x が有理数の場合、x の連分数表現を [a0; a1, a2, …, am] とすると、次のようになる。 ? ⁡ ( x ) = a 0 + 2 ∑ n = 1 m ( − 1 ) n + 1 2 a 1 + ⋯ + a n {\displaystyle \operatorname {?} (x)=a_{0}+2\sum _{n=1}^{m}{\frac {\left(-1\right)^{n+1}}{2^{a_{1}+\cdots +a_{n}}}}} 上記の定義を直感的に理解するために、0で始まる無限ビット列を [0, 1] 内の実数と解釈する、2つの相異なる解釈方法を考える。 まず明白な方法は、最初の0の後に2進小数点を置き、二進小数として読む方法である。たとえば、ビット列 001001001001001001001001... は、2進数 0.010010010010... すなわち 2/7 を表す。 別の方法は、ビット列を連分数 [0; a1, a2, …] とみなす方法である。ここで整数 ai は、ビット列を連長圧縮したときの連続回数である。この場合、先ほどと同じビット列 001001001001001001001001...は [0; 2, 1, 2, 1, 2, 1, …] = √3 − 1/2 に対応する。もしビット列で同じビットが無限に続いて終わる場合、それを無視して連分数表現を終了する。この操作の妥当性は以下の恒等式に基づく。 [0; a1, …, an, ∞] = [0; a1, …, an + 1/∞] = [0; a1, …, an + 0] = [0; a1, …, an]. [0, 1] に対する疑問符関数は、カントール関数が三進法表現を二進法表現に写すのと同様に、先程のビット列の2つ目の解釈方法を同じ列の1つ目の解釈方法に写すものと理解できる。先程のビット列を例に挙げると、以下の等式が成り立つ。 ? ⁡ ( 3 − 1 2 ) = 2 7 {\displaystyle \operatorname {?} \left({\frac {{\sqrt {3}}-1}{2}}\right)={\frac {2}{7}}} 単位区間内の有理数の場合、関数を再帰的に定義することもできる。 p/q と r/s が |ps − rq| = 1 を満たす（ファレイ数列の隣接する項である）既約分数である場合、次のようになる。 ? ⁡ ( p + r q + s ) = 1 2 [ ? ⁡ ( p q ) + ? ⁡ ( r s ) ] {\displaystyle \operatorname {?} \left({\frac {p+r}{q+s}}\right)={\frac {1}{2}}\left[\operatorname {?} \left({\frac {p}{q}}\right)+\operatorname {?} \left({\frac {r}{s}}\right)\right]} 初期条件を次のように与えると ? ⁡ ( 0 1 ) = 0  and  ? ⁡ ( 1 1 ) = 1 {\displaystyle \operatorname {?} \left({\frac {0}{1}}\right)=0\quad {\text{ and }}\quad \operatorname {?} \left({\frac {1}{1}}\right)=1} ファレイ数列を F2、F3と順に求めることで、任意の有理数 x に対して ?(x) を計算することが可能になる。 pn−1/qn−1 と pn/qn が同じ連分数をそれぞれ n - 1 段、n 段で打ち切ったものとすると、行列 ( p n − 1 p n q n − 1 q n ) {\displaystyle {\begin{pmatrix}p_{n-1}&p_{n}\\q_{n-1}&q_{n}\end{pmatrix}}} の行列式は ±1 となる。このような行列は、2 × 2 行列で行列式が ±1 となる群 SL(2, Z) の元である。 この群は、モジュラー群に関係する。 この再帰的な定義は、次のC言語関数が示すように、任意の実数に対して任意の精度で関数値を計算するアルゴリズムに適している。 このアルゴリズムは、入力 x を探してスターン・ブロコット木（英語版）を下降する途中で、y = ?(x) の二進展開の項を合計していく。 ループ不変量 qr − ps = 1が満たされる限り、分数 m/n = p + r/q + s を約分する必要はない。 別の不変量は p/q ≤ x < r/s である。このプログラムのforループは、 whileループのように扱われており、最初の3行の条件付きbreak構文が終了条件となる。 ループ内で不変条件に影響を与えるのは最後の2行のみであり、最初の3行がループから抜け出すことなく正常に実行されている限り、両方の不変条件が真であると示すことができる。ループ内部の第三の不変量（浮動小数点精度）は y ≤ ?(x) < y + d であるが、どの条件もテストされる前に、ループの初めに d が半分にされるため、結果的にループの終了時でしか y ≤ ?(x) < y + 2d は担保されない。 プログラムの停止を証明する（英語版）には、ループの反復ごとに合計 q + s が少なくとも1ずつ増加し、この合計がC言語のプリミティブ型 long で表現するには大きすぎる場合にループが終了することに注意すれば十分である。 ただし実際には、 y + d == y の条件付き break があるため、短時間でループが終了する。 /* 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 */ } 疑問符関数は明らかに視覚的に自己相似である。 自己相似のモノイドは、単位正方形に作用する2つの演算子 S と R によって生成され、次のように定義される。 S ( x , y ) = ( x x + 1 , y 2 ) R ( x , y ) = ( 1 − x , 1 − y ) {\displaystyle {\begin{aligned}S(x,y)&=\left({\frac {x}{x+1}},{\frac {y}{2}}\right)\\[5px]R(x,y)&=(1-x,1-y)\end{aligned}}} 視覚的には、 S は単位正方形を左下4分の1に縮小し、 R は中心を通る点反射を実行する。 ? のグラフ上の点は単位区間内の x に対して座標 (x, ?(x)) を持つ。? はすべての x ∈ [0, 1] で以下の等式を満たすため、そのような点は S と R によってグラフ上の別の点に変換される。 ? ⁡ ( x x + 1 ) = ? ⁡ ( x ) 2 ? ⁡ ( 1 − x ) = 1 − ? ⁡ ( x ) {\displaystyle {\begin{aligned}\operatorname {?} \left({\frac {x}{x+1}}\right)&={\frac {\operatorname {?} (x)}{2}}\\[5px]\operatorname {?} (1-x)&=1-\operatorname {?} (x)\end{aligned}}} これら2つの演算子は繰り返し結合され、モノイドを形成する。 モノイドの一般的な要素は正の整数 a1, a2, a3, … に対して S a 1 R S a 2 R S a 3 ⋯ {\displaystyle S^{a_{1}}RS^{a_{2}}RS^{a_{3}}\cdots } となる。このような各要素によって、疑問符関数の自己相似性が記述される。 このモノイドは周期倍加（英語版）モノイドとも呼ばれ、すべての周期倍加フラクタル曲線は、周期倍加モノイドによって記述される自己対称性を持つ（疑問符関数はド・ラーム曲線（英語版）(de Rham curve)の特殊なケースであり、ド・ラーム曲線はこのような自己相似曲線のカテゴリーである）。 モノイドの要素は、a1, a2, a3, …と連分数 [0; a1, a2, a3,…] を同一視することによって有理数と対応づけられる 。 S : x ↦ x x + 1 {\displaystyle S:x\mapsto {\frac {x}{x+1}}} T : x ↦ 1 − x {\displaystyle T:x\mapsto 1-x} はいずれも整数係数の線形分数変換であるため、モノイドはモジュラー群 PSL(2, Z)の部分集合と見なすことができる。 疑問符関数は狭義単調増加な連続関数であるが、絶対連続ではない。有理数における微分係数はゼロである。積分されたときに疑問符関数を生成する測度には、いくつかの構成法が存在する。そのような構成の1つは、実数直線上のフェリー数の密度を測定することによって得られる。疑問符測度は、マルチフラクタル測度（英語版）とも呼ばれるものに対する典型的な例である。 疑問符関数は有理数を二進分数（英語版）に写す。二進分数とは、上で述べた再帰的定義から帰納的に証明されるように、 その二進表現が終了するものを意味する。このほか、二次無理数（英語版）を非二進有理数に写す。また、疑問符関数は奇関数であり、関数方程式 ?(x + 1) = ?(x) + 1 を満たすことから、 x → ?(x) − x は、周期 1 の奇周期関数である。 ?(x) が無理数である場合、 x は次数が2より大きい代数的数か、超越数である。 疑問符関数は 0, 1/2, 1、そして少なくとももう2つの不動点を持ち、中点に対して対称である。不動点の一つは約 0.42037 である。 1943年、ラファエル・サレム（英語版）(Raphaël Salem)は疑問符関数のフーリエ・スティールチェス係数(Fourier–Stieltjes coefficients)が無限大でゼロになるかという問題を提起した。つまり、 lim n → ∞ ∫ 0 1 e 2 π i n x d ? ⁡ ( x ) = 0 {\displaystyle \lim _{n\to \infty }\int _{0}^{1}e^{2\pi inx}\,\operatorname {d?} (x)=0} となるかどうか、ということである。この問題はギブス測度（英語版）の結果の特別なケースとして、ジョーダン(Jordan)とザールステン(Sahlsten)によって肯定的に解決された。 ミンコフスキー疑問符関数のグラフは、ド・ラーム曲線（英語版）と呼ばれるフラクタル曲線の特殊なケースである。 ? 関数は可逆であり、逆関数も多くの数学者の研究対象となった。特にコンウェイは逆関数を独立して発見し、?−1(x) を x の周りに箱を描く x という記法で表現した。箱関数は、x − ⌊ x ⌋/2 の二進数表現のエンコーディングのように計算することができる。ここで ⌊ x ⌋ は床関数である。二進法表現では小数点の右側に、0 が n1 個、1 が n2 個、0 が n3 個というように続くが、 n0 = ⌊ x ⌋とすると、 x = [n0; n1, n2, n3, … ] である。ここで、右辺は連分数である。 ポンペイウ導関数（英語版） ^ Finch (2003) pp. 441–442. ^ a b Pytheas Fogg (2002) p. 95. ^ a b Finch (2003) p. 442 ^ Salem (1943) ^ Jordan and Sahlsten (2013) Minkowski, Hermann (1904), “Zur Geometrie der Zahlen”, Verhandlungen des III. internationalen Mathematiker-Kongresses in Heidelberg, Berlin, pp. 164–173, JFM 36.0281.01, オリジナルの2015-01-04時点におけるアーカイブ。, https://web.archive.org/web/20150104205306/http://ada00.math.uni-bielefeld.de/ICM/ICM1904/  Denjoy, Arnaud (1938), “Sur une fonction réelle de Minkowski” (French), J. Math. Pures Appl., Série IX 17: 105–151, Zbl 0018.34602  Alkauskas, Giedrius (2008), Integral transforms of the Minkowski question mark function, PhD thesis, University of Nottingham, http://eprints.nottingham.ac.uk/10641/ . 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, オリジナルの22 June 2015時点におけるアーカイブ。, https://web.archive.org/web/20150622194657/http://www.econ.upf.es/en/research/onepaper.php?id=226 . 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, オリジナルの22 June 2015時点におけるアーカイブ。, https://web.archive.org/web/20150622192620/http://www.econ.upf.es/en/research/onepaper.php?id=378 . 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 978-0-521-81805-6, Zbl 1054.00001, https://archive.org/details/mathematicalcons0000finc  Jordan, Thomas; Sahlsten, Tuomas (2016), “Fourier transforms of Gibbs measures for the Gauss map”, Mathematische Annalen 364 (3–4): 983–1023, arXiv:1312.3619, Bibcode: 2013arXiv1312.3619J, doi:10.1007/s00208-015-1241-9  Pytheas Fogg, N. (2002), Berthé, Valérie; Ferenczi, Sébastien; Mauduit, Christian et al., eds., Substitutions in dynamics, arithmetics and combinatorics, Lecture Notes in Mathematics, 1794, Berlin: Springer-Verlag, ISBN 978-3-540-44141-0, Zbl 1014.11015  Salem, Raphaël (1943), “On some singular monotonic functions which are strictly increasing”, Transactions of the American Mathematical Society 53 (3): 427–439, doi:10.2307/1990210, JSTOR 1990210, http://www.ams.org/journals/tran/1943-053-03/S0002-9947-1943-0007929-6/S0002-9947-1943-0007929-6.pdf  Vepstas, L. (2004), The Minkowski Question Mark and the Modular Group SL(2,Z), http://www.linas.org/math/chap-minkowski.pdf  Vepstas, L. "On the Minkowski Measure". arXiv:0810.1265 [math.DS]。 An extensive bibliography list Weisstein, Eric W. "Minkowski's Question Mark Function". mathworld.wolfram.com (英語). Simple IEEE 754 implementation in C++