1

J'ai besoin de diviser un nombre complexe, mais il semble que la division du plancher par des nombres complexes a été supprimée dans Python 3.x.Python 3.6: Division du plancher d'un nombre complexe

Y a-t-il des solutions de contournement pour cela? Toute idée serait appréciée.

par ex.

(2 + 3i) // (complex anything) will throw an error. 
+0

Donnez-nous une valeur pour '(n'importe quoi)'? À moins que ce soit un multiple de '(2 + 3j)', alors votre réponse sera également complexe, donc la division en étages n'est pas bien définie. Vous pouvez implémenter la division en multipliant par '(n'importe quoi) .conjugate/(abs (n'importe quoi) ** 2)' – smci

+0

Puis-je demander exactement ce que vous entendez par division de plancher pour les nombres complexes? Je suppose qu'il y a quelque chose qui me manque, mais il n'y a pas de façon évidente de le définir pour autant que je sache. – MiKo

+0

Merci pour vos commentaires. J'ai trouvé une bibliothèque (mpmath) avec les outils nécessaires. – Engine

Répondre

0

Je viens de découvrir la bibliothèque mpmath. Il a une grande quantité d'outils, y compris le plancher et mod pour les nombres complexes. Il semble que c'est réellement inclus avec SymPy.

3

nombres complexes en python 3 sont définis par leur partie imaginaire comme j, pas i. Vous avez raison de dire que dans Python 3, vous ne pouvez plus calculer la division par étages des nombres complexes, mais vous devez spécifier comment vous voulez qu'ils se comportent, si vous avez besoin d'une solution de contournement.

Dans tous les cas, vous aurez besoin de mettre en œuvre une nouvelle classe qui hérite de complex, et remplacer la méthode __floordiv__

+0

Merci pour votre commentaire. Je viens de trouver une bibliothèque qui fonctionnera. – Engine

1

À moins que (anything) soit un multiple de (2+3j), alors votre réponse sera également complexe, donc la répartition par étage n'est pas bien définie. Vous pouvez implémenter la division en multipliant par (anything).conjugate/(abs(anything)**2)