01 · Punto de partida
Todo (a,b) es un (0,1) estirado
Si sabés integrar en (0,1), sabés integrar en cualquier (a,b): transformás U en x = a + (b−a)·U y multiplicás el promedio por el ancho. Nada más cambia.
El error también se estira: intervalos anchos o funciones altas piden más N.
- ¿Cuáles son mi a y b?
- ¿Cómo genero xᵢ en (a,b)?
- ¿Por qué ancho multiplico?
- ¿Cómo verifico con un caso exacto?
02 · Definición
Estirar, evaluar, escalar
Estirar
x = a + (b−a)·U: el uniforme base se muda al intervalo real.
Evaluar
f(xᵢ) como siempre: la altura media en (a,b).
Escalar
×(b−a): la altura media se vuelve integral.
| Integral | Exacta | Ancho |
|---|---|---|
| ∫₁² x² | 7/3 ≈ 2,333 | 1 |
| ∫₀^π sin | 2 | π ≈ 3,14 |
| ∫₀² e^(−x) | 1 − e^(−2) ≈ 0,865 | 2 |
03 · Algoritmo
El mismo código, dos líneas más
- 1Sortear en (a,b).
x = a + (b-a)*random()ouniform(a, b). - 2Promediar f(xᵢ).
Igual que en (0,1): media y s de las alturas.
- 3Multiplicar.
Î = (b−a)·media, SE = (b−a)·s/√N. No olvidar el ×.
- Olvidar el ancho
- El bug clásico: promediar en (a,b) sin ×(b−a) estima la altura media, no la integral.
- Ancho grande
- Duplicar el ancho duplica el error con igual N. Achicar el intervalo (si se puede) es gratis.
- Verificación
- Probar con x² en (1,2) = 7/3 antes de lo desconocido.
04 · Ejemplos
Estirar tres veces
- 1x² en (1,2).
x = 1 + U, Î = promedio(xᵢ²) × 1 → 7/3.
- 2sin en (0,π).
x = π·U, Î = π·promedio(sin) → 2.
- 3Normal en (−2,2).
Ancho 4 por altura media: colas recortadas con error conocido.
05 · Representación en Python
Integrador (a,b) genérico
Python en tu navegador. Cambiá f, a, b y verificá con la exacta.
import random
import statistics
import math
def integrar_ab(f, a, b, N):
vals = [f(random.uniform(a, b)) for _ in range(N)]
m = sum(vals) / N
s = statistics.pstdev(vals)
return (b - a) * m, (b - a) * s / math.sqrt(N)
I, se = integrar_ab(lambda x: x**2, 1, 2, 20000)
print(f"{I:.4f} ± {se:.4f} (real 2.3333)")
I2, se2 = integrar_ab(math.sin, 0, math.pi, 20000)
print(f"{I2:.4f} ± {se2:.4f} (real 2.0000)")
06 · Exploración
Laboratorio: estirar la parábola
Integramos x² moviendo a y b. La zona verde es tu [a,b]; los puntos son (xᵢ, xᵢ²). La integral exacta (b³−a³)/3 verifica.
El ancho multiplica
Î = (b−a)·promedio
Tocá «Integrar» para estimar en [a,b].
Si b ≤ a, se intercambian: la integral cambia de signo. Intervalos anchos = bandas más anchas con igual N.
Preguntas para explorar
- Con [1,2], ¿la estimada ronda 2,333?
- Con [0,3], ¿el error es mayor que con [1,2] a igual N? ¿Por qué?
- ¿Qué pasa si ponés a > b?
Ver respuestas sugeridas
- Sí: ±0,02 con N = 5 000.
- Sí: ancho 3 vs 1 y f más alta (σ mayor). Doble castigo.
- Se integra al revés: signo negativo. El laboratorio lo corrige solo.
07 · Comprensión
Confusiones frecuentes
«Promedio en (a,b) ya es la integral»
Falta ×(b−a). Sin ancho estimás altura media, no área.
«Sortear U(0,1) y evaluar f directo»
Hay que estirar: x = a+(b−a)U. Evaluar f(U) integra en (0,1), no en (a,b).
«El error no depende del ancho»
Sí: SE = (b−a)·s/√N. Ancho doble, error doble.
«a > b da error»
Da integral negativa: es correcto si respetás el signo. Mejor ordenar a < b.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: x² en (1,2)
Estimá y compará con 7/3.
import random
N = 20000
m = sum((random.uniform(1, 2)**2) for _ in range(N)) / N
print(m, 7/3)
Ver solución razonada
Ancho 1: el promedio YA es la integral. ~2,333 ± 0,01.
Ejercicio 2: seno en (0,π)
Estimá ∫₀^π sin con el ×π explícito.
import random
import math
N = 20000
m = sum(math.sin(random.uniform(0, math.pi)) for _ in range(N)) / N
print(math.pi * m)
Ver solución
~2,00. Sin el ×π daría ~0,64: la altura media, no la integral.
Ejercicio 3: reutilizar (0,1)
Integrá x² en (2,4) vía g(u) = f(2+2u) por 2.
Ver una posible respuesta
import random
N = 20000
m = sum(((2 + 2*random.random())**2) for _ in range(N)) / N
print(2*m, (64-8)/3)
~18,667. Un solo motor (0,1) sirve para todo (a,b).
09 · Síntesis
Ideas para recordar
- x = a + (b−a)U lleva (0,1) a (a,b).
- Î = (b−a)·promedio: el ×ancho es obligatorio.
- SE = (b−a)·s/√N: anchos grandes piden más N.
- Verificar con x²: (b³−a³)/3 no falla.
- En Python:
uniform(a,b)+ promedio + ×ancho.
En el próximo tema subiremos de dimensión: integración en dominios multidimensionales.