Главная » Haskell » Модуль Complex

0

предлагает разработчику программного обеспечения алгебраический тип данных и небольшой набор функций для представления и работы с комплексными числами. Использование модуля:

import  Data.Complex

Тип: Complex

Описание: тип для представления комплексных чисел в ортогональной  форме. Для получения формы в полярной системе координат используются специальные преобразующие функции.

Определение:

data  (RealFloat a)  => Complex  a  = !a :+  !a deriving (Eq,  Read, Show)

Как видно из определения, для этого типа автоматически строятся экземпляры классов Eq, Read и Show. В модуле дополнительно  определены экземпляры и таких типов: Typeable1, Floating, Fractional, NFData и Num.

Функция: realPart

Описание: возвращает действительную часть комплексного числа.

Определение:

realPart :: RealFloat a =>  Complex a ->  a realPart (x :+  _)  =   x

Функция: imagPart

Описание: возвращает мнимую часть комплексного числа.

Определение:

imagPart  :: RealFloat a =>  Complex a ->  a imagPart  (_  :+  y) =   y

Функция: mkPolar

Описание: формирует ортогональное комплексное  число из  компонентов  в полярной системе координат (модуля и фазы).

Определение:

mkPolar  :: (RealFloat a)  => a ->  a ->  Complex a mkPolar  r theta = r * cos  theta  :+  r * sin   theta

Функция: cis

Описание: формирует ортогональное комплексное  число из  компонентов  в полярной системе координат, где модуль равен единице, а фаза задана. Определение:

cis :: (RealFloat a)  => a ->  Complex a cis theta = cos  theta  :+  sin   theta

Функция: polar

Описание: возвращает компоненты  заданного комплексного  числа в  полярной системе координат в виде пары (модуль, фаза).

Определение:

polar :: RealFloat a => Complex a  ->  (a, a) polar z  = (magnitude  z,  phase z)

Функция: magnitude

Описание: возвращает модуль заданного комплексного числа.

Определение:

magnitude  :: (RealFloat a)  => Complex a ->  a

magnitude  (x :+y  ) =   scaleFloat k  (sqrt ((scaleFloat mk  x)^(2::Int) + (scaleFloat mk  y)^(2::Int)))

where

k   = max (exponent   x)  (exponent   y) mk  = k

Функция: phase

Описание: возвращает фазу заданного комплексного числа.

Определение:

phase :: (RealFloat a)  =>  Complex a ->  a phase (0  :+  0)  =  0

phase (x :+  y) = atan2  y  x

Функция: conjugate

Описание: возвращает комплексное число, сопряжённое заданному.

Определение:

conjugate :: (RealFloat a)  => Complex a  -> Complex a conjugate (x :+  y) = x  :+  (-y)

Источник: Душкин Р. В., Справочник по языку Haskell. М.: ДМК Пресс, 2008. 544 с., ил.

По теме:

  • Комментарии