עבודה עם מספרים מרוכבים

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), אך ה-interop עם Java יכול לטפל בפעולות הדרושות דרך המחלקה clojure.lang.Numbers.

java.lang.Complex של Java הוא חלופה אמינה, המספקת יותר תכונות ואפשרויות לאופטימיזציה. אינטרופרביליות המארח של Clojure מקלה על העבודה עם ספריות Java.

מאחורי הקלעים, חשבון מספרים מורכבים כולל חיבור וכפל של החלקים הממשיים והדמיוניים, עם הכלל המרכזי ש-i^2 = -1. חילוק מספרים מורכבים יכול להיות יותר מסובך, ולרוב דורש את הצמוד כדי להימנע מחילוק במספרים מורכבים.

ראו גם