コラッツの問題とは、xが偶数なら2で割り、奇数ならば3倍して1をプラスする。
これを繰り返してやると「1」になる。いかなる自然数も「1」になるという予想でもある。日本では掛谷の問題という人もおります。現代数学はこの予想を解けるほど成熟していないと断言した数学者もいる。
本件では二次元でそれを実装してみた。 二次元で自然数のペアを与えて、各々にコラッツの処理を施することを反復する。ここでは片方の数が「1」になったところで停止としよう。
{112, 185}を初期値の自然数対とするとMathematicaでは下記のように書き下せる。
NestWhileList[collatzT[#] &, {112, 185}, Not[#1 == 1 || #2 == 1] &]
collatzTは引数が偶数なら2で割り、奇数ならば3倍して1をプラスする関数(純関数)である。
NestWhileListは関するを反復して適用し、その計算履歴をすべて残す関数であります。
上記の初期値ではこうなりますです。
{{112, 185}, {56, 278}, {28, 139}, {14, 209}, {7, 314}, {11, 157}, {17, 236}, {26, 118}, {13, 59}, {20, 89}, {10, 134}, {5, 67}, {8, 101}, {4, 152}, {2, 76}, {1, 38}}
隣接する自然数や単純な関係をもつ自然数の対を同時にコラッツ点列に変換することで何らかの相互関係がビジュアル的に映し出せないか...。ということで〜、 自分の見たいのは上記の点列の姿であります。
しかしながら、このままだと{145, 175}のケースでは見づらくなる。
なもので、両対数グラフにしておこう。
準備を終えたので、いくつか試行してみよう。
{451, 534}のケース
幾つかの初期値を組み合わせることもできる。
{451, 534},{452, 535}, {453, 536}, {454, 537}のように4つの連続的な対を初期値セットとする。
以下の大きな自然数の5ペアではどうなるだろうか。
{1550, 2633},{1551, 2634}, {1552, 2635}, {1553, 2636}, {1554, 2637}
さらに、{7550, 6633}, {7551, 6634},{7552, 6635}, {7553, 6636}, {7554, 6637}, {7555, 6638}と大きくする。6個のペアであります。
原点に向かう傾向はおなじで有ります。決定論的な手順だけども、各々の初期値によって異なる経路を辿るのは、古代の原子論でいえばルクレティウスのクリナーメンみたいに思えます。
おまけ0
{2k,2k+j}で、kは10から22までの固定でCollatz点列を13本生成し、jを1から60まで動かしたアニメだ。
おまけ1
{3k,3k+j}で、kは10から22までの固定でCollatz点列を13本生成し、jを1から60まで動かしたアニメだ。
おまけ2
{4k,4k+j}で、kは10から22までの固定でCollatz点列を13本生成し、jを1から60まで動かしたアニメだ。
関連記事 『コラッツの問題の二次元化』
参考図書
- 作者: リチャード・K.ガイ,Richard K. Guy,金光滋
- 出版社/メーカー: 朝倉書店
- 発売日: 2010/11/01
- メディア: 単行本
- この商品を含むブログ (1件) を見る