No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

C谩lculo de PI

18/24
Recursos

Aportes 55

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Los que quieren sabe un poco m谩s sobre las agujas de buffon para calcular pi deber铆an entrar a este link:

https://www.youtube.com/watch?v=sJVivjuMfWA

驴Quieren aprenderse los 10 primeros digitos de pi de forma f谩cil?, les dejo esta nemotecn铆a que funciona a la perfecci贸n, se la vi a alguien en un tutorial.
Memoriza esta oracion y cuenta cuantas letras tiene cada palabra, los n煤meros tomalos literalmente y listos.

Con 1 flor y 5 mariposas se pueden hacer mil cosas

鈥 Dejo mi resumen dispuesto para criticas o para ayudarles. De un novato para novatos:

  1. En este caso se usaran las simulaciones de Montecarlo para intentar calcular el n煤mero Pi. En este caso se lanzaran de manera aleatoria agujas dentro de dos figuras circunscritas (un circulo dentro de un cuadrado). Y verificaremos si caen dentro del circulo o por fuera de el.
  2. Se usara una comparaci贸n entre las relaciones de las 谩reas del cuadrado y el circulo circunscrito. Osea un circulo dentro del cuadro de tal manera que sus per铆metros se toquen.
  3. Diremos que todas las agujas que toquen el circulo ser谩n equivalentes al 谩rea del circulo
    o 脕rea Circulo = Aguja dentro del circulo
  4. De igual manera decimos que el 谩rea del cuadro sera igual a todas las agujas que caigan dentro de el. En total ser谩n las agujas dentro del circulo y las que caen fuera de 茅l. **Como la restricci贸n de la medida es que solo tenemos en cuenta las agujas dentro de alguna de las dos figuras, al final el 谩rea del cuadro sera igual al total de agujas. **Tengan esto en cuenta para el experimento.
    o 脕rea Cuadro = Agujas dentro del cuadro = Total de agujas
  5. Bien, ahora usemos las proporciones para fabricar una medida de la probabilidad de encontrar una aguja dentro del circulo. Esto seria equivalente a verificar la relaci贸n de las proporciones de las 谩reas entre el circulo y el cuadrado.
    o 脕rea del circulo / 脕rea del cuadro = Proporci贸n entre las dos figuras
  6. Haciendo las equivalencias con las proporciones de las agujas tendremos que:
    o Acirculo / Acuadro = Aguja dentro del circulo / Agujas dentro del cuadro
  7. Ahora igualando las proporciones a los valores del ejemplo. En las cuales el circulo tiene un radio de 1 u un lado del cuadro mide 2r tendremos que
    o Acirculo = pi *r**2 = pi *(1)**2 = pi
    o Acuadro = 2r * 2r = 4r = 4(1) = 4
  8. Como deseamos calcular el 谩rea del circulo despejamos la ecuaci贸n del punto 6 para obtener la formula:
    o Acirculo = (Aguja dentro del circulo * Acuadro ) / Agujas dentro del cuadro
  9. Del punto 7 podemos obtener el Acuadro al remplazarlo obtengo:
    o Acirculo = (Aguja dentro del circulo * 4) / Agujas dentro del cuadro
  10. Como dato curioso pueden ver que matem谩ticamente la relaci贸n entre el 谩rea del circulo y el cuadro es de pi/4, esto significa que de cada X lanzamientos que hagamos pi/4 probablemente caer谩n dentro del circulo.
    o pi / 4 = Agujas dentro del circulo / Agujas dentro del cuadro
    o Como mencione en 5 las agujas dentro del cuadro ser谩 igual al total de agujas lanzadas
    o pi / 4 = Agujas dentro del circulo / Total de agujas lanzadas
  11. Con todo esto en mente debemos tener en cuenta que para la simulaci贸n usaremos como coordenada central el centro del circulo, osea ese sera nuestro punto 0,0
  12. Las simulaciones de Montecarlo se valen de la aleatoriedad para generar muestras, as铆 que las coordenadas de las agujas que generemos son vitales, seguramente necesitaremos la librer铆a random.
  13. Otro punto importante es que a mayor n煤mero de lanzamientos menor sera el error de la medida.
    o Error = (lanzamientos)**1/2, este es el teorema de los grandes n煤meros
  14. Para verificar cuales puntos caen dentro del circulo usaremos el calculo de la hipotenusa. Todo punto cuya hipotenusa sea mayor a UNO sera contado como aguja fuera del circulo y las que se calculen como menores ser谩n sumadas a agujas dentro del circulo.
  15. Valiendo nos de toda esta informaci贸n es posible simular y calcular el n煤mero de pi mediante simulaciones de Montecarlo.

