Att arbeta med komplexa tal

Haskell:
Att arbeta med komplexa tal

Hur man gör:

Haskell hanterar komplexa tal med modulen Data.Complex. Här är en snabb översikt:

import Data.Complex

-- Definiera två komplexa tal
let z1 = 3 :+ 4  -- det är 3 + 4i
let z2 = 5 :+ (-2)  -- 5 - 2i

-- Aritmetiska operationer
let sum = z1 + z2  -- 8 :+ 2
let skillnad = z1 - z2  -- -2 :+ 6
let produkt = z1 * z2  -- 23 :+ 14
let kvot = z1 / z2  -- 0.20689655172413793 :+ 0.9655172413793104

-- Komplex konjugat
let konjugatZ1 = conjugate z1  -- 3 :+ (-4)

-- Magnitud och fas
let magnitudZ1 = magnitude z1  -- 5.0
let fasZ1 = phase z1  -- 0.9272952180016122

-- Omvandling mellan polär och rektangulär form och vice versa
let z1Polar = polar z1  -- (5.0,0.9272952180016122)
let franPolar = mkPolar 5.0 0.9272952180016122  -- samma som z1

Exempelutdata efter att ha laddat ovanstående kod i GHCi kan vara:

*Main> sum
8.0 :+ 2.0
*Main> produkt
23.0 :+ 14.0
*Main> magnitudZ1
5.0

Djupdykning

Komplexa tal går tillbaka till 1500-talet men accepterades i större utsträckning mycket senare. Haskell, liksom många andra språk, ger inföddt stöd för komplex aritmetik, vilket gör det enkelt att arbeta med dessa tal utan att implementera den underliggande matematiken.

Alternativ inkluderar att bygga din egen komplexa taltyp eller använda bibliotek för specifika domäner såsom kvaternioner för 3D-grafik. Men för de flesta användningsfall är Haskell:s Data.Complex mer än tillräckligt.

I bakgrunden är Data.Complex bara en datatyp som parar ihop två Float eller Double värden, som representerar den reella och imaginära delen, respektive. Det är ett enkelt och effektivt sätt att arbeta med komplexa tal på Haskell-plattformen.

Se också

Kolla in dessa resurser för mer om komplexa tal i Haskell: