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 pelo 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 suas partes real e imaginária separadamente:
z1 + z2 = (a + b * i) + (c + d * i)
= (a + c) + (b + d) * i
A diferença de dois números complexos é obtida subtraindo as respectivas 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 pela fórmula de Euler:
e^(a + b * i) = e^a * e^(b * i)
= e^a * (cos(b) + i * sin(b))
Como você não deve usar suporte nativo a números complexos, implemente as seguintes operações:
As instruções acima são sincronizadas com um repositório compartilhado para garantir consistência entre todas as trilhas de linguagem. Este apêndice traz esclarecimentos adicionais ou modifica as instruções conforme necessário para se alinhar melhor aos objetivos da trilha de Clojure.
Neste exercício da trilha de Clojure, você não precisa implementar a operação de exponenciação.
Crie sua conta no Exercism para aprender e dominar Clojure com 12 conceitos105 exercícios e mentoria humana de verdade, tudo de graça.