The implementation of the Levenberg-Marquardt used is from the MINPACK [34,36] project. The core algorithm is designed for analytical model functions, and assumes that the residual vector and the Jacobian matrix can be calculated directly.
For simulation applications the residual vectors are calculated from simulated data, and it is impossible to calculate the values of the Jacobian matrix in a point of parameter values by an analytical formula. Therefore, a finite difference approximation has to be used to calculate the Jacobian matrix.
For practical use the optimizer has to interact with the simulation environment which starts the required programs for the calculation of the target values and returns them to the optimizer. In addition, an efficient way for the calculation of the first derivatives must be provided. These, as well as, other aspects for a practical use of this optimization algorithm are described in Section 4.5.