Trabajando con números complejos

Clojure:
Trabajando con números complejos

Cómo hacerlo:

Clojure ofrece soporte incorporado para los números complejos a través de la clase utilitaria clojure.lang.Numbers. Utiliza complex para crear números complejos y realizar aritmética.

;; Creando números complejos
(def a (clojure.lang.Numbers/complex 3 4))  ; 3 + 4i
(def b (clojure.lang.Numbers/complex 1 -1)) ; 1 - i

;; Adición
(+ a b) ;=> #object[clojure.lang.Numbers.Complex 0x5c6cfe9 "4 + 3i"]

;; Sustracción
(- a b) ;=> #object[clojure.lang.Numbers.Complex 0x5e51118 "2 + 5i"]

;; Multiplicación
(* a b) ;=> #object[clojure.lang.Numbers.Complex 0x6ec3f0df "7 + i"]

;; División
(/ a b) ;=> #object[clojure.lang.Numbers.Complex 0x5db0cd10 "3.5 + 3.5i"]

;; Conjugado
(.conjugate a) ;=> #object[clojure.lang.Numbers.Complex 0x47c6e076 "3 - 4i"]

Profundización

Los números complejos fueron formalizados por matemáticos como Gauss y Euler en el siglo XVIII. Aunque inicialmente fueron recibidos con escepticismo, desde entonces se han vuelto cruciales en la ciencia y la ingeniería modernas. Clojure no tiene un tipo nativo de número complejo como algunos lenguajes (por ejemplo, Python), pero la interop con Java incluida puede manejar las operaciones necesarias a través de la clase clojure.lang.Numbers.

La java.lang.Complex de Java es una alternativa robusta, que ofrece más características y potenciales optimizaciones. La interoperabilidad de Clojure con su entorno permite trabajar fácilmente con las bibliotecas de Java.

Por debajo, la aritmética de los números complejos implica sumar y multiplicar las partes reales e imaginarias, con la regla clave de que i^2 = -1. La división de números complejos puede ser más complicada, típicamente requiriendo el conjugado para evitar la división por números complejos.

Ver también