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
- 1Seleccionar un modelo.
Cada función proporciona términos, valor de referencia y cota.
- 2Validar la entrada.
El punto debe pertenecer a la región donde la serie y la cota son aplicables.
- 3Acumular adaptativamente.
Agregar términos hasta satisfacer la tolerancia o alcanzar un límite seguro.
- 4Conservar el historial.
Registrar aproximación, error y cota tras cada término.
- 5Comunicar 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:
| Capa | Responsabilidad | No debería conocer |
|---|---|---|
| Modelos | Términos, función exacta, dominio y cota | HTML o canvas |
| Motor | Iteración, suma, parada e historial | Detalles visuales |
| Interfaz | Leer controles, mostrar resultados y dibujar | Demostraciones 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:
Para el seno:
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
| Función | Cota después del término k | Justificación |
|---|---|---|
eˣ | Lagrange con M=e^max(0,x) | Derivadas exponenciales |
sen x, cos x | Primer término no nulo omitido | Leibniz en |x|≤0,9 |
ln(1+x) | Alternada si x≥0; comparación si x<0 | El signo cambia con x |
arctan x | Primer término omitido | Leibniz |
1/(1−x) | Cola geométrica exacta | Suma cerrada del resto |
09 · Un detalle importante
ln(1+x) deja de alternar cuando x es negativo
La serie:
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:
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:
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-labelactualizada; - 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
| Caso | Qué verifica |
|---|---|
x=0 | Términos nulos, parada inmediata y gráfica sin divisiones por cero |
x=±0,9 | Convergencia lenta cerca del borde |
| Tolerancia amplia | Parada con pocos términos |
Tolerancia 10⁻¹² | Interacción con redondeo |
| Máximo pequeño | Estado no certificado |
| Logaritmo con signos opuestos | Selección de cotas diferentes |
16 · Precisión finita
La cota controla truncamiento, no redondeo
El error total satisface conceptualmente:
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.
Aproximador adaptable
eˣ · Taylor + Lagrange
El intervalo certificado contiene el valor de referencia.
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.