Rubyで複素数を扱う
Rubyで複素数を扱うにはcomplexライブラリのComplex
クラスを使う。Complex
オブジェクトは、Kernel.#Complex
、Complex.rect
、Complex.poler
、Numeric#to_c
、String#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