Parcours
/
Factor
Factor
/
Exercices
/
Nombres complexes
Nombres complexes

Nombres complexes

Moyen

Instructions

Un nombre complexe s'écrit sous la forme z = a + b * i, où :

  • a est la partie réelle (un nombre réel),

  • b est la partie imaginaire (aussi un nombre réel), et

  • i est l'unité imaginaire qui vérifie i^2 = -1.

Opérations sur les nombres complexes

Conjugué

Le conjugué du nombre complexe z = a + b * i est donné par :

zc = a - b * i

Valeur absolue

La valeur absolue (ou module) de z est définie par :

|z| = sqrt(a^2 + b^2)

Le carré de la valeur absolue se calcule comme le produit de z et de son conjugué zc :

|z|^2 = z * zc = a^2 + b^2

Addition

La somme de deux nombres complexes z1 = a + b * i et z2 = c + d * i s'obtient en additionnant séparément leurs parties réelles et imaginaires :

z1 + z2 = (a + b * i) + (c + d * i)
        = (a + c) + (b + d) * i

Soustraction

La différence de deux nombres complexes s'obtient en soustrayant leurs parties respectives :

z1 - z2 = (a + b * i) - (c + d * i)
        = (a - c) + (b - d) * i

Multiplication

Le produit de deux nombres complexes est défini par :

z1 * z2 = (a + b * i) * (c + d * i)
        = (a * c - b * d) + (b * c + a * d) * i

Inverse

L'inverse d'un nombre complexe non nul est donné par :

1 / z = 1 / (a + b * i)
      = a / (a^2 + b^2) - b / (a^2 + b^2) * i

Division

La division d'un nombre complexe par un autre est donnée par :

z1 / z2 = z1 * (1 / z2)
        = (a + b * i) / (c + d * i)
        = (a * c + b * d) / (c^2 + d^2) + (b * c - a * d) / (c^2 + d^2) * i

Exponentiation

Élever e (la base du logarithme népérien) à un exposant complexe peut s'exprimer à l'aide de la formule d'Euler :

e^(a + b * i) = e^a * e^(b * i)
              = e^a * (cos(b) + i * sin(b))

Exigences d'implémentation

Comme tu ne dois pas t'appuyer sur une prise en charge intégrée des nombres complexes, implémente les opérations suivantes :

  • l'addition de deux nombres complexes
  • la soustraction de deux nombres complexes
  • la multiplication de deux nombres complexes
  • la division de deux nombres complexes
  • le conjugué d'un nombre complexe
  • la valeur absolue d'un nombre complexe
  • l'exponentiation de e (la base du logarithme népérien) à un nombre complexe

Mots

Définis un tuple cmplx avec les slots real et imaginary. Les accesseurs de slot real>> et imaginary>> viennent gratuitement avec la définition du tuple et permettent aux tests de lire les composantes.

  • <cmplx> ( real imag -- cmplx ) : construit un nombre complexe.
  • >cmplx ( pair -- cmplx ) : construit un cmplx à partir de { real imaginary }.
  • cmplx>pair ( cmplx -- pair ) : renvoie { real imaginary }.
  • c+ ( a b -- c ), c- ( a b -- c ), c* ( a b -- c ), c/ ( a b -- c ) : opérations arithmétiques sur deux nombres complexes.
  • c-abs ( a -- |a| ) : valeur absolue (un réel).
  • c-conj ( a -- a* ) : conjugué complexe.
  • c-exp ( z -- e^z ) : exponentielle complexe.

Les génériques MATH: de Factor (+, -, *, /) ne font de la répartition que sur les types de la hiérarchie mathématique intégrée, c'est pourquoi cet exercice utilise des mots dédiés plutôt que des méthodes sur ces génériques.

Les tests portant sur de l'arithmétique qui mélange des nombres réels et des nombres complexes sont exclus, car toutes les opérations ici se font entre deux valeurs cmplx.


Source

WikipediaLe lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Factor Exercism

Prêt à commencer Nombres complexes ?

Inscris-toi sur Exercism pour apprendre et maîtriser Factor avec 47 concepts163 exercices, et un vrai mentorat humain, le tout gratuitement.