Método de Monte Carlo · Tema 17

Cálculo de áreas

Medir superficies raras contando puntos: área = caja × dentro/N.

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.

Tres áreas con su caja y su test.
FiguraCajadentro(x,y)
Cuarto de círculo[0,1]², A = 1x*x + y*y <= 1
Elipse x²/4 + y² ≤ 1[−2,2]×[−1,1], A = 8x*x/4 + y*y <= 1
Bajo sin(x) en [0,π][0,π]×[0,1], A = πy <= sin(x)

03 · Método

Medir en 4 pasos

Caja→Puntos→Contar→×A
  1. 1
    Elegir caja.

    Ajustada: si la figura ocupa 10% de la caja, el 90% de los puntos se desperdicia.

  2. 2
    Sortear uniforme.

    x ~ U(x0,x1), y ~ U(y0,y1) independientes. Uniforme de verdad.

  3. 3
    Contar dentro.

    Evaluar el test y acumular. Un entero basta.

  4. 4
    Multiplicar 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 dentro sirve para 1 punto o 1 millón: el costo es lineal.

04 · Ejemplos

Del círculo a lo raro

  1. 1
    Elipse.

    Área real 2π ≈ 6,283. Caja 8. p ≈ 0,785: eficiente como π.

  2. 2
    Seno.

    Área bajo sin en [0,π] = 2. Caja π ≈ 3,14. p ≈ 0,64.

  3. 3
    Intersecció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.

EXPERIMENTO 17

Contar para medir

A ≈ 8·dentro / N

Los resultados numéricos aparecen debajo.
Área estimada—
Error ±—
Fracción dentro—
Lectura—

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

  1. Con N = 500, ¿el área puede dar 6,0 o 6,6?
  2. ¿Qué pasa si agrandás la caja al doble manteniendo N?
  3. ¿Por qué este método no necesita la fórmula del área?
Ver respuestas sugeridas
  1. Sí: SE ≈ 0,15. Ruido normal.
  2. p cae a la mitad y A se duplica: el error absoluto crece. Caja ajustada = precisión gratis.
  3. 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.