Calcular funciones trigonométricas en Python (sin, cos, tan, arcsin, arccos, arctan)

Negocio

Usando math, el módulo estándar de Python para funciones matemáticas, puedes calcular funciones trigonométricas (sin, cos, tan) y funciones trigonométricas inversas (arcsin, arccos, arctan).

Los siguientes contenidos se explican aquí con códigos de ejemplo.

  • Pi (3,1415926..):math.pi
  • Conversión de ángulos (radianes, grados):math.degrees(),math.radians()
  • Seno, seno inverso:math.sin(),math.asin()
  • coseno, coseno inverso:math.cos(),math.acos()
  • Tangente, tangente inversa:math.tan(),math.atan(),math.atan2()
  • Diferencias a continuación:math.atan(),math.atan2()

Pi (3,1415926..): math.pi

Pi se proporciona como una constante en el módulo matemático. Se expresa de la siguiente manera.
math.pi

import math

print(math.pi)
# 3.141592653589793

Conversión de ángulos (radianes, grados): math.degrees(), math.radians()

Las funciones trigonométricas y trigonométricas inversas del módulo de matemáticas utilizan el radián como unidad de ángulo.

Utilice math.degrees() y math.radians() para convertir entre radianes (método de grados de arco) y grados (método de grados).

Math.degrees() convierte de radianes a grados, y math.radians() convierte de grados a radianes.

print(math.degrees(math.pi))
# 180.0

print(math.radians(180))
# 3.141592653589793

Seno, seno inverso: math.sin(), math.asin()

La función para encontrar el seno (sin) es math.sin() y la función para encontrar el seno inverso (arcsin) es math.asin().

Aquí hay un ejemplo de encontrar el seno de 30 grados, usando math.radians() para convertir grados a radianes.

sin30 = math.sin(math.radians(30))
print(sin30)
# 0.49999999999999994

El seno de 30 grados es 0,5, pero hay un error porque pi, un número irracional, no se puede calcular con precisión.

Si desea redondear al número apropiado de dígitos, utilice la función round() o el método format() o la función format().

Tenga en cuenta que el valor de retorno de round() es un número (int o float), pero el valor de retorno de format() es una cadena. Si desea utilizarlo para cálculos posteriores, utilice round().

print(round(sin30, 3))
print(type(round(sin30, 3)))
# 0.5
# <class 'float'>

print('{:.3}'.format(sin30))
print(type('{:.3}'.format(sin30)))
# 0.5
# <class 'str'>

print(format(sin30, '.3'))
print(type(format(sin30, '.3')))
# 0.5
# <class 'str'>

La función round() especifica el número de decimales como segundo argumento. Tenga en cuenta que esto no es estrictamente un redondeo. Consulte el siguiente artículo para obtener más detalles.

El método format() y la función format() especifican el número de decimales en la cadena de especificación del formato. Consulte el siguiente artículo para obtener más detalles.

Si quieres comparar, también puedes usar math.isclose().

print(math.isclose(sin30, 0.5))
# True

De forma similar, aquí tenemos un ejemplo para encontrar el seno inverso de 0,5. math.asin() devuelve radianes, que se convierten en grados con math.degrees().

asin05 = math.degrees(math.asin(0.5))
print(asin05)
# 29.999999999999996

print(round(asin05, 3))
# 30.0

coseno, coseno inverso: math.cos(), math.acos()

La función para hallar el coseno (cos) es math.cos(), y la función para hallar el coseno inverso (arc cosine, arccos) es math.acos().

A continuación se muestra un ejemplo para encontrar el coseno de 60 grados y el coseno inverso de 0,5.

print(math.cos(math.radians(60)))
# 0.5000000000000001

print(math.degrees(math.acos(0.5)))
# 59.99999999999999

Si desea redondear al dígito apropiado, puede utilizar round() o format() como con el seno.

Tangente, tangente inversa: math.tan(), math.atan(), math.atan2()

La función para encontrar la tangente (tan) es math.tan(), y la función para encontrar la tangente inversa (arctan) es math.atan() o math.atan2().
Math.atan2() se describe más adelante.

