J'ai ce problème
>>> import math >>> math.pow(-1.07,1.3) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: math domain error
6 Réponses :
J'utilise Python 2.5.4 et je reçois ceci: Quelle version Python utilisez-vous? P> P>
(- 1.07) 1.3 sup> ne sera pas un nombre réel, donc l'erreur de domaine mathématique. Si vous avez besoin d'un numéro complexe, un B sup> doit être réécrit dans e b ln a sup>, par exemple p> si vous voulez juste retourner Nan, attrapez cette exception. P> >>> 1.3 ** -1.07
0.755232399659047
>>> (-1.07) ** 1.3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: negative number cannot be raised to a fractional power
>>> (-1.07+0j) ** 1.3
(-0.6418264288034731-0.8833982926856789j)
N'utilisez pas de POW et faites le complexe d'exposition (ajouter pas besoin de fonctions mathématiques :) p> p> 0j code> à celui-ci). Voici un exemple:
du titre de ce message indiquant que la puissance em> strud> est négative, est-il possible que vous souhaitiez réellement 1,3 -1.07 sup> plutôt que - 1.07 1.3 sup>? P>
Les pouvoirs de non-titres de nombres complexes (et négatifs) impliquent une subtilité importante. La fonction exponentielle est injective sur la ligne réelle; I.E. exp (a) = exp (b) implique A = b. Ce n'est pas le cas de l'avion complexe. Depuis Exp (2 * Pi * I) = 1, la fonction exponentielle est 2 * pi * i-périodique. p>
Cela conduit au problème: quelle branche de la fonction journal utilisons-nous? Cette question est l'une des questions centrales d'analyse complexe. p>
Python répond intelligemment à cette situation. Sauf si vous utilisez explicitement son constructeur de nombres complexes, vous allez faire du trafic de réels. Comme les pouvoirs fractionnaires de négatifs ne sont jamais réels, Python lance de manière appropriée une exception. P>
Les pouvoirs de bases négatives sont des nombres complexes.
Voici un exemple qui explique comment le réparer:
Citant le manuel: "Si X et Y sont finis, X est négatif, et y n'est pas un entier, alors pow (x, y) est indéfini et soulève la ValueError."