fbpx
Wikipedia

Diferenciación automática

En matemática y álgebra computacional, diferenciación automática, o DA, también conocida como diferenciación algorítmica, es un método para la evaluación de derivadas de una función expresada como un programa de computación. Existen dos métodos clásicos para el cálculo de derivadas:

  • derivar simbólicamente la función obteniendo una expresión y evaluarla en un punto dado; o
  • utilizar derivación numérica.

El inconveniente de la derivación simbólica es la lentitud y la dificultad de convertir programas de computación en una única expresión. Además, la complejidad de muchas funciones crece según se calculan derivadas de mayor grado. Dos inconvenientes importantes de las derivadas finitas son los errores de redondeo en cálculos de naturaleza discreta y la cancelación. Los dos métodos clásicos tiene problemas con el cálculo de derivadas de mayor grado, donde la complejidad y los errores se ven incrementados. La diferenciación automática soluciona todos estos problemas.

DA se basa en el hecho de que cualquier programa de computación que implemente una función vectorial y = F(x) (generalmente) se puede descomponer en una secuencia de asignaciones elementales, siendo cada una trivialmente diferenciable utilizando una LUT (LookUp Table o tabla para búsquedas). Estas derivadas parciales básicas, evaluadas utilizando los argumentos, se combinan de acuerdo a regla de la cadena del cálculo de derivadas para formar información derivada para F (como gradientes, tangentes, la matriz Jacobiana, etc.). Este proceso obtiene derivadas exactas (según la precisión numérica). Debido a que la transformación simbólica ocurre sólo en el nivel más básico, DA evita los problemas computacionales inherentes al cálculo simbólico complejo.

Aplicado a ecuaciones diferenciales

Desarrollo de Taylor para   en el punto  .

Con la notación   podemos tener el siguiente desarrollo:

 

  • para orden 0 se usa  
  • para orden 1 se usa  

para el resto se aplica los siguientes resultados:

  •  
  •  
  •  
  •  

La regla de la cadena, acumulación hacia adelante y hacia atrás

Acumulación hacia atrás

Computación Jacobiana

Derivada en la aritmética aumentada con números duales para el cálculo de la diferenciación automática

Argumentos y funciones vectoriales

Implementación

La DA hacia adelante se implementa mediante una interpretación no estándar del programa en el cual los números reales son sustituidos por números duales, las constantes se convierten en números duales con un coeficiente epsilon igual a cero, y las primitivas numéricas se modifican para que operen con números duales. Esta interpretación no estándar se implementa generalmente mediante dos estrategias: modificación del código fuente o sobrecargando operadores.

Modificación del código fuente

El código fuente de una función se reemplaza por un código generado automáticamente que incluye instrucciones para el cálculo de las derivadas intercaladas con las instrucciones originales.

La modificación del código fuente se puede implementar para cualquier lenguaje de programación, y es más fácil de optimizar para el compilador. Sin embargo, la implementación de la propia herramienta de DA es más difícil.

Ejemplos:

  • (C/C++, forward mode)
  • (Fortran77)
  • OpenAD (Fortran77, Fortran95, C/C++)
  • TAPENADE (Fortran77, Fortran95, C)
  • Maple (software) (Lenguaje Maple, puede generar código en C/C++/Java/Visual Basic/Matlab/Fortran)

Sobrecarga de operadores

La sobrecarga de operadores es una posibilidad para el código fuente escrito en un lenguaje que lo soporte. Los objetos para los números reales y las operaciones matemáticas básicas se deben sobrecargar para corresponder con la aritmética aumentada descrita arriba. No se requiere ningún cambio en el código fuente original de la función para que se pueda derivar.

La sobrecarga de operadores para acumulación hacia adelante es fácil de implementar, siendo también factible para la acumulación hacia atrás. Sin embargo, los compiladores actuales no optimizan tanto el código como en el caso de acumulación hacia adelante.

