Saltar al contenido

Coseno inverso en Python

Solución:

Tenemos el acos función, que devuelve el ángulo en radianes.

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

Para aumentar las respuestas correctas para usar math.acos, también vale la pena saber que existen funciones matemáticas adecuadas para números complejos en cmath:

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

Seguir con math.acos si solo te interesan los números reales,

En respuesta al uso del coseno inverso para encontrar ángulos de retorno a través de math.acos, todo está bien siempre y cuando el ángulo sea <= 90 * una vez que lo pase, Python no tendrá forma de diferenciar qué ángulo deseaba.

Observar.

>>> math.cos(5)
0.28366218546322625

Arriba, le pedí a Python que me buscara el coseno de un ángulo de 5 radianes, y me dio .28 ~ Genial, a continuación le pediré a Python que me dé el radián que tiene un coseno de .28 ~. Debería ser 5, ¿verdad? Literalmente solo me dijo que lo era.

>>> math.acos(0.28366218546322625)
1.2831853071795865

¡Incorrecto! Python devuelve 1,28 ~ radianes. La razón es obvia cuando se traza visualmente, 1.28rad tiene el mismo coseno que 5rad, son ángulos inversos. Cada ángulo comparte el mismo seno con otro ángulo (y el seno con otros dos). es decir, 5/175 * comparten un seno equivalente. Comparten cosenos inversamente proporcionales .99 ~ / -. 99 respectivamente. Sus primos sinusoidales serían 185 y 355. La relación meme aquí es que todos estos ángulos comparten la misma desviación angular desde el eje horizontal. 5 *.

La razón por la que Python devuelve 1.28 y no 5 es que todas las computadoras / calculadoras se basan en una tabla de datos similar a un ábaco de un ángulo / radianes, su seno, cos, tan, etc. el kernal para buscar en esa tabla de datos cualquier ángulo que tenga un coseno de x, y cuando lo encuentra, devuelve la primera entrada con la que aparece. y luego Python me da ese ángulo.

Debido a esta simetría proporcional compartida, las relaciones sen / cos se repiten con frecuencia. Y es probable que vea la misma figura varias veces. No hay forma de que Python, o el sistema operativo, determinen la diferencia de cuál de los dos ángulos realmente necesita sin hacer una lógica adicional que tenga en cuenta el valor – / + del seno del ángulo. O la tangente del ángulo.

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*)

o, visto de forma cartesiana,

                       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)

Entonces, si, por cualquier razón, necesito que se elijan 5 radianes (digamos para un dibujo vectorial o un juego para determinar los diversos vectores que los enemigos son del jugador), tendría que hacer algún tipo de lógica if / then comparando los senos / tangentes.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *