2022年度計算機演習A・B

第5回:フィボナッチ数列

1. フィボナッチ数列とは

フィボナッチ数列(Fibonacci sequence)は、イタリアの数学者レオナルド・フィボナッチの名前に因んだ有名な数列であり、次の漸化式で定義されます。

$$ \begin{gathered} F_1=1,\\ F_2=1,\\ F_n=F_{n-2}+F_{n-1}\quad (n\geq 3) \end{gathered} $$

(※初項を $0$ にする場合もあります。)

フィボナッチ数列を実際に書き下すと、次の通りです。

$$ 1,1,2,3,5,8,13,21,34,55,\ldots $$

演習1

フィボナッチ数列の第1項から第20項までを要素に持つリストを作成し、そのグラフを描画してください。

2. 関数の再帰的定義

第3回の授業では、Pythonにおける関数定義の方法について説明しました。

次のコードに示すように、関数定義の中では別の関数を呼び出して利用することができます。

関数定義の中では、自分自身を呼び出して利用することもできます。これを関数の再帰的定義(recursive definition)と呼びます。

例えば、

$$ \begin{gathered} 1!=1,\\ n!=n\times(n-1)!\quad (n\geq 2) \end{gathered} $$

を用いることで、自然数 $n$ に対して階乗 $n!$ を返す関数factorialを次のように定義することができます。

演習2

関数の再帰的定義によって、自然数 $n$ に対してフィボナッチ数列の第 $n$ 項を返す関数fibonacciを定義してください。定義した関数を呼び出す例も付けてください。

3. フィボナッチ数列と黄金比の関係

黄金比(golden ratio)は、「人間が最も美しく感じる」と考えられている比率であり、

$$ 1:\frac{1+\sqrt{5}}{2} $$

あるいは、ここに現れる数

$$ \varphi=\frac{1+\sqrt{5}}{2}=1.618\cdots $$

のことです($\varphi$ を黄金数と呼ぶ場合もあります)。

フィボナッチ数列と黄金比の間には、深い関係があります。

その関係を示す一つの性質として、次の式が成り立つことが知られています。

$$ \lim_{n\to\infty}\frac{F_{n+1}}{F_n}=\varphi $$

演習3

次の式で定まる数列 $\{Q_n\}$ に対して第1項から第19項までを用いてグラフを描画することによって、上記の性質を確認してください。

$$ Q_n=\frac{F_{n+1}}{F_n} $$

演習4(オプション)

フィボナッチ数列に関する上記以外の性質をインターネット等で一つ調べ、プログラミングによってその性質を確認してください。

(調べた性質の内容をMarkdownとして書く)

第5回レポート課題

演習1~演習4に取り組んでください。