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

提供: testwiki
ナビゲーションに移動 検索に移動
ミンコフスキーの疑問符関数

数学において、ミンコフスキー疑問符関数テンプレート:Lang-en-short)は、テンプレート:Harvs によって定義された テンプレート:Math と表される関数であり、さまざまな奇妙なフラクタル特性を持つ。この関数は、テンプレート:仮リンクを有理数の二進展開連分数展開する関係式を介して、二次無理数を単位区間内の有理数に写す。この関係式は1938年にテンプレート:仮リンク(Arnaud Denjoy)によって与えられた。 また、テンプレート:仮リンク(Stern–Brocot tree)に密接に関連する再帰的な定義でわかるように、この関数は有理数をテンプレート:仮リンクに写す。

定義

テンプレート:Mvar無理数の場合、テンプレート:Mvar連分数表現テンプレート:Math とすると、疑問符関数は次のように定義される。

?(x)=a0+2n=1(1)n+12a1++an

テンプレート:Mvar有理数の場合、テンプレート:Mvar の連分数表現を テンプレート:Math とすると、次のようになる。

?(x)=a0+2n=1m(1)n+12a1++an

直感的な説明

上記の定義を直感的に理解するために、0で始まる無限ビット列を テンプレート:Closed-closed 内の実数と解釈する、2つの相異なる解釈方法を考える。

まず明白な方法は、最初の0の後に2進小数点を置き、二進小数として読む方法である。たとえば、ビット列 001001001001001001001001... は、2進数 0.010010010010... すなわち テンプレート:Sfrac を表す。

別の方法は、ビット列を連分数 テンプレート:Math とみなす方法である。ここで整数 テンプレート:Mvar は、ビット列を連長圧縮したときの連続回数である。この場合、先ほどと同じビット列 001001001001001001001001...は テンプレート:Math に対応する。もしビット列で同じビットが無限に続いて終わる場合、それを無視して連分数表現を終了する。この操作の妥当性は以下の恒等式に基づく。

テンプレート:Math.

テンプレート:Closed-closed に対する疑問符関数は、カントール関数三進法表現を二進法表現に写すのと同様に、先程のビット列の2つ目の解釈方法を同じ列の1つ目の解釈方法に写すものと理解できる[1][2]。先程のビット列を例に挙げると、以下の等式が成り立つ。

?(312)=27

有理数引数に対する再帰的定義

単位区間内の有理数の場合、関数を再帰的に定義することもできる。 テンプレート:Mathテンプレート:Mathテンプレート:Math を満たす(ファレイ数列の隣接する項である)既約分数である場合[2]、次のようになる。

?(p+rq+s)=12[?(pq)+?(rs)]

初期条件を次のように与えると

?(01)=0 and ?(11)=1

ファレイ数列を F2、F3と順に求めることで、任意の有理数 テンプレート:Mvar に対して テンプレート:Math を計算することが可能になる。

テンプレート:Mathテンプレート:Math が同じ連分数をそれぞれ n - 1 段、n 段で打ち切ったものとすると、行列

(pn1pnqn1qn)

行列式は ±1 となる。このような行列は、2 × 2 行列で行列式が ±1 となる群 テンプレート:Math の元である。 この群は、モジュラー群に関係する。

アルゴリズム

この再帰的な定義は、次のC言語関数が示すように、任意の実数に対して任意の精度で関数値を計算するアルゴリズムに適している。 このアルゴリズムは、入力 テンプレート:Mvar を探してテンプレート:仮リンクを下降する途中で、テンプレート:Math の二進展開の項を合計していく。 ループ不変量 テンプレート:Mathが満たされる限り、分数 テンプレート:Math を約分する必要はない。 別の不変量は テンプレート:Math である。このプログラムのforループは、 whileループのように扱われており、最初の3行の条件付きbreak構文が終了条件となる。 ループ内で不変条件に影響を与えるのは最後の2行のみであり、最初の3行がループから抜け出すことなく正常に実行されている限り、両方の不変条件が真であると示すことができる。ループ内部の第三の不変量(浮動小数点精度)は テンプレート:Math であるが、どの条件もテストされる前に、ループの初めに テンプレート:Mvar が半分にされるため、結果的にループの終了時でしか テンプレート:Math は担保されない。

プログラムのテンプレート:仮リンクには、ループの反復ごとに合計 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つの演算子 テンプレート:Mvarテンプレート:Mvar によって生成され、次のように定義される。

