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 | |
| 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 Методы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 Связанные типы
| |||||
| Data a => Data (Complex a) Source | Since: 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) 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 |
||||
Определено в Data.Complex Краткое описание методов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 | |
| Storable a => Storable (Complex a) Source | Since: base-4.8.0.0 |
Определено в 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