Una de las cosas que más me apasiona sobre programar es usar este superpoder para demostrar conceptos de la vida real que de otras formas sería tedioso realizar; en este caso quiero mostrarles como obtener el valor de ese infernal número que posiblemente te dio bastantes dolores de cabeza en clases de matemáticas; aprendamos cómo calcular Pi.
Para contextualizar un poco: Pi es un número irracional y una de las constantes matemáticas más populares, normalmente expresada por su valor 3.14.
Para realizar un programa capaz de retornar el valor de Pi, necesitamos despejar el mismo de una fórmula matemática que ya lo utilice; para este tutorial utilizaremos el conocido Problema de Basilea. Dicho problema propone encontrar la suma exacta de los inversos de los cuadrados de los enteros positivos. El problema se vería de la siguiente forma:
Como se muestra en la imagen, la solución a este problema es Pi al cuadrado dividido entre seis. (Dicha respuesta fue encontrada por Leonhard Euler en 1735 pero no fue hasta 1741 que pudo presentar demostraciones convincentes para la comunidad de ese entonces).
Bien, despejando Pi en la fórmula anterior podemos decir lo siguiente:
π = √(1/n² + 1/n² […]) x 6 (Pi es igual a la raiz cuadrada de la suma de 1 dividido entre n al cuadrado cuando n tiende al infinito multiplicado por seis).
Bien, una vez tenemos despejado a Pi, ¡vamos a escribir código! Pese a ser unas pocas líneas de código, utilizaremos el paradigma de dividir el problema para resolverlo (Dīvide et īmpera
si quieren sonar fancy).
var limite = 100000; // cantidad máxima de n enteros positivos.var suma = 0; // guarda la suma de los enteros positivos.var pi = 0; // guarda el valor de final de Pi.
for ( var i=1; i<=limite; i++ ) {
suma += 1 / ( i**2 );
}
Nótese que existe un orden de prioridades para realizar las operaciones; también se debe notar el hecho de que la variable suma, añade el nuevo valor a su valor previo (valga la redundancia).
3. Por último queda multiplicar el valor obtenido de la suma total por seis, y luego obtener su raíz cuadrada. Esto podemos hacerlo en una sola línea de código sin perder legibilidad en nuestro código.
pi = Math.sqrt(suma * 6);
Aquí debemos notar el uso de la librería Math() de javaScript para ayudarnos a obtener la raíz cuadrada.
¡Y listo! Al mostrar el valor de la variable Pi con el código anterior deberíamos obtener el siguiente valor: 3.141583104326456.
Y aquí se puede ver algo “interesante”… EL VALOR DE PI NO ES COMPLETAMENTE CORRECTO. Sí, apartir del quinto decimal notarán que los números no coinciden, y antes de que me crucifiquen por esto, permítanme aclarar: Pueden obtener aproximaciones más exactas aumentando el valor de la variable limite. No entraré en detalles al respecto, simplemente prueben y confíen en el poder de las matemáticas.
Espero que les haya gustado y/o servido de algo este tutorial, es la primera vez que escribo uno y me hacia mucha ilusión compartir algo con Platzi ya que tanto ha compartido conmigo.
Por último me gustaría motivarles a 2 cosas:
Gracias por llegar a leer hasta este punto, es sin duda el mayor halago para un escritor que un lector llegue hasta el final; espero haya valido la pena. Happy Coding!
Lo hice en php de igual forma, pero solo muestra un número limitado de caracteres (3.14159169866050858033), cómo podría hacer para que muestre al menos 10 000 números decimales (3.14159169866050858033…)?
Hola, quizá es un poco tarde para esta respuesta (puede que ya tengas una solución) pero en cualquier caso dejo esto aquí en caso de que le sirva a alguien:
Creo que puede ser por el tipo de variable que utilizas. Por defecto un float tiene un número limitado de bytes para almacenar valores. Una variable como tipo Long podría servirte, pero desafortunadamente creo que no está en PHP. En todo caso, puedes ver en este artículo de Stackoverflow donde se habla sobre usar long en PHP:
https://stackoverflow.com/questions/8647125/using-long-int-in-php
el ejercicios es muy bueno lo importante es saber la formula ya que uno puede tener una formula original