Fibonacci Sequence
今日は実家から通学したため午前中に学校に着けた。でも遠いから時間かかるなぁ。で、午前中は卒研にお邪魔して、お昼を先生達と食べた。その後しばらくは寝てたが、研究を再開して成果が得られた。
フィボナッチ数列は F[1] = 1 , F[2] = 1 , F[n] = F[n-1] + F[n-2] で定義される。Mathematicaでそのまま定義すると
F[1] = 1; F[2] = 1; F[n_] := F[n - 1] + F[n - 2]
となり、これを実行すると
F[10] 34
のように出力される。これでも良いと言えば良いのだが、nを大きくすると劇的に遅くなってしまう。そこでフィボナッチ数列を得るのにもっと効率の良いルーチンを実装する事に成功した。
Fiboseq[n_] := Module[{Fibo = {1, 1}}, Do[Fibo = Append[Fibo, Fibo[[i - 1]] + Fibo[[i - 2]]], {i, 3, n}]; Fibo[[n]]]
これは漸化式を使った定義とは比較にならない位早い。前者ではn=30程度でも十数秒かかったが、後者ではn=1000でも数秒以内に、n=10000でも1分以内に計算できた。