数学の具体的な計算にMaximaを使って、数学もMaximaも同時に学んでしまいましょう。今回は黄金数を題材に、その性質をMaximaを使って調べてみたいと思います。
なお、今回の記事は過去記事
で扱った連分数の計算にモチベートされてまとめてみたものです。あわせて読んでいただければさいわいです。
連分数
以下の過去記事
のなかで、Maximaを使って連分数を求める方法を紹介しました。そこで得られた結果に、無理数 の連分数が
で与えられる、というものがありました。それでは、連分数の因子にある を に置き換えた数はどんな値になるでしょうか?つまり
はどんな数でしょうか?ここで の連分数を求めるときに、方程式
が本質的だったことを思い出します。つまり、この方程式は に関する自己無撞着で再起的な関係式とみなせて、右辺の に、再び右辺を代入し、これを繰り返すことで上の連分数が求められたのでした。そこで、いま考えている数については、考えるべき方程式が
で与えられることがわかります。
黄金数
上の方程式の分母を払って移項すれば、結局2次方程式
に他ならないことがわかります。解の公式、あるいはMaximaの計算
solve(t^2+t-1=0, t);
から、その解は
であり、いま考えている数は
で、正の数であることから
であること、すなわち
であることがわかります。実はこの数は黄金数と呼ばれる数です。
ここでは黄金数を と表すことにしましょう。すなわち
です。実際 の連分数を求めてみると(Maximaの実装の詳細については過去記事を読んでください)
kill(all)$ algebraic: ture$ Int(x):=fix(x)$ P(x):=x-Int(x)$ Cf(x,N):= block( f[0]: x, I[0]: Int(f[0]), p[0]: P(f[0]), n:1, while n < N do( f[n]: rat(1/P(p[n-1])), I[n]: Int(f[n]), p[n]: P(f[n]), n: if p[n] = 0 then block(n_max: n, n+2*N) else if n = N-1 then n+1 else block(n_max: N-1, n +1) ), makelist(I[n],n,0, n_max) )$
から
Cf((sqrt(5)+1)/2, 20);
によって確認できます。あるいはより具体的な数値としては
float((sqrt(5)+1)/2);
より
です。
黄金数の性質
黄金数の面白い性質としては以下の関係式があります。
これはMaximaで以下のように確認できます。
phi: (sqrt(5)+1)/2$ algebraic: true$ /* 分母を有理化するためのフラグです */ rat(1/phi);
したがって の満たすべき方程式が、 を で置き換えた
すなわち
であることがわかります。実際
solve(p^2-p-1=0, p);
の正の解が黄金数 を与えます。
フィボナッチ数列との関係
過去記事
で扱ったように、漸化式
から定まる数列について、その各項をMaximaで求めると
F[n]:=F[n-1]+F[n-2]$ F[0]: 0$ F[1]: 1$ makelist(F[n], n, 0, 10);
より、その数列は
と求まります。この漸化式によって定まる数列をFibonacci(フィボナッチ)数列といいます。さて、このフィボナッチ数列と黄金数との関係ですが、隣接する2項の比の極限が黄金数に一致します。
実際、
R[n]:=float(F[n]/F[n-1])$ makelist(R[n], n, 2, 10);
などと計算され、50項目くらいで計算精度の範囲で黄金数と一致します。
float(R[50]/phi);
さて、このようになる理由ですが、漸化式から
したがって数列 に関する特性多項式が
すなわち
であり、黄金数 の満たすべき方程式に一致することがわかります。また、構成法から数列 は負ではあり得ないので、結局、数列の極限が黄金数であることが示されます。
この記事の解説を一般化したような記事がWikipediaの「貴金属比」のページ
です。Maximaを使って他の貴金属比について同様の計算を調べてみるのも面白いと思います。
ちなみに、最初に述べた無理数 に関連して、その連分数から
であり、綺麗な形をしていることがわかります。これは貴金属数のひとつである白銀数に他なりません。