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 的 java.lang.Complex
是一个强大的替代品,提供更多功能和潜在的优化。Clojure 的宿主互操作性使得与 Java 库一起工作变得容易。
在底层,复数算术涉及到实部和虚部的加法和乘法,关键规则是 i^2 = -1
。复数除法可能更复杂,通常需要用到共轭来避免除以复数。
参见
- ClojureDocs,快速参考资料:https://clojuredocs.org/
java.lang.Complex
的 Java API:https://docs.oracle.com/javase/8/docs/api/java/lang/Complex.html- 给数学好奇者的复数维基百科页面:https://en.wikipedia.org/wiki/Complex_number