Esta es mi primera exposición al tema también, así que perdóname si me equivoco. Después de buscar un poco, encontré este artículo sobre números duales.
Un barrio de infinito
Y esta sencilla implementación de AD Adelante en Haskell.
Cosas que me divierten
- Robótica: ¿Cuáles son los mejores recursos para aprender la mecánica, dinámica y cinemática de robots desde el nivel de principiante?
- ¿Cuáles son algunos recursos excelentes para aprender y crear una estrategia de desarrollo y gestión de marca?
- ¿Cuáles son algunos sitios web útiles para los estudiantes?
- ¿Qué es la automatización ansible? ¿Cuál es el mejor recurso para aprenderlo?
- ¿Qué fuentes puedo buscar para aprender sobre el feminismo?
La idea básica es introducir un nuevo tipo de número llamado números duales, y luego usar el polimorfismo en su lenguaje de programación para incluir números duales en sus funciones en lugar de dobles.
Los números duales son muy parecidos a los números complejos, excepto que en lugar de [math] i ^ 2 = -1 [/ math], tenemos [math] d ^ 2 = 0 [/ math]. Así que las reglas para sumar y multiplicar números duales funcionan para ser
[math] (p + qd) + (r + sd) = (p + r) + (q + s) d [/ math]
[math] (p + qd) (r + sd) = (pr) + (ps + qr) d [/ math]
Pero la verdadera magia sucede cuando se considera la expansión de Taylor de [math] f (x + d) [/ math].
[math] f (x + d) = f (x) + f ^ \ prime (x) d [/ math]
Todos los términos de orden superior en d desaparecen desde [math] d ^ 2 = 0 [/ math].
De ello se deduce que si podemos evaluar f (Dual (x, 1)), terminaremos con Dual (f (x), f ‘(x)) – podemos encontrar tanto f como su derivado en un punto, y el costo computacional es solo ligeramente mayor que el cálculo de f solo.