Teoría de antecedentes que es útil
Un pequeño hecho que puede usar para ayudar a comprender si una derivada numérica se calcula correctamente o no es el resto Cauchy de la expansión de Taylor. Es decir,
f(x+h)=f(x)+hf′(x)+h22f′′(ξ) para algunosξ∈[x,x+h]
Esto es útil, porque probablemente haya aproximado su primera derivada por
f′(x)≈f(x+h)−f(x−h)2h
con un poco de (normalmente uso , pero estoy seguro de que algún día me encontraré con un caso en el que no es apropiado).h10−4
Después de un poco de álgebra, podemos usar el resto de Cauchy para ver que nuestra aproximación numérica en teoría debería estar dentro de de .hf′′(ξ),ξ∈[x−h,x+h]f′(x)
De hecho, puedes vincularlo con , donde y ... que es equivalente a , .h(f′′(ξ1)−f′′(ξ2))ξ1∈[x−h,x]ξ2∈[x,x+h]h2f′′′(ξ)ξ∈[x−h,x+h]
Problemas en la práctica
De acuerdo, tenemos una buena teoría que limita el error de la derivada numérica. Pero hay dos agujeros en tratar directamente de usar esos resultados:
1.) No sabemos (y probablemente no queremos pasar el tiempo aproximándolo)f′′′(x)
2.) como , sufre de inestabilidad numéricah→0f(x+h)−f(x−h)2h
Entonces, usando lo que sabemos de la forma en que verifico mis derivadas analíticas (que podría no ser la mejor manera) es escribir la función de derivada numérica como una función de . Si no puedo decir si la diferencia entre las derivadas numéricas y analíticas se debe a un error de codificación o simplemente a una aproximación numérica, puedo reducir y ver si mi derivada numérica se acerca a mi derivada analítica antes de sufrir inestabilidad numérica (cuando esto sucede, sus aproximaciones numéricas serán menos consistentes a medida que haga más pequeña). Tenga en cuenta que el término debería desaparecer cuadráticamente, por lo que si mi error es aproximadamente conhhhf′′′(ξ)0.01h=10−4 , debe estar alrededor de con suponiendo que la inestabilidad numérica aún no haya comenzado .0.0001h=10−5
Desafortunadamente, no hay una guía dura y rápida para determinar siempre estas cosas; depende mucho de cuán estable sea la función (y me refiero a ambos en términos de estabilidad numérica y derivados más altos). Pero en mi experiencia, nunca he visto un caso en el que el error de no fuera definitivamente a 0 (es decir, usar dio prácticamente la misma respuesta que ) para cuando la inestabilidad numérica de entró en acción.h2f′′′(ξ)h=10−4h=10−5h→0