SIAM Digital Library
 
 
 

The Art of Differentiating Computer Programs

An Introduction to Algorithmic Differentiation
SE24 Cover Image
Author(s): Uwe Naumann1
  • 1 RWTH Aachen University, Aachen, Germany
Published: 2011
Print ISBN13: 9781611972061
eISBN: 9781611972078
Book Code: SE24
Pages: xviii + 333

Description

This is the first entry-level book on algorithmic (also known as automatic) differentiation (AD), providing fundamental rules for the generation of first- and higher-order tangent-linear and adjoint code. The author covers the mathematical underpinnings as well as how to apply these observations to real-world numerical simulation programs.

Readers will find

• many examples and exercises, including hints to solutions;

• the prototype AD tools dco and dcc for use with the examples and exercises;

• first- and higher-order tangent-linear and adjoint modes for a limited subset of C/C++, provided by the derivative code compiler dcc.

• a supplementary website containing sources of all software discussed in the book, additional exercises and comments on their solutions (growing over the coming years), links to other sites on AD, and errata.

Keywords: Algorithmic Differentiation, Adjoints, Sensitivity Analysis, Nonlinear Programming, Derivative Code Compiler

Excerpt

“How sensitive are the values of the outputs of my computer program with respect to changes in the values of the inputs? How sensitive are these first-order sensitivities with respect to changes in the values of the inputs? How sensitive are the second-order sensitivities with respect to changes in the values of the inputs? …”

Computational scientists, engineers, and economists as well as quantitative analysts in computational finance tend to ask these questions on a regular basis. They write computer programs in order to simulate diverse real-world phenomena. The underlying mathematical models often depend on a possibly large number of (typically unknown or uncertain) parameters. Values for the corresponding inputs of the numerical simulation programs can, for example, be the result of (typically error-prone) observations and measurements. If very small perturbations in these uncertain values yield large changes in the values of the outputs, then the feasibility of the entire simulation becomes questionable. Nobody should make decisions based on such highly uncertain data.



©2012 SIAM

close