Ejemplos:

Referencias Bibliográficas

  • Rall, Louis B. (1981). Automatic Differentiation: Techniques and Applications. Lecture Notes in Computer Science 120. Springer. ISBN 0-540-10861-0 |isbn= incorrecto (ayuda). 
  • Griewank, Andreas (2000). Evaluating Derivatives: Principles and Techniques of Algorithmic Differentiation. Frontiers in Applied Mathematics 19. SIAM. ISBN 0-89871-451-6. 

Enlaces externos

  • www.autodiff.org, Sitio web con "todo lo que quieres saber sobre Diferenciación Automática".
  • Diferenciación Automática utilizando la sobrecarga de operadores el 27 de septiembre de 2007 en Wayback Machine.
  • Diferenciación Automática para modelos no lineales.
  • Web para el cálculo analítico de derivadas para programas Fortran77 o Fortran95 Diferenciación Automática para programas Fortran
  •   Datos: Q787371

diferenciación, automática, matemática, álgebra, computacional, diferenciación, automática, también, conocida, como, diferenciación, algorítmica, método, para, evaluación, derivadas, función, expresada, como, programa, computación, existen, métodos, clásicos, . En matematica y algebra computacional diferenciacion automatica o DA tambien conocida como diferenciacion algoritmica es un metodo para la evaluacion de derivadas de una funcion expresada como un programa de computacion Existen dos metodos clasicos para el calculo de derivadas derivar simbolicamente la funcion obteniendo una expresion y evaluarla en un punto dado o utilizar derivacion numerica El inconveniente de la derivacion simbolica es la lentitud y la dificultad de convertir programas de computacion en una unica expresion Ademas la complejidad de muchas funciones crece segun se calculan derivadas de mayor grado Dos inconvenientes importantes de las derivadas finitas son los errores de redondeo en calculos de naturaleza discreta y la cancelacion Los dos metodos clasicos tiene problemas con el calculo de derivadas de mayor grado donde la complejidad y los errores se ven incrementados La diferenciacion automatica soluciona todos estos problemas DA se basa en el hecho de que cualquier programa de computacion que implemente una funcion vectorial y F x generalmente se puede descomponer en una secuencia de asignaciones elementales siendo cada una trivialmente diferenciable utilizando una LUT LookUp Table o tabla para busquedas Estas derivadas parciales basicas evaluadas utilizando los argumentos se combinan de acuerdo a regla de la cadena del calculo de derivadas para formar informacion derivada para F como gradientes tangentes la matriz Jacobiana etc Este proceso obtiene derivadas exactas segun la precision numerica Debido a que la transformacion simbolica ocurre solo en el nivel mas basico DA evita los problemas computacionales inherentes al calculo simbolico complejo Indice 1 Aplicado a ecuaciones diferenciales 2 La regla de la cadena acumulacion hacia adelante y hacia atras 2 1 Acumulacion hacia atras 2 2 Computacion Jacobiana 3 Derivada en la aritmetica aumentada con numeros duales para el calculo de la diferenciacion automatica 3 1 Argumentos y funciones vectoriales 4 Implementacion 4 1 Modificacion del codigo fuente 4 2 Sobrecarga de operadores 5 Referencias Bibliograficas 6 Enlaces externosAplicado a ecuaciones diferenciales EditarDesarrollo de Taylor para x f t x displaystyle x f t x en el punto x 0 displaystyle x 0 Con la notacion f n t f n t n displaystyle f n t frac f n t n podemos tener el siguiente desarrollo x t h x 0 t x 1 t h x 2 t h 2 x n t h n displaystyle x t h x 0 t x 1 t h x 2 t h 2 x n t h n para orden 0 se usa x 0 t x 0 displaystyle x 0 t x 0 para orden 1 se usa x 1 t f t x 0 displaystyle x 1 t f t x 0 para el resto se aplica los siguientes resultados f t g t f n t f n t n g n 1 t n 1 n g n 1 t n 1 1 n g n 1 t displaystyle f t g t f n t frac f n t n frac g n 1 t n frac 1 n frac g n 1 t n 1 frac 1 n g n 1 t f t g t f n t n 1 g n 1 t displaystyle f t g t f n t n 1 g n 1 t f t g t h t f n t g n t h n t displaystyle f t g t h t f n t g n t h n t f t g t h t f n t i 0 n g n i t h i t displaystyle f t g t h t f n t sum i 0 n g n i t h i t La regla de la cadena acumulacion hacia adelante y hacia atras EditarAcumulacion hacia atras Editar Computacion Jacobiana EditarDerivada en la aritmetica aumentada con numeros duales para el calculo de la diferenciacion automatica EditarArgumentos y funciones vectoriales EditarImplementacion EditarLa DA hacia adelante se implementa mediante una interpretacion no estandar del programa en el cual los numeros reales son sustituidos por numeros duales las constantes se convierten en numeros duales con un coeficiente epsilon igual a cero y las primitivas numericas se modifican para que operen con numeros duales Esta interpretacion no estandar se implementa generalmente mediante dos estrategias modificacion del codigo fuente o sobrecargando operadores Modificacion del codigo fuente Editar El codigo fuente de una funcion se reemplaza por un codigo generado automaticamente que incluye instrucciones para el calculo de las derivadas intercaladas con las instrucciones originales La modificacion del codigo fuente se puede implementar para cualquier lenguaje de programacion y es mas facil de optimizar para el compilador Sin embargo la implementacion de la propia herramienta de DA es mas dificil Ejemplos ADIC C C forward mode ADIFOR Fortran77 OpenAD Fortran77 Fortran95 C C TAPENADE Fortran77 Fortran95 C Maple software Lenguaje Maple puede generar codigo en C C Java Visual Basic Matlab Fortran Sobrecarga de operadores Editar La sobrecarga de operadores es una posibilidad para el codigo fuente escrito en un lenguaje que lo soporte Los objetos para los numeros reales y las operaciones matematicas basicas se deben sobrecargar para corresponder con la aritmetica aumentada descrita arriba No se requiere ningun cambio en el codigo fuente original de la funcion para que se pueda derivar La sobrecarga de operadores para acumulacion hacia adelante es facil de implementar siendo tambien factible para la acumulacion hacia atras Sin embargo los compiladores actuales no optimizan tanto el codigo como en el caso de acumulacion hacia adelante Ejemplos ADC Version 4 0 Archivado el 9 de mayo de 2008 en Wayback Machine C C ADF Version 4 0 Archivado el 9 de mayo de 2008 en Wayback Machine Fortran 77 Fortran 95 ADOL C C C FADBAD C C CppAD C C MAD Matlab Referencias Bibliograficas EditarRall Louis B 1981 Automatic Differentiation Techniques and Applications Lecture Notes in Computer Science 120 Springer ISBN 0 540 10861 0 isbn incorrecto ayuda Griewank Andreas 2000 Evaluating Derivatives Principles and Techniques of Algorithmic Differentiation Frontiers in Applied Mathematics 19 SIAM ISBN 0 89871 451 6 Enlaces externos Editarwww autodiff org Sitio web con todo lo que quieres saber sobre Diferenciacion Automatica Diferenciacion Automatica de programas paralelos OpenMP Publicacion Automatic Differentiation C Templates and Photogrammetry Diferenciacion Automatica utilizando la sobrecarga de operadores Archivado el 27 de septiembre de 2007 en Wayback Machine Web para el calculo analitico de derivadas Diferenciacion Automatica para modelos no lineales Web para el calculo analitico de derivadas para programas Fortran77 o Fortran95 Diferenciacion Automatica para programas Fortran Datos Q787371 Obtenido de https es wikipedia org w index php title Diferenciacion automatica amp oldid 145031256, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos