Exponentiation en Python - si je préfère l'opérateur au lieu de et Stack Overflow

Cette question a déjà une réponse ici:

Dans mon domaine, il est très commun à la case quelques chiffres, exploiter les ensemble, et la racine carrée du résultat. Cela se fait dans le théorème de Pythagore, et le calcul de RMS, par exemple.

En numpy, je l'ai fait ce qui suit:

Et quelque chose de pur python comme celui-ci on pouvait s'y attendre:

Cependant, je l'ai utilisé cette forme pure python, depuis que je trouve beaucoup plus compact, import-indépendant, et apparemment équivalent:

J'ai entendu certaines personnes soutiennent que l'opérateur ** est en quelque sorte un hack, et que la quadrature du nombre par exponentiation par 0,5 est pas lisible. Mais ce que je voudrais poser est si:

« Y at-il raison computationnelle de préférer les deux premières alternatives au cours de la troisième (s)? »

Merci d'avoir lu!

a demandé le 23 septembre '13 à 17h40

Cette question a été posée et a déjà une réponse. Si ces réponses ne répondent pas pleinement à votre question, s'il vous plaît poser une nouvelle question.

Même en Python de base que vous pouvez faire le calcul sous forme générique

x ** 2 est sûrement pas une bidouille et le calcul effectué est le même (j'ai vérifié avec le code source de CPython). Je trouve effectivement plus lisible (et le nombre de lisibilité).

En utilisant à la place x ** 0,5 prendre la racine carrée ne fait pas exactement les mêmes calculs que math.sqrt que l'ancien (probablement) est calculée à l'aide logarithmes et celui-ci (probablement) en utilisant l'instruction numérique spécifique du processeur mathématique.

J'utilise souvent x ** 0,5 simplement parce que je ne veux pas ajouter les mathématiques juste pour cela. Je pense cependant une instruction spécifique pour la racine carrée de mieux travailler (avec plus de précision) qu'une opération en plusieurs étapes avec logarithmes.

a répondu le 23 septembre '13 à 18:00

Articles Liés