Spec-Zone.ru › Haskell 9

Data.Complex

Авторские права (c) The University of Glasgow 2001
Лицензия В стиле BSD (см. файл libraries/base/LICENSE)
Сопровождающий libraries@haskell.org
Стабильность предварительная
Переносимость переносимый
Безопасный Haskell Trustworthy
Язык Haskell2010

Содержание

  • Прямоугольная форма
  • Полярная форма
  • Сопряжённое число

Описание

Комплексные числа.

Прямоугольная форма

data Complex a Источник

Тип данных, представляющий комплексные числа.

О комплексных числах можно прочитать в Википедии.

В Haskell комплексные числа представлены как a :+ b, что можно интерпретировать как \(a + bi\). Для комплексного числа z, abs z — это число с magnitude z, но ориентированное в положительном направлении действительной оси, тогда как signum z имеет phase z, но единичную magnitude. За исключением потери точности из-за чисел с плавающей точкой IEEE754, выполняется равенство z == abs z * signum z.

Обратите внимание, что экземпляры Complex наследуют недостатки параметра типа. Например, экземпляр Eq для Complex Float имеет проблемы, схожие с проблемами Float.

Как видно из примеров, экземпляры Foldable и Traversable обходят сначала действительную часть.

Примеры
Развернуть
>>> (5.0 :+ 2.5) + 6.5
11.5 :+ 2.5
>>> abs (1.0 :+ 1.0) - sqrt 2.0
0.0 :+ 0.0
>>> abs (signum (4.0 :+ 3.0))
1.0 :+ 0.0
>>> foldr (:) [] (1 :+ 2)
[1,2]
>>> mapM print (1 :+ 2)
1
2
() :+ ()

Конструкторы

!a :+ !a infix 6

создаёт комплексное число из его действительной и мнимой прямоугольных компонент.

Экземпляры
Подробная информация об экземплярах
Foldable1 Complex Источник

С версии: base-4.18.0.0

Подробная информация об экземпляре

Определено в Data.Foldable1

Методы

fold1 :: Semigroup m => Complex m -> m Источник

foldMap1 :: Semigroup m => (a -> m) -> Complex a -> m Источник

foldMap1' :: Semigroup m => (a -> m) -> Complex a -> m Источник

toNonEmpty :: Complex a -> NonEmpty a Источник

maximum :: Ord a => Complex a -> a Источник

minimum :: Ord a => Complex a -> a Источник

head :: Complex a -> a Источник

last :: Complex a -> a Источник

foldrMap1 :: (a -> b) -> (a -> b -> b) -> Complex a -> b Источник

foldlMap1' :: (a -> b) -> (b -> a -> b) -> Complex a -> b Источник

foldlMap1 :: (a -> b) -> (b -> a -> b) -> Complex a -> b Источник

foldrMap1' :: (a -> b) -> (a -> b -> b) -> Complex a -> b Источник

Eq1 Complex Источник
>>> eq1 (1 :+ 2) (1 :+ 2)
True
>>> eq1 (1 :+ 2) (1 :+ 3)
False

С версии: base-4.16.0.0

Подробная информация об экземпляре

Определено в Data.Functor.Classes

Методы

liftEq :: (a -> b -> Bool) -> Complex a -> Complex b -> Bool Источник

Read1 Complex Источник
>>> readPrec_to_S readPrec1 0 "(2 % 3) :+ (3 % 4)" :: [(Complex Rational, String)]
[(2 % 3 :+ 3 % 4,"")]

С версии: base-4.16.0.0

Подробная информация об экземпляре

Определено в Data.Functor.Classes

Методы

liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (Complex a) Источник

liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [Complex a] Источник

liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (Complex a) Источник

liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [Complex a] Источник

Show1 Complex Источник
>>> showsPrec1 0 (2 :+ 3) ""
"2 :+ 3"

С версии: base-4.16.0.0

Подробная информация об экземпляре

Определено в Data.Functor.Classes

Методы

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Complex a -> ShowS Источник

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Complex a] -> ShowS Источник

Applicative Complex Источник

С версии: base-4.9.0.0

Подробная информация об экземпляре

Определено в Data.Complex

Методы

pure :: a -> Complex a Источник

(<*>) :: Complex (a -> b) -> Complex a -> Complex b Источник

