Haskellで複素数
複素数のためのData.Complex
パッケージがあります。
複素数は:+
コンストラクタを使います。
> :i :+ data Complex a = !a :+ !a -- Defined in ‘Data.Complex’ infix 6 :+
1+2i
は次のよう:+
を使って次のようになります。
> 1 :+ 2 1 :+ 2 > :t (1 :+ 2) (1 :+ 2) :: Num a => Complex a
共役はconjugateを使います。
> Data.Complex.conjugate (1 :+ 2) 1 :+ (-2)
通常の加減乗除の演算子が使えます。
> let c1 = 1 :+ 2 > let c2 = 1 :+ (-2) > c1 + c2 2.0 :+ 0.0 > c1 * c2 5.0 :+ 0.0 > c1 - c2 0.0 :+ 4.0 > c1 / c2 (-0.6) :+ 0.8
極形式も使えます。mkPolar
絶対値
偏角
で指定します。
> mkPolar 1 pi (-1.0) :+ 1.2246467991473532e-16
複素数から絶対値
偏角
を取り出すことができます。
> polar (1 :+ 1) (1.4142135623730951,0.7853981633974483) > polar ((-1) :+ 0) (1.0,3.141592653589793)
絶対値
> abs (1 :+ 1) 1.4142135623730951 :+ 0.0