Numerical algorithms based on the theory of complex variable
ACM '67 Proceedings of the 1967 22nd national conference
Extensions of the first and second complex-step derivative approximations
Journal of Computational and Applied Mathematics
Study on the design sensitivity analysis based on complex variable in eigenvalue problem
Finite Elements in Analysis and Design
Nonlinear robust performance analysis using complex-step gradient approximation
Automatica (Journal of IFAC)
On the generalization of the Complex Step Method
Journal of Computational and Applied Mathematics
Hi-index | 31.45 |
The complex-step derivative (CSD) technique is a convenient and highly accurate strategy to perform a linearized "perturbation" analysis to determine a "directional derivative" via a minor modification of an existing nonlinear simulation code. The technique has previously been applied to nonlinear simulation codes (such as finite-element codes) which employ real arithmetic only. The present note examines the suitability of this technique for extension to efficient pseudospectral simulation codes which nominally use the fast Fourier transform (FFT) to convert back and forth between the physical and transformed representations of the system. It is found that, if used carefully, this extension retains the remarkable accuracy of the CSD approach. However, to perform this extension without sacrificing this accuracy, particular care must be exercised; specifically, the state (real) and perturbation (imaginary) components of the complexified system must be transformed separately and arranged in such a manner that they are kept distinct during the process of differentiation in the transformed space in order to avoid the linear combination of the large and small quantities in the analysis. It is shown that this is relatively straightforward to implement even in complicated nonlinear simulation codes, thus positioning the CSD approach as an attractive and relatively simple alternative to hand coding a perturbation (a.k.a. "tangent linear") code for determining the directional derivative even when pseudospectral algorithms are employed.