ミニチュアハウスをつくる!

オリジナルミニチュアハウス製作やプログラミングの事など

フィボナッチその2

本日は日曜日。

今日もゆっくり目に起きてフィボナッチ数列について考える

フィボナッチ数列その2

この前にフィボナッチ数を出すときは一般項からではなく、プログラムの手法にて

一番目~n番目までを出す方法にてやったが、今度は正式な一般項を用いて算出してみた。

ELispの算術関数を使って下記の式をLISP形式に書き換えた。

f:id:lis2016zz:20190113084459p:plain

ちなみにリブレライター(フリーソフト)で上記のような計算式が書ける。。。

LISPの計算式の書き方はフツーの良くある計算表示形式じゃないので、慣れないと意外と大変。。。自分はAutoLispで散々鍛えられたな。。。

(/ (- (expt (/ (+ 1 (sqrt 5)) 2) n) (expt (/ (- 1 (sqrt 5)) 2) n)) (sqrt 5))

 

  (defun fiboNum2 ()
    (interactive)
    (re-func1 "fiboNum2")
    (let (nstr fNum fNumstr n)
      (setq n (read-number "何番目のフィボナッチ数を計算しますか?(1~): "))
      (setq fNum (/ (- (expt (/ (+ 1 (sqrt 5)) 2) n) (expt (/ (- 1 (sqrt 5)) 2) n)) (sqrt 5)))
      (setq fNum (truncate fNum))
      (setq fNumstr (format "%s" fNum))
      (setq nstr (format "%s" n))
      (goto-char (point-min))
      (insert (concat nstr "番目のフィボナッチ数: " fNumstr "\n"))
      (forward-line -1)
      (end-of-line)))

 

なんだか平方根などが入っているのでキッチリ整数が出てくるのか?と思えるが

まあ、とりあえず答えが出てくる!

truncateで少数点以下切捨てがミソか。。。若干数値がキッチリ行かない。

PCの計算上しょうがないのだろう。

例えば4番目なら3.0000000000000004になる。。。

f:id:lis2016zz:20190113085007p:plain

 

ペンケム模型作品(Instagram)
PenkeM作品集

 

にほんブログ村 ハンドメイドブログ ミニチュアドールハウスへ にほんブログ村 鉄道ブログ 鉄道模型へ にほんブログ村 鉄道ブログ 鉄道模型 レイアウト製作(ストラクチャー)へ

-Penkem Works-