Proyecto integrador · Tema 34

Aproximador de funciones

Implementar una aplicación que elige términos, certifica el error, visualiza la convergencia y contrasta cada resultado con una referencia independiente.

01 · Objetivo del proyecto

De una fórmula a una herramienta verificable

El proyecto reúne los conceptos del curso en una aplicación interactiva. El usuario elige una función, un punto y una tolerancia; el programa suma términos hasta certificar que el error de truncamiento es suficientemente pequeño.

La aplicación debe devolver:

  • la aproximación obtenida;
  • la cantidad de términos utilizados;
  • una cota demostrable del resto;
  • un intervalo que contiene el valor verdadero;
  • y una visualización del proceso de convergencia.

02 · Requisitos funcionales

Qué debe hacer el aproximador

  1. 1
    Seleccionar un modelo.

    Cada función proporciona términos, valor de referencia y cota.

  2. 2
    Validar la entrada.

    El punto debe pertenecer a la región donde la serie y la cota son aplicables.

  3. 3
    Acumular adaptativamente.

    Agregar términos hasta satisfacer la tolerancia o alcanzar un límite seguro.

  4. 4
    Conservar el historial.

    Registrar aproximación, error y cota tras cada término.

  5. 5
    Comunicar el resultado.

    Distinguir una aproximación certificada de un cálculo incompleto.

03 · Diseño modular

Separar matemática, control e interfaz

Una arquitectura pequeña puede dividirse en tres capas:

Responsabilidades del proyecto.
CapaResponsabilidadNo debería conocer
ModelosTérminos, función exacta, dominio y cotaHTML o canvas
MotorIteración, suma, parada e historialDetalles visuales
InterfazLeer controles, mostrar resultados y dibujarDemostraciones matemáticas internas

Esta separación permite probar el motor sin navegador y agregar funciones sin reescribir la interfaz.

04 · Contrato común

Qué información aporta cada función

Cada modelo del registro necesita responder las mismas preguntas:

term(k,x)
Devuelve el término de índice operativo k.
bound(k,x)
Acota el resto después de incluir ese término.
exact(x)
Da una referencia para pruebas y visualización.
valid(x)
Indica si el método está justificado en ese punto.
label
Describe la expansión y el método de cota.

La referencia exacta no participa en el criterio de parada. Si se usara para detener el cálculo, la aproximación sería circular.

05 · Registro extensible

Datos y comportamiento en un mismo objeto

const modelos = {
  geometrica: {
    nombre: "1 / (1 - x)",
    valida: x => Math.abs(x) < 1,
    exacta: x => 1 / (1 - x),
    termino: (k, x) => x ** k,
    cota: (k, x) => Math.abs(x ** (k + 1) / (1 - x))
  },
  arcotangente: {
    nombre: "arctan(x)",
    valida: x => Math.abs(x) <= 1,
    exacta: Math.atan,
    termino: (k, x) => (-1) ** k * x ** (2 * k + 1) / (2 * k + 1),
    cota: (k, x) => Math.abs(x) ** (2 * k + 3) / (2 * k + 3)
  }
};

La cota de arcotangente usa Leibniz y supone magnitudes decrecientes, condición satisfecha para |x|≤1.

06 · Motor adaptable

Sumar hasta alcanzar la garantía

function aproximar(modelo, x, tolerancia, maxTerminos = 100) {
  if (!modelo.valida(x)) throw new RangeError("Punto fuera del dominio del método");
  let suma = 0;
  const historial = [];

  for (let k = 0; k < maxTerminos; k += 1) {
    suma += modelo.termino(k, x);
    const cota = modelo.cota(k, x);
    historial.push({ k, suma, cota });
    if (cota <= tolerancia) {
      return { suma, cota, terminos: k + 1, certificado: true, historial };
    }
  }
  return { suma, cota: historial.at(-1).cota,
    terminos: maxTerminos, certificado: false, historial };
}

El límite máximo evita un ciclo excesivo si la tolerancia es inalcanzable o la convergencia es demasiado lenta.

07 · Rendimiento numérico

Evitar potencias y factoriales repetidos

La interfaz simple term(k,x) facilita la explicación, pero recalcular potencias y factoriales puede resultar costoso. Una versión optimizada mantiene el término actual y lo actualiza mediante una razón.

Para la exponencial:

t0=1,   tk+1=tkx/(k+1)

Para el seno:

