Schemeでパイをこねる

Javaの課題で、パイこね問題が出た。とりあえずSchemeでパイをこねる。

Schemeはプリミティブに有理数があるため、パイこねを純粋な数学的操作として行った場合にどうなるかも計算できるので、計算してみた。

ひとまず、計算機では小数を2進数で扱ってるから、0.1とかを正確に表現することができないってのは当り前。で、絶対値が近い数で引き算すると、桁落ちが出るよね、ってのも当り前。だから、理想的なパイこねではループして値が収束しないのが、微妙にズレてくるのも当り前。しかし、なぜそれが吸い寄せられるように0に向かっていくのかがわからない。多分2の周りに答えが隠れていそうだ。

ちなみにグラフはSchemeで計算しながらPostScriptの描画命令を出力して、さらにそれを手動でEPSファイルに流し込んで作った。SchemeでPostScriptに出力するライブラリとか簡単に作れそうだなぁ。図形言語にいいんではなかろうか。