たのしいRuby(第2版) 「はじめてのRuby」〜数学的な関数〜

■これは「たのしいRuby 第2版」を元にしています。
http://www.amazon.co.jp/%E3%81%9F%E3%81%AE%E3%81%97%E3%81%84Ruby-%E7%AC%AC2%E7%89%88-Ruby%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E6%B0%97%E8%BB%BD%E3%81%AA%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E9%AB%98%E6%A9%8B-%E5%BE%81%E7%BE%A9/dp/4797336617/ref=pd_sim_b_img_6/250-4677527-6737860

数学的な関数

 四則演算以外にも、平方根や、三角関数の「sin」「cos」、指数関数などの数学的な関数が利用できます。ただし、その場合、プログラムの最初の方に「include Math」というおまじないを入れる必要があります。
 sinはsinメソッド、平方根はsqrtメソッドで求めます。メソッドを実行すると、計算した結果を得ることができます。このことをメソッドが値を返すといい、得られる値のことを返り値といいます。

うはー。中学の授業きたーwww小学校だっけ?www
サイン、コサイン、タンジェントとかもう忘れたwwwwww
「かえりち」と打つと「返り血」と変換されるので困りますwwww s/返り血/返り値


三角関数 - Wikipedia



まぁ、とにかく実行してみましょう。

  • プログラム
include Math
print "sin(3.1415) = ", sin(3.1415), "\n"
print "sqrt(10000) = ", sqrt(10000), "\n"
  • 実行結果
C:\enjoy_ruby>ruby helloruby.rb
sin(3.1415) = 9.26535896604902e-005
sqrt(10000) = 100.0

えーと・・・いろいろと突っ込みたいですね・・・w



とりあえず、include Mathがなかった場合どうなるのかやってみましょう。

  • プログラム
include Math
print "sin(3.1415) = ", sin(3.1415), "\n"
print "sqrt(10000) = ", sqrt(10000), "\n"
  • 実行結果
C:\enjoy_ruby>ruby helloruby.rb
helloruby.rb:1: undefined method `sin' for main:Object (NoMethodError)

NoMethodError ですね。


「9.26535896604902e-005」という表記について

1番目のsinの答えである「9.26535896604902e-005」ですが、これは、極端に大きいか、あるいは極端に小さい数を表す時に便利な表記方法です。「(少数) e (整数)」と表示された時は、「(少数) * (10の整数乗)」の値、と解釈してください。この例の場合、「9.26535896604902 * (10の-5乗)」ということになるので、つまりは0.0000926535896604902 という数字を表しています。

なるほどー。

e-005等のclassは何になるのでしょう。

  • プログラム

print 2e-005.class

  • 実行結果

Float

でした。


「include Math」 ついて

「Math」というのは、Mathモジュールを表す定数です。「include Math」というのは、Mathモジュールに属する関数を直接利用できるようにするものです。includeしない場合には、「Math.sin(3.14)」などと書けば、Mathモジュールの関数が利用できます。先ほどのプログラムを、「include」を使わないで書きなおすと、以下のようになります。

print "sin(3.1415) = ", Math.sin(3.1415), "\n"
print "sqrt(10000) = ", Math.sqrt(10000), "\n"

なるほど、やってみましょう。

  • プログラム
print "sin(3.1415) = ", Math.sin(3.1415), "\n"
print "sqrt(10000) = ", Math.sqrt(10000), "\n"
  • 実行結果
C:\enjoy_ruby>ruby helloruby.rb
sin(3.1415) = 9.26535896604902e-005
sqrt(10000) = 100.0


ふむ。大丈夫ですね。


Mathモジュールをもうちょっとつっこむ

プログラミング言語 Ruby リファレンスマニュアル

円周率
  • プログラム
print Math::PI
  • 実行結果
C:\enjoy_ruby>ruby helloruby.rb
3.14159265358979
自然対数の底
  • プログラム
print Math::E
  • 実行結果
C:\enjoy_ruby>ruby helloruby.rb
2.71828182845905

環境

C:\enjoy_ruby>ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]