Spec-Zone.ru › Haskell 9

Data.Complex

Авторские права (c) Университет Глазго 2001
Лицензия BSD-стиль (см. файл libraries/base/LICENSE)
Поддержка libraries@haskell.org
Стабильность предварительная
Переносимость переносимая
Безопасный Haskell Достоверный
Язык 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 наследуют недостатки от типа параметра. Например, экземпляр Complex Float Eq имеет аналогичные проблемы с 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 Источник
Instance details

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

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

type Rep1 Complex

Since: base-4.9.0.0

Instance details

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

type Rep1 Complex = D1 ('MetaData "Complex" "Data.Complex" "base-4.21.0.0-8e62" '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 Source

to1 :: Rep1 Complex a -> Complex a Source

Data a => Data (Complex a) Source

Since: base-2.1

Instance details

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

Методы

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Complex a -> c (Complex a) Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Complex a) Source

toConstr :: Complex a -> Constr Source

dataTypeOf :: Complex a -> DataType Source

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Complex a)) Source

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Complex a)) Source

gmapT :: (forall b. Data b => b -> b) -> Complex a -> Complex a Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Complex a -> r Source

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Complex a -> r Source

gmapQ :: (forall d. Data d => d -> u) -> Complex a -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> Complex a -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Complex a -> m (Complex a) Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Complex a -> m (Complex a) Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Complex a -> m (Complex a) Source

RealFloat a => Floating (Complex a) Source

Since: base-2.1

Instance details

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

Краткое описание методов

pi :: Complex a Source

exp :: Complex a -> Complex a Source

log :: Complex a -> Complex a Source

sqrt :: Complex a -> Complex a Source

(**) :: Complex a -> Complex a -> Complex a Source

logBase :: Complex a -> Complex a -> Complex a Source

sin :: Complex a -> Complex a Source

cos :: Complex a -> Complex a Source

tan :: Complex a -> Complex a Source

asin :: Complex a -> Complex a Source

acos :: Complex a -> Complex a Source

atan :: Complex a -> Complex a Source

sinh :: Complex a -> Complex a Source

cosh :: Complex a -> Complex a Source

tanh :: Complex a -> Complex a Source

asinh :: Complex a -> Complex a Source

acosh :: Complex a -> Complex a Source

atanh :: Complex a -> Complex a Source

log1p :: Complex a -> Complex a Source

expm1 :: Complex a -> Complex a Source

log1pexp :: Complex a -> Complex a Source

log1mexp :: Complex a -> Complex a Source

Storable a => Storable (Complex a) Source

Since: base-4.8.0.0

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

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

Методы

sizeOf :: Комплексное число a -> Целое число Исходный код

alignment :: Комплексное число a -> Целое число Исходный код

peekElemOff :: Указатель (Комплексное число a) -> Целое число -> IO (Комплексное число a) Исходный код

pokeElemOff :: Указатель (Комплексное число a) -> Целое число -> Комплексное число a -> IO () Исходный код

peekByteOff :: Указатель b -> Целое число -> IO (Комплексное число a) Исходный код

pokeByteOff :: Указатель b -> Целое число -> Комплексное число a -> IO () Исходный код

peek :: Указатель (Комплексное число a) -> IO (Комплексное число a) Исходный код

poke :: Указатель (Комплексное число a) -> Комплексное число a -> IO () Исходный код

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

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

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

type Rep (Комплексное число a)

С версии: base-4.9.0.0

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

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

type Rep (Комплексное число a) = D1 ('MetaData "Complex" "Data.Complex" "base-4.21.0.0-8e62" '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 :: Комплексное число a -> Rep (Комплексное число a) x Исходный код

to :: Rep (Комплексное число a) x -> Комплексное число a Исходный код

RealFloat a => Число (Комплексное число a) Исходный код

С версии: base-2.1

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

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

Методы

(+) :: Комплексное число a -> Комплексное число a -> Комплексное число a Исходный код

(-) :: Комплексное число a -> Комплексное число a -> Комплексное число a Исходный код

(*) :: Комплексное число a -> Комплексное число a -> Комплексное число a Исходный код

negate :: Комплексное число a -> Комплексное число a Исходный код

abs :: Комплексное число a -> Комплексное число a Исходный код

signum :: Комплексное число a -> Комплексное число a Исходный код

fromInteger :: Целое число -> Комплексное число a Исходный код

Read a => Read (Комплексное число 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 Исходный код

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

С момента: base-2.1

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

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

Методы

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

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

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

С момента: base-4.9.0.0

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

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

type Rep1 Complex = D1 ('MetaData "Complex" "Data.Complex" "base-4.21.0.0-8e62" '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.21.0.0-8e62" '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.12.1/docs/libraries/base-4.21.0.0-8e62/Data-Complex.html

Spec-Zone.ru

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