Trabalhando com números complexos

Haskell:
Trabalhando com números complexos

Como fazer:

Haskell lida com números complexos através do módulo Data.Complex. Aqui está um rápido tour:

import Data.Complex

-- Definindo dois números complexos
let z1 = 3 :+ 4  -- isso é 3 + 4i
let z2 = 5 :+ (-2)  -- 5 - 2i

-- Operações aritméticas
let soma = z1 + z2  -- 8 :+ 2
let diferença = z1 - z2  -- -2 :+ 6
let produto = z1 * z2  -- 23 :+ 14
let quociente = z1 / z2  -- 0.20689655172413793 :+ 0.9655172413793104

-- Conjugado complexo
let conjugadoZ1 = conjugate z1  -- 3 :+ (-4)

-- Magnitude e fase
let magnitudeZ1 = magnitude z1  -- 5.0
let faseZ1 = phase z1  -- 0.9272952180016122

-- Conversão de polar para retangular e vice-versa
let z1Polar = polar z1  -- (5.0,0.9272952180016122)
let dePolar = mkPolar 5.0 0.9272952180016122  -- igual a z1

A saída de amostra após carregar o código acima no GHCi pode ser:

*Main> soma
8.0 :+ 2.0
*Main> produto
23.0 :+ 14.0
*Main> magnitudeZ1
5.0

Aprofundamento

Os números complexos remontam ao século 16, mas foram amplamente aceitos muito tempo depois. Haskell, como muitas linguagens, fornece suporte nativo para aritmética complexa, tornando fácil trabalhar com esses números sem implementar a matemática subjacente.

Alternativas incluem construir seu próprio tipo de número complexo ou usar bibliotecas para domínios específicos, como quaternions para gráficos 3D. Mas, para a maioria dos casos de uso, o Data.Complex de Haskell é mais do que suficiente.

Por baixo dos panos, Data.Complex é apenas um tipo de dado que emparelha dois valores Float ou Double, representando as partes real e imaginária, respectivamente. É uma maneira simples e eficiente de trabalhar com números complexos na plataforma Haskell.

Veja Também

Confira esses recursos para mais sobre números complexos em Haskell: