Holograph1c Attract0r

日々の数学やプログラミングに関係する話。

フィボナッチ数の総和は -1 である

数列 (F_n)_{n \geq 0} を以下のような漸化式で定義します。

\begin{align}
F_0 &= 0 \\
F_1 &= 1 \\
F_{n+2} &= F_{n+1} + F_n
\end{align}

このとき、数列 (F_n) のことをフィボナッチ数列と呼ぶのでした*1

今日は、このフィボナッチ数列について書きたいと思います。

数列の母関数の話

ある数列 (a_n) について調べたいと思ったときに、それを直接見るよりも母関数というやつを考えた方が分かりやすい場合があります。

母関数とは、以下のように定義されるべき級数のことです*2
(数列 (a_n) の母関数を f(x) と呼ぶことにします。)

\begin{align}
f(x) = a_0 + a_1 x + a_2 x^2 + a_3 x^3 + \cdots = \sum_{n=0}^{\infty} a_n x^n
\end{align}

このように、形式的に数列の各項を係数として持つような関数を作ります。難しいことは一切ありません。数列の情報を含むような関数を考えるわけです。

同じように、フィボナッチ数列の母関数も考えてみます。
母関数の定義から、フィボナッチ数列の母関数を F(x) と書くと以下のようになるはずです。

\begin{align}
F(x) = F_0 + F_1 x + F_2 x^2 + F_3 x^3 + \cdots = \sum_{n=0}^{\infty} F_n x^n \tag{1}
\end{align}

一般に、母関数は数列の一般項を求めるときに使われたりします。フィボナッチ数列の母関数を考える、といったときも大抵その文脈でされるものですが、今回は総和を求めるために使ってみます。(やっとタイトルの流れに入れます……)

まず、べき級数の形のままだと扱いにくいので F(x) を閉じた式で表示したいと思います。

\begin{align}
F(x) &= F_0 + F_1 x + F_2 x^2 + F_3 x^3 + F_4 x^4 + \cdots \tag{2} \\
x F(x) &= F_0 x + F_1 x^2 + F_2 x^3 + F_3 x^4 + F_4 x^5 + \cdots \tag{3} \\
x^2 F(x) &= F_0 x^2 + F_1 x^3 + F_2 x^4 + F_3 x^5 + F_4 x^6 + \cdots \tag{4}
\end{align}

ここで、フィボナッチ数列の定義式より F_{n+2} - F_{n+1} - F_{n} = 0 が言えるのでこの形をつくるために(2) - (3) - (4)をします。

\begin{align}
(1 - x - x^2) F(x) = F_0 + (F_1 - F_0) x + (F_2 - F_1 - F_0) x^2 + \cdots
\end{align}

これにより、2次以上の項の係数が全て0になるので最終的にこうなります。

\begin{align}
F(x) = \frac{x}{1 - x - x^2}
\end{align}

これが、フィボナッチ数列の母関数です。

こんな簡潔な式にフィボナッチ数列の情報が全て詰まってるというのも、なかなか面白いですね。

さて、閉じた式が求まったので扱いやすくなった訳です。
そして、この関数に x=1 を代入すれば総和が求まりそうだ、となるのですが残念ながらそれはまだできません。というのも、x=1 というのが上の母関数の収束半径から外れてしまっているためです。

総和として意味のある値を与えるためには、この母関数を複素関数の世界へ持ってくる必要があります。

複素解析、一致の定理、解析接続

では、ここからは実関数ではなく複素関数としてのフィボナッチ数列を見ていきましょう。上で求めた母関数 F の始域を \mathbb{R} から \mathbb{C} として、記号も \hat{F} とします。

\begin{align}
\hat{F}(z) = \frac{z}{1 - z - z^2}
\end{align}

ただ形式的に色々変えただけですが、これで立派な複素関数です。

もとの定義式も複素関数化して書いておきます。

\begin{align}
F(z) = F_0 + F_1 z + F_2 z^2 + F_3 z^3 + \cdots = \sum_{n=0}^{\infty} F_n z^n
\end{align}

さて、これら関数 F , \hat{F} はべき級数によって表現されるため明らかに解析関数であり、また正則関数であると言えます。

今、わたしたちは関数 F の定義域を広げたかったわけですが、言うまでもなく F の定義域内での F , \hat{F} の振る舞いは全く一致しています。

従って、\hat{F}F を正則でない点(z^2 + z - 1 = 0 の解)を除いて複素数平面全体へ解析接続したものとなっているわけです。

 

これでようやく、総和(と言えそうなもの)を求めることができます。
z=1 をそれぞれの代入することにより、以下を式を得ることができますね。

\begin{align}
0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + \cdots = -1
\end{align}

ついでにこんな式も。

\begin{align}
0 - 1 + 1 - 2 + 3 - 5 + 8 - 13 + 21 - 34 + \cdots = -1
\end{align}

*1:初項が0ではなく1の場合も見ますが、こちらのほうが一般的です。

*2:母関数にも色々種類があるのですが、ここでは一番簡単なものを扱います。