change_param.cpp

View page source

Computing a Jacobian With Constants that Change

Purpose

In this example we use two levels of taping so that a derivative can have constant parameters that can be changed. To be specific, we consider the function \(f : \B{R}^2 \rightarrow \B{R}^2\)

\[\begin{split}f(x) = p \left( \begin{array}{c} \sin( x_0 ) \\ \sin( x_1 ) \end{array} \right)\end{split}\]

were \(p \in \B{R}\) is a parameter. The Jacobian of this function is

\[\begin{split}g(x,p) = p \left( \begin{array}{cc} \cos( x_0 ) & 0 \\ 0 & \cos( x_1 ) \end{array} \right)\end{split}\]

In this example we use two levels of AD to avoid computing the partial of \(f(x)\) with respect to \(p\), but still allow for the evaluation of \(g(x, p)\) at different values of \(p\).