Ruby は最新のオブジェクト指向プログラミング言語のひとつで,mathn という数学ライブラリーを持っています。整数の型が FIXNUM から BIGNUM へと,扱っている数の大きさによってシームレスに変わるため,500桁ぐらいまでなら楽々計算できます。
それに加えて,irb という対話的なツールがあって,コマンドラインから1行ずつ実行してみては結果を見ていくことができます。つまりプログラムを書かなくても簡単な計算が実行できるというわけです。電卓代わりですね。

irb を使うにはコマンドラインから単に irb と打ち込むだけです。すると下のようにプロンプトが表示されるので,キーボードから入力していきます。

 irb
 irb(main):001:0>

これでいろいろな計算ができます。ここでは数学ライブラリーを扱うので, require 'mathn' と入力します。

 irb(main):001:0> require 'mathn'
 => true

これで 2/3 のような既約分数がそのまま扱えるようになり,既約でないものは自動的に約分が行われます。


それでは連分数を試してみましょう。次の式は 8/3 の連分数展開です。

 1+1/(1+1/(1+1/(1+1/(1+1/(1)))))

これを延々と繰り返していくと,sqrt(2) に漸近します。でも打ち込むのは面倒ですね。

上の式をよく見ると入れ子になっていますから,再帰的な構造で表現できるはずです。つまり 1 + 1 / (1 + x) の x に,それ自身を代入していけばよさそう。

 x = 1

 100.times{x = 1 + 1/(1+x)}

これで100段の連分数が一気に計算できます。もっとも,このままでは巨大な分数式が表示されるだけで何がなんだか分からないので,浮動小数点数で表示させてみましょう。

 x.to_f

これで 1.41421356...という値が得られるはずです。

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS