三角関数や対数などの近似計算の方法を短い Ruby コードでご紹介。だいたいマクローリン展開です。 子供のころ何気なく sin とか log とか使っていて、ふと「コンピュータはどうやってこの値を計算してるんだろう」と思ったものです。そんな昔の自分に見せてあげたいエントリ。と言っても、今時のコンピュータは FPU 持ってるんでこんな計算してませんが。 なお、ちゃんとテストしてません。 三角関数 0 に近い方が精度高いです。99 とか 98 とかは適当に大きな数字。 def sin(x) r, f = 0, 1 1.step(99, 2) do |i| r += x ** i / f f *= -(i+1)*(i+2) end r end def cos(x) r, f = 0, 1 0.step(98, 2) do |i| r += x ** i / f f *= -(i+1)*(i+2)