Ruby Tips!

RubyのTipsを紹介します

Rubyで複素数を扱う

Ruby複素数を扱うにはcomplexライブラリのComplexクラスを使う。Complexオブジェクトは、Kernel.#ComplexComplex.rectComplex.polerNumeric#to_cString#to_cなどを使って生成する。

require 'complex'
p Complex(1, 2) #=> (1+2i)
p Complex.rect(1, 2) #=> (1+2i)
p Complex.polar(2.23, 0.35 * Math::PI) #=> (1.0123988144191893+1.9869445489400601i)
p 1.to_c #=> (1+0i)
p "1+2i".to_c #=> (1+2i)

Complexクラスは四則演算が定義されているため、他の数値と同様に複素数との演算、他の数値との演算が可能である。複素数を含む演算の返却値はComplexオブジェクトとなる。

require 'complex'
c0 = Complex(1, 2)
c1 = Complex(3, 4)

p c0 + c1 #=> (4+6i)
p c0 - c1 #=> (-2-2i)
p c0 * c1 #=> (-5+10i)
p c0 / c1 #=> ((11/25)+(2/25)*i)

複素数から実部を得るにはComplex#realを使う。逆に複素数から虚部を得るにはComplex#imageを使う。また偏角Complex#argで得られる。

require 'complex'
c = Complex(1, 2)
p c.real #=> 1
p c.image #=> 2
p c.arg #=> 1.1071487177940904