a4lg.com

1/9998 ― 不思議な分数を無限級数で作る

Hacker News の 1/9998 = 0.0001 0002 0004 0008 0016 0032 0064 0128 0256.. で、不思議な性質を持つ分数が紹介されていました。この項目ではこの不思議な性質を無限等比級数の和に関する定理 (公式) を使って証明し、同じように小数点以下が特定の数列になる分数を幾つか示してみます。

1/9998 の性質の証明

1/9998、一般化すると、110k-2 を見てみましょう。これらの数値の 10 進小数表現において小数点以下を 4 桁 (一般化した方の式だと k 桁) 毎に区切ると、2 の冪乗が見えます。

1/9998  = 0. 0001 0002 0004 0008 0016 0032 0064 0128 0256 0512 1024 2048 4096  ...
1/99998 = 0. 00001 00002 00004 00008 00016 00032 00064 00128 00256 00512 01024 ...

これは偶然ではありません。1/9998 の先ほど示した桁に続くのは 8192 ではなく 8193 ですが、これはその次の数字である 16384 のあふれた桁が 8192 に加算されたためです。このパターンは無限に続き、にも関わらず、総和の桁は必ず循環します (1/9998 の場合、循環節の長さは 357 桁)。

0. 0001|0002|0004|0008|0016|0032|0064|0128|0256|0512|1024|2048|4096|8193|6387|2774|5549|...
      1|    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |
           2|    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |
                4|    |    |    |    |    |    |    |    |    |    |    |    |    |    |
                     8|    |    |    |    |    |    |    |    |    |    |    |    |    |
                         16|    |    |    |    |    |    |    |    |    |    |    |    |
                              32|    |    |    |    |    |    |    |    |    |    |    |
                                   64|    |    |    |    |    |    |    |    |    |    |
                                       128|    |    |    |    |    |    |    |    |    |
                                            256|    |    |    |    |    |    |    |    |
                                                 512|    |    |    |    |    |    |    |
                                                    |1024|    |    |    |    |    |    |
                                                         |2048|    |    |    |    |    |
                                                              |4096|    |    |    |    |
                                                                   |8192|    |    |    |
                                                                       1|6384|    |    |
                                                                            3|2768|    |
                                                                                 6|5536|
                                                                                     13|1072
                                                                                          ...

この性質は、(初項、公比ともに有理数でかつ収束する) 無限等比級数の和としてこのような数を表したときにそれがひとつの有理数になることからも示すことができます。

例えばこの数を 4 桁毎に区切った項毎に式にすると、次のようになります。

1/9998 = 0.0001
       + 0.0000 0002
       + 0.0000 0000 0004
       + 0.0000 0000 0000 0008
         ....

19998=201041+211042+221043+231044=1104Σn=02104n

無限等比級数の和の形に変形することができました。k 桁に関して一般化し、それに対して無限等比級数の和の公式を適用すると…

110kΣn=0210kn=110k11-210k=110k-2

となり、k=4 を代入することで 1/9998 に戻っていることが確認できます。これは k>0 のすべての整数で正しく、例えば k=1 から得られる有限小数の 1/8 (0.125) ですら、次のように無限等比級数の和として考えることが可能です。

1/8 = 0.125
        1||
         2|
          4
           8
           16
            32
             ...

また一般式のパターンから、区切りの桁を 1 つ増やすには分母にある数字の左側に桁として 9 を追加すれば良いことも分かります。

面白い数列を作ろう!

Hacker News の元記事では、色々な級数から作られる数列の例が紹介されています。試しに、これらを証明してみましょう。

0.0001 0001 0001 0001 0001 0001…

まずは、小数点以下を 4 桁や k 桁で区切ると全て 1 になる無限級数の和を計算しておきましょう。

1/9999 = 0.0001
       + 0.0000 0001
       + 0.0000 0000 0001
       + 0.0000 0000 0000 0001
         ....

19999=101041+111042+121043+131044=1104Σn=01104n

k 桁について一般化してみると…

Σn=1110kn=110kΣn=0110kn=110k11-110k=110k-1

となります。これは、他の面白い数列を作るための基礎的な数列になります。

0.0001 0002 0003 0004 0005 0006…

次に、小数点以下を区切ったときに 1, 2, 3… が順に (かつ無限に) 現れる分数を算出してみましょう。考え方を変えてみると、このような数列は次のように、先ほど計算した無限数列の和を使った無限級数の和として見ることができます。

    0. 0001 0002 0003 0004 0005 0006 ...
=   0. 0001 0001 0001 0001 0001 0001 ...
          + 0001 0001 0001 0001 0001 ...
               + 0001 0001 0001 0001 ...
                    + 0001 0001 0001 ...
                         + 0001 0001 ...
                              + 0001 ...
                                     ...
=   1. 0001 0001 0001 0001 0001 0001 ...
  * 0. 0001 0001 0001 0001 0001 0001 ...

定式化はパパっとやってしまいましょう。

Σn=0n10kn=110k-1Σn=0110kn=110k-111-110k=10k10k-12

k=3 から Hacker News 上のポストにある 1/998001 = 0.000 001 002 003… が現れます (元の数から 0 を含むために 1/1000 されていることに注意)。

0.0001 0003 0006 0010 0015 0021… (三角数)

先ほど計算した数列から、三角数の列 1, 3, 6… (1, 1+2, 1+2+3…) が順に現れる分数は簡単に算出することができます。基本は先ほどのものと変わりません。

  0. 0001 0003 0006 0010 0015 0021 ...
