Integrales y cálculo integral · Tema 35

Proyecto integrador: de la suma a la antiderivada

Modelá una acumulación, construí su suma de Riemann, obtené el valor exacto mediante el teorema fundamental y diseñá un programa que contraste cada etapa con resultados reproducibles.

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:

v(t)=3t²−6t+4,    0≤t≤3

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:

Δs ≈ v(t*)Δt

Las unidades confirman el modelo:

(metros/segundo)·(segundos)=metros

La velocidad puede escribirse completando el cuadrado:

v(t)=3(t−1)²+1

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.

Datos y decisiones del modelo
ElementoValorInterpretación
VariabletTiempo en segundos
Tasav(t)=3t²−6t+4Velocidad en m/s
Intervalo[0,3]Ventana de observación
Acumulación∫₀³v(t)dtDesplazamiento 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:

Δt=(3−0)/n=3/n

Si usamos extremos derechos, el punto de muestra del subintervalo i es:

tᵢ=0+iΔt=3i/n,    i=1,2,…,n

Cada rectángulo aporta aproximadamente v(tᵢ)Δt. La suma derecha queda:

Sₙ=Σ[i=1…n] v(3i/n)·3/n

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:

v(3i/n)=27i²/n²−18i/n+4

Multiplicando por Δt=3/n y sumando:

Sₙ=81/n³ Σi² − 54/n² Σi + 12/n Σ1

Usamos las fórmulas:

Σi=n(n+1)/2,   Σi²=n(n+1)(2n+1)/6,   Σ1=n

Entonces:

Sₙ=81n(n+1)(2n+1)/(6n³) − 27n(n+1)/n² + 12

Al tomar n→∞, los cocientes dominantes producen:

lim Sₙ = 27−27+12=12

Por definición de integral definida:

∫₀³(3t²−6t+4)dt=12

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:

∫(3t²−6t+4)dt=t³−3t²+4t+C

Tomamos V(t)=t³−3t²+4t. Su derivada recupera la velocidad:

V′(t)=3t²−6t+4=v(t)

Por la segunda parte del teorema fundamental del cálculo:

∫₀³v(t)dt=V(3)−V(0)
=(27−27+12)−0=12

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.

Σ v(tᵢ*)Δt→ límite →∫₀³v(t)dt→ TFC →V(3)−V(0)

06 · Validación matemática

El resultado debe superar controles independientes

  1. 1
    Derivada

    d[t³−3t²+4t]/dt=3t²−6t+4, de modo que la primitiva es correcta.

  2. 2
    Signo

    Como v(t)≥1, la integral debe ser positiva.

  3. 3
    Cota

    En [0,3], el mínimo es 1 y el máximo es 13. El resultado debe quedar entre 3 y 39.

  4. 4
    Unidades

    El valor 12 se expresa en metros, no en metros por segundo.

  5. 5
    Aproximació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:

Arquitectura mínima del integrador
ComponenteResponsabilidadNo debería decidir
crearProblemaAgrupar función, primitiva, intervalo y unidadesCómo aproximar
sumaRiemannConstruir la aproximación numéricaCuál es el valor exacto
evaluarExactaAplicar F(b)−F(a)Cuántos rectángulos usar
validarComparar y producir métricas de errorOcultar 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:

desplazamiento = ∫ₐᵇv(t)dt
distancia total = ∫ₐᵇ|v(t)|dt

Por ejemplo, si v(t)=t−1 en [0,3], el desplazamiento es:

∫₀³(t−1)dt=3/2

Pero para hallar distancia se separa donde v(t)=0:

∫₀¹(1−t)dt + ∫₁³(t−1)dt = 1/2+2=5/2

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.

EXPERIMENTO 35

De los rectángulos al valor exacto

v(t)=3t²−6t+4 · [0,3]

Los resultados numéricos aparecen debajo del gráfico.
aproximación11.953125
valor exacto12
error absoluto0.046875
error relativo0.390625%

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

  1. En la velocidad positiva, compará los tres métodos con el mismo n. ¿Cuál produce menor error?
  2. En el problema con cambio de signo, observá qué rectángulos restan acumulación.
  3. Duplicá n. ¿El error siempre se reduce de manera monótona para todos los métodos?
  4. 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)/n y exactamente n subintervalos.
  • 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.