Estimación de Pi mediante Monte Carlo y Simulación Estadística

Clase 19 de 24Curso de Estadística Computacional con Python

Resumen

¿Cómo calcular el valor de Pi usando programación?

En esta clase, ejecutaremos un algoritmo para calcular el estimado del número Pi mediante simulaciones y técnicas estadísticas. Es fascinante descubrir cómo mediante un simple uso de geometría y probabilidad, podemos determinar un valor aproximado de este número irracional tan crucial en matemáticas.

¿Cómo crear una función que lance agujas?

Para empezar, se requiere una función en Python que simule el lanzamiento de agujas sobre un plano para calcular Pi. Aquí están los pasos básicos:

  1. Definir la función aventar_agujas: Esta función recibe el número de agujas como parámetro.

    def aventar_agujas(numero_agujas):
        adentro_del_circulo = 0
        for _ in range(numero_agujas):
            x = random.random() * random.choice([-1, 1])
            y = random.random() * random.choice([-1, 1])
            distancia = math.sqrt(x ** 2 + y ** 2)
            if distancia <= 1:
                adentro_del_circulo += 1
        return 4 * adentro_del_circulo / numero_agujas
    
  2. Utilizar funciones aleatorias: Con la biblioteca random se generan coordenadas x y y en el rango de [-1,1].

  3. Calcular la distancia: Usar el Teorema de Pitágoras para determinar si la aguja cae dentro del círculo de radio 1.

¿Cómo utilizar la estadística para mejorar la estimación?

Usando conceptos estadísticos como la media y la desviación estándar, mejoramos la precisión de nuestra estimación.

  1. Importar funciones estadísticas: Utilizar una librería previamente creada con funciones de media y desviación estándar.

    from estadisticas import media, desviacion_estandar
    
  2. Crear una función de estimación: Comienza ejecutando simulaciones múltiples veces para obtener un valor promedio de estimación.

    def estimacion(numero_agujas, numero_intentos):
        estimados = []
        for _ in range(numero_intentos):
            estimados.append(aventar_agujas(numero_agujas))
        return media(estimados), desviacion_estandar(estimados)
    
  3. Evaluar el resultado: Usar la regla empírica para determinar el nivel de confianza deseado.

¿Cómo implementar una simulación principal?

La función principal estimar gestiona la precisión deseada y controla el número de agujas y simulaciones.

  1. Iniciar variables: Empezar con un número base de agujas y calcular la sigma deseada.

  2. Controlar la precisión: Ajustar según la distribución normal deseada y realizar simulaciones repetidas.

    def estimar(precision, numero_intentos):
        numero_agujas = 1000
        sigma = precision
        while sigma >= precision / 1.96:
            media_estimados, sigma = estimacion(numero_agujas, numero_intentos)
            numero_agujas *= 2
        return media_estimados
    
  3. Ejecutar la función principal: Llamar esta función con valores como precision=0.01 y numero_intentos=1000 para obtener un resultado.

Esta clase no solo explica un método eficiente para estimar Pi, sino también ofrece un enfoque práctico del uso de estadísticas en simulaciones. A través de la práctica, el estudiante irá familiarizando el uso de aleatoriedad y estadística en programación. ¡Esperamos que hayas disfrutado y aprendido cómo estas técnicas pueden aplicarse para resolver problemas reales! No olvides compartir tus dudas y comentarios en la sección correspondiente.