No entend铆 que tiene que ver la hipotenusa con las agujas que caen fuera del circulo. 驴 Alguien que lo haya entendido ? Si me pueden iluminar por favor

Tambi茅n se puede aproximar el 'numero PI calculando todo sobre el primer cuadrante. Es mucho m谩s directo y no requieres de tanto puntos.

Muy interesante para Geolocalizaci贸n y saber si el sujeto est谩 dentro de un 谩rea determinada.

Calculo estoc谩stico de pi

  • Ya en el siglo XIX esta soluci贸n fue propuesta por Laplace y en el siglo XVIII por Buffon (probabilidad geom茅trica)
  • Consiste en lanzar 鈥榙ardos鈥 aleatoriamente a un cuadrado en el que se encuentra inscrito un circulo y calcular la relaci贸n entre los dardos que caen en el circulo y los dardos lanzados que ser谩n proporcionales al area del circulo y del cuadrado respectivamente.

**PI: **Es las veces que cabe el diametro de un circulo en la circunferencia del circulo en cuesti贸n. 3,14159 26535鈥

Por lo que entend铆 es que en la siguiente clase, vamos a generar varios puntos en un campo de 2x2, los puntos se dan con coordenas (x, y), y si la suma de los cuadrados de estas es mayor a 1 significa que la aguja, cayo fuera del circulo, porque 1 es el valor del radio, o sea la distancia que separa el origen de la circunferencia.

Aqu铆 mi c贸digo para graficar y estimar el valor de pi:

Librer铆as

import random
import matplotlib.pyplot as plt
import matplotlib
import math
import numpy as np

Funci贸n principal, con algunas modificaciones para crear la gr谩fica

def colocar_puntos(numero_de_puntos):
    dentro_del_circulo = 0
    x_list = []
    y_list = []
    distancias = []
    for _ in range(numero_de_puntos):
        x = random.random() * random.choice([-1, 1])
        x_list.append(x)
        y = random.random() * random.choice([-1, 1])
        y_list.append(y)
        
        distancia_desde_centro = math.sqrt(x**2 + y**2)
        
        if distancia_desde_centro <= 1:
            dentro_del_circulo += 1
            distancias.append(1)
        else:
          distancias.append(0)

    pi_estimado = ((4*dentro_del_circulo) / numero_de_puntos)

    return pi_estimado, x_list, y_list, distancias

Variables para almacenar la informaci贸n

pi = 0
num_puntos = 100
x = []
y = []
d = []
pi, x, y, d = colocar_puntos(num_puntos)
print(pi)

Para graficar鈥

fig, ax = plt.subplots(figsize=(5,5))
ax.scatter(x, y, c = d, cmap='PRGn')

t = f"Pi estimado: {pi}"
props = dict(boxstyle='round', facecolor='wheat', alpha=1)
ax.text(0.5, 0.95, t, transform=ax.transAxes, fontsize=14,
        verticalalignment='top', bbox=props)
ax.set_title(f"C谩lculo de con {num_puntos} puntos")
ax.grid(True)
print(pi)

Resultados:



pero si los lados valen 1, entonces la hipotenusa vale ra铆z de dos, 驴no?

nunca vi esto en la universidad 馃槮

