Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > complexライブラリ > Complexクラス

class Complex

クラスの継承リスト: Complex < Numeric < Comparable < Object < Kernel

要約

複素数を扱うためのクラスです。

このライブラリを require すると、Math モジュールが複素数対応に拡張されます。 対象となる複素数を以下のように極座標表示した時の

z = a + b * i = r * exp(i * t)

偏角 t は[-π,π]の範囲であると考えて、関数は定義されます。 Complex#argを参照して下さい。

以下が複素関数の定義です。

abs(z)  = r
sqrt(z) = sqrt(r) * exp(i * t/2)
exp(z)  = exp(a) * exp(i * b)
log(z)  = log(r) + i * t

sin(z)  = (exp(i * z) - exp(-i * z)) / 2i
cos(z)  = (exp(i * z) + exp(-i * z)) / 2
tan(z)  = sin(z) / cos(z)
sinh(z) = (exp(z) - exp(-z)) / 2
cosh(z) = (exp(z) + exp(-z)) / 2
tanh(z) = sinh(z) / cosh(z)

asin(z) = -i * log(i*z + sqrt(1-z*z))
acos(z) = -i * log(z + i*sqrt(1-z*z))
atan(z) = i/2 * log((i+z) / (i-z))
atan2(y, x) = -i * log( (x + i * y) / sqrt( x*x + y*y ) )
asinh(z) = log(z + sqrt(z*z+1))
acosh(z) = log(z + sqrt(z*z-1))
atanh(z) = 1/2 * log((1+z) / (1-z))

また、添付ライブラリのベクトルクラス Vector、および、 行列クラス Matrix を読み込んでいるとき、 Vector や Matrix の要素として、複素数を使うことができます。 Vector および Matrix のそれぞれの項目を参照してください。

require 'complex'

z1 = Complex.new(4, 3)
z2 = Complex.new(2, 1)

p z1 + z2 #=> Complex(6, 4)
p z1 * z2 #=> Complex(5, 10)

i = Complex::I

p z1 == 4 + 3 * i #=> true

特異メソッド

定義 説明
generic?(other) -> bool

other が Integer Float Rational クラスのオブジェクトかどうか判定します。

new(r, i) -> Complex
new!(r, i = 0) -> Complex

実部が r、虚部が i であるComplexクラスのオブジェクトを生成します。

polar(r, theta) -> Complex

絶対値が r、偏角が theta である Complexクラスのオブジェクトを生成します。

インスタンスメソッド

定義 説明
self % c -> Complex

除算の剰余を計算します。

self * c -> Complex

複素数 c を乗じた結果を返します。

self ** c -> Complex

複素数 c でべき乗した結果

exp(c * log(self))

を返します

self + c -> Complex

複素数 c を加えた結果を返します。

self - c -> Complex

複素数 c を減じた結果を返します。

self / other -> Complex

複素数 other で除した結果を返します。

self <=> c -> Fixnum

cとselfの絶対値absを比較した結果を返します。

self == c -> bool

c と等しければ、true を返します。

abs -> Float

自分自身の絶対値を返します。

abs2 -> Fixnum
abs2 -> Float

自分自身の絶対値の2乗を返します。

angle -> Float
arg -> Float

複素数の偏角を[-π,π]の範囲で返します。

coerce(other) -> Array

自分自身とotherのペアの配列を生成し、生成した配列を返します。

conj -> Complex
conjugate -> Complex

自分の共役複素数を返します。

denominator -> Fixnum

自分自身の実部・虚部の分母のLCM(最小公倍数)を返します。

hash -> Fixnum

複素数のハッシュ値を返します。

imag -> Fixnum
imag -> Float
image -> Fixnum
image -> Float

虚部を返します。

inspect -> String

自分自身について "Complex(実部, 虚部)" 形式の文字列を返します。

numerator -> Complex

Complex#denominator の値で実部・虚部を通分したものの分子のみを Complex で返します。

polar -> Array

複素数の極座標表示、すなわち、配列 [self.abs, self.arg] を返します。

quo(other) -> Complex

複素数otherでの除算結果を返します。

real -> Fixnum
real -> Float

実部を返します。

to_s -> String

自分自身について "実部 + 虚部i" 形式の文字列を返します。

定数

定義 説明
I

虚数単位です。

継承したメソッド

+@ -@ ceil clone div divmod eql? fdiv floor im integer? modulo nonzero? remainder round step to_int truncate zero? === =~ __id__ __send__ _dump class dclone display enum_for equal? extend freeze frozen? initialize initialize_copy instance_eval instance_exec instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? marshal_dump marshal_load method method_missing methods nil? pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods public_methods remove_instance_variable respond_to? singleton_method_added singleton_method_removed singleton_method_undefined singleton_methods taint tainted? tap to_a to_ary to_hash to_io to_proc to_regexp to_str to_yaml to_yaml_properties to_yaml_style untaint

追加されるメソッド

定義 説明 ライブラリ
Unify

内部実装で利用しています。深くは考えないでください。ユーザープログラムでは利用しないでください。

mathn