liftA2 :: (a -> b -> c) -> Complex a -> Complex b -> Complex c Источник

(*>) :: Complex a -> Complex b -> Complex b Источник

(<*) :: Complex a -> Complex b -> Complex a Источник

Functor Complex Источник

С версии: base-4.9.0.0

Подробная информация об экземпляре

Определено в Data.Complex

Методы

fmap :: (a -> b) -> Complex a -> Complex b Источник

(<$) :: a -> Complex b -> Complex a Источник

Monad Complex Источник

С версии: base-4.9.0.0

Подробная информация об экземпляре

Определено в Data.Complex

Методы

(>>=) :: Complex a -> (a -> Complex b) -> Complex b Источник

(>>) :: Complex a -> Complex b -> Complex b Источник

return :: a -> Complex a Источник

MonadFix Complex Источник

С версии: base-4.15.0.0

Подробная информация об экземпляре

Определено в Data.Complex

Методы

mfix :: (a -> Complex a) -> Complex a Источник

MonadZip Complex Источник

С версии: base-4.15.0.0

Подробная информация об экземпляре

Определено в Data.Complex

Методы

mzip :: Complex a -> Complex b -> Complex (a, b) Источник

mzipWith :: (a -> b -> c) -> Complex a -> Complex b -> Complex c Источник

munzip :: Complex (a, b) -> (Complex a, Complex b) Источник

Foldable Complex Источник

С версии: base-4.9.0.0

Подробная информация об экземпляре

Определено в Data.Complex

Методы

fold :: Monoid m => Complex m -> m Источник

foldMap :: Monoid m => (a -> m) -> Complex a -> m Источник

foldMap' :: Monoid m => (a -> m) -> Complex a -> m Источник

foldr :: (a -> b -> b) -> b -> Complex a -> b Источник

foldr' :: (a -> b -> b) -> b -> Complex a -> b Источник

foldl :: (b -> a -> b) -> b -> Complex a -> b Источник

foldl' :: (b -> a -> b) -> b -> Complex a -> b Источник

foldr1 :: (a -> a -> a) -> Complex a -> a Источник

foldl1 :: (a -> a -> a) -> Complex a -> a Источник

toList :: Complex a -> [a] Источник

null :: Complex a -> Bool Источник

length :: Complex a -> Int Источник

elem :: Eq a => a -> Complex a -> Bool Источник

maximum :: Ord a => Complex a -> a Источник

minimum :: Ord a => Complex a -> a Источник

sum :: Num a => Complex a -> a Источник

product :: Num a => Complex a -> a Источник

Traversable Complex Источник

С версии: base-4.9.0.0

Подробная информация об экземпляре

Определено в Data.Complex

Методы

traverse :: Applicative f => (a -> f b) -> Complex a -> f (Complex b) Источник

sequenceA :: Applicative f => Complex (f a) -> f (Complex a) Источник

mapM :: Monad m => (a -> m b) -> Complex a -> m (Complex b) Источник

sequence :: Monad m => Complex (m a) -> m (Complex a) Источник

Generic1 Complex Источник
Подробное описание экземпляра

Определён в Data.Complex

Связанные типы

type Rep1 Complex

Начиная с: base-4.9.0.0

Подробное описание экземпляра

Определён в Data.Complex

type Rep1 Complex = D1 ('MetaData "Complex" "Data.Complex" "base-4.22.0.0-66f8" 'False) (C1 ('MetaCons ":+" ('InfixI 'NotAssociative 6) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) Par1))

Методы

from1 :: Complex a -> Rep1 Complex a Исходный код

to1 :: Rep1 Complex a -> Complex a Исходный код

Eq a => Eq (Complex a) Исходный код

Начиная с: base-2.1

Подробное описание экземпляра

Определён в Data.Complex

Методы

(==) :: Complex a -> Complex a -> Bool Исходный код

(/=) :: Complex a -> Complex a -> Bool Исходный код

Data a => Data (Complex a) Исходный код

Начиная с: base-2.1

Подробное описание экземпляра

Определён в Data.Complex

Методы

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Complex a -> c (Complex a) Исходный код

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Complex a) Исходный код

toConstr :: Complex a -> Constr Исходный код

dataTypeOf :: Complex a -> DataType Исходный код

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Complex a)) Исходный код

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Complex a)) Исходный код

