Un número complejo se expresa en la forma z = a + b * i, donde:
a es la parte real (un número real),
b es la parte imaginaria (también un número real), y
i es la unidad imaginaria que cumple i^2 = -1.
El conjugado del número complejo z = a + b * i está dado por:
zc = a - b * i
El valor absoluto (o módulo) de z se define como:
|z| = sqrt(a^2 + b^2)
El cuadrado del valor absoluto se calcula como el producto de z y su conjugado zc:
|z|^2 = z * zc = a^2 + b^2
La suma de dos números complejos z1 = a + b * i y z2 = c + d * i se calcula sumando sus partes real e imaginaria por separado:
z1 + z2 = (a + b * i) + (c + d * i)
= (a + c) + (b + d) * i
La diferencia de dos números complejos se obtiene restando sus partes respectivas:
z1 - z2 = (a + b * i) - (c + d * i)
= (a - c) + (b - d) * i
El producto de dos números complejos se define como:
z1 * z2 = (a + b * i) * (c + d * i)
= (a * c - b * d) + (b * c + a * d) * i
El recíproco de un número complejo distinto de cero está dado por:
1 / z = 1 / (a + b * i)
= a / (a^2 + b^2) - b / (a^2 + b^2) * i
La división de un número complejo entre otro está 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 (la base del logaritmo natural) a un exponente complejo se puede expresar usando la fórmula de Euler:
e^(a + b * i) = e^a * e^(b * i)
= e^a * (cos(b) + i * sin(b))
Dado que no debes usar el soporte integrado para números complejos, implementa las siguientes operaciones:
Las instrucciones anteriores están sincronizadas con un repositorio compartido para garantizar la consistencia entre todos los tracks de lenguajes. Este apéndice ofrece aclaraciones adicionales o modifica las instrucciones según sea necesario para alinearse mejor con los objetivos del track de Clojure.
Para este ejercicio en el track de Clojure, no necesitas implementar la operación de exponenciación.
Regístrate en Exercism para aprender y dominar Clojure con 12 conceptos105 ejercicios y mentoría humana real, todo gratis.