請輸入項數(要算到第幾項),再按「計算」。會一次算出費氏數列(1, 1, 2, 3, 5, 8,…)的前幾項、第 n 項,以及從首項到第 n 項的和。
這個頁面可以做什麼
- 只要輸入一個數:項數(要算到第幾項),就能一次求出費氏數列(1, 1, 2, 3, 5, 8, 13,…)的第 \(n\) 項,以及從首項到第 \(n\) 項的和
- 像「費氏數列的第 20 個數是多少?前 20 個全部加起來是多少?」這類問題,可以直接用來解答
- 最多可以算到第 1000 項(209 位數),每一位數都是精確值
- 除了計算結果,還能用圖表看到費氏數列「前兩項相加就是下一項」的增加方式
- 這個頁面還整理了公式(遞迴關係式)的淺顯解說,以及可直接複製到 Excel、Google 試算表、Python 使用的公式
這個計算有什麼用?
費氏數列的規則很簡單:「把前兩項相加」,因此是程式設計入門學習迴圈和遞迴(呼叫自己的函數)的經典題材。同樣的答案,會因為程式的寫法不同,花費的時間天差地遠(單純用遞迴算到第 50 項,需要非常多次的呼叫),所以在演算法課程中也很常見。
還有以它命名的資料結構(費氏堆積)和搜尋方法(費氏搜尋),是資訊科學的基本題材之一。
數學上已證明,費氏數列相鄰兩項的比(後項 ÷ 前項),越往後越接近黃金比例 \(\varphi = 1.618\cdots\)。實際上 \(55 \div 34 \approx 1.6176\)、\(89 \div 55 \approx 1.6182\),到第 10 項左右,小數點以下 2 位就已經一致。
黃金比例被視為和諧的比例,有時會用在設計上,例如常有人說信用卡的長寬比很接近黃金比例。只靠整數相加做出來的數列,竟然會出現黃金比例,這正是費氏數列最美妙的性質。
費氏數列源自 13 世紀義大利數學家費波那契的著作《計算之書》(Liber Abaci)中的問題:「一對剛出生的兔子,從出生後第 2 個月起,每個月都會生下一對新的兔子。每個月的兔子對數會怎麼變化?」每個月的對數依 1, 1, 2, 3, 5, 8,…增加,到第 12 個月會有 144 對。
當然,真正的兔子並不會完全照這樣繁殖,這是理想化的模型。不過,它成為用數列描述「數量的增加取決於稍早之前的數量」的起點。
在敏捷軟體開發中,常用以費氏數列為基礎的數字,例如 1, 2, 3, 5, 8, 13,…(稱為故事點)來估算工作量。
數字越大,間隔也越大,這符合「工作越大越難精確估算」的實際情況,也能避免「這是 8 還是 9?」這種過度細瑣的爭論。
有許多例子顯示螺旋的條數是費氏數(8, 13, 21, 34, 55,…),例如向日葵種子排列的螺旋(例如一個方向 34 條、另一個方向 55 條),以及松果、鳳梨鱗片的螺旋。這可以用植物的生長方式來解釋:新的芽和種子會朝著不和既有部分重疊的方向長出來。
不過,並不是所有植物、所有樣本都符合,這是「很多例子剛好是費氏數」的傾向。不妨數數看身邊植物的螺旋,說不定就會遇見這個數列。
公式與圖表
符號與用語解說
符號
| \(n\) | n | 項數。表示要考慮到第幾項的正整數。「到第 10 項」就是 \(n = 10\)。 |
| \(a_n\) | a 下標 n | 第 \(n\) 項,也就是數列的第 \(n\) 個數。右下角的小字(下標)表示「第幾個」。在費氏數列中,\(a_1 = 1,\ a_2 = 1,\ a_3 = 2,\ a_4 = 3, \cdots\)。 |
| \(a_{n-1}\) | a 下標 n 減 1 | 第 \(n\) 項的前一項。對第 10 項來說,就是第 9 項。下標裡的減法表示「編號往前一個」。 |
| \(a_{n-2}\) | a 下標 n 減 2 | 第 \(n\) 項的往前第 2 項。對第 10 項來說,就是第 8 項。 |
| \(a_{n+2}\) | a 下標 n 加 2 | 第 \(n\) 項的往後第 2 項。對第 10 項來說,就是第 12 項。從首項到第 \(n\) 項的和,等於這一項減 \(1\)。 |
| \(S_n\) | S 下標 n | 從首項到第 \(n\) 項的和,是把 \(a_1 + a_2 + \cdots + a_n\) 簡寫的符號。S 取自英文 sum(和)的第一個字母。 |
| \(\varphi\) | phi | 表示黃金比例的符號,值為 \(\varphi = \dfrac{1 + \sqrt{5}}{2} = 1.618\cdots\)。費氏數列相鄰兩項的比(後項 ÷ 前項),越往後越接近這個值。 |
| \(\cdots\) | 刪節號 | 表示「依同樣的規則繼續下去」的符號。寫成 1, 1, 2, 3, 5, 8,…就表示「之後也依前兩項相加的規則繼續」。 |
用語
| 數列 | 把數依順序排成一列。排在其中的每一個數稱為「項」。 |
| 費氏數列 | 最前面兩項是 1, 1,之後依「前兩項相加就是下一項」的規則延續的數列:1, 1, 2, 3, 5, 8, 13, 21,…。也稱為費波那契數列,源自 13 世紀義大利數學家費波那契(Fibonacci)在著作中介紹的「兔子繁殖」問題。其中的每一個數稱為費氏數。 |
| 項 | 數列中的每一個數。從最前面開始,依序稱為第 1 項、第 2 項、…。 |
| 首項 | 數列最前面的一項,也就是第 1 項。在費氏數列(本頁的數法)中是 1。 |
| 遞迴關係式 (遞迴式) |
用「由前面的項決定下一項的規則」來表示數列的式子。費氏數列的遞迴關係式是 \(a_n = a_{n-1} + a_{n-2}\)。在高一的「數列與級數」中學到。 |
| 初始條件 | 和遞迴關係式一起給定的「最前面幾項的值」。費氏數列的初始條件是 \(a_1 = 1,\ a_2 = 1\),少了它,光靠遞迴關係式無法決定數列。 |
| 黃金比例 | \(1 : \dfrac{1 + \sqrt{5}}{2}\)(約 \(1 : 1.618\))這個比,也稱為黃金比。自古以來被視為和諧的比例,用符號 \(\varphi\)(phi)表示。數學上已證明,費氏數列相鄰兩項的比,越往後越接近黃金比例。 |
| 一般項 | 把第 \(n\) 項寫成 \(n\) 的式子。費氏數列也有使用黃金比例 \(\varphi\) 的一般項(稱為比內公式),但它含有 \(\sqrt{5}\),式子稍微複雜,如果只是要求值,用遞迴關係式依序相加比較可靠。 |
| 等差數列 | 相鄰兩項的差永遠相同的數列,例如 5, 8, 11, 14,…(每次加 3)。加上「固定的數」是等差數列,加上「前兩項」則是費氏數列。 |
| 等比數列 | 相鄰兩項的比永遠相同的數列,例如 3, 6, 12, 24,…(每次乘 2)。費氏數列不是等比數列,但越往後,會以「每次約 1.618 倍」這個幾乎固定的比率增加,表現得很像等比數列。 |
建議先了解的基礎知識
為了能「理解意義」地使用本頁的計算,這裡整理了建議先了解的基礎知識。
遇到困難時,回頭複習這張表的內容是最快的方法。
| 整數的加法與直式計算(國小二~三年級,7~9 歲) |
|
| 數量的規律(國小四~六年級,9~12 歲) |
|
| 以符號代表數(國中七年級,12~13 歲) |
|
| 數列的記號與遞迴關係式(國中八年級~高一,13~16 歲) |
|
用 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) |
第一個表格的 B10 會顯示 55(第 10 項),第二個表格的 B11 會顯示 143(到第 10 項的和)。想知道更後面的項,選取最下面「=B8+B9」的儲存格,把右下角的小方塊往下拖曳,就會依同樣的規則延續下去(儲存格的公式正是「前兩項相加」這個遞迴關係式)。
用 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 # 項數(要算到第幾項)
# 費氏數列:最前面兩項是 1,之後每一項都是前兩項的和
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) # 第 1 項到第 n 項的和
print(f"前幾項:{fibonacci[:10]}")
print(f"第 {number_of_terms} 項:{nth_term}")
print(f"第 1 項到第 {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 項,以及第 1 項到第 10 項的和 2. 費氏數列的第 20 項,以及第 1 項到第 20 項的和 3. 費氏數列的第 50 項,以及第 50 項除以第 49 項的值(也確認它接近黃金比例 1.6180…) 請列出計算時使用的公式,以及執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權