En el análisis numérico , la diferenciación numérica describe algoritmos para estimar la derivada de una función matemática o subrutina de función utilizando valores de la función y quizás otros conocimientos sobre la función.
El método más simple es utilizar aproximaciones en diferencias finitas.
Una estimación simple de dos puntos consiste en calcular la pendiente de una recta secante cercana a través de los puntos ( x , f ( x )) y ( x + h , f ( x + h )). [1] Elegir 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 Newton 's cociente de diferencias (también conocido como un primer orden diferencia dividida ).
La pendiente de esta recta secante difiere de la pendiente de la recta tangente en una cantidad que es aproximadamente proporcional ah . Cuando h se acerca a cero, la pendiente de la recta secante se aproxima 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 líneas secantes se acercan cada vez más a ser una línea tangente:
Dado que la sustitución inmediata de 0 por h da como resultado una forma indeterminada , calcular la derivada directamente puede no ser 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 recta secante cercana a través de 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 viene dado por
donde hay algún 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 , 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 usando aritmética de punto flotante es la elección del tamaño de 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 acondicionadas [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 recta secante se calculará con mayor precisión, pero la estimación de la pendiente de la tangente utilizando la secante podría ser peor.
Para las diferencias centrales básicas, el paso óptimo es la raíz cúbica de la máquina épsilon . [6] 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 máquina épsilon ε es típicamente del orden de 2,2 × 10 −16 para doble precisión . [7] Una fórmula para h que equilibra el error de redondeo con el error de la secante para una precisión óptima es [8]
(aunque no cuándo ), y emplearlo requerirá conocimiento de la función.
Para precisión simple, los problemas se agravan porque, aunque x puede ser un número de punto flotante representable , es casi seguro que x + h no lo será. 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 funciones no serán exactamente haparte. En este sentido, dado que la mayoría de las fracciones decimales son secuencias recurrentes en binario (al igual que 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, con las computadoras, las facilidades de optimización del compilador pueden dejar de prestar atención a los detalles de la aritmética informática real y, en cambio, aplicar los axiomas de las matemáticas para deducir que dx y h son lo mismo. Con C y lenguajes similares, una directiva de 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 muestra el método de cinco puntos para la primera derivada ( plantilla de cinco puntos en una dimensión): [9]
donde .
Para otras configuraciones de esténcil y órdenes de derivadas, la Calculadora de coeficientes de diferencia finita 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).
Usando el cociente de diferencias de Newton,
se puede mostrar lo siguiente [10] (para n > 0):
Las aproximaciones clásicas en diferencias finitas para la diferenciación numérica están mal condicionadas. Sin embargo, si es una función holomórfica , con valor real en la línea real, que se puede evaluar en puntos cercanos del plano complejo , entonces existen métodos estables . Por ejemplo, [5] la primera derivada se puede calcular mediante la fórmula de derivada de pasos complejos: [11] [12] [13]
Esta fórmula se puede obtener mediante la expansión de la serie de Taylor :
La fórmula de 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 multicomplejos. [14] [15] [16]
donde denotan las unidades imaginarias multicomplejas; . El operador extrae el componente ésimo de un número de niveles multicomplejos , por ejemplo, extrae el componente real y extrae el último componente "más imaginario". El método se puede aplicar a derivados mixtos, por ejemplo, para un derivado de segundo orden.
Está disponible una implementación en C ++ de aritmética multicompleja. [17]
En general, las derivadas de cualquier orden se pueden calcular usando la fórmula integral de Cauchy : [18]
donde la integración se realiza numéricamente .
Lyness y Moler comenzaron a utilizar variables complejas para la diferenciación numérica en 1967. [19] 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 compleja de Laplace . [20] Fornberg desarrolló un algoritmo que se puede utilizar sin necesidad de conocimientos sobre el método o el carácter de la función. [4]
La cuadratura diferencial es la aproximación de derivadas mediante el uso de sumas ponderadas de valores de funciones. [21] [22] La cuadratura diferencial es de interés práctico porque permite calcular derivadas a partir de datos ruidosos. El nombre está en analogía con 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 de datos ruidosos. [23]
Wikilibros tiene un libro sobre el tema de: Métodos numéricos |