= 0. 0001 0002 0003 0004 0005 0006 ...
        + 0001 0002 0003 0004 0005 ...
             + 0001 0002 0003 0004 ...
                  + 0001 0002 0003 ...
                       + 0001 0002 ...
                            + 0001 ...
                                   ...

Σn=0Σm=0nm10kn=10k10k-12Σn=0110kn=10k10k-1211-110k=102k10k-13

k=3 から Hacker News 上のポストにある 1000/997002999 = 0.000 001 003 006… が現れます (元の数から 0 を含むために 1/1000 されていることに注意)。

0.0001 0004 0009 0016 0025 0036… (平方数)

平方数の列 1, 4, 9… (1^2, 2^2, 3^2…) が順に現れる分数を算出するのは少々厄介です。が、ここまでの式が計算できるならどうということはありません。まずは計算の中心部分で用いる、奇数の列 (1, 3, 5…) を算出しておきましょう。

  0. 0001 0003 0005 0007 0009 0011 ...
= 0. 0001 0001 0001 0001 0001 0001 ...
        + 0001 0002 0003 0004 0005 ...
        + 0001 0002 0003 0004 0005 ...

どちらの小数点以下の列も、先ほど算出しましたね。一般式における変形と展開は以下の通り。

110kΣn=02n+110kn=110kΣn=0110kn+2Σn=0n10kn=110k10k10k-1+210k10k-12=110k102k-10k+210k10k-12=10k+110k-12

平方数は、1 から正の方向に連続する奇数の和として現すことができます (例: 2^2=4=1+3, 3^2=9=1+3+5, 4^2=16=1+3+5+7)。n と (n+1) の平方数の差が全ての奇数を作り出すことから、これは逆も成り立ちます。

  0. 0001 0004 0009 0016 0025 0036 ...
= 0. 0001 0003 0005 0007 0009 0011 ...
        + 0001 0003 0005 0007 0009 ...
             + 0001 0003 0005 0007 ...
                  + 0001 0003 0005 ...
                       + 0001 0003 ...
                            + 0001 ...
                                   ...

ここから、0.0001 0002 0003… や 0.0001 0003 0006… を算出した調子で一般式の計算を行うことができます。

Σn=0n210kn=10k+110k-12Σn=0110kn=10k+110k-1211-110k=102k+10k10k-13

k=3 から Hacker News 上のポストにある 1001000/997002999 = 0.001 004 009 016… が現れます。

0.0001 0001 0002 0003 0005 0008… (フィボナッチ数列)

この数式は他の式と違い、喉に引っかかる小骨のようなものです。証明自体は特別に難しいものではないのですが、このページにある他の数列とは構成法が著しく異なります。そのため、証明を省略して一般式のみを示します。以下に示す式は、Wikipedia 英語版の "フィボナッチ数" に載っている公式から導出しています。

Σn=0Fn10kn=10k102k-10k-1

k=3 から Hacker News 上のポストにある 1/998999 = 0.000 001 001 002 003 005 008… が現れます (元の数から 0 を含むために 1/1000 されていることに注意)。

課題: 立方数の列

小数点以下を k 桁で区切ったときに立方数 1, 8, 27… (1^3, 2^3, 3^3…) が順に現れる分数の一般式を作ってみよう。こうしてできる分数は実際には約分できてしまうのだが、今回は分母を無理に約分せず、10k-14 の形にしておくこと。もし立方数列の構成が簡単だったならば、同様に四乗数、五乗数についても計算し、分子に現れる多項式の係数のパターンを見てみよう。

ヒント / 使える式

  • 平方数列の計算と同じく、足し合わせると立方数になる数を構成してから総和を取る手法がうまくいく。次の式が使えるかもしれない : n3-n-13=3n2-3n+1
  • ただ、上記と同じような方法を用いると総和関数の最小値として n=0 と n=1 が混ざることに注意 (上記平方数列が出る分数の計算では意図的に隠していた)。
  • p>0 について、Σn=1np10kn=Σn=0np10kn
  • Σn=1110kn=110kΣn=0110kn

答え / さらなる一般化

正解を表示

Σn=0n310kn=103k+4102k+10k10k-14

また、四乗数、五乗数の場合はそれぞれ次のような式になります。

Σn=0n410kn=104k+11103k+11102k+10k10k-15
Σn=0n510kn=105k+26104k+66103k+26102k+10k10k-16

敢えて約分しなかった分子の多項式に入っている係数は、Eulerian number というものに関係があります (数え上げの組み合わせに関連する数字・関数で、日本語だと対応する良い訳語が見つからず) ――というよりは、これが係数となった Eulerian 多項式が使われています。具体的に言うと、n^1、n^2 などの n^p の系列にはさらなる一般解があるのです。Anm を n と m に対応する Eulerian number だとすると…

Σn=0np10kn=Σm=1pApm-110km10k-1p+1

…とあらわすことが可能です (最初これに気づかず n^5 まで手計算していたことは秘密……でもないけどw)。

なお、3 乗以上の累乗では分子、分母ともに素因数の 3 を持つ (分母はその構成法からほぼ自明、分子に関してはそれほど明らかではないが、Eulerian number の和の性質、3 のモジュロに関わる定理から証明できる) ため、少なくとも 3 で約分することが可能です。Hacker News 上に載っている立方数列の出る分数 334667000/332001998667 = 0.001 008 027 064… は約分されたものです。