t0=x,   tk+1=−tkx²/[(2k+2)(2k+3)]

El laboratorio utiliza fórmulas directas para que el contrato sea uniforme; una versión de producción puede ofrecer iteradores recurrentes.

08 · Estrategias de certificación

No todas las funciones usan la misma cota

Método usado en el proyecto.
FunciónCota después del término kJustificación
eˣLagrange con M=e^max(0,x)Derivadas exponenciales
sen x, cos xPrimer término no nulo omitidoLeibniz en |x|≤0,9
ln(1+x)Alternada si x≥0; comparación si x<0El signo cambia con x
arctan xPrimer término omitidoLeibniz
1/(1−x)Cola geométrica exactaSuma cerrada del resto

09 · Un detalle importante

ln(1+x) deja de alternar cuando x es negativo

La serie:

ln(1+x)=∑n=1∞(−1)n+1xn/n

alterna para x>0, pero si x=−r con 0<r<1, todos los términos son negativos. No puede usarse Leibniz.

Después de incluir hasta n=N:

|RN|=∑n=N+1∞rn/n ≤ rN+1/[(N+1)(1−r)]

El modelo selecciona la cota según el signo del argumento.

10 · Estado de finalización

Certificado no es lo mismo que terminado

El motor devuelve certificado: true únicamente si la cota cae por debajo de la tolerancia. Alcanzar el máximo de términos es un resultado diferente.

La interfaz debe distinguir:

  • Éxito: se alcanzó la garantía solicitada.
  • Límite operativo: hay una aproximación, pero la cota sigue siendo demasiado grande.
  • Entrada inválida: el punto queda fuera del dominio del método.
  • Fallo numérico: apareció un valor no finito o la suma se estancó.

11 · Contrato de salida

Devolver evidencia junto con el número

Un resultado útil contiene:

const resultado = {
  aproximacion: 1.6487212707001078,
  cota: 2.1e-14,
  intervalo: [1.6487212707000867, 1.648721270700129],
  terminos: 13,
  certificado: true,
  metodo: "Taylor + resto de Lagrange"
};

console.log(resultado);

El intervalo se construye como [aproximación−cota, aproximación+cota]. En aritmética de coma flotante rigurosa, sus extremos deberían redondearse hacia afuera; aquí se presenta como intervalo pedagógico de truncamiento.

12 · Historial de convergencia

Qué debe mostrar el gráfico

Para cada cantidad de términos registramos:

error real = |referencia−suma parcial|
cota teórica ≥ error de truncamiento

Una escala logarítmica permite comparar cantidades que atraviesan muchos órdenes de magnitud. Si el error real se estabiliza cerca de la precisión de la máquina mientras la cota continúa bajando, aparece el límite del redondeo numérico.

13 · Interfaz accesible

El gráfico no puede ser la única salida

Canvas no expone por sí solo sus trazos a lectores de pantalla. Por eso el proyecto incluye:

  • una descripción mediante aria-label actualizada;
  • resultados numéricos en elementos de texto;
  • un mensaje de estado con aria-live;
  • etiquetas asociadas a cada control;
  • y contenido alternativo dentro de canvas.

La visualización complementa el resultado; no lo reemplaza.

14 · Referencia independiente

Usar Math.* para probar, no para detener

Durante el desarrollo comparamos con Math.exp, Math.sin, Math.log1p y otras funciones nativas. Esta comparación sirve para:

  • detectar signos o índices incorrectos;
  • comprobar que el error real no supere la cota, salvo el piso de redondeo;
  • crear casos de regresión;
  • y visualizar cuán conservadora es una garantía.

El criterio de parada usa exclusivamente la cota matemática. La referencia podría eliminarse y el aproximador seguiría funcionando.

15 · Plan de pruebas

Casos normales, fronteras y fallos

Pruebas mínimas recomendadas.
CasoQué verifica
x=0Términos nulos, parada inmediata y gráfica sin divisiones por cero
x=±0,9Convergencia lenta cerca del borde
Tolerancia ampliaParada con pocos términos
Tolerancia 10⁻¹²Interacción con redondeo
Máximo pequeñoEstado no certificado
Logaritmo con signos opuestosSelección de cotas diferentes

16 · Precisión finita

La cota controla truncamiento, no redondeo

El error total satisface conceptualmente:

error total ≤ error de truncamiento + error numérico

