fibtophi ..... Fibonacci 数列の一般項を出力する関数

方程式 X2 - X - 1 = 0 の解を考える:

(%i1) solve(X^2 - X - 1 = 0, X);

                       sqrt(5) - 1      sqrt(5) + 1
(%o1)           [X = - -----------, X = -----------]
                            2                2
負の解を ψ、正の解を φ と置くと、Fibonacci 数列(cf. fib)の一般項 Fn は、

Fn = (φn - ψn) / sqrt(5)

で与えられる。この事実は Binet の定理と呼ばれ、数学的帰納法によって容易に示せる(ただし、最初の発見者は Abraham de Moivre とのこと)。この一般項は、sqrt(5) = 2φ - 1 と表されることと、解と係数の関係より(あるいは直接的に)φ + ψ = 1 を満たすことから、

Fn = (φn - ψn) / sqrt(5) = {φn - (1 - φ)n} / (2φ - 1)

と変形出来る。この形の一般項を出力するのが、関数 fibtophi である。

(%i2) fibtophi(fib(n));

                             n             n
                         %phi  - (1 - %phi)
(%o2)                    -------------------
                             2 %phi - 1
なお、ココに現れた定数 %phi (= φ) を色々な計算に利用する場合の手引きがマニュアルに書いてある。すなわち、
(%i3) tellrat(%phi^2 - %phi - 1)$

(%i4) algebraic: true$
と宣言しておけば、以下例えば
(%i5) ratsimp(%phi^2);

(%o5)                         %phi + 1
の要領で簡易化してくれる。

補足 全くの余談だが、φ-1 = - ψ、ψ-1 = - φ が成り立つことを用いると、Fn の一般項の式からマニュアル(の関数 fib の所)に載っている関係式

F-n = (-1)n+1 Fn

を導くことが出来る。