How can I get the second order derivarive of a function using ChainRules? Bellow is my approach for the
See the following code:
using ChainRules using ChainRulesCore # from the docs, first derivative of sin x = 1.0 sinx, sin_pullback = rrule(sin, x) sin_pullback(x) == (NoTangent(), cos(x)) # true
Let’s try to make it more general:
using ChainRules using ChainRulesCore sin_pullback(u) = rrule(sin, u) sin_pullback(pi/4)(1) == (NoTangent(), cos(pi/4)) # true dsin(u) = sin_pullback(u)(1) # get the cos(u) value dsin(pi/4) == cos(pi/4) # true # does not work: rrule(dsin, pi/4) # returns nothing, we want (cos(pi/4), -sin(pi/4)
This happens because
dsin != cos and there is no rrule defined for
So how can we achieve this?