gmapT :: (forall b. Data b => b -> b) -> Complex a -> Complex a Исходный код

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Complex a -> r Исходный код

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Complex a -> r Исходный код

gmapQ :: (forall d. Data d => d -> u) -> Complex a -> [u] Исходный код

gmapQi :: Int -> (forall d. Data d => d -> u) -> Complex a -> u Исходный код

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Complex a -> m (Complex a) Исходный код

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Complex a -> m (Complex a) Исходный код

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Complex a -> m (Complex a) Исходный код

RealFloat a => Floating (Complex a) Исходный код

Начиная с: base-2.1

Подробное описание экземпляра

Определён в Data.Complex

Методы

pi :: Complex a Исходный код

exp :: Complex a -> Complex a Исходный код

log :: Complex a -> Complex a Исходный код

sqrt :: Complex a -> Complex a Исходный код

(**) :: Complex a -> Complex a -> Complex a Исходный код

logBase :: Complex a -> Complex a -> Complex a Исходный код

sin :: Complex a -> Complex a Исходный код

cos :: Complex a -> Complex a Исходный код

tan :: Complex a -> Complex a Исходный код

asin :: Complex a -> Complex a Исходный код

acos :: Complex a -> Complex a Исходный код

atan :: Complex a -> Complex a Исходный код

sinh :: Complex a -> Complex a Исходный код

cosh :: Complex a -> Complex a Исходный код

tanh :: Complex a -> Complex a Исходный код

asinh :: Complex a -> Complex a Исходный код

acosh :: Complex a -> Complex a Исходный код

atanh :: Complex a -> Complex a Исходный код

log1p :: Complex a -> Complex a Исходный код

expm1 :: Complex a -> Complex a Исходный код

log1pexp :: Complex a -> Complex a Исходный код

log1mexp :: Complex a -> Complex a Исходный код

Storable a => Storable (Complex a) Исходный код

Начиная с: base-4.8.0.0

Подробное описание экземпляра

Определён в Data.Complex

Методы

sizeOf :: Complex a -> Int Исходный код

alignment :: Complex a -> Int Исходный код

peekElemOff :: Ptr (Complex a) -> Int -> IO (Complex a) Исходный код

pokeElemOff :: Ptr (Complex a) -> Int -> Complex a -> IO () Исходный код

peekByteOff :: Ptr b -> Int -> IO (Complex a) Исходный код

pokeByteOff :: Ptr b -> Int -> Complex a -> IO () Исходный код

peek :: Ptr (Complex a) -> IO (Complex a) Исходный код

poke :: Ptr (Complex a) -> Complex a -> IO () Исходный код

Generic (Complex a) Исходный код
Подробное описание экземпляра

Определён в Data.Complex

Связанные типы

type Rep (Complex a)

Начиная с: base-4.9.0.0

Подробное описание экземпляра

Определён в Data.Complex

