01 · Punto de partida
π era solo el caso 1
El truco de π funciona para cualquier figura: encerrarla en una caja de área conocida, tirar puntos uniformes y contar. La fracción dentro estima la fracción de áreas.
Sin integrales ni mallas: una función dentro(x,y) y un promedio.
- ¿Qué caja encierra justo a mi figura?
- ¿Cómo escribo dentro(x,y) en una línea?
- ¿Qué N da el ± que necesito?
- ¿El IC cubre el valor teórico?
02 · Definición
Tres piezas del método
Caja
Rectángulo que encierra la figura, lo más ajustado posible. Su área multiplica.
Dentro
Test 0/1: x²/4 + y² ≤ 1, y ≤ f(x). Es el modelo g.
Fracción
dentro/N estima P(dentro). Por la caja se vuelve área.
| Figura | Caja | dentro(x,y) |
|---|---|---|
| Cuarto de círculo | [0,1]², A = 1 | x*x + y*y <= 1 |
| Elipse x²/4 + y² ≤ 1 | [−2,2]×[−1,1], A = 8 | x*x/4 + y*y <= 1 |
| Bajo sin(x) en [0,π] | [0,π]×[0,1], A = π | y <= sin(x) |
03 · Método
Medir en 4 pasos
- 1Elegir caja.
Ajustada: si la figura ocupa 10% de la caja, el 90% de los puntos se desperdicia.
- 2Sortear uniforme.
x ~ U(x0,x1), y ~ U(y0,y1) independientes. Uniforme de verdad.
- 3Contar dentro.
Evaluar el test y acumular. Un entero basta.
- 4Multiplicar y dar IC.
A·p̂ ± A·1,96·√[p̂(1−p̂)/N]. Sin IC no hay medición.
- Eficiencia
- Fracción p = área/caja. Si p es 0,01, el 99% no aporta: achicar la caja o cambiar de método.
- Error absoluto
- Escala con A(caja): cajas grandes dan errores grandes aunque p sea igual.
- Test vectorizado
- La misma
dentrosirve para 1 punto o 1 millón: el costo es lineal.
04 · Ejemplos
Del círculo a lo raro
- 1Elipse.
Área real 2π ≈ 6,283. Caja 8. p ≈ 0,785: eficiente como π.
- 2Seno.
Área bajo sin en [0,π] = 2. Caja π ≈ 3,14. p ≈ 0,64.
- 3Intersección.
Dos círculos que se cortan: el test es un
and. Analítico, un dolor; Monte Carlo, una línea.
05 · Representación en Python
Función área para cualquier figura
Python en tu navegador. Cambiá dentro y la caja: el resto es idéntico.
import random
import math
def estimar_area(dentro, x0, x1, y0, y1, N):
A = (x1 - x0) * (y1 - y0)
c = 0
for _ in range(N):
x = random.uniform(x0, x1)
y = random.uniform(y0, y1)
if dentro(x, y):
c += 1
p = c / N
se = A * math.sqrt(p * (1 - p) / N)
return A * p, se
area, se = estimar_area(lambda x, y: x*x/4 + y*y <= 1, -2, 2, -1, 1, 20000)
print(f"{area:.4f} ± {se:.4f} (real {2*math.pi:.4f})")
06 · Exploración
Laboratorio: la elipse vale 2π
Puntos uniformes en la caja [−2,2]×[−1,1] (área 8). Verdes dentro de x²/4+y² ≤ 1, naranjas fuera. Área ≈ 8·dentro/N → 6,283.
Contar para medir
A ≈ 8·dentro / N
Tocá «Tirar puntos» para medir la elipse.
La elipse ocupa ~78% de la caja: eficiente. Si la caja fuera 10× más grande, el error sería 10× mayor con igual N.
Preguntas para explorar
- Con N = 500, ¿el área puede dar 6,0 o 6,6?
- ¿Qué pasa si agrandás la caja al doble manteniendo N?
- ¿Por qué este método no necesita la fórmula del área?
Ver respuestas sugeridas
- Sí: SE ≈ 0,15. Ruido normal.
- p cae a la mitad y A se duplica: el error absoluto crece. Caja ajustada = precisión gratis.
- Solo necesita el test dentro/fuera. La geometría se vuelve conteo.
07 · Comprensión
Confusiones frecuentes
«Área = dentro/N»
Falta ×A(caja). dentro/N es fracción; por el área de la caja se vuelve superficie.
«Cualquier caja sirve igual»
No: el error escala con A. Caja mínima ajustada = menos error con igual N.
«Puntos en cuadrícula valen»
Eso es determinista, no Monte Carlo, y sesga en bordes. Uniformes iid, siempre.
«Si p es 0,99 el error es 0»
Casi: √[p(1−p)] se achica en los extremos, pero con N finito nunca es 0.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: elipse rápida
Estimá la elipse con N = 10 000 y compará con 2π.
import random
import math
N = 10000
d = sum(1 for _ in range(N)
if (2*random.random()*4-2)**2/4 + (2*random.random()-1)**2 <= 1)
# más claro con uniform:
N = 10000
d = 0
for _ in range(N):
x = random.uniform(-2, 2)
y = random.uniform(-1, 1)
if x*x/4 + y*y <= 1:
d += 1
print(8*d/N, 2*math.pi)
Ver solución razonada
~6,28 ± 0,05. El primer bloque confuso muestra por qué conviene uniform directo.
Ejercicio 2: bajo el seno
Área bajo sin(x) en [0,π] (real = 2) con caja π.
import random
import math
N = 20000
d = 0
for _ in range(N):
x = random.uniform(0, math.pi)
y = random.uniform(0, 1)
if y <= math.sin(x):
d += 1
print(math.pi*d/N)
Ver solución
~2,00 ± 0,01. Es área e integral a la vez: el puente al tema 18.
Ejercicio 3: caja ajustada vs gigante
Estimá el cuarto de círculo con caja [0,1]² y con caja [0,2]². Compará errores.
Ver una posible respuesta
import random
import math
def area_caja(L, N):
d = sum(1 for _ in range(N)
if (random.uniform(0, L)**2 + random.uniform(0, L)**2 <= 1))
p = d / N
return L*L*p, L*L*math.sqrt(p*(1-p)/N)
print(area_caja(1, 20000))
print(area_caja(2, 20000))
Ambas rondan 0,785, pero la gigante tiene ~4× más error: A multiplica y p cae. Caja ajustada gana.
09 · Síntesis
Ideas para recordar
- Área ≈ A(caja)·dentro/N con puntos uniformes iid en la caja.
- Todo es el test dentro(x,y): una línea que decide.
- Error = A·√[p(1−p)/N]: caja chica = precisión gratis.
- π es el caso p ≈ 0,785 con A = 1 y ×4.
- El método no pide fórmula del área, solo el test.
En el próximo tema veremos la integración Monte Carlo: promediar la función en vez de contar puntos.