🧮 Computational Mathematics

Inicio · Parte 11 — Métodos numéricos y computación científica

227 — Diferenciación numérica

cientifico clase 7 de 20 4 horas demostración numerical_differentiation

La diferencia central cuesta lo mismo que la adelantada y tiene un orden más.

Fórmulas

adelantada: (f(x+h) − f(x)) / h,  error O(h)
central: (f(x+h) − f(x−h)) / 2h,  error O(h²)
segunda derivada: (f(x+h) − 2f(x) + f(x−h)) / h²

Desarrollo

Aproximar derivadas por cocientes de diferencias es la traducción literal de la definición de derivada a aritmética finita. Las tres fórmulas básicas se obtienen combinando desarrollos de Taylor y eligiendo los coeficientes que cancelan los términos de orden bajo.

La diferencia central es estrictamente mejor que la adelantada: mismo número de evaluaciones, un orden más de precisión. La razón es la simetría, que hace que el término de orden h se cancele entre los desarrollos de f(x+h) y f(x−h). Cuando se puede evaluar a ambos lados, no hay motivo para usar la adelantada.

La segunda derivada por diferencias es la fórmula que discretiza el laplaciano y está en el corazón de casi todo esquema para ecuaciones en derivadas parciales. Su error también es O(h²), pero su sensibilidad al redondeo es peor porque divide entre : el paso óptimo es mayor que para la primera derivada.

La aplicación más útil en aprendizaje automático es la verificación de gradientes: comparar el gradiente calculado por autodiferenciación con el obtenido por diferencia central detecta errores de implementación en las derivadas manuales. Es lento y no sirve para entrenar, pero como prueba unitaria es insustituible.

Ejemplo trabajado

Derivada de e^x en x = 0,5 con h = 1e-4.

valor exacto: e^0,5 = 1,6487212707001282

adelantada: (f(x+h) − f(x))/h     = 1,6488037095
  error = 8,24e-05

atrás:      (f(x) − f(x−h))/h     = 1,6486388374
  error = 8,24e-05

central:    (f(x+h) − f(x−h))/2h  = 1,6487212735
  error = 2,75e-09          30 000 veces menor

Mismo coste en evaluaciones, tres órdenes de magnitud de ganancia.

Segunda derivada: (f(x+h) − 2f(x) + f(x−h))/h² = 1,64872132
  error = 5,4e-08, mayor por dividir entre h².

Qué calcula el laboratorio

Fórmulas de diferencias y su orden de error.

python classes/part-11-metodos-numericos-y-computacion-cientifica/227-diferenciacion-numerica/lab.py
compmath run 227

Salidas del laboratorio (11)

Muestra de la ejecución real

{
  "funcion": "e^x",
  "x": 0.5,
  "h": 0.0001,
  "exacta": 1.6487212707001282,
  "adelante": 1.6488037095,
  "atras": 1.6486388374
}

Errores comunes

Dónde se usa

Verificación de gradientes, discretización de PDE, sensibilidad de modelos y optimización sin derivadas analíticas.

Idea rectora de la parte

Newton converge cuadráticamente, pero solo cerca de la raíz.

Error a evitar

Usar tolerancia absoluta cuando la escala del problema es grande.

Conexión con IA

Los Neural ODE, los samplers de difusión y los optimizadores de segundo orden son métodos numéricos con parámetros aprendidos.

Bibliografía de la clase

Archivos de la clase