Método de Monte Carlo · Tema 16

Estimación de π mediante Monte Carlo

El hola mundo del método: tirar puntos, contar dentro del círculo y multiplicar por 4.

01 · Punto de partida

π sin fórmula, solo con puntos

Tiramos puntos uniformes en el cuadrado [0,1]². La fracción que cae en el cuarto de círculo x²+y² ≤ 1 tiende a π/4. Despejamos: π ≈ 4·dentro/N.

Es el ejemplo perfecto: modelo trivial, visual directo y error conocido. Todo lo que aprendas aquí vale para áreas e integrales.

  • ¿Qué escenario sorteo en cada réplica?
  • ¿Cómo decido «dentro» con una línea?
  • ¿Qué N da ±0,01?
  • ¿El intervalo cubre a 3,1416?

02 · Definición

Geometría que se vuelve probabilidad

⬛

Cuadrado

Área 1: el universo de puntos. Sortear (x,y) es sortear escenarios.

🟢

Círculo

Área π/4: el evento. P(dentro) = área/1 = π/4 sin medir nada.

✖️

Por 4

El 4 convierte la probabilidad en π. Es el «modelo» g(x) de este problema.

Cuánto N para cada precisión (σ ≈ 1,64).
NSE de π̂Uso
1 000±0,05Demo en clase
10 000±0,0162 decimales creíbles
100 000±0,005Publicable
1 000 000±0,00163 decimales con suerte

03 · Algoritmo

π en 4 líneas mentales

Sortear→Probar→Contar→×4
  1. 1
    Sortear.

    x, y ~ U(0,1) independientes. Un punto por réplica.

  2. 2
    Probar.

    dentro = (x²+y² ≤ 1). Un 0/1 por punto.

  3. 3
    Contar y ×4.

    π̂ = 4·dentro/N. El promedio se vuelve geometría.

p = π/4 ≈ 0,785
Probabilidad de caer dentro. Su varianza p(1−p) fija el error de π̂.
Error
SE = 4·√[p(1−p)/N] ≈ 1,64/√N. Para ±0,01 hacen falta ~27 000 puntos.
Semilla
Fijarla para la figura del informe; variarla para validar que π̂ no depende de ella.

04 · Variantes

El mismo truco, tres sabores

  1. 1
    Cuarto de círculo.

    El clásico de este tema: 1 cuadrante, ×4.

  2. 2
    Círculo entero.

    Puntos en [−1,1]², dentro = x²+y² ≤ 1, π̂ = 4·dentro/N. Mismo error.

  3. 3
    Aguja de Buffon.

    π̂ = N/cruces (tema 2). Menos eficiente, más histórico.

05 · Representación en Python

π en 6 líneas con intervalo

Python en tu navegador. Estimá π con su IC₉₅: el informe completo.

import random
import math

N = 20000
dentro = sum(1 for _ in range(N) if random.random()**2 + random.random()**2 <= 1)
p = dentro / N
pi = 4 * p
se = 4 * math.sqrt(p * (1 - p) / N)
print(f"pi {pi:.4f} ± {se:.4f}")
print(f"IC95 [{pi-1.96*se:.4f}, {pi+1.96*se:.4f}]")

06 · Exploración

Laboratorio: lluvia sobre el círculo

Tiramos N puntos en el cuadrado. Verdes dentro, naranjas fuera. A la derecha, π̂ con su banda ±2·SE convergiendo a 3,1416.

EXPERIMENTO 16

Lluvia que dibuja π

π̂ = 4·dentro / N

Los resultados numéricos aparecen debajo.
π estimado—
Error ±—
Dentro—
Lectura—

Tocá «Tirar puntos» para estimar π.

Izquierda: el cuadrado con el cuarto de círculo. Derecha: la trayectoria de π̂ hacia 3,1416. Más puntos = menos temblor.

Preguntas para explorar

  1. Con N = 500, ¿π̂ puede dar 3,0 o 3,3?
  2. Con N = 30 000, ¿sale de 3,14 ± 0,02?
  3. ¿Por qué los puntos deben ser uniformes y no «a ojo»?
Ver respuestas sugeridas
  1. Sí: SE ≈ 0,07. Es ruido, no bug.
  2. Rara vez: SE ≈ 0,009. Dos decimales estables.
  3. «A ojo» dejamos huecos y grumos: la fracción ya no estima el área. Uniforme = representativo.

07 · Comprensión

Confusiones frecuentes

«π̂ = dentro/N»

Falta el 4: dentro/N estima π/4 ≈ 0,785. Sin ×4 estimás el área del cuarto, no π.

«Con N = 200 ya tengo 3,14»

Tenés 3,14 ± 0,11: dos cifras parecidas por suerte. El ± dice la verdad.

«Más puntos en el centro acelera»

Sesga: deben ser uniformes. Muestrear «donde importa» es importance sampling (tema 24), no este π.

«El dibujo es la estimación»

El dibujo ilustra con 1 000 puntos; la estimación seria usa 100 000 sin dibujar.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: π rápido

Estimá π con N = 5 000 y reportá con error.

import random
import math

N = 5000
d = sum(1 for _ in range(N) if random.random()**2 + random.random()**2 <= 1)
p = d / N
print(4*p, 4*math.sqrt(p*(1-p)/N))
Ver solución razonada

~3,14 ± 0,023. El error sale de p sin guardar puntos.

Ejercicio 2: N para ±0,01

Calculá el N teórico con p = 0,785.

import math

p = 0.785
se_objetivo = 0.01 / 1  # 1 SE (para IC95 dividir por 1.96)
print(math.ceil((4*math.sqrt(p*(1-p))/0.01)**2))
Ver solución

~27 000 para SE = 0,01 (≈ ±0,02 al 95%). Cada decimal extra cuesta 100×.

Ejercicio 3: círculo entero

Repetí con puntos en [−1,1]² y verificá que da lo mismo.

Ver una posible respuesta
import random

N = 10000
d = sum(1 for _ in range(N)
        if (2*random.random()-1)**2 + (2*random.random()-1)**2 <= 1)
print(4*d/N)

Mismo 3,14 ± 0,016. Cambia el marco, no el método.

09 · Síntesis

Ideas para recordar

  • π̂ = 4·dentro/N con (x,y) uniformes: probabilidad que se vuelve geometría.
  • Error 4·√[p(1−p)/N] ≈ 1,64/√N: ~27 000 para ±0,01.
  • Siempre con IC: π̂ [li, ls] al 95%.
  • Figura con pocos puntos, informe con muchos.
  • El patrón vale para cualquier área e integral.

En el próximo tema generalizaremos al cálculo de áreas: contar puntos para medir superficies raras.