Um número complexo é expresso na forma z = a + b * i, em que:
a é a parte real (um número real),
b é a parte imaginária (também um número real), e
i é a unidade imaginária que satisfaz i^2 = -1.
O conjugado do número complexo z = a + b * i é dado por:
zc = a - b * i
O valor absoluto (ou módulo) de z é definido como:
|z| = sqrt(a^2 + b^2)
O quadrado do valor absoluto é calculado como o produto de z e do seu conjugado zc:
|z|^2 = z * zc = a^2 + b^2
A soma de dois números complexos z1 = a + b * i e z2 = c + d * i é calculada somando separadamente as suas partes real e imaginária:
z1 + z2 = (a + b * i) + (c + d * i)
= (a + c) + (b + d) * i
A diferença de dois números complexos obtém-se subtraindo as respetivas partes:
z1 - z2 = (a + b * i) - (c + d * i)
= (a - c) + (b - d) * i
O produto de dois números complexos é definido como:
z1 * z2 = (a + b * i) * (c + d * i)
= (a * c - b * d) + (b * c + a * d) * i
O recíproco de um número complexo não nulo é dado por:
1 / z = 1 / (a + b * i)
= a / (a^2 + b^2) - b / (a^2 + b^2) * i
A divisão de um número complexo por outro é dada por:
z1 / z2 = z1 * (1 / z2)
= (a + b * i) / (c + d * i)
= (a * c + b * d) / (c^2 + d^2) + (b * c - a * d) / (c^2 + d^2) * i
Elevar e (a base do logaritmo natural) a um expoente complexo pode ser expresso através da fórmula de Euler:
e^(a + b * i) = e^a * e^(b * i)
= e^a * (cos(b) + i * sin(b))
Dado que não deves usar suporte incorporado para números complexos, implementa as seguintes operações:
As instruções acima estão sincronizadas com um repositório partilhado, para garantir a consistência entre todos os percursos de linguagens. Este apêndice fornece esclarecimentos adicionais ou modifica as instruções conforme necessário, para se alinhar melhor com os objetivos do percurso de Clojure.
Neste exercício do percurso de Clojure, não precisas de implementar a operação de exponenciação.
Inscreve-te no Exercism para aprenderes e dominares Clojure com 12 conceitos105 exercícios, e mentoria humana real, tudo grátis.