🤖 AI Summary
Numerical differentiation is essential in scientific computing and engineering, yet robust and accurate derivative estimation remains challenging for noisy, undersampled, or non-stationary data. To address this, we systematically survey state-of-the-art numerical differentiation methods under noise and propose the first unified classification framework integrating boundary handling, regularization mechanisms, and adaptivity to frequency- or time-domain characteristics. We introduce a data-quality–aware algorithm selection criterion based on noise level, sampling rate, and non-stationarity. Our framework unifies twelve method classes—including finite differences, Tikhonov and total variation regularization, Savitzky–Golay filtering, spectral methods, and Kalman smoothing—and is implemented in the open-source Python library PyNumDiff, supporting five automated hyperparameter strategies. Extensive experiments demonstrate substantial improvements in estimation accuracy and robustness. The framework is validated on real-world applications in physical modeling and biosignal analysis.
📝 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.