Clojure:
Работа с комплексными числами
Как это сделать:
Clojure предоставляет встроенную поддержку комплексных чисел через утилитный класс clojure.lang.Numbers
. Используйте complex
для создания комплексных чисел и выполнения арифметических операций.
;; Создание комплексных чисел
(def a (clojure.lang.Numbers/complex 3 4)) ; 3 + 4i
(def b (clojure.lang.Numbers/complex 1 -1)) ; 1 - i
;; Сложение
(+ a b) ;=> #object[clojure.lang.Numbers.Complex 0x5c6cfe9 "4 + 3i"]
;; Вычитание
(- a b) ;=> #object[clojure.lang.Numbers.Complex 0x5e51118 "2 + 5i"]
;; Умножение
(* a b) ;=> #object[clojure.lang.Numbers.Complex 0x6ec3f0df "7 + i"]
;; Деление
(/ a b) ;=> #object[clojure.lang.Numbers.Complex 0x5db0cd10 "3.5 + 3.5i"]
;; Сопряженное число
(.conjugate a) ;=> #object[clojure.lang.Numbers.Complex 0x47c6e076 "3 - 4i"]
Подробнее
Комплексные числа были формализованы математиками, такими как Гаусс и Эйлер, в 18 веке. Хотя первоначально они встречались со скепсисом, с тех пор они стали критически важны в современной науке и инженерии. Clojure не имеет родного типа для комплексных чисел, как некоторые языки (например, Python), но включенный Java-интероперабилити может обрабатывать необходимые операции через класс clojure.lang.Numbers
.
java.lang.Complex
в Java — это надежная альтернатива, предлагающая больше возможностей и потенциальных оптимизаций. Интероперабельность Clojure с хостом упрощает работу с Java-библиотеками.
В основе арифметики комплексных чисел лежит сложение и умножение действительной и мнимой частей, ключевым правилом является, что i^2 = -1
. Деление комплексных чисел может быть более запутанным, обычно требующим использования сопряженного, чтобы избежать деления на комплексные числа.
Смотрите также
- ClojureDocs, для быстрой справки: https://clojuredocs.org/
- Java API для
java.lang.Complex
: https://docs.oracle.com/javase/8/docs/api/java/lang/Complex.html - Страницу в Википедии о комплексных числах для математически заинтересованных: https://en.wikipedia.org/wiki/Complex_number