見出し画像

【数学興味】「コラッツの問題」の本筋とは違うことを素人が調べてみた件4

1.誤差率

前回のNOTEでは下記のように操作②の+1を無視した立式をしました。

x・3^n・2^(-nev)≒1

x : サンプル整数
n : 奇数の個数
nev: 偶数の個数

操作②の+1を無視する/しないで数値にはズレが生じます。その誤差率を次式のように書きましょう。

誤差率(%)=100{1x・3^n・2^(-nev)}

211107-1 誤差率 - コピー

これは前回のNOTEに出したグラフの焼き直しみたいなものです。誤差のほぼない0-2%領域にはわずかながらデータが点在し、6-20%領域には大量にあります。2-6%領域が空白なのも含めて、何かしら理由があるはずです。

2.誤差率0-2%になる秘密

誤差率がほぼゼロといってもいい0-2%領域にあるサンプル整数には共通点がありました。操作末尾の数値がすべて2の高次累乗数になっていたのです。

211107-2 誤差率2%のデータ - コピー

2,4,8,16,32,64,128という操作②を行わなくていいサンプル7個の誤差率はもちろん0%です。問題は操作②を含むサンプルの操作末尾です。

2の累乗数の内訳は6乗が3個、8乗が29個、10乗が61個、16乗が3個でした。8乗と10乗が殆どを占めていて、256と1024から1まで操作①が続くと、誤差が大きく生じてくる100以下の数値領域で操作②を行わずに済みます。その結果、誤差率が0-2%に抑えられたと考えられます(誤差率は6ー20%のサンプルは100以下の数値領域で複数回操作②を通っていました)。ちなみに、各サンプルの誤差率の範囲は次の通りでした。

 8乗サンプル:0.39ー1.00%
10乗サンプル:0.098ー0.798%
16乗サンプル:0.0017%ー0.0089%

( 'ω' ).。oO( 16乗の誤差ってあって無いようなもんですね、65536から一気に1まで減りますからねぇ

操作②の逆操作(1を引いて3で割る)をすれば分かりますが、小数点の数字になるため2の奇数乗は操作②で作ることができません。あるのは2の奇数乗そのものの1サンプルだけです。必然的に、2の偶数乗のデータがばらけてヒットするものだと予想していましたが、12乗・14乗のサンプルは1個も出現しませんでした。理由は分かりませんが、これは興味深い結果ですね。

3.いろんなサンプル整数の誤差率の推移

誤差率は数値操作中どんな挙動をしているのでしょうか。

211107-3 誤差率推移ざっくばらん - コピー

ノーマルグラフにすると操作末尾の方が急激に立ち上がるだけになってしまうので片対数グラフにしました。操作②を行うたびに誤差が累積して上昇していく様子が見られます。サンプル整数が大きくなるに伴って操作回数も大きくなる傾向がありますね。

あとは、10^2スケールなら誤差1%レベル、10^1スケールなら誤差10%レベルというように、操作②の+1によって生じる誤差は操作中数値の逆数に応じたレベルで発生しています。

4.なんか平べったいところの意味は?

1兆台という巨大な整数を使うと色々な操作回数のサンプルに分かれます。分かりやすい様に操作回数がおよそ100回ずつ離れたサンプルで誤差率をプロットしてみましょう。

211107-4 1兆台サンプルの誤差率推移 - コピー

操作回数が多いサンプルほど矢印で指しているような平地が出現しました。これはおそらく誤差率が全然増えないほどに操作中の数値が膨れ上がっていることを意味しているのでしょう。

例えば、矢印が指す平地の領域では操作中の数値をExcelで見てみたところ10^6~10^10スケールで推移し続けていました。この場合、操作②の+1による誤差率は10^(-5)~10^(-9)となるので、これを10^(-4)スケールで表現したら0.1以下の上昇分にしかなりません。その結果、あたかも平らに見えるような領域ができたものと思われます。

以上、素人が本筋とは違うことを調べてみた件でした( 'ω' )

「ためになるわ」と感じて頂ければサポートを頂ければ幸いです。よろしくお願いいたします。