Un nombre complexe est un nombre de la forme a + b * i, où a et b sont réels et i vérifie i^2 = -1.
On appelle a la partie réelle et b la partie imaginaire de z.
Le conjugué du nombre a + b * i est le nombre a - b * i.
Le module d'un nombre complexe z = a + b * i est un nombre réel |z| = sqrt(a^2 + b^2). Le carré du module |z|^2 est le résultat de la multiplication de z par son conjugué.
La somme et la différence de deux nombres complexes consistent à additionner ou soustraire séparément leurs parties réelles et imaginaires :
(a + i * b) + (c + i * d) = (a + c) + (b + d) * i,
(a + i * b) - (c + i * d) = (a - c) + (b - d) * i.
Le résultat de la multiplication est, par définition,
(a + i * b) * (c + i * d) = (a * c - b * d) + (b * c + a * d) * i.
L'inverse d'un nombre complexe non nul est
1 / (a + i * b) = a/(a^2 + b^2) - b/(a^2 + b^2) * i.
Diviser un nombre complexe a + i * b par un autre c + i * d donne :
(a + i * b) / (c + i * d) = (a * c + b * d)/(c^2 + d^2) + (b * c - a * d)/(c^2 + d^2) * i.
Élever e à un exposant complexe peut s'exprimer par e^(a + i * b) = e^a * e^(i * b), dont le dernier terme est donné par la formule d'Euler e^(i * b) = cos(b) + i * sin(b).
Implémente les opérations suivantes :
Pars du principe que le langage de programmation que tu utilises ne dispose pas d'une implémentation des nombres complexes.
Inscris-toi sur Exercism pour apprendre et maîtriser Haskell avec 107 exercices, et un vrai mentorat humain, le tout gratuitement.