Haskell:
עבודה עם מספרים מרוכבים
איך לעשות:
הסקל מטפל במספרים מרוכבים עם המודול Data.Complex. הנה סיור מהיר:
import Data.Complex
-- הגדרת שני מספרים מרוכבים
let z1 = 3 :+ 4 -- זה 3 + 4i
let z2 = 5 :+ (-2) -- 5 - 2i
-- פעולות אריתמטיות
let sum = z1 + z2 -- 8 :+ 2
let difference = z1 - z2 -- -2 :+ 6
let product = z1 * z2 -- 23 :+ 14
let quotient = z1 / z2 -- 0.20689655172413793 :+ 0.9655172413793104
-- שותף מרוכב
let conjugateZ1 = conjugate z1 -- 3 :+ (-4)
-- גודל ושלב
let magnitudeZ1 = magnitude z1 -- 5.0
let phaseZ1 = phase z1 -- 0.9272952180016122
-- המרה מקוטב לריבועי ולהפך
let z1Polar = polar z1 -- (5.0,0.9272952180016122)
let fromPolar = mkPolar 5.0 0.9272952180016122 -- כמו z1פלט לדוגמה אחרי טעינת הקוד הנ"ל ב-GHCi עשוי להיות:
*Main> sum
8.0 :+ 2.0
*Main> product
23.0 :+ 14.0
*Main> magnitudeZ1
5.0צלילה עמוקה
מספרים מרוכבים חוזרים למאה ה-16 אך זכו לקבלה רחבה הרבה מאוחר יותר. הסקל, כמו שפות רבות, מספק תמיכה ילידית לאריתמטיקה מרוכבת, המקלה על העבודה עם מספרים אלה מבלי ליישם את המתמטיקה הבסיסית.
אלטרנטיבות כוללות בנייה של סוג מספר מרוכב מותאם אישית או שימוש בספריות לתחומים ספציפיים כמו קווטרניונים לגרפיקת 3D. אך לרוב תרחישי השימוש, Data.Complex של הסקל מספק בהחלט.
מאחורי הקלעים, Data.Complex הוא רק סוג נתונים המזווג שני ערכי Float או Double, המייצגים את החלקים הממשי והמדומה, בהתאמה. זוהי דרך יעילה וישירה לעבוד עם מספרים מרוכבים על פלטפורמת הסקל.
ראו גם
בדוקו את המשאבים האלה למידע נוסף על מספרים מרוכבים בהסקל:
- התיעוד הרשמי של הסקל
Data.Complex: Hackage Data.Complex - צלילה עמוקה יותר לטיפוסי המספרים של הסקל: Learn You a Haskell for Great Good!
- ליישום, חקר אלגוריתמי טרנספורמציה פורייה מהירים בהסקל: ספריית FFT של הסקל