En el análisis numérico , los algoritmos de diferenciación numérica estiman la derivada de una función matemática o una subrutina de función utilizando valores de la función y quizás otro conocimiento sobre la función.
El método más simple es utilizar aproximaciones de diferencias finitas.
Una estimación simple de dos puntos es calcular la pendiente de una línea secante cercana a través de los puntos ( x , f ( x )) y ( x + h , f ( x + h )) . [1] Eligiendo un número pequeño h , h representa un pequeño cambio en x , y puede ser positivo o negativo. La pendiente de esta línea es Esta expresión es el cociente de diferencias de Newton (también conocido como diferencia dividida de primer orden ).
La pendiente de esta recta secante difiere de la pendiente de la recta tangente en una cantidad que es aproximadamente proporcional a h . A medida que h se acerca a cero, la pendiente de la recta secante se acerca a la pendiente de la recta tangente. Por lo tanto, la verdadera derivada de f en x es el límite del valor del cociente de diferencias a medida que las rectas secantes se acercan cada vez más a convertirse en una recta tangente:
Dado que sustituir inmediatamente 0 por h da como resultado la forma indeterminada , calcular la derivada directamente puede resultar poco intuitivo.
De manera equivalente, la pendiente podría estimarse empleando las posiciones x − h y x .
Otra fórmula de dos puntos es calcular la pendiente de una línea secante cercana que pasa por los puntos ( x − h , f ( x − h )) y ( x + h , f ( x + h )) . La pendiente de esta línea es
Esta fórmula se conoce como cociente de diferencias simétricas . En este caso, los errores de primer orden se cancelan, por lo que la pendiente de estas líneas secantes difiere de la pendiente de la línea tangente en una cantidad que es aproximadamente proporcional a . Por lo tanto, para valores pequeños de h, esta es una aproximación más precisa a la línea tangente que la estimación unilateral. Sin embargo, aunque la pendiente se calcula en x , el valor de la función en x no está involucrado.
El error de estimación se obtiene mediante donde es un punto entre y . Este error no incluye el error de redondeo debido a que los números se representan y los cálculos se realizan con precisión limitada.
El cociente de diferencias simétricas se emplea como método de aproximación de la derivada en varias calculadoras, incluidas TI-82 , TI-83 , TI-84 y TI-85 , todas las cuales utilizan este método con h = 0,001 . [2] [3]
Una consideración importante en la práctica cuando la función se calcula utilizando aritmética de punto flotante de precisión finita es la elección del tamaño del paso, h . Si se elige demasiado pequeño, la resta producirá un gran error de redondeo . De hecho, todas las fórmulas de diferencias finitas están mal condicionadas [4] y debido a la cancelación producirán un valor de cero si h es lo suficientemente pequeño. [5] Si es demasiado grande, el cálculo de la pendiente de la línea secante se calculará con mayor precisión, pero la estimación de la pendiente de la tangente utilizando la secante podría ser peor. [6]
Para diferencias centrales básicas, el paso óptimo es la raíz cúbica de la épsilon de máquina . [7] Para la fórmula de la derivada numérica evaluada en x y x + h , una opción para h que es pequeña sin producir un gran error de redondeo es (aunque no cuando x = 0), donde la épsilon de máquina ε es típicamente del orden de 2,2 × 10 −16 para doble precisión . [8] Una fórmula para h que equilibra el error de redondeo contra el error secante para una precisión óptima es [9] (aunque no cuando ), y para emplearla será necesario conocer la función.
En el caso de los cálculos por ordenador, los problemas se agravan porque, aunque x necesariamente contiene un número de punto flotante representable con cierta precisión (32 o 64 bits, etc. ), x + h casi con certeza no será exactamente representable con esa precisión. Esto significa que x + h se cambiará (por redondeo o truncamiento) a un número cercano representable por máquina, con la consecuencia de que ( x + h ) − x no será igual a h ; las dos evaluaciones de la función no estarán exactamente separadas por h . En este sentido, dado que la mayoría de las fracciones decimales son secuencias recurrentes en binario (así como 1/3 lo es en decimal), un paso aparentemente redondo como h = 0,1 no será un número redondo en binario; es 0,000110011001100... 2 Un posible enfoque es el siguiente:
h := raíz cuadrada (eps) * x;xph := x + h;dx := xph - x;pendiente := (F(xph) - F(x)) / dx;
Sin embargo, en el caso de las computadoras, las herramientas de optimización del compilador pueden no prestar atención a los detalles de la aritmética informática real y, en su lugar, aplicar los axiomas de las matemáticas para deducir que dx y h son iguales. En el caso de C y lenguajes similares, una directiva que indique que xph es una variable volátil evitará esto.
Existen métodos de orden superior para aproximar la derivada, así como métodos para derivadas superiores.
A continuación se presenta el método de cinco puntos para la primera derivada ( plantilla de cinco puntos en una dimensión): [10] donde .
Para otras configuraciones de plantilla y órdenes de derivadas, la Calculadora de coeficientes de diferencias finitas es una herramienta que se puede utilizar para generar métodos de aproximación de derivadas para cualquier plantilla con cualquier orden de derivada (siempre que exista una solución).
Utilizando el cociente diferencial de Newton, se puede demostrar lo siguiente [11] (para n > 0 ):
Las aproximaciones clásicas de diferencias finitas para la diferenciación numérica están mal condicionadas. Sin embargo, si es una función holomorfa , de valor real en la recta real, que puede evaluarse en puntos del plano complejo cerca de , entonces existen métodos estables . Por ejemplo, [5] la primera derivada puede calcularse mediante la fórmula de la derivada compleja en pasos: [12] [13] [14]
El tamaño de paso recomendado para obtener derivadas precisas para un rango de condiciones es . [6] Esta fórmula se puede obtener mediante la expansión de la serie de Taylor :
La fórmula de la derivada de paso complejo solo es válida para calcular derivadas de primer orden. Una generalización de lo anterior para calcular derivadas de cualquier orden emplea números multicomplejos , lo que da como resultado derivadas multicomplejas. [15] [16] [17] donde denotan las unidades imaginarias multicomplejas; . El operador extrae el componente n de un número multicomplejo de nivel , p. ej., extrae el componente real y extrae el último componente, el "más imaginario". El método se puede aplicar a derivadas mixtas, p. ej. para una derivada de segundo orden.
Está disponible una implementación en C++ de aritmética multicompleja. [18]
En general, las derivadas de cualquier orden se pueden calcular utilizando la fórmula integral de Cauchy : [19] donde la integración se realiza numéricamente .
El uso de variables complejas para la diferenciación numérica fue iniciado por Lyness y Moler en 1967. [20] Su algoritmo es aplicable a derivadas de orden superior.
Abate y Dubner desarrollaron un método basado en la inversión numérica de una transformada de Laplace compleja. [21] Fornberg desarrolló un algoritmo que se puede utilizar sin necesidad de tener conocimientos sobre el método o el carácter de la función. [4]
La cuadratura diferencial es la aproximación de las derivadas mediante el uso de sumas ponderadas de los valores de una función. [22] [23] La cuadratura diferencial es de interés práctico porque permite calcular derivadas a partir de datos ruidosos. El nombre es análogo a la cuadratura , que significa integración numérica , donde las sumas ponderadas se utilizan en métodos como el método de Simpson o la regla trapezoidal . Existen varios métodos para determinar los coeficientes de peso, por ejemplo, el filtro Savitzky-Golay . La cuadratura diferencial se utiliza para resolver ecuaciones diferenciales parciales . Existen otros métodos para calcular derivadas a partir de datos ruidosos. [24]
{{cite web}}
: CS1 maint: archived copy as title (link)