Desconoc铆a por completo esta forma de calcular pi.Simplemente genial el potencial del uso de las simulaciones y las probabilidades, cuando se construye bien un modelo matem谩tico que representa un sistema en la vida real.

https://www.youtube.com/watch?v=DQ5qqHukkAc&feature=youtu.be

Este video explica m谩s a detalle el tema de pi y como obtenerlo por varios m茅todos. 馃く

Hay algo en la f贸rmula que no me cuadra, las agujas puede caer adento o fuera del circulo entonces las 谩reas respectivas deberian ser 谩rea del c铆rculo y 谩rea del cuadrado menos la del c铆rculo, y no s贸lo la del cuadrado

Este mismo m茅todo se puede usar para c谩lcular integrales definidas de forma n煤merica.

C贸mo calcular el n煤mero Pi utilizando el teorema de Pit谩goras:

https://www.youtube.com/watch?v=DuxYZPtiz0s

Lo que hacemos para cualcular PI con montercarlo, es sencillo. Entendemos que nuestro cuadrado, contiene un c铆rculo, por lo que el el radio del circulo contenido, es igual a un cuarto del area del cuadrado: l^2/4, por lo que el 谩rea del circulo es: PI(l^2/4) entonces tenemos: l^2/PI(l^2/4), podemos cancelar l^2 y nos quedar铆a: PI*4, luego de ello, podemos manipular la ecuaci贸n, para que el PI sea 4 * 谩rea del circulo sobre el 谩rea del cuadrado.

Existe el m茅todo de las agujas de Buffon y laplace , para calcular pi.

Pi, es uno de las cosas que han tomado tiempo calcular.

Eh aqu铆 una explicaci贸n de lo obtenci贸n de pi:

Este video expone 3 m茅todos, el m茅todo de Montecarlo se expone en el minuto 2:29
https://www.youtube.com/watch?v=DQ5qqHukkAc

Adem谩s que el video trae consigo 3 programas en c++ para cada m茅todo

Fuente:
QuantumFracture

import random
import math
from statistics import standard_deviation, average

def throw_needles(number_of_needles):
    needles_inside_circle = 0

    for _ in range(number_of_needles):
        x = random.random() * random.choice([-1, 1])
        y = random.random() * random.choice([-1, 1])

        distance_from_center = math.sqrt(x**2 + y**2) # Pythagorean theorem: https://en.wikipedia.org/wiki/Pythagorean_theorem

        if distance_from_center <= 1:
            needles_inside_circle += 1

    return (4 * needles_inside_circle) / number_of_needles

def simulate(number_of_needles, number_of_tries):
    pi_averages = []
    for _ in range(number_of_tries):
        pi_average = throw_needles(number_of_needles)
        pi_averages.append(pi_average)

    pi_average = average(pi_averages)
    strd_deviation = standard_deviation(pi_averages)

    print(f"Average={pi_average} | Standard Deviation={strd_deviation} | Number of needles={number_of_needles}")

    return (pi_average, strd_deviation)

def estimate_pi(precision, number_of_needles, number_of_tries):
    sigma = precision

    while sigma >= precision / 1.96:
        average, sigma = simulate(number_of_needles, number_of_tries)
        number_of_needles *= 2

    return average

if __name__ == '__main__':
    estimate_pi(0.01, 1000, 1000)

Tambi茅n aqu铆 hay otro video que explica tres maneras de calcular PI de quantumfracture: https://www.youtube.com/watch?v=DQ5qqHukkAc

Creo que falta elaborar la explicaci贸n de lo que pide el algoritmo, se trata de determinar la posici贸n de la aguja (por Pit谩goras), para saber d贸nde cay贸. Las 谩reas solo nos dan la l贸gica para determinar el valor de pi, las posiciones nos dan el n煤mero de agujas en cada zona y as铆 poder determinar los valores para aplicar en la ecuaci贸n.

Exacto como dir铆an muchos para un problema existen muchas soluciones es detalle es encontrarlas y bueno tambi茅n depende del tipo o la magnitud del problema. XD XD

