A Taxonomy of Numerical Differentiation Methods
Pavel Komarov, Floris van Breugel, J. Nathan Kutz
TL;DR
The paper surveys a comprehensive taxonomy of numerical differentiation methods across five problem regimes: analytic/static relationships, noiseless simulations, noisy data with prior structure, and noisy data without priors, including irregular sampling. It integrates theory, practical recommendations, and a unifying performance framework, highlighting when AutoDiff, spectral methods, FE, FD, and Kalman-based approaches are most effective. A key contribution is the detailed comparative guidance and the PyNumDiff toolkit, which enables practitioners to implement and tune methods within the described framework. The work emphasizes that constraining assumptions (periodicity, known dynamics, or smoothness) yield substantial gains, while unknown/noisy settings benefit from robust, flexible strategies like RTS smoothing and Pareto-guided hyperparameter tuning. Overall, it provides actionable guidance for selecting and configuring derivative estimators in diverse scientific and engineering contexts, supported by a public software ecosystem.
Abstract
Differentiation is a cornerstone of computing and data analysis in every discipline of science and engineering. Indeed, most fundamental physics laws are expressed as relationships between derivatives in space and time. However, derivatives are rarely directly measurable and must instead be computed, often from noisy, potentially corrupt data streams. There is a rich and broad literature of computational differentiation algorithms, but many impose extra constraints to work correctly, e.g. periodic boundary conditions, or are compromised in the presence of noise and corruption. It can therefore be challenging to select the method best-suited to any particular problem. Here, we review a broad range of numerical methods for calculating derivatives, present important contextual considerations and choice points, compare relative advantages, and provide basic theory for each algorithm in order to assist users with the mathematical underpinnings. This serves as a practical guide to help scientists and engineers match methods to application domains. We also provide an open-source Python package, PyNumDiff, which contains a broad suite of methods for differentiating noisy data.
