元トレーダーが解説

フィボナッチ数列とは

フィボナッチ数列とは
三浦伸夫著
「フィボナッチ アラビア数学から西洋中世数学へ」
2016 現代数学社

フィボナッチ数列の一般項を計算する(※ただし有理数に限る)

さて、この FibNum こと Rational の二要素からなるタプルは、左に フィボナッチ数列とは \( \sqrt \) が付かない項を、右に \( \sqrt \) が付く項を格納することしよう。つまり (1, 1) と書けば \( 1 + \sqrt \) のこと。 (0, 1) と書けば \( \sqrt \) のこと。 (フィボナッチ数列とは 1 % 2, 1 % 3) と書けば \( \frac + \frac \sqrt \) のことを表す。

式を書き下す

OK。さすがにちょっと見づらいがまあ仕方ない。でも fibDiv として素直に除算を除算のまま書き下してしまった。除算は \( 0 \) で割れないとか面倒なこともあるので、乗算の形にしておきたい。

まず、 (1, 1) `fibDiv` (2, 0) は要するに \( \frac> \) のことだが、こんなものは \( \frac + \frac\sqrt \)、つまり (1 % 2, 1 % 2) としてしまえば良い。

後ろ側の \( \sqrt \) で割る処理は、逆数であるところの \( \frac<\sqrt> \) フィボナッチ数列とは 、つまり \( \frac<\sqrt> \) を掛ければ良い。\( \frac<\sqrt> \) ってことは \( 0 + \frac\sqrt \) だから、ここでの表現では (0, 1 % 5) ってことだ。

演算子を実装する : 累乗

\( n \) が大きいとそのまま \(n – 1\) 回の乗算をすることになってちょっとばかり遅い。二乗の結果が使えるところはどんどんそれを使って計算させることにしよう。乗算の回数が最大でも \( 2 \log \) 回で済む。

演算子を実装する : 乗算

FibNum の乗算とは何かと言うと、\( (a + b\sqrt)(c + d\sqrt) \) ってことで、つまり、

\begin & & (a + b\sqrt)(c + d\sqrt) \\ &=& ac + ad\sqrt + bc\sqrt + 5bd \\ &=& (ac + 5bd) + (ad + bc)\sqrt \end

フィボナッチ数列とは、ソリティアである

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, .

これらはすべてをずらして書いただけですべて正しい式なので、両辺をそれぞれ足すことができる。

上記の同じ色の部分がすべて打ち消し合うため、結局とだけが残る。

ソリティア

f:id:motcho:20190605165615j:plain


クロンダイク

f:id:motcho:20190528181506p:plain

f:id:motcho:20190528181540p:plain

f:id:motcho:20190528181606p:plain

f:id:motcho:20190610005318p:plain

f:id:motcho:20190610005552p:plain

そして、このマス目の上でソリティアとして可能な方法で駒を動かしても、全体の合計を変化させません。

f:id:motcho:20190610005617p:plain

f:id:motcho:20190610005629p:plain

f:id:motcho:20190610064912p:plain

何が嬉しいのか

このソリティアによる表現は「動かす前の値」と「動かした後の値」とが一致している、ということを言っているわけで、つまりこれが上記の関係式の証明にも使えるのです。うひょー! うれしい!

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる