Diferenciación Automática
Diferenciación Automática
Diferenciación Automática
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.
Índice
Aplicado a ecuaciones diferenciales
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
Modificación del código fuente
Sobrecarga de operadores
Referencias Bibliográficas
Enlaces externos
Computación Jacobiana
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.
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:
ADIC (https://web.archive.org/web/20080917143429/http://www-fp.mcs.anl.gov/adic/)
(C/C++, forward mode)
ADIFOR (https://web.archive.org/web/20080702064329/http://www-unix.mcs.anl.gov/autodif
f/ADIFOR/) (Fortran77)
OpenAD (http://www-unix.mcs.anl.gov/~utke/OpenAD/) (Fortran77, Fortran95, C/C++)
TAPENADE (http://tapenade.inria.fr:8080/tapenade/index.jsp) (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 (http://www.autodiff.org/), Sitio web con "todo lo que quieres saber sobre
Diferenciación Automática".
Diferenciación Automática de programas paralelos OpenMP (https://web.archive.org/web/2
0070928073555/http://karminghenry.sinaman.com/adindex.html)
Publicación: Automatic Differentiation, C++ Templates and Photogrammetry (https://web.arc
hive.org/web/20050315101043/http://homepage.mac.com/sigfpe/paper.pdf)
Diferenciación Automática utilizando la sobrecarga de operadores (http://www.vivlabs.com/s
ubpage_ad.php)
Archivado (https://web.archive.org/web/20070927120356/http://www.vivlabs.com/subpage_
ad.php) el 27 de septiembre de 2007 en la Wayback Machine.
Web para el cálculo analítico de derivadas (https://web.archive.org/web/20090930225144/h
ttp://apmonitor.ath.cx/) Diferenciación Automática para modelos no lineales.
Web para el cálculo analítico de derivadas para programas Fortran77 o Fortran95 (http://tap
enade.inria.fr:8080/tapenade/index.jsp) Diferenciación Automática para programas Fortran
Obtenido de «https://es.wikipedia.org/w/index.php?title=Diferenciación_automática&oldid=120760004»
Esta página se editó por última vez el 25 oct 2019 a las 17:55.
El texto está disponible bajo la Licencia Creative Commons Atribución Compartir Igual 3.0; pueden aplicarse
cláusulas adicionales. Al usar este sitio, usted acepta nuestros términos de uso y nuestra política de privacidad.
Wikipedia® es una marca registrada de la Fundación Wikimedia, Inc., una organización sin ánimo de lucro.