フィボナッチ数

提供: testwiki
ナビゲーションに移動 検索に移動
フィボナッチ数を一辺とする正方形

フィボナッチ数(フィボナッチすう、テンプレート:Lang-en-short)は、イタリアの数学者レオナルド・フィボナッチ(ピサのレオナルド)に因んで名付けられたである。

概要

テンプレート:読み仮名 テンプレート:Math は、次の漸化式で定義される:

{F0=0F1=1Fn=Fn1+Fn2(n2)

第0~22項の値は次の通りである:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, …(テンプレート:OEIS

1202年にフィボナッチが発行した『算盤の書』(Liber Abaci) に記載されたことで「フィボナッチ数」と呼ばれているが、それ以前にもインドの学者であるヘーマチャンドラ (Hemachandra) が韻律の研究により発見し、書物に記したことが判明している[1][2]

兎の問題

レオナルド・フィボナッチは次の問題を考案した[3]

  • 1つがいの兎は、産まれて2か月後から毎月1つがいずつの兎を産む。
  • 兎が死ぬことはない。
  • この条件の下で、産まれたばかりの1つがいの兎は1年の間に何つがいの兎になるか?

つがいの数は次の表のようになる。どの月のつがいの合計も、その前の2つの月での合計の和となり、フィボナッチ数が現れていることが分かる。

産まれたばかりのつがい 生後1か月のつがい 生後2か月以降のつがい つがいの数(合計)
0か月後 1 0 0 1
1か月後 0 1 0 1
2か月後 1 0 1 2
3か月後 1 1 1 3
4か月後 2 1 2 5
5か月後 3 2 3 8
6か月後 5 3 5 13
7か月後 8 5 8 21
8か月後 13 8 13 34
9か月後 21 13 21 55
10か月後 34 21 34 89
11か月後 55 34 55 144
12か月後 89 55 89 233

一般項

フィボナッチ数列の一般項は次の式で表される[3]

Fn=15{(1+52)n(152)n}=φn(1φ)n5=φn(φ)n5

この式は1843年ビネ (テンプレート:Interlang) が発表したことからビネの公式と呼ばれるが、それ以前の1730年ド・モアブル)・1765年オイラー)にも発表されており、ビネは最初の発見者ではない。

なお、この式に現れる

φ=1+52=1.618033988749894

黄金数で、いくつかの数学的特徴がある。黄金数を作る二次方程式 テンプレート:Math2 の解を テンプレート:Math2 とすると、上記の一般項は

Fn=αnβnαβ=αnαβ+βnβα

と表せる。

また、一般項の第2項 テンプレート:Math の絶対値は減少列で、テンプレート:Math のとき テンプレート:Math より、第2項を切り捨てた式は テンプレート:Mvar の値を 0.447 以下(テンプレート:Math のとき1%以下)の誤差で与える近似式である。

Fnφn5

この誤差の絶対値は0.5未満なので、テンプレート:Mvar の正確な整数値は以下の式で得られる[3]

Fn=φn5+12=15(1+52)n+12

ただし、テンプレート:Math床関数である。

なお、後述の負数番への拡張を考慮した場合、テンプレート:Math では逆に一般項の第1項の絶対値が0.5未満となるため、テンプレート:Math における テンプレート:Mvar の正確な整数値は以下の式で得られる。

Fn=(φ)n5+12=15(152)n+12

これらのことから、任意の整数 テンプレート:Mvar における テンプレート:Mvar の正確な整数値は以下の式で得られる。

Fn=(sgnn){(sgnn)φ}|n|5+12=(sgnn)15{1+(sgnn)52}n+12

ただし、テンプレート:Math符号関数である。

行列表現

また、フィボナッチ数列の漸化式は次のように行列表現できる[3]

[Fn+1Fn]=[1110][FnFn1],[FnFn1]=[1110][Fn1Fn2]

これらを並べて表記すると、

[Fn+1FnFnFn1]=[1110][FnFn1Fn1Fn2]=[1110]2[Fn1Fn2Fn2Fn3]==[1110]n[F1F0F0F1]=[1110]n[1001]
[Fn+1FnFnFn1]=[1110]n