A continuación se muestra un ejemplo para encontrar la tangente de 45 grados y la tangente inversa de 1 grado.

print(math.tan(math.radians(45)))
# 0.9999999999999999

print(math.degrees(math.atan(1)))
# 45.0

Diferencia entre math.atan() y math.atan2()

Tanto math.atan() como math.atan2() son funciones que devuelven la tangente inversa, pero difieren en el número de argumentos y el rango de valores de retorno.

math.atan(x) tiene un argumento y devuelve arctan(x) en radianes. El valor de retorno estará entre -pi \ 2 y pi \ 2 (-90 a 90 grados).

print(math.degrees(math.atan(0)))
# 0.0

print(math.degrees(math.atan(1)))
# 45.0

print(math.degrees(math.atan(-1)))
# -45.0

print(math.degrees(math.atan(math.inf)))
# 90.0

print(math.degrees(math.atan(-math.inf)))
# -90.0

En el ejemplo anterior, math.inf representa el infinito.

math.atan2(y, x) tiene dos argumentos y devuelve arctan(y \ x) en radianes. Este ángulo es el ángulo (declinación) que el vector del origen a las coordenadas (x, y) hace con la dirección positiva del eje x en el plano de coordenadas polares, y el valor devuelto está entre -pi y pi (-180 a 180 grados).

Dado que los ángulos en el segundo y tercer cuadrante también se pueden obtener correctamente, math.atan2() es más apropiado que math.atan() cuando se considera el plano de coordenadas polares.

Obsérvese que el orden de los argumentos es y, x, no x, y.

print(math.degrees(math.atan2(0, 1)))
# 0.0

print(math.degrees(math.atan2(1, 1)))
# 45.0

print(math.degrees(math.atan2(1, 0)))
# 90.0

print(math.degrees(math.atan2(1, -1)))
# 135.0

print(math.degrees(math.atan2(0, -1)))
# 180.0

print(math.degrees(math.atan2(-1, -1)))
# -135.0

print(math.degrees(math.atan2(-1, 0)))
# -90.0

print(math.degrees(math.atan2(-1, 1)))
# -45.0

Como en el ejemplo anterior, la dirección negativa del eje x (y es cero y x es negativo) es pi (180 grados), pero cuando y es cero negativo, es -pi (-180 grados). Ten cuidado si quieres manejar el signo estrictamente.

print(math.degrees(math.atan2(-0.0, -1)))
# -180.0

Los ceros negativos son el resultado de las siguientes operaciones

print(-1 / math.inf)
# -0.0

print(-1.0 * 0.0)
# -0.0

Los enteros no se tratan como ceros negativos.

print(-0.0)
# -0.0

print(-0)
# 0

Incluso cuando tanto x como y son cero, el resultado depende del signo.

print(math.degrees(math.atan2(0.0, 0.0)))
# 0.0

print(math.degrees(math.atan2(-0.0, 0.0)))
# -0.0

print(math.degrees(math.atan2(-0.0, -0.0)))
# -180.0

print(math.degrees(math.atan2(0.0, -0.0)))
# 180.0

Hay otros ejemplos en los que el signo del resultado cambia dependiendo de los ceros negativos, como math.atan2(), así como math.sin(), math.asin(), math.tan() y math.atan().

print(math.sin(0.0))
# 0.0

print(math.sin(-0.0))
# -0.0

print(math.asin(0.0))
# 0.0

print(math.asin(-0.0))
# -0.0

print(math.tan(0.0))
# 0.0

print(math.tan(-0.0))
# -0.0

print(math.atan(0.0))
# 0.0

print(math.atan(-0.0))
# -0.0

print(math.atan2(0.0, 1.0))
# 0.0

print(math.atan2(-0.0, 1.0))
# -0.0

Tenga en cuenta que los ejemplos hasta ahora son los resultados de ejecutar el programa en CPython. Tenga en cuenta que otras implementaciones o entornos pueden manejar los ceros negativos de manera diferente.

Copied title and URL