Un numero complesso è un numero nella forma a + b * i, dove a e b sono reali e i soddisfa i^2 = -1.
a si chiama parte reale e b si chiama parte immaginaria di z.
Il coniugato del numero a + b * i è il numero a - b * i.
Il valore assoluto di un numero complesso z = a + b * i è un numero reale |z| = sqrt(a^2 + b^2). Il quadrato del valore assoluto |z|^2 è il risultato della moltiplicazione di z per il suo coniugato complesso.
La somma e la differenza di due numeri complessi richiedono di sommare o sottrarre separatamente le loro parti reale e immaginaria:
(a + i * b) + (c + i * d) = (a + c) + (b + d) * i,
(a + i * b) - (c + i * d) = (a - c) + (b - d) * i.
Il risultato della moltiplicazione è per definizione
(a + i * b) * (c + i * d) = (a * c - b * d) + (b * c + a * d) * i.
Il reciproco di un numero complesso diverso da zero è
1 / (a + i * b) = a/(a^2 + b^2) - b/(a^2 + b^2) * i.
Dividendo un numero complesso a + i * b per un altro c + i * d si ottiene:
(a + i * b) / (c + i * d) = (a * c + b * d)/(c^2 + d^2) + (b * c - a * d)/(c^2 + d^2) * i.
Elevare e a un esponente complesso si può esprimere come e^(a + i * b) = e^a * e^(i * b), il cui ultimo termine è dato dalla formula di Eulero e^(i * b) = cos(b) + i * sin(b).
Implementa le seguenti operazioni:
Presumi che il linguaggio di programmazione che stai usando non abbia un'implementazione dei numeri complessi.
Iscriviti a Exercism per imparare e padroneggiare Haskell con 107 esercizi e il mentoring di persone reali, tutto gratis.