Trigonometría y cálculo de π con C#
A veces los días de descanso traen entretenimientos varios. Uno de ellos durante estos días de Navidades fueron las funciones trigonométricas por razones que no voy a comentar ahora, pero que me ha invitado (quizás más empujado por el aburrimiento) a escribir esta entrada que es más para pasar el rato que para otra cosa, pero que me ha apetecido comentar.
En .NET, encontramos una constante que representa el radio de la circunferencia de un círculo a su diámetro… dicho de otra manera, el número (PI) π.
Dentro de la clase Math perteneciente a System, encontramos este número PI en forma de constante (System.Math.PI), y cuyo valor es 3.1415926535897931.
El cálculo no es completamente preciso al menos en su última cifra, si queremos una mayor precisión aún, pero es totalmente válido para cálculos trigonométricos.
No obstante, lo que me gustaría tratar aquí en esta entrada son 3 formas diferentes de calcular el número PI fuera del uso de System.Math.PI, y que sirva únicamente como ejercicios básicos para quién quiera jugar, hacer una kata, o similar.
Una de las formas de calcular PI es usando series infinitas. En mi caso comentaré a Nilakantha y a Gregory-Leibnitz. Igual con alguno o con los dos te has enfrentado o te estás enfrentando como estudiante.
Nilakantha
El cálculo de la serie infinita de Nilakantha tiene la siguiente representación:
π = 3 + 4/(234) – 4/(456) + 4/(678) – 4/(8910) + 4/(101112) – (4/(121314) + 4/(141516) …
Evidentemente, cuanto mayor es la serie (más infinita es), más precisión en el cálculo de PI.
Gregory-Leibniz
Otro cálculo es el de la serie infinita de Gregory-Leibniz.
El cálculo en este caso quedaría representado por la siguiente serie:
π = (4/1) – (4/3) + (4/5) – (4/7) + (4/9) – (4/11) + (4/13) – (4/15) + (4/17) – (4/19) …
Como en el caso anterior, cuanto mayor es la serie, más precisión en el cálculo de PI.
Límites
Aunque hay más cálculos, el último del que voy a hablar es calcular el número de PI usando un límite, quizás mi cálculo preferido porque es bastante preciso.
La fórmula de cálculo de PI usando límites es:
π = x * sen(180 / x)
El cálculo obtenido será en grados.
Cuanto mayor es el valor, más aproximación a PI tendremos, ya que valor representa el número de caras del polígono, por lo que cuando mayor es este número, más cercano estará a la forma de un círculo.
El asunto es que una vez calculado el valor en grados, tendremos que pasarlo a radianes.
Sin embargo, y aunque parezca mentira, las librerías de .NET no poseen esta funcionalidad. Quizás por ser un cálculo muy trivial, así que tendremos que hacerlo a mano.
Su cálculo a radianes no deja de ser simple, aunque tendremos que usar el número PI para ello.
(System.Math.PI / 180.0) * radianes.
De esta forma, obtendremos el valor de PI.
Podrás acceder al código del código de ejemplo que he usado para este artículo en este enlace.
Podrás encontrar más información extendida con más cálculos e historia detrás de PI en este enlace.
Si te gusta profundizar un poco más en funciones trigonométricas, igual te interesa dar un repaso a las funciones trigonométricas inversas en este enlace.
¡Happy Coding!
One Responseso far
Es muy interesante todo lo que cuentas. Lo explicas muy bien y no es nada pesado.
Gracias y Saludos!