01 · El desafío
Calcular un cambio total a partir de una tasa variable
Un móvil se desplaza en línea recta. Su velocidad, medida en metros por segundo, está dada durante los primeros tres segundos por:
El objetivo es determinar el desplazamiento entre t=0 y t=3 recorriendo todo el camino conceptual del cálculo integral:
Aproximar
Sumar cambios pequeños de velocidad por duración.
Definir
Pasar al límite cuando la partición se hace más fina.
Validar
Comparar la suma con una antiderivada y pruebas de código.
Este proyecto no busca solamente el número final. Cada representación debe conservar el significado del problema, las unidades, la orientación y el dominio.
02 · Interpretar antes de calcular
Velocidad por tiempo produce desplazamiento
En un intervalo muy corto de duración Δt, si tratamos la velocidad como aproximadamente constante, el cambio de posición es:
Las unidades confirman el modelo:
La velocidad puede escribirse completando el cuadrado:
Por tanto, v(t)≥1 en todo el intervalo. El móvil nunca cambia de sentido: en este caso particular, la distancia recorrida y el desplazamiento coinciden. Si la velocidad fuera negativa en una parte, la integral de v daría desplazamiento neto, no distancia total.
| Elemento | Valor | Interpretación |
|---|---|---|
| Variable | t | Tiempo en segundos |
| Tasa | v(t)=3t²−6t+4 | Velocidad en m/s |
| Intervalo | [0,3] | Ventana de observación |
| Acumulación | ∫₀³v(t)dt | Desplazamiento en metros |
03 · Construir la aproximación
La partición convierte el intervalo en cambios pequeños
Dividimos [0,3] en n subintervalos iguales. El ancho es:
Si usamos extremos derechos, el punto de muestra del subintervalo i es:
Cada rectángulo aporta aproximadamente v(tᵢ)Δt. La suma derecha queda:
Con pocos rectángulos se ve claramente la aproximación. Al aumentar n, la variación de la velocidad dentro de cada subintervalo disminuye y la suma se acerca al valor acumulado.
04 · Del sigma al valor límite
La suma de Riemann puede calcularse algebraicamente
Sustituimos tᵢ=3i/n en la velocidad:
Multiplicando por Δt=3/n y sumando:
Usamos las fórmulas:
Entonces:
Al tomar n→∞, los cocientes dominantes producen:
Por definición de integral definida:
El límite elimina la dependencia del método de muestreo y convierte las aproximaciones en un valor exacto.
05 · El camino eficiente
Una antiderivada evita calcular el límite desde cero
Integramos término a término:
Tomamos V(t)=t³−3t²+4t. Su derivada recupera la velocidad:
Por la segunda parte del teorema fundamental del cálculo:
La suma y la antiderivada no son dos definiciones rivales. La integral se define como acumulación o límite de sumas; el teorema fundamental demuestra que puede evaluarse mediante cualquier antiderivada.
06 · Validación matemática
El resultado debe superar controles independientes
- 1Derivada
d[t³−3t²+4t]/dt=3t²−6t+4, de modo que la primitiva es correcta. - 2Signo
Como
v(t)≥1, la integral debe ser positiva. - 3Cota
En
[0,3], el mínimo es 1 y el máximo es 13. El resultado debe quedar entre3y39. - 4Unidades
El valor 12 se expresa en metros, no en metros por segundo.
- 5Aproximación
Las sumas refinadas deben acercarse a 12.
Ningún control aislado garantiza todo, pero juntos hacen visible una gran variedad de equivocaciones.
07 · Diseñar antes de programar
Separar responsabilidades vuelve verificable el proyecto
En lugar de escribir un único bloque que haga todo, dividimos el programa en componentes:
| Componente | Responsabilidad | No debería decidir |
|---|---|---|
crearProblema | Agrupar función, primitiva, intervalo y unidades | Cómo aproximar |
sumaRiemann | Construir la aproximación numérica | Cuál es el valor exacto |
evaluarExacta | Aplicar F(b)−F(a) | Cuántos rectángulos usar |
validar | Comparar y producir métricas de error | Ocultar entradas inválidas |
Esta separación permite probar cada pieza, cambiar el método de suma y reutilizar el motor con otros problemas.
08 · Implementar la aproximación
Una única función admite tres reglas de muestreo
function sumaRiemann(f, a, b, n, metodo = 'medio') {
if (!Number.isInteger(n) || n <= 0) {
throw new RangeError('n debe ser un entero positivo');
}
const posiciones = { izquierda: 0, medio: 0.5, derecha: 1 };
if (!(metodo in posiciones)) throw new Error('Método desconocido');
const dt = (b - a) / n;
let acumulado = 0;
for (let i = 0; i < n; i += 1) {
const t = a + (i + posiciones[metodo]) * dt;
acumulado += f(t) * dt;
}
return acumulado;
}
const velocidad = t => 3 * t ** 2 - 6 * t + 4;
console.log('Izquierda:', sumaRiemann(velocidad, 0, 3, 12, 'izquierda'));
console.log('Medio:', sumaRiemann(velocidad, 0, 3, 12, 'medio'));
console.log('Derecha:', sumaRiemann(velocidad, 0, 3, 12, 'derecha'));
El algoritmo conserva la orientación porque dt es negativo cuando b<a. No necesita un caso especial para invertir el intervalo.
09 · Implementar el teorema fundamental
La evaluación exacta requiere una primitiva verificada
function evaluarPorPrimitiva(F, a, b) {
const resultado = F(b) - F(a);
if (!Number.isFinite(resultado)) {
throw new RangeError('La evaluación salió del dominio');
}
return resultado;
}
const posicionAcumulada = t => t ** 3 - 3 * t ** 2 + 4 * t;
const desplazamiento = evaluarPorPrimitiva(posicionAcumulada, 0, 3);
console.log('Desplazamiento exacto:', desplazamiento, 'metros');
// Desplazamiento exacto: 12 metros
10 · Medir, no solamente imprimir
Un reporte de convergencia muestra cómo mejora la aproximación
function sumaPuntoMedio(f, a, b, n) {
const dt = (b - a) / n;
let suma = 0;
for (let i = 0; i < n; i += 1) {
suma += f(a + (i + 0.5) * dt) * dt;
}
return suma;
}
const v = t => 3 * t ** 2 - 6 * t + 4;
const exacto = 12;
const reporte = [4, 8, 16, 32, 64, 128].map(n => {
const aproximado = sumaPuntoMedio(v, 0, 3, n);
const error = Math.abs(aproximado - exacto);
return { n, aproximado, error };
});
console.table(reporte);
Como la función es cuadrática y suave, el error del punto medio cae aproximadamente por un factor de cuatro cuando n se duplica. Registrar el error permite comprobar ese patrón.
11 · Convertir propiedades en pruebas
Las identidades de la integral detectan regresiones
Además del ejemplo principal, probamos propiedades que cualquier implementación correcta debería respetar aproximadamente.
function sumaMedio(f, a, b, n = 10000) {
const dx = (b - a) / n;
let total = 0;
for (let i = 0; i < n; i += 1) {
total += f(a + (i + 0.5) * dx) * dx;
}
return total;
}
function cerca(a, b, tolerancia = 1e-7) {
return Math.abs(a - b) <= tolerancia;
}
const f = x => x ** 2 + 1;
const total = sumaMedio(f, 0, 3);
const porPartes = sumaMedio(f, 0, 1) + sumaMedio(f, 1, 3);
console.log('Intervalo nulo:', cerca(sumaMedio(f, 2, 2), 0));
console.log('Orientación:', cerca(sumaMedio(f, 0, 3), -sumaMedio(f, 3, 0)));
console.log('Aditividad:', cerca(total, porPartes));
Estas pruebas no dependen de conocer una primitiva específica. Controlan la estructura del algoritmo y resultan útiles cuando se refactoriza el código.
12 · Una extensión conceptual
Desplazamiento y distancia dejan de coincidir si cambia el signo
La velocidad del proyecto es siempre positiva. Para una velocidad general que cruza cero:
Por ejemplo, si v(t)=t−1 en [0,3], el desplazamiento es:
Pero para hallar distancia se separa donde v(t)=0:
Un gráfico o una suma que coloree contribuciones positivas y negativas ayuda a distinguir acumulación neta de área geométrica.
13 · Exploración del proyecto
Laboratorio: ejecutar el flujo completo
Seleccioná un problema, cambiá el método y refiná la partición. El panel superior muestra rectángulos y signo; el inferior registra el error mientras aumenta n.
De los rectángulos al valor exacto
v(t)=3t²−6t+4 · [0,3]
El método del punto medio aproxima el desplazamiento total.
El panel superior dibuja la función y los rectángulos. El inferior muestra el error absoluto para particiones desde 2 hasta el valor seleccionado.
Preguntas para explorar
- En la velocidad positiva, compará los tres métodos con el mismo
n. ¿Cuál produce menor error? - En el problema con cambio de signo, observá qué rectángulos restan acumulación.
- Duplicá
n. ¿El error siempre se reduce de manera monótona para todos los métodos? - En la tasa exponencial, ¿qué método sobreestima y cuál subestima por tratarse de una función creciente?
14 · Entregable reutilizable
Un integrador pequeño puede devolver datos, no solo un número
La versión final reúne aproximación, valor por primitiva y métricas. El bloque es autocontenido y puede adaptarse cambiando el objeto problema.
function integrarYValidar({ f, F, a, b, n = 100, metodo = 'medio' }) {
if (typeof f !== 'function' || typeof F !== 'function') {
throw new TypeError('f y F deben ser funciones');
}
if (!Number.isInteger(n) || n <= 0) {
throw new RangeError('n debe ser un entero positivo');
}
const offsets = { izquierda: 0, medio: 0.5, derecha: 1 };
if (!(metodo in offsets)) throw new Error('Método desconocido');
const dx = (b - a) / n;
let aproximado = 0;
for (let i = 0; i < n; i += 1) {
aproximado += f(a + (i + offsets[metodo]) * dx) * dx;
}
const exacto = F(b) - F(a);
const errorAbsoluto = Math.abs(aproximado - exacto);
const errorRelativo = exacto === 0
? null
: errorAbsoluto / Math.abs(exacto);
return { aproximado, exacto, errorAbsoluto, errorRelativo };
}
const problema = {
f: t => 3 * t ** 2 - 6 * t + 4,
F: t => t ** 3 - 3 * t ** 2 + 4 * t,
a: 0,
b: 3,
n: 100,
metodo: 'medio'
};
console.log(integrarYValidar(problema));
Devolver un objeto conserva contexto para pruebas, tablas o interfaces. Si el valor exacto es cero, el error relativo no está definido; por eso el programa devuelve null en vez de dividir por cero.
15 · Revisión crítica
Errores que pueden sobrevivir a un resultado plausible
«La suma se acerca a la primitiva, así que ambas están bien»
Podrían compartir la misma función mal modelada. Primero se valida que la fórmula represente el fenómeno y sus unidades.
«Uso n puntos, entonces divido por n−1»
El proyecto usa n subintervalos, de ancho (b−a)/n. La cantidad de extremos de la partición es n+1.
«La constante C aparece en la integral definida»
Al calcular [F(x)+C]ₐᵇ, la constante se cancela. No se agrega +C al resultado numérico.
«Área y desplazamiento siempre son positivos»
La integral definida acumula con signo. Para área geométrica o distancia se separan cambios de signo y se integra el valor absoluto.
«Una tabla decreciente demuestra el límite»
La tabla es evidencia experimental. La convergencia se justifica con la teoría de sumas de Riemann y la continuidad.
«Redondeo cada rectángulo»
Redondear dentro del bucle acumula error. Se conservan los valores de punto flotante y se formatea solo al presentar.
«No pruebo los extremos porque el caso principal funciona»
Intervalo nulo, orientación inversa, entradas inválidas y valores exactos iguales a cero revelan fallas ocultas.
16 · Transferir lo aprendido
Ejercicios de comprensión
Ejercicio 1: construir Δt
Dividí [0,3] en 50 subintervalos iguales. ¿Cuál es Δt?
Ver solución
Δt=(3−0)/50=0,06 segundos.
Ejercicio 2: escribir la suma
Escribí la suma derecha para una función f en [a,b] con n partes.
Ver solución
Con Δx=(b−a)/n, es Σ[i=1…n]f(a+iΔx)Δx.
Ejercicio 3: verificar la primitiva
Comprobá que V(t)=t³−3t²+4t+7 también sirve en el proyecto.
Ver solución
V′(t)=3t²−6t+4. El 7 desaparece al derivar y también se cancela en V(3)−V(0).
Ejercicio 4: invertir extremos
¿Cuánto vale ∫₃⁰v(t)dt?
Ver solución
Vale −12, porque invertir los límites cambia el signo de la integral.
Ejercicio 5: unidades
Si q(t) se mide en litros por minuto, ¿en qué unidad se mide ∫₂⁷q(t)dt?
Ver solución
En litros: (litros/minuto)·minutos.
Ejercicio 6: acumulación con signo
Para f(x)=x en [−1,1], ¿cuáles son la integral neta y el área geométrica?
Ver solución
La integral neta es 0 por simetría impar. El área es ∫₋₁¹|x|dx=1.
Ejercicio 7: diseñar una prueba
Proponé una prueba de linealidad para el integrador numérico.
Ver solución
Elegí funciones f y g y constantes α,β. Comprobá dentro de una tolerancia que integrar αf+βg coincide con α por la integral de f más β por la de g.
Ejercicio 8: nuevo proyecto
Una tasa de ingreso es r(t)=200e⁰·¹ᵗ pesos por día entre 0 y 10 días. Planteá el cálculo exacto.
Ver solución
Una primitiva es R(t)=2000e⁰·¹ᵗ. El ingreso acumulado es R(10)−R(0)=2000(e−1) pesos.
17 · Cierre del recorrido
Lista de control del proyecto completo
- La variable, la tasa, el intervalo y las unidades están definidos.
- La suma usa
Δx=(b−a)/ny exactamentensubintervalos. - La elección del punto de muestra es explícita.
- El paso al límite conecta las sumas con la integral definida.
- La antiderivada fue comprobada mediante derivación.
- La regla de Barrow se aplicó como
F(b)−F(a). - El signo y las unidades del resultado son coherentes.
- Las aproximaciones se comparan mediante errores, no solo por inspección.
- El código controla entradas inválidas, orientación y casos límite.
- La conclusión distingue acumulación neta, área y valor aproximado.
El hilo conductor del curso queda condensado en una sola idea: sumar contribuciones locales, comprender el límite que define la acumulación y usar la derivación para evaluarla con eficiencia. El código permite explorar ese vínculo; el análisis matemático explica por qué funciona.