ここで、テンプレート:Math は、漸化式 テンプレート:Mathテンプレート:Math を代入すると得られる(詳細は後述の負数番への拡張を参照)。

更に、テンプレート:Mathテンプレート:Math で置換すると、

[F2n+1F2nF2nF2n1]=[1110]2n=([1110]n)2=[Fn+1FnFnFn1]2=[Fn2+Fn+12(Fn1+Fn+1)Fn(Fn1+Fn+1)FnFn12+Fn2]

よって、

F2n+1=Fn2+Fn+12F2n=(Fn1+Fn+1)Fn=(2Fn1+Fn)Fn=(2Fn+1Fn)FnF2n1=Fn12+Fn2

母関数

g(x)=n=0Fnxn=x1xx2

である。

また、この行列表現を基に、以下のような漸化式を考えることができる。

{F0=0F1=1Fn=Fq2+{1+(1)n}Fq1Fq+1(1)n2Fq+12(n2,q=n2)

性質

フィボナッチ数列の隣接2項の商は黄金数 テンプレート:Mvar に収束する。この性質は初期値 (テンプレート:Math2) に依らない。

limnFnFn1=φ

これは次のように導出される:

x=limnFnFn1 が収束するとすれば、
x=limnFn1+Fn2Fn1=limn(1+1Fn1/Fn2)=1+1x
x2x1=0

これより以下を導くことができる。

フィボナッチ数の累和や累積について以下の式が成り立つ。

また、次の関係式が知られている。

k=1Fknk=nn2n1

フィボナッチ数のうち平方数であるのは テンプレート:Math, テンプレート:Math のみ (Cohn 1964)[4]立方数であるのは テンプレート:Math, テンプレート:Math のみ (London and Finkelstein 1969)[5]である。フィボナッチ数のうち累乗数であるのはこれしかない (Bugeaud, Mignotte, Siksek 2006)[6]。(テンプレート:OEIS

フィボナッチ数で素数であるのは 2, 3, 5, 13, 89, 233, 1597, 28657, … である(テンプレート:OEIS)。また、これらはフィボナッチ素数と呼ばれる。

フィボナッチ数で三角数であるのは 1, 3, 21, 55テンプレート:OEIS)のみであることは Vern Hoggatt によって予想されていたが、のちに Luo Ming によって証明された[7]

フィボナッチ数でハーシャッド数であるのは 1, 2, 3, 5, 8, 21, 144, 2584, …(テンプレート:OEIS)。

フィボナッチ数は完全数にはならない[8]。より一般に、フィボナッチ数は倍積完全数にもならず[9]、2つのフィボナッチ数の商も完全数にはならない[10]

フィボナッチ数列の逆数和は収束し、記号 テンプレート:Mvar で表される。

ψ=n=11Fn=11+11+12+13+=3.35988566[11]

この テンプレート:Mvar が無理数であることは証明されているが (André-Jeannin 1989)、超越数であるかどうかは分かっていない。

任意の正の整数は、1つ以上の連続しない相異なるフィボナッチ数の和として一意に表すことができる(ゼッケンドルフの定理)。

パスカルの三角形で数字を桂馬跳びのように拾うと、総和がフィボナッチ数になる数列が現れる。 また テンプレート:Mvar が十分に大きいとき、フィボナッチ数列の漸化式を遡らせるとパスカルの三角形が現れ、桂馬跳びに同じ項が現れる。

Fn=Fn1+Fn2=Fn2+2Fn3+Fn4=Fn3+3Fn4+3Fn5+Fn6

プログラミング言語での実装

再帰的処理の例としてよく紹介される。以下はPythonでの例。

ただし、下記実装例の内、#負数番への拡張に対応しているのは例5・例6のみである。

例1(再帰的処理による実装例)

このプログラムでは、テンプレート:Math が与えられてから テンプレート:Math が求まるまでに テンプレート:Math 回の関数呼び出しが発生する(すなわち指数時間の計算となる)ため、実用的ではない。したがって通常は、線形時間で計算するためにメモ化などの手法を用いる他、後述するように様々な実装例が検討されている。 テンプレート:Syntaxhighlight メモ化の例を挙げるとテンプレート:Efnテンプレート:Syntaxhighlight

例2(ループ処理による実装例)

テンプレート:Syntaxhighlight

例3(指数関数的なコールを必要としない再帰的処理による実装例)

テンプレート:Math が1以上の場合に第2・第3の引数を上記例2と同じ要領で順次更新していくことで、コール回数を テンプレート:Math 回に抑えられる為、線形時間で処理できる。 テンプレート:Syntaxhighlight

例4(対数時間での再帰的処理による実装例)

#行列表現で導出した漸化式(以下に再掲)を用いることで、再帰的処理でも対数時間で処理できる。

{F0=0F1=1Fn=Fq2+{1+(1)n}Fq1Fq+1(1)n2Fq+12(n2,q=n2)

ただし、プログラム上は0を掛けるからと言ってその対象の値が計算されない訳では無い為(短絡評価されない)、条件式による分岐で表記している。 テンプレート:Syntaxhighlight

例5(一般項による実装例)

浮動小数点型を使用すると計算誤差が発生する為、テンプレート:Codeモジュールを用いているテンプレート:Efnテンプレート:Syntaxhighlight なお、先述の通りフィボナッチ数列の一般項は、引数 テンプレート:Mvar の符号によって2項の内いずれかが0.5未満となることから、符号関数及び床関数を用いて以下のように表すことができた。

Fn=(sgnn){(sgnn)φ}|n|5+12#一般項より再掲)

このことから、以下のように実装することで冪乗演算の回数を減らすことが出来るテンプレート:Efnテンプレート:Syntaxhighlight

例6(行列表現での実装例)

[Fn+1FnFnFn1]=[1110]n#行列表現より再掲)

より、テンプレート:Mvarテンプレート:Math に置換すると、

[FnFn1Fn1Fn2]=[1110]n1

従って、テンプレート:Math は、上式右辺(の具体的な計算値)の左上成分に等しい。

行列の冪を簡潔に記述する為にSymPyを用いたテンプレート:Efnテンプレート:Efnテンプレート:Syntaxhighlight

その他の話題

フィボナッチ数列の螺旋。
ヒマワリの種は螺旋状に並んでおり、螺旋の数を数えていくとフィボナッチ数が現れる[12]
  • フィボナッチ数は自然界の現象に数多く出現する。
  • また、フィボナッチ数列が生み出す螺旋は、世界で最も美しい螺旋だと言われている。

ヨハネス・ケプラーは1611年に発表した小論文「新年の贈り物あるいは六角形の雪について」において、フィボナッチ数を自己を増殖する比例と呼び、植物の種子の能力の現れであると論じた[13]

  • アブラナダイコン花びらは4枚であり、植物学では花式図より3数性、4数性、5数性で分類される[15][16]
  • 植物に現れる螺旋の数もフィボナッチ数であることが多い。
    • ヒマワリの螺旋の数はフィボナッチ数とされることもあるが、螺旋の数が多い場合、中心から離れると螺旋の隙間にも種ができてしまうため、途中から枝分かれしてフィボナッチ数にならないこともある[17]
  • パイナップルの螺旋の数は時計回りは13、反時計回りは8になっている。
  • 葉序(植物の葉の付き方)はフィボナッチ数と関連している。(シンパー=ブラウンの法則)
  • らせん葉序におけるシンパー・ブラウンの法則はフィボナッチ数列と関連するが、「近似値を示すにすぎず、またこれにあてはまらない例もある」(岩波生物学辞典)。
  • ハチアリなど、オスに父親がない家系を辿っていくとフィボナッチ数列が現れる(父母2匹、祖父母3匹、曽祖父母5匹、高祖父母8匹…)。
  • テンプレート:Mvar 段の階段を1段または2段ずつ登るときに、登る場合の数は テンプレート:Math 通りある。
  • ●と○を合わせて テンプレート:Mvar 個並べる。●が2個以上続かないように一列に並べる方法は テンプレート:Math 通りある。
  • 為替などのテクニカル分析で、フィボナッチ・リトレースメントという手法がよく使われている。

負数番への拡張

フィボナッチ数列は、漸化式 テンプレート:Math を全ての整数 テンプレート:Mvar に対して適用することにより、テンプレート:Mvar が負の整数の場合に拡張できる。そして テンプレート:Math が成り立つ。この式より、負の番号の項は次のようになる。

テンプレート:Mvar 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
テンプレート:Mvar 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
テンプレート:Mvar 0 1 −1 2 −3 5 −8 13 −21 34 −55 89 −144 233 −377 610 −987 1597 −2584 4181 −6765

類似の数列

フィボナッチ数列の定義である初期値や漸化式をやや変更して、類似の数列が作れる。

項数の変更

フィボナッチ数列は各項が先行する二項の和であるものであったが、それを「先行する テンプレート:Mvar 項の和」と置き換えた一般化

Fn+k(k):=Fn+k1(k)+Fn+k2(k)++Fn(k)(n0)

を考えることができる。ただし、初期値は 1 で埋める(1-fil型)

F0(k)=F1(k)==Fk1(k)=1

あるいは 0 で埋める(0-fil型)

F0(k)=F1(k)==Fk2(k)=0,Fk1(k)=1

などを取るのが一般的である。これらフィボナッチ数列の類似物を、項数 テンプレート:Mvar に対応するラテン語またはギリシャ語に由来する倍数接頭辞を「フィボナッチ」と組み合わせた名称で呼ぶテンプレート:Efn

和の項数や初期値の変更
テンプレート:Mvar 接頭辞[18] 名称 整数列大辞典
3 tri- トリボナッチ数 0 fil: テンプレート:OEIS2C
1 fil: テンプレート:OEIS2C
4 tetra- テトラナッチ数 0 fil: テンプレート:OEIS2C
1 fil: テンプレート:OEIS2C
5 penta- ペンタナッチ数 0 fil: テンプレート:OEIS2C
1 fil: テンプレート:OEIS2C
6 hexa- ヘキサナッチ数 0 fil: テンプレート:OEIS2C
1 fil: テンプレート:OEIS2C
7 hepta- ヘプタナッチ数 0 fil: テンプレート:OEIS2C
1 fil: テンプレート:OEIS2C
8 octa- オクタナッチ数 0 fil: テンプレート:OEIS2C
1 fil: テンプレート:OEIS2C
9 nona- ノナ(ボ)ナッチ数 1 fil: テンプレート:OEIS2C
10 deca- デカ(ボ)ナッチ数 1 fil: テンプレート:OEIS2C
11 undeca- ウンデカ(ボ)ナッチ数 1 fil: テンプレート:OEIS2C
12 dodeca- ドデカ(ボ)ナッチ数 1 fil: テンプレート:OEIS2C
20 icosa- イコサナッチ数

トリボナッチ数

特に直前の三項の和として各項が定まるトリボナッチ数列は、フィボナッチ数列に次いでよく調べられている。0-fil型でオフセットが0番目からのものは

テンプレート:Math2
テンプレート:Math2

と表される。第0~21項の値は次の通りである:

テンプレート:Math2 (OEIS テンプレート:OEIS2C)

トリボナッチ数列の一般項は次で表される。

Tn=αn(αβ)(αγ)+βn(βγ)(βα)+γn(γα)(γβ)

ただし、テンプレート:Math2三次方程式 テンプレート:Math の3解

α=13(1+193333+19+3333)β=13(1+ω193333+ω¯19+3333)γ=13(1+ω¯193333+ω19+3333)

であり、ここで

ω=1+3i2([[1の冪根|テンプレート:Math の虚立方根]])

である。

また、上記の テンプレート:Mvarトリボナッチ定数という。これはフィボナッチ数列における黄金数に当たる定数で、トリボナッチ数列の隣接2項間の商はトリボナッチ定数に収束する:

limnTnTn1=α=1.839286755214161

パスカルの三角錐の n 段目の三角形の数字を桂馬跳びに拾って合計すると 2n-1 個の数から成る数列ができる。この数列を上から三角形状に並べ、数字を桂馬跳びに拾って合計するとトリボナッチ数が現れる。 また テンプレート:Mvar が十分に大きいとき、トリボナッチ数列の漸化式を遡らせると中間の三角形が現れ、桂馬跳びに同じ項が現れる。

Tn=Tn1+Tn2+Tn3=Tn2+2Tn3+3Tn4+2Tn5+Tn6=Tn3+3Tn4+6Tn5+7Tn6+6Tn7+3Tn8+Tn9

テトラナッチ数

直前の四項の和に変更したテトラナッチ数列も同様に様々なことが知られている。同様にオフセット0番の 0-fil型は

テンプレート:Math
テンプレート:Math

と書けて、第0~21項の値は次の通りである:

テンプレート:Math2 (OEIS テンプレート:OEIS2C)

一般項は、四次方程式 テンプレート:Math の4解を テンプレート:Math2 として、

Tn=αn(αβ)(αγ)(αδ)+βn(βγ)(βδ)(βα)+γn(γδ)(γα)(γβ)+δn(δα)(δβ)(δγ)

となる。

初期値の変更

リュカ数

フィボナッチ数列の最初の2項を 2, 1 に置き換えた数列の項をリュカ数という。

2, 1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199, 322, 521, 843, 1364, 2207, 3571, 5778, … (OEIS テンプレート:OEIS2C)

この数列の一般項は

Ln=(1+52)n+(152)n=φn+(1φ)n=φn+(φ)n

と表される。

フィボナッチ数列やリュカ数の列を一般化したものがリュカ数列であり、1878年にエドゥアール・リュカが体系的な研究を行い、1913年にテンプレート:仮リンクがその結果を整理、拡張した[19]。これらの研究が現代のフィボナッチ数の理論の基礎となった。

脚注

テンプレート:脚注ヘルプ

注釈

テンプレート:Notelist

出典

テンプレート:Reflist

参考文献

関連項目

テンプレート:Commonscat テンプレート:Div col

テンプレート:Div col end

外部リンク

テンプレート:級数 テンプレート:貴金属比 テンプレート:Normdaten

  1. Parmanand Singh. "Acharya Hemachandra and the (so called) Fibonacci Numbers". Math. Ed. Siwan, 20(1): pp. 28–30, 1986. ISSN 0047-6269.
  2. Parmanand Singh, "The So-called Fibonacci numbers in ancient and medieval India." Historia Mathematica 12(3), pp. 229–244, 1985.
  3. 3.0 3.1 3.2 3.3 テンプレート:Cite book
  4. J. H. E. Cohn, On square Fibonacci numbers, J. London Math. Soc. 39 (1964), pp. 537–540.
  5. テンプレート:Citation
  6. Yann Bugeaud, Maurice Mignotte, Samir Siksek, Classical and modular approaches to exponential Diophantine equations. I. Fibonacci and Lucas perfect powers. Ann. of Math. 163(2006), pp. 969–1018. Yann Bugeaud, Publications, 2006.
  7. テンプレート:Citation
  8. テンプレート:Cite journal
  9. テンプレート:Cite journal
  10. テンプレート:Cite journal
  11. Reciprocal Fibonacci Constant -- from Wolfram MathWorld
  12. テンプレート:PDFlink愛媛県立丹原高等学校
  13. テンプレート:Cite journal
  14. 聖なる幾何学 スティーヴン・スキナー著 p.63「植物成長の幾何学」より抜粋
  15. 西山豊「花びらの数はフィボナッチ数列に落ち着くか?」『数学文化』No. 39, p104, 2023.3
  16. 西山豊「花びらの数はフィボナッチ数」は本当か?『大阪経大論集』Vol.74, No.6, 125-139, 2024.3
  17. 第14回:全ての植物をフィボナッチの呪いから救い出す(こんどうしげるの生命科学の明日はどっちだ!?)
  18. より多くは、例えば [1] などを見よ
  19. R. D. Carmichael, On the numerical factors of the arithmetic forms テンプレート:Math, Ann. of Math. 15 (1913), pp.30–70, テンプレート:DOI.