Trigonometría en Python

Objetivo: presentar las funciones trigonométricas disponibles en el módulo math de Python.

La mejor manera de acercarse e ir conociendo la inmensa biblioteca estándar de Python es dividiéndola en pequeños bloques temáticos. En el artículo de hoy nos ocuparemos de un subconjunto muy específico: las funciones trigonométricas.

La primera aproximación a las matemáticas en Python es a través del módulo math, incluido directamente en la propia distribución. Más adelante hablaremos de extensiones de terceros como NumPy o SciPy que harán la delicia de matemáticos, físicos e ingenieros. No en vano, Python es cada vez más utilizado por la comunidad científica, que encuentra unidas toda la potencia del lenguaje junto a funcionalidad y herramientas que tradicionalmente sólo han estado disponibles adquiriendo costosos programas como Mathematica o Matlab.

Para disfrutar de todo lo que math nos ofrece debemos importarlo:

>>> import math

En el próximo artículo veremos otros estilos de importación, cada uno con sus ventajas e inconvenientes. Pero con esa simple instrucción tienes acceso ya a todo el espacio de nombres del módulo math, repleto de decenas de funciones entre las que se encuentran las que hoy trataremos.

Básicamente, necesitaremos poder calcular el seno, coseno y la tangente de un ángulo, así como sus funciones inversas (dada alguna de estas magnitudes, conocer a qué angulo se corresponden). Además, nos gustaría poder trabajar tanto en radianes como en grados, de modo que nos sería útil también poder disponer de las funciones de conversión adecuadas.

El seno, coseno y tangente de un ángulo los obtenemos con las funciones sin(), cos() y tan(), respectivamente:

>>> sin(0)
0.0
>>> cos(0)
1.0

Debes tener en cuenta que estas funciones esperan que el argumento se facilite en radianes, y no en grados. A tal efecto, te gustará saber que dispones de la siguiente constante:

>>> math.pi
3.141592653589793

de modo que podemos usar esa expresión en lugar del valor númérico:

>>> math.sin(math.pi/3)
0.8660254037844386
>>> math.cos(math.pi/3)
0.5000000000000001

No existe una función directa para la cosecante, secante y cotangente, pues no es necesario, ya que simplemente se trata de los recíprocos del seno, coseno y tangente, respectivamente.

Las funciones inversas, arcoseno, arcocoseno y arcotangente, se obtienen, respectivamente, con asin(), acos() y atan():

>>> math.atan(1)
0.7853981633974483

Del mismo modo que antes, el ángulo devuelto es en radianes también. Si queremos trabajar en grados deberemos efectuar la conversión con degrees(), que toma como argumento un ángulo en radianes y lo devuelve en grados:

>>> math.degrees(0.7853981633974483)
45.0

La operación contraria, el paso de grados a radianes, se obtiene con radians():

>>> math.radians(90)
1.5707963267948966

que es justamente \pi/2 radianes:

>>> math.pi/2
1.5707963267948966

Otra función útil de math nos permite conocer el valor de la hipotenusa de un triángulo rectángulo dados sus catetos, ahorrándonos tener que calcular la raíz cuadrada de la suma de los cuadrados de estos:

>>> math.hypot(3, 4)
5.0

Para finalizar, vamos a diseñar nuestra propia función seno, que denominaremos sen() (a nuestra usanza) y aceptará directamente ángulos en grados.

import math

def sen(grados):
    return math.sin(math.radians(grados))

Ejecútalo y ya podrás hacer cosas como esta:

>>> sen(30)
0.49999999999999994

En definitiva, ½, tal como nos enseñaron en la escuela…

Javier Montero Gabarró


Trigonometría en Python


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Consulta el índice completo de artículos relacionados con Python.

3 opiniones en “Trigonometría en Python”

Deja un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies