Rubyで複素数

リファレンスはruby-lang.orgのComplexクラスを参照。
リファレンスを見ればことは足りるのだけど、一応メモとして残しておく。


利用にはcomplexライブラリをrequireする

>> require 'complex'
=> true


複素数を定義する場合はコンストラクタで引数に実部、虚部を与える。

>> a = Complex.new(1,1) # 1+j
=> Complex(1, 1) 
>> b = Complex.new(1,-1) # 1-j
=> Complex(1, -1)

また各メソッドで作られた複素数の実部、虚部、共役複素数が得られる。

>> b.real
=> 1
>> b.image
=> -1
>> b.conjugate
=> Complex(1, 1)


加減乗除はそのままでOK

>> a-b
=> Complex(0, 2) # 2j
>> a * b
=> Complex(2, 0) # 2


絶対値はabsメソッドで得られる

>> a.abs
=> 1.4142135623731  # ルート2の値


角度はargメソッドで得られる。得られる偏角(アーギュメント)の値はラジアン

>> a.arg
=> 0.785398163397448
>> 360 * a.arg / (2.0 * Math::PI) #ラジアン→度
=> 45.0


こんなところだろうか。
どうも信号処理系の仕事をするとどうしても複素数が必要になってしまうのでメモとして残しておく。
数宇Bバンザイ。*1
当初はExcelの上で無理やり計算していたのだけど、結局Rubyのシェル(irb)上で計算していく方がわかりやすかったりするので…。

*1:私はまだ数学Bに複素数が残っていた世代。最近はベクトルだけになってしまっている。