Les dejo este video https://www.youtube.com/watch?v=1IhaEuCqZxs
Una muy buena explicaci贸n tambi茅n y tambi茅n se puede ver su implementaci贸n en excel. En este me bas茅 para programarlo en Python.

este otro profesor de platzi explica un poco mas sobre el m茅todo Montecarlo para PI.
https://www.youtube.com/watch?v=WJjDr67frtM

Es incre铆ble las posibilidades y diferentes maneras en que se puede encontrar una soluci贸n, es algo particular esta jajaja

Me encanta como hay distintas formas de resolver el mismo problema, yo lo resolv铆 implementando el problema de Basilea.

Super interesante la manera de resolver el c谩lculo de Pi, una forma muy elegante.

Vamos a la siguiente clase para ver el c贸digo !

Vamos por un nuevo reto

La aproximacion de pi tambien puede obtenerse con poligonos de n lados tendiendo n al infinito

Con c贸digo se comprende mejor

._.

Se supone que entre m谩s agujas lances por cada intento y entre m谩s intentos realices m谩s acertada ser谩 la aproximaci贸n

A calcular PI

Recordando un poco de calculo diferencial

https://www.youtube.com/watch?v=WJjDr67frtM

Este video me pareci贸 super interesante para tratar de comprender simulaciones de montercarlo para el calculo de pi

en este v铆deo se explica tres m茅todos para hallar pi, esta muy bueno
https://www.youtube.com/watch?v=DQ5qqHukkAc

David:
"驴C贸mo sabemos nosotros si una aguja cay贸 adentro del c铆rculo o afuera del c铆rculo? Pues muy sencillo, teorema de Pit谩goras"

A llevarlo a c贸digo!

Les recomiendo a mi parecer uno de los mejores videos sobre la explicacion de 3 maneras de las que se puede calcular 蟺
https://www.youtube.com/watch?v=DQ5qqHukkAc

Interesante los m茅todos para calcular PI, se ve claramente la utilidad del c贸mputo para obtener tales resultados.

Y en todas las redes sociales hay memes de que la formula para la hipotenusa no se usa鈥 XD de verdad que 鈥

C谩lculo de $\pi$.

  • Este m茅todo viene del siglo XIX. Sabiendo que el 谩rea de un cuadrado es $A_{cuadrado} = bh$ y el 谩rea de un circulo dentro del cuadrado es $Ac = \pi r^2 = \pi(h/2)^2$. Si hacemos $h = 2$, entonces $A_{cuadrado}= 4$ y $A_{circulo} = \pi$.
  • Ponemos puntos de manera aleatoria dentro del cuadrado, y vemos la proporci贸n de los puntos en el circulo y los puntos en el cuadrado, y ser谩 proporcional a $A_{circulo}/A_{cuadrado}$.
  • Se conoce esto tambi茅n como agujas de buf贸n.

No me qued贸 claro de d贸nde sale la equivalencia de las proporciones.
Como que le falta algo a la explicaci贸n.

interesante!

Hola a todos,

Veo que el video de quantumfracture ha tenido muy buena acogida por la comunidad. Sin embargo, los c贸digos que acompa~nan el video fueron escritos en C++. Por lo tanto, me tom茅 un rato para buscar algunas versiones de los m茅tods implementadas en python. Ac谩 les dejo algunos links que encontr茅 interesantes:

https://towardsdatascience.com/how-to-make-pi-part-1-d0b41a03111f

https://www.craig-wood.com/nick/articles/pi-archimedes/

https://coderwall.com/p/wyc4xq/calculate-pi-using-python

https://github.com/emilgab/pi-of-archimedes/blob/master/main.py

Saludos!

Pudo dedicarle m谩s tiempo a la explicaci贸n matem谩tica.

Hay tantas cosas que se han creado y desarrollado a partir de Pi que es impresionante, es algo que me llama la atenci贸n tanto de la parte social como num茅rica.

Super