

数学において、ミンコフスキーの疑問符関数(?( x )と表記)は、1904 年にヘルマン・ミンコフスキーによって定義された、珍しいフラクタル特性を持つ関数です。 [ 1 ]この関数は、1938年にアルノー・ダンジョワによって与えられた、二次式の連分数展開と有理数の二進展開を関連付ける式によって、単位区間上の二次無理数を有理数に写像します。 [ 2 ]また、スターン・ブロコット木に密接に関連する再帰的な定義からわかるように、有理数を二進有理数に写像します。
疑問符関数を定義する一つの方法は、有限または無限の二進数列を使用して実数を表現する2つの異なる方法間の対応関係を利用することです。最もよく知られているのは、単一のピリオド「.」が付いた0と1の文字列、例えば「11.0010010000111111...」で、これは数値の二進数表現として解釈できます。この場合、この数値は ただし、同じ数列を連分数を使って解釈する別の方法もあります。小数部分「0.00 1 00 1 0000 111111 0...」を同じように2進数として解釈し、連続する0または1の各ブロックをそのランレングス(または最初のゼロのブロックの場合は、そのランレングス+1)に置き換えると、この場合、数列[3;3, 1 , 2 , 1 , 4 , 6 ,.次に、この数列を連分数の係数として使用します。[ 3 ] [ 4 ]
疑問符関数はこのプロセスを逆転させます。与えられた実数の連分数をランレングス符号化されたバイナリシーケンスに変換し、そのシーケンスをバイナリ数として再解釈します。[ 3 ] [ 4 ]例えば、上記の例では、これを正式に定義すると、無理数(非終結)連分数表現を持つ 疑問符関数の値はは無限級数の値として定義される。 有理数有限連分数表現を持つ疑問符関数の値は有限和で定義される 二進有理数に還元される。 二次無理数は周期的な連分数で表されるので、 上の疑問符関数の値はは周期的な二進分数であり、したがって非二進有理数である。
疑問符は明らかに視覚的に自己相似である。自己相似のモノイドは、単位正方形に作用する2つの演算子SとRによって生成され、次のように定義される。
視覚的に見ると、Sは単位正方形を左下四分の一に縮小し、Rはその中心を通る点反射を実行する。
グラフ上の点?は、単位区間内の何らかのxに対して座標( x , ?( x ))を持ちます。このような点は、 SとRによってグラフの別の点に変換されます。なぜなら、?はすべてのx ∈ [0, 1]に対して次の恒等式を満たすからです。
これら2つの演算子は繰り返し組み合わせることができ、モノイドを形成する。モノイドの一般要素は次のようになる。
正の整数a 1 , a 2 , a 3 , …に対して、各要素は疑問符関数の自己相似性を表します。このモノイドは周期倍加モノイドと呼ばれることもあり、すべての周期倍加フラクタル曲線は、このモノイドによって記述される自己対称性を持っています(疑問符関数が特殊な場合であるド・ラーム曲線は、このような曲線のカテゴリーです)。モノイドの要素は、a 1 , a 2 , a 3 , …を連分数[0; a 1 , a 2 , a 3 ,…]と同一視することによって、有理数に対応します。 そして は整数係数を持つ線形分数変換 であり、モノイドはモジュラー群PSL(2, Z )の部分集合とみなすことができる。
疑問符関数は、非二進有理数から二次無理数への一対一のマッピングを提供するため、後者の可算性を明示的に証明することができます。実際、これらは二進変換の周期軌道に対応するものと理解できます。これはわずか数ステップで明示的に示すことができます。
単位区間上で有効な、左移動と右移動の2つの移動を定義する。として そして そして そして 疑問符関数は左移動対称性に従う そして右方向への対称性 どこは関数合成を表します。これらは任意に連結できます。例えば、左から右への移動のシーケンスを考えてみましょう。添え字CとDを追加し、分かりやすくするために合成演算子を省略する。ごく一部の場所を除いて、次のようなことが言える。 文字 L と R の任意の有限長文字列は、二進有理数に対応しており、すべての二進有理数は と の両方で書くことができる。整数nとmに対して、有限長のビットとしてとしたがって、すべての二項有理数は、疑問符関数の何らかの自己対称性と一対一に対応する。
表記法をいくつか変更することで、上記を少し簡単に表現できます。そしてL と R を表します。関数合成はこれをモノイドに拡張し、次のように書くことができます。そして一般的に、数字のバイナリ文字列A、Bに対して、ABはそのような文字列の通常の連結である。ダイアディックモノイドMは、そのような有限長の左右移動のモノイドである。モノイドの一般要素として、疑問符関数には対応する自己対称性が存在する。
反射演算子を用いることで、有理数と二進有理数の間の明示的なマッピングが得られる。 そして両方とも そして 以来は恒等式であり、任意の左右移動の列は、左移動のみの列、それに続く鏡映、さらに左移動、鏡映、といったように書き換えることができる。つまり、これは明らかに上から。明示的なシーケンスを評価する関数引数においては二進有理数を与える。具体的には、それはそれぞれはバイナリビットであり、0は左移動に対応し、1は右移動に対応します。動きは、有理数を与えるそれは、連分数によって提供されるものです数列が合理的であることを念頭に置いておくは有限の長さであった。これにより、二進有理数と有理数の間に一対一の対応関係が確立される。
次に、二進変換の周期軌道を考えてみましょう。これらは、有限の初期「カオス的」ビット列からなるビット列に対応します。、その後に繰り返し文字列が続く長さこのような繰り返し文字列は有理数に対応します。これは簡単に明示できます。 すると明らかに 最初に非反復的な数列を加えると、明らかに有理数が得られます。実際、すべての有理数はこのように表現できます。つまり、最初の「ランダムな」数列に続いて、周期的な繰り返しが続くのです。言い換えれば、マップの周期的な軌道は、有理数と1対1に対応しています。
このような周期軌道は、上述の同型性に従って、同等の周期連分数を持つ。有限の長さの初期「カオス」軌道があり、その後、繰り返しシーケンスが続く。繰り返しシーケンスは、以下の条件を満たす周期連分数を生成する。この連分数は[ 5 ] の形をとる。 と共に整数であり、明示的な値は、次のように記述することで得られます。 シフトのために、 反射は次のように与えられる となることによってこれらの行列はどちらもユニモジュラーであり、任意の積もユニモジュラーのままで、結果として次の形式の行列が得られます 。 連分数の正確な値を与える。行列のすべての要素が整数であるため、この行列は射影モジュラー群に属する。
明示的に解くと、次のようになる。この解が二次無理数の定義を満たすことは容易に確認できる。実際、すべての二次無理数はこのように表現できる。したがって、二次無理数は二進変換の周期軌道と一対一に対応し、二進変換の周期軌道は(二進変換ではない)有理数と一対一に対応し、さらに二進変換の有理数は二進変換の有理数と一対一に対応する。いずれの場合も、疑問符関数がその対応関係を示している。

疑問符関数は厳密に増加かつ連続な関数ですが、[ 6 ]絶対連続ではありません。導関数はほとんど至るところで定義され、0(ほとんど至るところで、すべての有理数を含む)と の2 つの値しか取ることができません。[ 7 ]積分すると疑問符関数が得られるような尺度の構成法はいくつかあります。そのような構成法の1つは、実数直線上のファレイ数の密度を測定することによって得られます。疑問符尺度は、多重フラクタル尺度と呼ばれることもあるものの典型的な例です。
疑問符関数は、有理数を、底が2 の表現が有限となるような二進有理数に写像します。これは、上記の再帰的構成から帰納的に証明できます。また、二次無理数を非二進有理数に写像します。どちらの場合も、これらの集合間に順序同型性を提供し、 [ 8 ]任意の 2 つの非有界可算稠密線形順序が順序同型であるというカントールの同型定理を具体化します。 [ 9 ]これは奇関数であり、関数方程式?( x + 1) = ?( x ) + 1を満たします。したがって、x ↦ ?( x ) − xは周期 1 の奇周期関数です。?( x )が無理数の場合、x は2 より大きい次数の代数であるか、超越数です。
疑問符関数は、0、1 / 2、1に固定点があり、中点に関して対称な固定点が少なくとも2つあります。そのうちの1つは約0.42037です。[ 6 ]これら が唯一の5つの固定点であると推測されています。[ 10 ]
1943年、ラファエル・サレムは、疑問符関数のフーリエ・スティルチェス係数が無限大でゼロになるかどうかという問題を提起した。[ 11 ]言い換えれば、彼は、
これは、ギブス測度に関する結果の特殊なケースとして、ジョーダンとサールステンによって肯定的に回答された。[ 12 ]
ミンコフスキーの疑問符関数のグラフは、ド・ラーム曲線として知られるフラクタル曲線の特殊なケースである。
再帰的な定義は、次のC関数が示すように、任意の実数に対して任意の精度で関数を計算するアルゴリズムに自然に適しています。このアルゴリズムは、入力xを探すためにStern–Brocot ツリーを下り、その途中でy = ?( x )の二進展開の項を合計します。ループ不変条件qr − ps = 1が満たされている限り、分数 m / n = p + r / q + s は既に最小項になっているため、これを約分する必要はありません。もう 1 つの不変条件は p / q ≤ x < r / s です。このプログラムのループは、最初の 3 行の条件付き break ステートメントが条件を規定しているループのように分析できます。ループ内で不変条件に影響を与える可能性のあるステートメントは最後の 2 行のみであり、最初の 3 行がループから抜け出さずに正常に実行されていれば、これらのステートメントは両方の不変条件の真偽を維持することが示せます。ループ本体の 3 番目の不変条件 (浮動小数点精度まで) はy ≤ ?( x ) < y + dですが、d は条件がテストされる前にループの開始時に半分になるため、結論はループの終了時にy ≤ ?( x ) < y + 2 dとなることだけです。 forwhile
終了性を証明するには、ループの各反復ごとに合計がq + s少なくとも 1 ずつ増加し、この合計が C の基本データ型で表現するには大きすぎる場合にループが終了することを指摘すれば十分ですlong。ただし、実際には、条件分岐によってy + d == yループが適切な時間内に終了することが保証されます。
/* ミンコフスキーの疑問符関数 */ double minkowski ( double x ) { long p = x ; long q = 1 , r = p + 1 , s = 1 , m , n ; double d = 1 , y = p ; if ( x < p || ( p < 0 ) ^ ( r <= 0 )) return x ; /* 範囲外 ?(x) =~ x */ while ( true ) { /* 不変条件: q * r - p * s == 1 && p / q <= x && x < r / s */ d /= 2 ; if ( y + d == y ) break ; /* 最大精度に達した */ m = p + r ; if (( m < 0 ) ^ ( p < 0 )) break ; /* 合計がオーバーフローした * / n = q + s ; if ( n < 0 ) break ; /* 合計がオーバーフローしました */if ( x < ( double ) m / n ) { r = m ; s = n ; } else { y += d ; p = m ; q = n ; } } return y + d ; /* 最終的な丸め処理 */ }ミンコフスキーの疑問符関数を ?:[0,1] → [0,1] に制限すると、単位区間上の特異分布の累積分布関数 として使用できます。この分布は中点に関して対称であり、生のモーメントは約m 1 = 0.5、m 2 = 0.290926、m 3 = 0.186389、m 4 = 0.126992 であり、[ 13 ]平均と中央値は 0.5、標準偏差は約 0.2023、歪度は0、尖度は約 -1.147 です。