S(x,y)=(xx+1,y2)[5px]R(x,y)=(1x,1y)

視覚的には、 テンプレート:Mvar は単位正方形を左下4分の1に縮小し、 テンプレート:Mvar は中心を通る点反射を実行する。

テンプレート:Mathグラフ上の点は単位区間内の テンプレート:Mvar に対して座標 テンプレート:Math を持つ。テンプレート:Math はすべての テンプレート:Math で以下の等式を満たすため、そのような点は テンプレート:Mvarテンプレート:Mvar によってグラフ上の別の点に変換される。

?(xx+1)=?(x)2[5px]?(1x)=1?(x)

これら2つの演算子は繰り返し結合され、モノイドを形成する。 モノイドの一般的な要素は正の整数 テンプレート:Math に対して

Sa1RSa2RSa3

となる。このような各要素によって、疑問符関数の自己相似性が記述される。 このモノイドはテンプレート:仮リンクモノイドとも呼ばれ、すべての周期倍加フラクタル曲線は、周期倍加モノイドによって記述される自己対称性を持つ(疑問符関数はテンプレート:仮リンク(de Rham curve)の特殊なケースであり、ド・ラーム曲線はこのような自己相似曲線のカテゴリーである)。 モノイドの要素は、テンプレート:Mathと連分数 テンプレート:Math を同一視することによって有理数と対応づけられる 。

S:xxx+1
T:x1x

はいずれも整数係数の線形分数変換であるため、モノイドはモジュラー群 テンプレート:Mathの部分集合と見なすことができる。

テンプレート:Wide image

疑問符関数は狭義単調増加な連続関数である[3]が、絶対連続ではない。有理数における微分係数はゼロである。積分されたときに疑問符関数を生成する測度には、いくつかの構成法が存在する。そのような構成の1つは、実数直線上のフェリー数の密度を測定することによって得られる。疑問符測度は、テンプレート:仮リンクとも呼ばれるものに対する典型的な例である。 疑問符関数は有理数をテンプレート:仮リンクに写す。二進分数とは、上で述べた再帰的定義から帰納的に証明されるように、 その二進表現が終了するものを意味する。このほか、テンプレート:仮リンクを非二進有理数に写す。また、疑問符関数は奇関数であり、関数方程式 テンプレート:Math を満たすことから、 テンプレート:Math は、周期 1 の奇周期関数である。 テンプレート:Math が無理数である場合、 テンプレート:Mvar は次数が2より大きい代数的数か、超越数である。

疑問符関数は 0, テンプレート:Sfrac, 1、そして少なくとももう2つの不動点を持ち、中点に対して対称である。不動点の一つは約 0.42037 である[3]

1943年、テンプレート:仮リンク(Raphaël Salem)は疑問符関数のフーリエ・スティールチェス係数(Fourier–Stieltjes coefficients)が無限大でゼロになるかという問題を提起した[4]。つまり、

limn01e2πinxd?(x)=0

となるかどうか、ということである。この問題はテンプレート:仮リンクの結果の特別なケースとして、ジョーダン(Jordan)とザールステン(Sahlsten)[5]によって肯定的に解決された。 ミンコフスキー疑問符関数のグラフは、テンプレート:仮リンクと呼ばれるフラクタル曲線の特殊なケースである。

コンウェイの箱関数

テンプレート:Math 関数は可逆であり、逆関数も多くの数学者の研究対象となった。特にコンウェイは逆関数を独立して発見し、テンプレート:Mathテンプレート:Mvar の周りに箱を描く テンプレート:Mvar という記法で表現した。箱関数は、テンプレート:Math二進数表現のエンコーディングのように計算することができる。ここで テンプレート:Math床関数である。二進法表現では小数点の右側に、0 が テンプレート:Math 個、1 が テンプレート:Math 個、0 が テンプレート:Math 個というように続くが、 テンプレート:Mathとすると、

テンプレート:Math

である。ここで、右辺は連分数である。

関連項目

脚注

テンプレート:Reflist

歴史的参考文献

参考文献

外部リンク

  1. Finch (2003) pp. 441–442.
  2. 2.0 2.1 Pytheas Fogg (2002) p. 95.
  3. 3.0 3.1 Finch (2003) p. 442
  4. Salem (1943)
  5. Jordan and Sahlsten (2013)