Algorithm 984

A toolbox called ADiGator is described for algorithmically differentiating mathematical functions in MATLAB. ADiGator performs source transformation via operator overloading using forward mode algorithmic differentiation and produces a file that can be evaluated to obtain the derivative of the original function at a numeric value of the input. A convenient by-product of the file generation is the sparsity pattern of the derivative function. Moreover, because both the input and output to the algorithm are source codes, the algorithm may be applied recursively to generate derivatives of any order. A key component of the algorithm is its ability to statically exploit derivative sparsity at the MATLAB operation level to improve runtime performance. The algorithm is applied to four different classes of example problems and is shown to produce runtime efficient derivative code. Due to the static nature of the approach, the algorithm is well suited and intended for use with problems requiring many repeated derivative computations.

[1]  Thomas F. Coleman,et al.  ADMIT-1: automatic differentiation and MATLAB interface toolbox , 2000, TOMS.

[2]  Thomas F. Coleman,et al.  The Efficient Computation of Sparse Jacobian Matrices Using Automatic Differentiation , 1998, SIAM J. Sci. Comput..

[3]  Andreas Griewank,et al.  Evaluating derivatives - principles and techniques of algorithmic differentiation, Second Edition , 2000, Frontiers in applied mathematics.

[4]  Robert M. White,et al.  National Oceanic and Atmospheric Administration , 2020, Federal Regulatory Guide.

[5]  Lawrence F. Shampine,et al.  The MATLAB ODE Suite , 1997, SIAM J. Sci. Comput..

[6]  Anil V. Rao,et al.  An efficient overloaded method for computing derivatives of mathematical functions in MATLAB , 2013, TOMS.

[7]  Louis B. Rall,et al.  Automatic differentiation , 1981 .

[8]  Shaun A. Forth,et al.  Source Transformation for MATLAB Automatic Differentiation , 2006, International Conference on Computational Science.

[9]  A. Michael Berman Welcome ever smiles / And farewell goes out sighing , 2000, ACM SIGPLAN Notices.

[10]  Eugene M. Cliff,et al.  Range optimal trajectories for an aircraft flying in the vertical plane , 1994 .

[11]  Anil V. Rao,et al.  A Source Transformation via Operator Overloading Method for the Automatic Differentiation of Mathematical Functions in MATLAB , 2016, ACM Trans. Math. Softw..

[12]  John T. Betts,et al.  Practical Methods for Optimal Control and Estimation Using Nonlinear Programming , 2009 .

[13]  Weizhang Huang,et al.  Moving Mesh Methods Based on Moving Mesh Partial Differential Equations , 1994 .

[14]  Victor M. Zavala,et al.  Large-scale nonlinear programming using IPOPT: An integrating framework for enterprise-wide dynamic optimization , 2009, Comput. Chem. Eng..

[15]  John D. Pryce,et al.  Hierarchical Automatic Differentiation by Vertex Elimination and Source Transformation , 2003, ICCSA.

[16]  John D. Ramsdell,et al.  Estimation of Sparse Jacobian Matrices , 1983 .

[17]  Keshav Pingali,et al.  A case for source-level transformations in MATLAB , 1999, DSL '99.

[18]  Griewank,et al.  On automatic differentiation , 1988 .

[19]  Christian Bischof,et al.  Automatic differentiation for MATLAB programs , 2003 .

[20]  Anil V. Rao,et al.  Direct Trajectory Optimization Using a Variable Low-Order Adaptive Pseudospectral Method , 2011 .

[21]  Michael R. Osborne,et al.  Numerical solution of boundary value problems for ordinary differential equations , 1995, Classics in applied mathematics.

[22]  Anil V. Rao,et al.  Practical Methods for Optimal Control Using Nonlinear Programming , 1987 .

[23]  Siegfried M. Rump,et al.  INTLAB - INTerval LABoratory , 1998, SCAN.

[24]  Lorenz T. Biegler,et al.  On the implementation of an interior-point filter line-search algorithm for large-scale nonlinear programming , 2006, Math. Program..

[25]  R. V. Kharche MATLAB automatic differentiation using source transformation , 2012 .

[26]  Guoliang Xue,et al.  The MINPACK-2 test problem collection , 1992 .

[27]  Christian H. Bischof,et al.  Combining source transformation and operator overloading techniques to compute derivatives for MATLAB programs , 2002, Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation.

[28]  John D. Pryce,et al.  Jacobian code generated by source transformation and vertex elimination can be as efficient as hand-coding , 2004, TOMS.

[29]  William H. Cunningham,et al.  Optimal 3-terminal cuts and linear programming , 2006, Math. Program..

[30]  William W. Hager,et al.  A unified framework for the numerical solution of optimal control problems using pseudospectral methods , 2010, Autom..

[31]  Shaun A. Forth An efficient overloaded implementation of forward mode automatic differentiation in MATLAB , 2006, TOMS.