Haskell:
การทำงานกับตัวเลขซับซ้อน
วิธีการ:
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 แต่ได้รับการยอมรับอย่างกว้างขวางในช่วงเวลาที่หลังมากขึ้น Haskell นั้นเหมือนกับภาษาอื่นๆ เพราะมีการสนับสนุนการคำนวณเชิงซ้อนเป็นอย่างดี ทำให้ง่ายต่อการทำงานกับตัวเลขเหล่านี้โดยไม่จำเป็นต้องสร้างฐานคณิตศาสตร์ใหม่
ทางเลือกอื่น ๆ รวมถึงการสร้างประเภทของตัวเลขเชิงซ้อนของคุณเอง หรือใช้ไลบรารีสำหรับสาขาเฉพาะ เช่น ควอเทอร์เนียนสำหรับกราฟิก 3 มิติ แต่สำหรับกรณีการใช้งานส่วนใหญ่ โมดูล Data.Complex
ของ Haskell เพียงพอแล้ว
ภายใต้ฝาครอบ Data.Complex
เป็นเพียงแค่ประเภทของข้อมูลที่รวมค่า Float
หรือ Double
สองค่า เป็นตัวแทนของส่วนจริงและส่วนจินตภาพตามลำดับ มันเป็นวิธีที่ง่ายและมีประสิทธิภาพในการทำงานกับตัวเลขเชิงซ้อนบนแพลตฟอร์ม Haskell
ดูเพิ่มเติม
ตรวจสอบทรัพยากรเหล่านี้เพื่อศึกษาเพิ่มเติมเกี่ยวกับตัวเลขเชิงซ้อนใน Haskell:
- เอกสารคู่มือ Haskell
Data.Complex
อย่างเป็นทางการ: Hackage Data.Complex - การดำน้ำลึกเข้าไปในประเภทตัวเลขของ Haskell: Learn You a Haskell for Great Good!
- สำหรับการประยุกต์ใช้ สำรวจอัลกอริทึม Fast Fourier Transform ใน Haskell: ไลบรารี Haskell FFT