数論の未解決問題にコラッツ予想というものがあります。 「正の数nについて、nが偶数なら2で割り、nが奇数なら3*n+1する」 このルールのもとでどんな数も必ず4->2->1のループにたどり着く というのがコラッツ予想です。 世界中の数学者が挑んでも解けない難問ですので これを解くことはしませんが、 かわりに、maximaの力を使ってnが未知数のままの 系統樹(コラッツ樹)を求めてみようというのが このページのテーマです。 以下がプログラムmaximaを使えば結構短く済むものです。 ちょっと改良して別の数式で試したりいろいろと遊んでみてください。コラッツ樹
clz(x):=if x=1 then [1] else if mod(x,2)=0 then cons(x,clz(x/2)) else cons(x,clz(3*x+1)); c1(x):=ratsimp(x/2); c2(x):=ratsimp(3*x+1); evenf(x,n):=if n=0 then [c1(x),c2(x)] else flatten([c1(evenf(x,n-1)),c2(oddf(x,n-1))]); oddf(x,n):=if n=0 then c1(x) else c1(evenf(x,n-1)); col(x,n):=evenf(x,n-1); col(x,2); col(x,3); col(x,4);