type Rep (Complex a) = D1 ('MetaData "Complex" "Data.Complex" "base-4.22.0.0-66f8" 'False) (C1 ('MetaCons ":+" ('InfixI 'NotAssociative 6) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a)))

Методы

from :: Complex a -> Rep (Complex a) x Исходный код

to :: Rep (Complex a) x -> Complex a Исходный код

RealFloat a => Num (Complex a) Исходный код

Начиная с: base-2.1

Подробности экземпляра

Определён в Data.Complex

Методы

(+) :: Complex a -> Complex a -> Complex a Исходный код

(-) :: Complex a -> Complex a -> Complex a Исходный код

(*) :: Complex a -> Complex a -> Complex a Исходный код

negate :: Complex a -> Complex a Исходный код

abs :: Complex a -> Complex a Исходный код

signum :: Complex a -> Complex a Исходный код

fromInteger :: Integer -> Complex a Исходный код

Read a => Read (Complex a) Исходный код

С версии: base-2.1

Подробности экземпляра

Определён в Data.Complex

Методы

readsPrec :: Int -> ReadS (Complex a) Исходный код

readList :: ReadS [Complex a] Исходный код

readPrec :: ReadPrec (Complex a) Исходный код

readListPrec :: ReadPrec [Complex a] Исходный код

RealFloat a => Fractional (Complex a) Исходный код

С версии: base-2.1

Подробности экземпляра

Определён в Data.Complex

Методы

(/) :: Complex a -> Complex a -> Complex a Исходный код

recip :: Complex a -> Complex a Исходный код

fromRational :: Rational -> Complex a Исходный код

Show a => Show (Complex a) Исходный код

С версии: base-2.1

Подробности экземпляра

Определён в Data.Complex

Методы

showsPrec :: Int -> Complex a -> ShowS Исходный код

show :: Complex a -> String Исходный код

showList :: [Complex a] -> ShowS Исходный код

type Rep1 Complex Исходный код

С версии: base-4.9.0.0

Подробности экземпляра

Определён в Data.Complex

type Rep1 Complex = D1 ('MetaData "Complex" "Data.Complex" "base-4.22.0.0-66f8" 'False) (C1 ('MetaCons ":+" ('InfixI 'NotAssociative 6) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) Par1))
type Rep (Complex a) Исходный код

С версии: base-4.9.0.0

Подробности экземпляра

Определён в Data.Complex

type Rep (Complex a) = D1 ('MetaData "Complex" "Data.Complex" "base-4.22.0.0-66f8" 'False) (C1 ('MetaCons ":+" ('InfixI 'NotAssociative 6) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a)))

realPart :: Complex a -> a Исходный код

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

Примеры
Развернуть
>>> realPart (5.0 :+ 3.0)
5.0
>>> realPart ((5.0 :+ 3.0) * (2.0 :+ 3.0))
1.0

imagPart :: Complex a -> a Исходный код

Извлекает мнимую часть комплексного числа.

Примеры
Развернуть
>>> imagPart (5.0 :+ 3.0)
3.0
>>> imagPart ((5.0 :+ 3.0) * (2.0 :+ 3.0))
21.0

Полярная форма

mkPolar :: Floating a => a -> a -> Complex a Исходный код

Создаёт комплексное число из polar компонентов: magnitude и phase.

Примеры
Развернуть
>>> mkPolar 1 (pi / 4)
0.7071067811865476 :+ 0.7071067811865475
>>> mkPolar 1 0
1.0 :+ 0.0

cis :: Floating a => a -> Complex a Исходный код

cis t — это комплексное значение с magnitude 1 и phase t (по модулю 2*pi).

cis = mkPolar 1
Примеры
Развернуть
>>> cis 0
1.0 :+ 0.0

Следующие примеры не равны нулю в точности из-за IEEE 754

>>> cis pi
(-1.0) :+ 1.2246467991473532e-16
>>> cis (4 * pi) - cis (2 * pi)
0.0 :+ (-2.4492935982947064e-16)

polar :: RealFloat a => Complex a -> (a, a) Исходный код

Функция polar принимает комплексное число и возвращает пару (magnitude, phase) в канонической форме: magnitude неотрицательно, а phase находится в диапазоне (-pi, pi]; если magnitude равно нулю, то и phase равно нулю.

polar z = (magnitude z, phase z)
Примеры
Развернуть
>>> polar (1.0 :+ 1.0)
(1.4142135623730951,0.7853981633974483)
>>> polar ((-1.0) :+ 0.0)
(1.0,3.141592653589793)
>>> polar (0.0 :+ 0.0)
(0.0,0.0)

magnitude :: RealFloat a => Complex a -> a Исходный код

Неотрицательный magnitude комплексного числа.

Примеры
Развернуть
>>> magnitude (1.0 :+ 1.0)
1.4142135623730951
>>> magnitude (1.0 + 0.0)
1.0
>>> magnitude (0.0 :+ (-5.0))
5.0

phase :: RealFloat a => Complex a -> a Исходный код

phase комплексного числа в диапазоне (-pi, pi]. Если magnitude равно нулю, то и phase равно нулю.

Примеры
Развернуть
>>> phase (0.5 :+ 0.5) / pi
0.25
>>> phase (0 :+ 4) / pi
0.5

Сопряжение

conjugate :: Num a => Complex a -> Complex a Исходный код

conjugate комплексного числа.

conjugate (conjugate x) = x
Примеры
Развернуть
>>> conjugate (3.0 :+ 3.0)
3.0 :+ (-3.0)
>>> conjugate ((3.0 :+ 3.0) * (2.0 :+ 2.0))
0.0 :+ (-12.0)

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.14.1/docs/libraries/base-4.22.0.0-66f8/Data-Complex.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API