valor trigonometricas seno raiz poner natural logaritmo instalar graficar grafica funciones cuadrada coseno como absoluto python math trigonometry

trigonometricas - raiz cuadrada en python



Coseno Inverso En Python (6)

Disculpas si esto es sencillo, pero no he encontrado ninguna ayuda en el manual de Python o en Google.

Estoy tratando de encontrar el coseno inverso para un valor usando python.

es decir, cos-1 (x)

¿Alguien sabe como hacer esto?

Gracias


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

Observar.

>>> math.cos(5) 0.28366218546322625

Arriba, le pedí a python que me trajera el coseno de un ángulo de 5 radianes, y me dio .28 ~ Genial, más abajo, le pediré a python que me dé el radián que tiene un cosine de .28 ~. Debería ser 5, ¿verdad? Literalmente me acaba de decir que era.

>>> math.acos(0.28366218546322625) 1.2831853071795865

¡Incorrecto! Python devuelve 1,28 ~ radianes. La razón es obvia cuando se trazan 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 de seno serían 185 y 355. El meme de la relación aquí es que todos estos ángulos comparten la misma desviación angular del 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 / radián, su seno, cos, tan, etc. el núcleo para mirar en esa tabla de datos para 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 pecado / cos se repiten con frecuencia. Y es probable que veas la misma figura, varias veces. No hay forma de que Python, o el sistema operativo, determine 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 bien, 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 cartesianamente,

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 alguna razón, necesito 5 radianes para ser elegidos (por ejemplo, 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


Estás buscando la función math.acos() .


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

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

Quédate con math.acos si solo te interesan los números reales,


También puedes usar arccos del módulo numpy

>>> import numpy >>> numpy.arccos(0.5) 1.0471975511965979

ADVERTENCIA : Para los escalares, la función numpy.arccos() es mucho más lenta (~ 10x) que math.acos . Ver post aqui

Sin embargo, el numpy.arccos() es adecuado para secuencias, mientras que math.acos no lo es. :)

>>> numpy.arccos([0.5, 0.3]) array([ 1.04719755, 1.26610367])

pero

>>> math.acos([0.5, 0.3]) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: a float is required


o simplemente escriba su propia función para la expansión taylor de cos ^ {- 1}

esto llevaría más tiempo (y tal vez más lento de ejecutar) pero es el enfoque más general


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

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