項数(何項目まで求めるか)を入力して「計算する」を押してください。フィボナッチ数列(1, 1, 2, 3, 5, 8, …)の先頭の項・第n項・初項から第n項までの和をまとめて計算します。
このページでできること
- 項数(何番目まで求めるか)を1つ入れるだけで、フィボナッチ数列(1, 1, 2, 3, 5, 8, 13, …)の第 \(n\) 項と、初項から第 \(n\) 項までの和がまとめて求められます
- 「フィボナッチ数列の20番目の数は? 20番目まで全部足すといくつ?」のような問題にそのまま使えます
- 第1000項(209桁の数)まで、1桁も欠けない正確な値で計算できます
- 「直前の2つの項を足すと次の項になる」というフィボナッチ数列の増え方を、計算結果と一緒にグラフでも確認できます
- 式(漸化式)のやさしい解説・Excel/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
フィボナッチ数列は「直前の2項を足す」という単純な規則で書けるため、プログラミング入門で繰り返し処理や再帰(関数が自分自身を呼び出す書き方)を学ぶ定番の教材になっています。同じ答えでも書き方によって計算の速さが大きく変わる(素朴な再帰では第50項の計算に膨大な回数がかかる)ことを体感できるため、アルゴリズムの授業でもよく使われます。
名前が付いたデータ構造(フィボナッチヒープ)や探索法(フィボナッチ探索)もあり、コンピュータ科学の基礎用語の一つです。
フィボナッチ数列のとなり合う項の比(後ろ ÷ 前)は、項が進むほど黄金比 \(\varphi = 1.618\cdots\) に近づくことが数学的に証明されています。実際、\(55 \div 34 \fallingdotseq 1.6176\)、\(89 \div 55 \fallingdotseq 1.6182\) と、第10項あたりですでに小数第2位まで一致します。
黄金比は、名刺の縦横比が黄金比に近いと言われるなど、調和のとれた比としてデザインで意識されることがあり、「整数の足し算だけの数列から黄金比が現れる」のはフィボナッチ数列の一番美しい性質です。
フィボナッチ数列は、13世紀のイタリアの数学者フィボナッチが著書『算盤の書』で紹介した「生まれたばかりの1つがいのウサギが、生まれて2か月たつと毎月1つがいずつ子を産むようになるとすると、つがいの数は毎月どうなるか」という問題に由来します。月ごとのつがいの数がちょうど 1, 1, 2, 3, 5, 8, …と増え、12か月目には144つがいになります。
もちろん実際のウサギがこの通りに増えるわけではない理想化したモデルですが、「今の量が、少し前の量に応じて増える」現象を数列でとらえる考え方の原点になりました。
ソフトウェア開発のアジャイル開発では、作業量の見積もりに 1, 2, 3, 5, 8, 13, …というフィボナッチ数列(を元にした数)を使う慣行が広く普及しています(ストーリーポイントと呼ばれます)。
数が大きくなるほど間隔が開くので、「大きい作業ほど正確には見積もれない」という現実に合っており、「8と9のどちらか」のような無意味に細かい議論を避けられるためです。
ヒマワリの種の並びの螺旋の本数(右巻き34本・左巻き55本など)や、松ぼっくり・パイナップルのうろこ状の並びの螺旋の本数が、フィボナッチ数(8, 13, 21, 34, 55, …)になっている例が数多く報告されています。新しい芽や種が「すでにある部分と重ならない向き」に付いていく成長の仕組みから、この並びが現れやすいと説明されています。
ただし、すべての植物・個体がそうなるわけではなく、「フィボナッチ数になっている例が多く見つかる」という傾向として知られています。身近な植物で螺旋を数えてみると、この数列に出会えるかもしれません。
式とグラフ
用語・記号の解説
記号
| \(n\) | エヌ | 項数。何番目の項まで考えるかを表す正の整数です。「第10項まで」なら \(n = 10\) です。 |
| \(a_n\) | エー・エヌ | 第 \(n\) 項。数列の \(n\) 番目の数です。右下の小さい文字(添え字)が「何番目か」を表します。フィボナッチ数列では \(a_1 = 1,\ a_2 = 1,\ a_3 = 2,\ a_4 = 3, \cdots\) です。 |
| \(a_{n-1}\) | エー・エヌ引くいち エー・エヌマイナスいち | 第 \(n\) 項の直前の項(1つ前の項)。第10項にとっての第9項です。添え字の中の引き算は「番号が1つ前」という意味です。 |
| \(a_{n-2}\) | エー・エヌ引くに エー・エヌマイナスに | 第 \(n\) 項の2つ前の項。第10項にとっての第8項です。 |
| \(a_{n+2}\) | エー・エヌ足すに エー・エヌプラスに | 第 \(n\) 項の2つ先の項。第10項にとっての第12項です。初項から第 \(n\) 項までの和は、この項から \(1\) を引いた値に一致します。 |
| \(S_n\) | エス・エヌ | 初項から第 \(n\) 項までの和。\(a_1 + a_2 + \cdots + a_n\) をまとめて表した記号で、英語の sum(和)の頭文字です。 |
| \(\varphi\) | ファイ | 黄金比を表す記号。\(\varphi = \dfrac{1 + \sqrt{5}}{2} = 1.618\cdots\) という値で、フィボナッチ数列のとなり合う項の比(後ろ ÷ 前)は、項が進むほどこの値に近づいていきます。 |
| \(\cdots\) | てんてんてん(三点リーダー) | 「同じ規則で続く」ことを表す記号。1, 1, 2, 3, 5, 8, …と書いたら「このあとも直前の2項を足す規則で続く」という意味です。 |
用語
| 数列 | すうれつ | 数を一列に並べたもの。並んでいる1つ1つの数を「項」と呼びます。高校の数学Bで学ぶ単元です。 |
| フィボナッチ数列 | フィボナッチすうれつ | 最初の2項を1, 1として、そのあとは「直前の2つの項を足すと次の項になる」規則で続く数列。1, 1, 2, 3, 5, 8, 13, 21, …と続きます。13世紀のイタリアの数学者フィボナッチが著書で紹介した「ウサギのつがいの増え方」の問題に由来します。並んでいる1つ1つの数は「フィボナッチ数」と呼ばれます。 |
| 項 | こう | 数列に並んでいる1つ1つの数。最初から順に第1項、第2項、…と呼びます。 |
| 初項 | しょこう | 数列の一番最初の項。第1項のことです。フィボナッチ数列(このページの数え方)では1です。 |
| 漸化式 | ぜんかしき | 「前の項から次の項を決めるルール」の形で数列を表した式。フィボナッチ数列の漸化式は \(a_n = a_{n-1} + a_{n-2}\) です。高校の数学Bで学びます。 |
| 初期条件 | しょきじょうけん | 漸化式とセットで与える「最初の項の値」の約束。フィボナッチ数列では \(a_1 = 1,\ a_2 = 1\) が初期条件で、これが無いと漸化式だけでは数列が決まりません。 |
| 黄金比 | おうごんひ | \(1 : \dfrac{1 + \sqrt{5}}{2}\)(約 \(1 : 1.618\))という比。古くから調和のとれた比とされ、記号 \(\varphi\)(ファイ)で表します。フィボナッチ数列のとなり合う項の比は、項が進むほど黄金比に近づくことが数学的に証明されています。 |
| 一般項 | いっぱんこう | 第 \(n\) 項を \(n\) の式で表したもの。フィボナッチ数列にも黄金比 \(\varphi\) を使った一般項(ビネの公式と呼ばれます)がありますが、\(\sqrt{5}\) を含むやや複雑な式なので、値を求めるだけなら漸化式で順番に足していく方が確実です。 |
| 等差数列 | とうさすうれつ | 隣り合う項の差がいつも同じ数列。5, 8, 11, 14, …(毎回3を足す)のような数列です。「決まった数」を足すのが等差数列、「直前の2つの項」を足すのがフィボナッチ数列です。 |
| 等比数列 | とうひすうれつ | 隣り合う項の比がいつも同じ数列。3, 6, 12, 24, …(毎回2を掛ける)のような数列です。フィボナッチ数列は等比数列ではありませんが、項が進むと「約1.618倍ずつ」というほぼ一定の比率で増えるようになり、等比数列に近いふるまいをします。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
つまずいたら、この表の内容に戻って復習するのが近道です。
| 整数の足し算・筆算(小学2〜3年) |
|
| 変わり方の決まり・数の並び(小学4〜6年) |
|
| 文字と式(中学1年) |
|
| 数列の記号(高校 数学B) |
|
Excelで計算する方法
| 第1項 | 1 |
| 第2項 | 1 |
| 第3項 | =B1+B2 |
| 第4項 | =B2+B3 |
| 第5項 | =B3+B4 |
| 第6項 | =B4+B5 |
| 第7項 | =B5+B6 |
| 第8項 | =B6+B7 |
| 第9項 | =B7+B8 |
| 第10項 | =B8+B9 |
| 第1項 | 1 |
| 第2項 | 1 |
| 第3項 | =B1+B2 |
| 第4項 | =B2+B3 |
| 第5項 | =B3+B4 |
| 第6項 | =B4+B5 |
| 第7項 | =B5+B6 |
| 第8項 | =B6+B7 |
| 第9項 | =B7+B8 |
| 第10項 | =B8+B9 |
| 初項から第10項までの和 | =SUM(B1:B10) |
1つ目の表ならB10に55(第10項)、2つ目の表ならB11に143(第10項までの和)と表示されます。もっと先の項が知りたいときは、一番下の「=B8+B9」のセルを選んで、セル右下の小さい四角を下へドラッグすると、同じ規則の式が続きます(漸化式「直前の2項を足す」がそのままセルの式になっています)。
Googleスプレッドシートで計算する方法
| 第1項 | 1 |
| 第2項 | 1 |
| 第3項 | =B1+B2 |
| 第4項 | =B2+B3 |
| 第5項 | =B3+B4 |
| 第6項 | =B4+B5 |
| 第7項 | =B5+B6 |
| 第8項 | =B6+B7 |
| 第9項 | =B7+B8 |
| 第10項 | =B8+B9 |
| 第1項 | 1 |
| 第2項 | 1 |
| 第3項 | =B1+B2 |
| 第4項 | =B2+B3 |
| 第5項 | =B3+B4 |
| 第6項 | =B4+B5 |
| 第7項 | =B5+B6 |
| 第8項 | =B6+B7 |
| 第9項 | =B7+B8 |
| 第10項 | =B8+B9 |
| 初項から第10項までの和 | =SUM(B1:B10) |
Pythonで計算する方法
number_of_terms = 10 # 項数(第何項まで求めるか)
# フィボナッチ数列:最初の2項は1、そのあとは直前の2項の和
fibonacci = [1, 1]
while len(fibonacci) < number_of_terms:
fibonacci.append(fibonacci[-1] + fibonacci[-2])
fibonacci = fibonacci[:number_of_terms]
nth_term = fibonacci[-1] # 第n項
sum_of_terms = sum(fibonacci) # 初項から第n項までの和
print(f"数列の先頭: {fibonacci[:10]}")
print(f"第{number_of_terms}項: {nth_term}")
print(f"初項から第{number_of_terms}項までの和: {sum_of_terms}")
数式記述言語(LaTeX等)での書き方(コピペ可)
aₙ = aₙ₋₁ + aₙ₋₂
a_n = a_{n-1} + a_{n-2} \quad (n \geq 3,\ a_1 = a_2 = 1)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>a</mi><mi>n</mi></msub>
<mo>=</mo>
<msub><mi>a</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msub>
<mo>+</mo>
<msub><mi>a</mi><mrow><mi>n</mi><mo>−</mo><mn>2</mn></mrow></msub>
</mrow>
</math>
a_n = a_(n-1) + a_(n-2)
a[n] == a[n - 1] + a[n - 2]
a(n) := a(n - 1) + a(n - 2);
a(n) = a(n - 1) + a(n - 2);
a_n = a_(n-1) + a_(n-2)
Sₙ = aₙ₊₂ − 1
S_n = a_{n+2} - 1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>S</mi><mi>n</mi></msub>
<mo>=</mo>
<msub><mi>a</mi><mrow><mi>n</mi><mo>+</mo><mn>2</mn></mrow></msub>
<mo>−</mo>
<mn>1</mn>
</mrow>
</math>
S_n = a_(n+2) - 1
Fibonacci[n + 2] - 1
Sn := a(n + 2) - 1;
S_n = a(n + 2) - 1;
S_n = a_(n+2) - 1
ChatGPT に聞いて計算してもらう方法
あなたはフィボナッチ数列の計算アシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。フィボナッチ数列は a_1 = 1, a_2 = 1, a_n = a_(n-1) + a_(n-2)(n ≧ 3)で定義し、和は各項を実際に足し合わせて求めたうえで、性質 S_n = a_(n+2) - 1 と一致することも確認してください。 1. フィボナッチ数列の第10項と、初項から第10項までの和 2. フィボナッチ数列の第20項と、初項から第20項までの和 3. フィボナッチ数列の第50項と、第50項を第49項で割った値(黄金比1.6180…に近いことも確認) 計算に使った式と、実行結果の数値を示してください。
計算ドリル(演習問題)
このページの式を、自分の手で計算できるようになるための演習問題です。
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
