「フィボナッチ アラビア数学から西洋中世数学へ」
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, .
これらはすべてをずらして書いただけですべて正しい式なので、両辺をそれぞれ足すことができる。
上記の同じ色の部分がすべて打ち消し合うため、結局とだけが残る。
ソリティア
クロンダイク
そして、このマス目の上でソリティアとして可能な方法で駒を動かしても、全体の合計を変化させません。
何が嬉しいのか
このソリティアによる表現は「動かす前の値」と「動かした後の値」とが一致している、ということを言っているわけで、つまりこれが上記の関係式の証明にも使えるのです。うひょー! うれしい!
コメント