Data.Complex
| Авторские права | (c) The University of Glasgow 2001 |
|---|---|
| Лицензия | В стиле BSD (см. файл libraries/base/LICENSE) |
| Сопровождающий | libraries@haskell.org |
| Стабильность | предварительная |
| Переносимость | переносимый |
| Безопасный Haskell | Trustworthy |
| Язык | Haskell2010 |
Содержание
Описание
Комплексные числа.
Прямоугольная форма
Тип данных, представляющий комплексные числа.
О комплексных числах можно прочитать в Википедии.
В 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 |
| 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 |
| Applicative Complex Источник | С версии: base-4.9.0.0 |
Определено в Data.Complex | |
| Functor Complex Источник | С версии: base-4.9.0.0 |
| Monad Complex Источник | С версии: base-4.9.0.0 |
| MonadFix Complex Источник | С версии: base-4.15.0.0 |
Определено в Data.Complex | |
| MonadZip Complex Источник | С версии: base-4.15.0.0 |
| 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 Источник | |
| Traversable Complex Источник | С версии: base-4.9.0.0 |
Определено в Data.Complex | |
| Generic1 Complex Источник | |
Определён в 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