Diferenciación numérica


De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

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.

Derivative.svg

Diferencias finitas

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]

Numero de pie

Ejemplo que muestra la dificultad de elegir debido tanto al error de redondeo como al error de fórmula

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.

Otros metodos

Métodos de orden superior

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).

Derivadas superiores

Usando el cociente de diferencias de Newton,

se puede mostrar lo siguiente [10] (para n > 0):

Métodos de variables complejas

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]

Cuadratura diferencial

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]

Ver también

  • Diferenciación automática
  • Plantilla de cinco puntos
  • Filtro Savitzky-Golay
  • Integracion numerica
  • Ecuaciones diferenciales ordinarias numéricas
  • Suavización y diferenciación numérica
  • Lista de software de análisis numérico

Referencias

  1. ^ Richard L. Burden, J. Douglas Faires (2000), Análisis numérico , (7ª Ed), Brooks / Cole. ISBN  0-534-38216-9 .
  2. ^ Katherine Klippert Merseth (2003). Ventanas en la enseñanza de las matemáticas: casos de aulas de secundaria y media . Teachers College Press. pag. 34 . ISBN 978-0-8077-4279-2.
  3. ^ Tamara Lefcourt Ruby; James Sellers; Lisa Korf; Jeremy Van Horn; Mike Munn (2014). Kaplan AP Calculus AB y BC 2015 . Publicaciones Kaplan. pag. 299. ISBN 978-1-61865-686-5.
  4. ^ a b Diferenciación numérica de funciones analíticas, B Fornberg - Transacciones ACM en software matemático (TOMS), 1981.
  5. ^ a b Uso de variables complejas para estimar derivadas de funciones reales, W. Squire, G. Trapp - REVISIÓN SIAM, 1998.
  6. ^ Sauer, Timothy (2012). Análisis numérico . Pearson. p.248.
  7. ^ Siguiendo recetas numéricas en C , capítulo 5.7 .
  8. ^ p. 263 .
  9. ^ Abramowitz y Stegun, tabla 25.2.
  10. ^ Shilov, George. Análisis elemental real y complejo .
  11. ^ Martins, JRRA; Sturdza, P .; Alonso, JJ (2003). "La aproximación derivada de paso complejo". Transacciones ACM en software matemático . 29 (3): 245–262. CiteSeerX 10.1.1.141.8002 . doi : 10.1145 / 838250.838251 . S2CID 7022422 .  
  12. ^ Diferenciación con (fuera) una diferencia por Nicholas Higham
  13. ^ artículo delblog MathWorks , publicado por Cleve Moler
  14. ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 9 de enero de 2014 . Consultado el 24 de noviembre de 2012 . CS1 maint: copia archivada como título ( enlace )
  15. ^ Lantoine, G .; Russell, RP; Dargent, Th. (2012). "Uso de variables multicomplejos para el cálculo automático de derivadas de alto orden". ACM Trans. Matemáticas. Softw . 38 (3): 1–21. doi : 10.1145 / 2168773.2168774 . S2CID 16253562 . 
  16. ^ Verheyleweghen, A. (2014). "Cálculo de derivadas de orden superior utilizando el método de pasos multicomplejos" (PDF) .
  17. Bell, IH (2019). "mcx (biblioteca de álgebra multicomplejo)" .
  18. ^ Ablowitz, MJ, Fokas, AS, (2003). Variables complejas: introducción y aplicaciones. Prensa de la Universidad de Cambridge . Verifique el teorema 2.6.2
  19. ^ Lyness, JN; Moler, CB (1967). "Diferenciación numérica de funciones analíticas". SIAM J. Numer. Anal . 4 (2): 202–210. doi : 10.1137 / 0704019 .
  20. ^ Abate, J; Dubner, H (marzo de 1968). "Un nuevo método para generar ampliaciones de funciones de la serie Power". SIAM J. Numer. Anal . 5 (1): 102-112. doi : 10.1137 / 0705008 .
  21. ^ Cuadratura diferencial y su aplicación en ingeniería: aplicaciones de ingeniería, Chang Shu, Springer, 2000, ISBN 978-1-85233-209-9 . 
  22. ^ Métodos avanzados de cuadratura diferencial, Yingyan Zhang, CRC Press, 2009, ISBN 978-1-4200-8248-7 . 
  23. ^ Ahnert, Karsten; Abel, Markus. "Diferenciación numérica de datos experimentales: métodos locales versus globales". Comunicaciones de Física Informática . 177 (10): 764–774. doi : 10.1016 / j.cpc.2007.03.009 . ISSN 0010-4655 . 

enlaces externos

  • http://mathworld.wolfram.com/NumericalDifferentiation.html
  • Recursos de diferenciación numérica: notas de libros de texto, PPT, hojas de trabajo, conferencias audiovisuales de YouTube en métodos numéricos para estudiantes universitarios de STEM
  • ftp://math.nist.gov/pub/repository/diff/src/DIFF Código Fortran para la diferenciación numérica de una función usando el proceso de Neville para extrapolar de una secuencia de aproximaciones polinómicas simples.
  • Rutinas de diferenciación numérica de la biblioteca NAG
  • http://graphulator.com Calculadora gráfica numérica en línea con función de cálculo.
  • Aumentar. Diferenciación numérica matemática, incluida la diferenciación finita y la derivada escalonada compleja
  • Diferenciación de pasos complejos
  • Diferenciación sin (fuera) una diferencia por Nicholas Higham , SIAM News.
  • proyecto findiff Python
Obtenido de " https://en.wikipedia.org/w/index.php?title=Numerical_differentiation&oldid=1038632025 "