Cuando la cota cae por debajo de aproximadamente 10⁻¹⁵ en valores de escala unitaria, los redondeos de Number pueden dominar. El gráfico puede mostrar entonces un error real mayor que la cota teórica exacta.

Esto no invalida el teorema: la cota se refiere al polinomio evaluado en aritmética real. Una versión más exigente usaría suma compensada, evaluación de Horner e intervalos con redondeo dirigido.

17 · Complejidad

Cuánto cuesta aproximar

Si se usan K términos:

  • la acumulación recurrente cuesta O(K) tiempo;
  • el estado principal usa O(1) memoria;
  • guardar todos los puntos para graficar requiere O(K) memoria;
  • redibujar el canvas cuesta O(K).

Para cálculos muy grandes puede muestrearse el historial, conservar solo ciertos índices o dibujar de forma incremental.

18 · Evolución del proyecto

Cómo agregar nuevas capacidades

La arquitectura permite incorporar:

  • nuevas funciones mediante otro objeto de modelo;
  • centros de Taylor configurables;
  • reducción de argumentos para exponenciales y trigonométricas;
  • comparación entre suma ingenua y compensada;
  • exportación del historial como CSV;
  • pruebas automatizadas de propiedades;
  • y evaluación con precisión arbitraria.

Cada extensión debe conservar el contrato: dominio explícito, cota justificada y estado verificable.

19 · Aplicación final

Aproximador certificado de funciones

Seleccioná la función, el argumento, la tolerancia y el máximo de términos. El cálculo se detiene únicamente cuando la cota elegida satisface la tolerancia.

PROYECTO 34

Aproximador adaptable

eˣ · Taylor + Lagrange

Resultados debajo.
Aproximación1,64872117
Términos usados8
Cota alcanzada0,00000016
EstadoCertificado

El intervalo certificado contiene el valor de referencia.

Intervalo inferior1,64872101
Intervalo superior1,64872133
Error observado0,00000010
Método de cotaLagrange

La línea amarilla representa el error observado y la violeta la cota teórica; la horizontal roja indica la tolerancia.

20 · Revisión del proyecto

Fallos frecuentes de implementación

«Detenerse comparando con Math.exp o Math.sin»

Eso usa la respuesta para decidir. La parada debe depender de una cota derivada independientemente.

«Usar el último término como cota universal»

Solo es válido cuando un teorema lo garantiza, como en ciertas series alternadas.

«Aplicar la misma cota al logaritmo para ambos signos»

Con x<0 los términos no alternan y hace falta otra comparación.

«Informar éxito al alcanzar el máximo»

El máximo es una salida de seguridad; si la cota sigue sobre la tolerancia, el resultado no está certificado.

«Ocultar el dominio del método»

La función puede existir donde su serie centrada en cero diverge.

«Confundir una cota de truncamiento con error total»

El redondeo de la evaluación también contribuye y puede dominar para tolerancias extremas.

21 · Cierre y desafíos

Extensiones para continuar

Desafío 1: reducción de argumento

Para eˣ, escribir x=m·ln2+r y aproximar solo eʳ.

Desafío 2: centros múltiples

Guardar expansiones locales y seleccionar automáticamente la más cercana al punto.

Desafío 3: suma compensada

Comparar acumulación ingenua, Kahan y Neumaier cuando se piden tolerancias pequeñas.

Desafío 4: pruebas de propiedades

Generar puntos aleatorios válidos y comprobar que el error observado no exceda la cota, salvo una tolerancia de redondeo explícita.

Desafío 5: exportación

Descargar el historial con términos, parciales, cotas y errores para analizarlo en una hoja de cálculo.

Ideas para recordar

  • Una aproximación confiable devuelve un número y la evidencia que lo respalda.
  • El modelo matemático debe estar separado del motor y de la interfaz.
  • Cada función puede necesitar una estrategia distinta para acotar el resto.
  • El valor de referencia sirve para validar, nunca para decidir la parada.
  • Alcanzar el máximo de términos no equivale a cumplir la tolerancia.
  • El historial permite visualizar convergencia, conservadurismo de la cota y piso numérico.
  • La accesibilidad exige resultados textuales además del gráfico.
  • Un diseño por contratos facilita pruebas y extensiones.

El proyecto resume el recorrido completo: modelar sucesiones, interpretar series, decidir convergencia, aproximar sumas, controlar errores y convertir cada garantía matemática en una decisión de software.