51 votes

Cosinus inverse en Python

Je vous prie de m'excuser si cette question est simple, mais je n'ai trouvé aucune aide dans le manuel de python ou sur Google.

J'essaie de trouver l'inverse du cosinus d'une valeur en utilisant python.

c'est-à-dire cos¹(x)

Quelqu'un sait-il comment faire ?

Gracias

67voto

junjanes Points 4858

Nous avons le acos fonction qui renvoie l'angle en radians.

>>> import math
>>> math.acos(0)
1.5707963267948966
>>> _ * 2 - math.pi
0.0

8 votes

Ah, est-ce que arccos est la même chose que cos inverse ? Je n'ai pas fait de trigonométrie depuis des années ! !!

1 votes

Je sais que cette question est un peu ancienne, mais existe-t-il un moyen de retourner l'angle en degrés ?

29 votes

@DorianDore Oui ! Vous pouvez utiliser le math.degrees fonction. Par exemple, math.degrees(math.acos(0)) retournera 90.0 .

9voto

Michael J. Barber Points 12837

Pour augmenter les réponses correctes à utiliser math.acos il est également utile de savoir qu'il existe des fonctions mathématiques adaptées aux nombres complexes dans la base de données de l'UE. cmath :

>>> import cmath
>>> cmath.acos(1j)
(1.5707963267948966-0.88137358701954294j)

S'en tenir à math.acos si vous n'êtes intéressé que par les nombres réels,

0 votes

Merci pour les informations sur les nombres complexes, j'ai appris à les connaître. cmath . J'ai écrit ma propre classe pour les nombres complexes et le remplacement des opérateurs.

7voto

N SAMPATH KUMAR Points 51

Le résultat de math.acos() est en radians. Vous devez donc le convertir en degrés.

Voici comment vous pouvez procéder :

import math
res = math.degrees (math.acos (value))

4voto

Matt McCarthy Points 77

En réponse à l'utilisation de l'inverse du cosinus pour trouver les angles de retour via math.acos, c'est très bien tant que l'angle est <=90* ; au-delà, python n'aura aucun moyen de différencier l'angle voulu.

Observez.

>>> math.cos(5)
0.28366218546322625

Ci-dessus, j'ai demandé à python de me donner le cosinus d'un angle de 5 radian, et il m'a donné .28~ Super, ci-dessous je vais demander à python de me donner le radian qui a un cosinus de .28~. Ça devrait être 5, non ? Il vient littéralement de me dire que ça l'était.

>>> math.acos(0.28366218546322625)
1.2831853071795865

C'est faux ! Python renvoie 1,28~ radians. La raison est évidente lorsqu'on la trace visuellement, 1.28rad a le même cosinus que 5rad, ce sont des angles inverses. Chaque angle partage le même sinus avec un autre angle (et le -sinus avec deux autres). C'est-à-dire que 5/175* partagent un sinus équivalent. Ils partagent des cosinus inversement proportionnels .99~/-.99 respectivement. Leurs cousins en -sinus seraient 185 et 355. Le mème de relation ici est que tous ces angles partagent la même déviation angulaire de l'axe horizontal. 5*.

La raison pour laquelle python renvoie 1,28 et non 5 est que tous les ordinateurs/calculateurs sont basés sur une table de données de type boulier d'un angle/radian, son sinus, cos, tan etc etc. Ainsi, lorsque j'utilise math.acos(x), python demande au noyau de chercher dans cette table de données l'angle dont le cosinus est égal à x, et lorsqu'il le trouve, il renvoie la première entrée avec laquelle il apparaît. et ensuite, python me donne cet angle.

En raison de cette symétrie partagée et proportionnelle, les rapports sin/cos se répètent fréquemment. Et vous êtes susceptible de voir la même figure, plusieurs fois. Il n'y a aucun moyen pour python, ou le système d'exploitation, de déterminer la différence entre les deux angles dont vous avez besoin sans faire appel à une logique supplémentaire qui prend en compte la valeur -/+ du sinus de l'angle. Ou de la tangente de l'angle.

1.28 Rad has  x cosine, y sine, z tan  (72*)
1.88 Rad has -x cosine, y sine, -z tan (108*)
4.39 Rad has -x cosine, -y sine, z tan (252*)
   5 Rad has  x cosine, -y sine, -z tan (288*)

ou, vu de manière cartésienne,

                       negX,posY | posX,posY
                            -----+-----
                       negX,negY |  posX,negY

1.88 Rad has -x cosine, y sine (108) | 1.28 Rad has  x cosine, y sine (72*)
                                -----+-----
4.39 Rad has -x cosine, -y sine (252)|    5 Rad has  x cosine, -y sine (288)

Donc si, pour une raison quelconque, j'ai besoin de choisir 5 radians (par exemple pour un dessin vectoriel ou un jeu pour déterminer les différents vecteurs des ennemis par rapport au joueur), je devrais faire une sorte de logique if/then en comparant les sinus/tangents.

3voto

neil Points 1153

Vous cherchez le math.acos() fonction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X