Haskell:
Å jobbe med komplekse tall
Hvordan:
Haskell håndterer komplekse tall med modulen Data.Complex
. Her er en rask gjennomgang:
import Data.Complex
-- Definer to komplekse tall
let z1 = 3 :+ 4 -- det er 3 + 4i
let z2 = 5 :+ (-2) -- 5 - 2i
-- Aritmetiske operasjoner
let sum = z1 + z2 -- 8 :+ 2
let differanse = z1 - z2 -- -2 :+ 6
let produkt = z1 * z2 -- 23 :+ 14
let kvotient = z1 / z2 -- 0.20689655172413793 :+ 0.9655172413793104
-- Kompleks konjugering
let konjugertZ1 = conjugate z1 -- 3 :+ (-4)
-- Størrelse og fase
let størrelseZ1 = magnitude z1 -- 5.0
let faseZ1 = phase z1 -- 0.9272952180016122
-- Omforming fra polar til rektangulær og omvendt
let z1Polar = polar z1 -- (5.0,0.9272952180016122)
let fraPolar = mkPolar 5.0 0.9272952180016122 -- samme som z1
Eksempel på utdata etter å ha lastet inn koden ovenfor i GHCi kan være:
*Main> sum
8.0 :+ 2.0
*Main> produkt
23.0 :+ 14.0
*Main> størrelseZ1
5.0
Dypdykk
Komplekse tall går tilbake til det 16. århundret, men ble bredt akseptert mye senere. Haskell, som mange andre språk, tilbyr innebygd støtte for kompleks aritmetikk, noe som gjør det enkelt å jobbe med disse tallene uten å måtte implementere den underliggende matematikken.
Alternativer inkluderer å bygge din egen kompleks talltype eller å bruke biblioteker for spesifikke domener som for eksempel kvaternioner for 3D-grafikk. Men for de fleste bruksområder er Haskell’s Data.Complex
nok.
Under hetten er Data.Complex
bare en datatype som parer to Float
eller Double
verdier, som representerer henholdsvis den reelle og den imaginære delen. Det er en enkel og effektiv måte å jobbe med komplekse tall på Haskell-plattformen.
Se Også
Sjekk ut disse ressursene for mer om komplekse tall i Haskell:
- Den offisielle Haskell
Data.Complex
dokumentasjonen: Hackage Data.Complex - Et dypere dykk inn i Haskell’s talltyper: Learn You a Haskell for Great Good!
- For en anvendelse, utforsk algoritmer for rask Fourier-transformasjon i Haskell: Haskell FFT-bibliotek