Automatic differentiation for numerical integration

Click For Summary
SUMMARY

The discussion focuses on the challenges of applying reverse-mode automatic differentiation (AD) to numerical integration, specifically in the context of a Levenberg-Marquardt optimization routine. The user seeks to differentiate an integral defined by the function f(x, p) = g(x, p) ∫[a(p), b(p)] h(x, p, t) dt, where the integrand h and the bounds a and b are functions of the parameter vector p. The user concludes that while reverse-mode AD may not effectively handle the integral's differentiation, forward-mode AD could be a viable alternative. Additionally, they inquire about existing AD tools capable of calculating derivatives of integrals.

PREREQUISITES
  • Understanding of Levenberg-Marquardt optimization techniques
  • Familiarity with reverse-mode and forward-mode automatic differentiation
  • Knowledge of numerical integration methods
  • Proficiency in C++ programming for implementing algorithms
NEXT STEPS
  • Research forward-mode automatic differentiation techniques
  • Explore existing automatic differentiation libraries such as Adept or CppAD
  • Study numerical integration methods for functions with variable bounds
  • Investigate the application of automatic differentiation in solving ordinary differential equations (ODEs)
USEFUL FOR

Mathematicians, data scientists, and software engineers working on optimization problems, particularly those involving numerical integration and automatic differentiation techniques.

raul_l
Messages
105
Reaction score
0
I've written a Levenberg-Marquardt nonlinear optimization routine that employs the reverse-mode automatic differentiation algorithm for building the Jacobian. So far it has worked marvelously for me.
However, now I have to use functions that contain integrals that cannot be analytically taken and have to be numerically calculated, i.e.
f(x,\mathbf{p}) = g(x,\mathbf{p}) \int^{b(\mathbf{p})}_{a(\mathbf{p})}{h(x,\mathbf{p},t)dt}
where p is the parameter vector, f is the fitting function, g is some function of x and p and h is the integrand which is also a function of x and p and to be integrated over t.
Now, most of this can be easily differentiated if I just define the derivatives of elementary functions and take some time to write the rest of AD implementation (which I have done in C++). However, when I use the identity
\nabla_{ \mathbf{p} } \int^{b(\mathbf{p})}_{a(\mathbf{p})}{h(x,\mathbf{p},t)dt} = h(x,\mathbf{p},b(\mathbf{p}))\nabla_{\mathbf{p}}b(\mathbf{p}) - h(x,\mathbf{p},a(\mathbf{p}))\nabla_{\mathbf{p}}a(\mathbf{p}) + \int^{b(\mathbf{p})}_{a(\mathbf{p})}{\nabla_{ \mathbf{p} } h(x,\mathbf{p},t)dt}
to attack the integral I get stuck with the last term. This is my question: Is it possible to use the reverse-mode automatic differentiation to calculate integrals of type
\int^{b(\mathbf{p})}_{a(\mathbf{p})}{\nabla_{ \mathbf{p} } h(x,\mathbf{p},t)dt}
where I first have to calculate partial derivatives with respect to the fitting parameters and then integrate? (The bounds could also be constants, it doesn't matter.)
I've done some googling and come across articles that discuss the application of automatic differentiation to numerical integration algorithms for ordinary differential equations (ODEs). But this is something else because here I explicitly have to calculate the value of the integral. So no help so far. I've done some thinking and it appears that reverse-mode can't be used to handle the integrals, but forward-mode might be doable. Any thoughts from experts?
 
Technology news on Phys.org
I see that my question was too complicated.
So I'll ask something simpler. Does anyone know of any AD tools that are capable of calculating the derivatives of integrals (like above)? I just want to make sure that I'm not reinventing the wheel by writing my own implementation of this.
 

Similar threads

Replies
2
Views
1K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 0 ·
Replies
0
Views
1K
  • · Replies 2 ·
Replies
2
Views
1K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
1K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 14 ·
Replies
14
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 13 ·
Replies
13
Views
3K